mirror of
https://github.com/torvalds/linux.git
synced 2026-09-13 14:44:42 +02:00
ALSA: hda: restore MFG widget enumeration after core split
Before commit7639a06c23("ALSA: hda - Move a part of hda_codec stuff into hdac_device"), widget enumeration selected the function group with codec->afg ? codec->afg : codec->mfg and read subordinate nodes from that group. The core split moved this logic into snd_hdac_refresh_widgets(), but hard-coded codec->afg there. For an MFG-only codec, codec->afg is zero, so the Root Node is queried and codec->start_nid/num_nodes are populated from the function-group range instead of the MFG's subordinate nodes. Restore the pre-split AFG-or-MFG selection. Fixes:7639a06c23("ALSA: hda - Move a part of hda_codec stuff into hdac_device") Signed-off-by: Xu Rao <raoxu@uniontech.com> Link: https://patch.msgid.link/44809B8FF80DCCA2+20260901034024.2407783-1-raoxu@uniontech.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
e4637ce346
commit
32d7226e61
|
|
@ -404,6 +404,7 @@ static void setup_fg_nodes(struct hdac_device *codec)
|
|||
*/
|
||||
int snd_hdac_refresh_widgets(struct hdac_device *codec)
|
||||
{
|
||||
hda_nid_t fg = codec->afg ? codec->afg : codec->mfg;
|
||||
hda_nid_t start_nid;
|
||||
int nums, err = 0;
|
||||
|
||||
|
|
@ -412,10 +413,10 @@ int snd_hdac_refresh_widgets(struct hdac_device *codec)
|
|||
* widgets array.
|
||||
*/
|
||||
guard(mutex)(&codec->widget_lock);
|
||||
nums = snd_hdac_get_sub_nodes(codec, codec->afg, &start_nid);
|
||||
nums = snd_hdac_get_sub_nodes(codec, fg, &start_nid);
|
||||
if (!start_nid || nums <= 0 || nums >= 0xff) {
|
||||
dev_err(&codec->dev, "cannot read sub nodes for FG 0x%02x\n",
|
||||
codec->afg);
|
||||
fg);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user