diff options
| author | Takashi Iwai <tiwai@suse.de> | 2009-04-17 12:04:41 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2009-04-17 12:04:41 -0400 |
| commit | 93e82ae781e1ca4797cf2a226d3c303975bd99c7 (patch) | |
| tree | aff94e83114b5644b0b0abfe1c3880c4fa59b4a7 | |
| parent | 4dc1f87f079d5c6b01284d08b28eff2c4fbd15c4 (diff) | |
ALSA: hda - Set function_id only on FG nodes
(Re)set function_id only from the value on FG nodes.
The current code overrides the value with the last widget.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
| -rw-r--r-- | sound/pci/hda/hda_codec.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index fd6e6f337d10..8820faf6c9d8 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
| @@ -642,19 +642,21 @@ static int get_codec_name(struct hda_codec *codec) | |||
| 642 | */ | 642 | */ |
| 643 | static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec) | 643 | static void /*__devinit*/ setup_fg_nodes(struct hda_codec *codec) |
| 644 | { | 644 | { |
| 645 | int i, total_nodes; | 645 | int i, total_nodes, function_id; |
| 646 | hda_nid_t nid; | 646 | hda_nid_t nid; |
| 647 | 647 | ||
| 648 | total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid); | 648 | total_nodes = snd_hda_get_sub_nodes(codec, AC_NODE_ROOT, &nid); |
| 649 | for (i = 0; i < total_nodes; i++, nid++) { | 649 | for (i = 0; i < total_nodes; i++, nid++) { |
| 650 | codec->function_id = snd_hda_param_read(codec, nid, | 650 | function_id = snd_hda_param_read(codec, nid, |
| 651 | AC_PAR_FUNCTION_TYPE) & 0xff; | 651 | AC_PAR_FUNCTION_TYPE) & 0xff; |
| 652 | switch (codec->function_id) { | 652 | switch (function_id) { |
| 653 | case AC_GRP_AUDIO_FUNCTION: | 653 | case AC_GRP_AUDIO_FUNCTION: |
| 654 | codec->afg = nid; | 654 | codec->afg = nid; |
| 655 | codec->function_id = function_id; | ||
| 655 | break; | 656 | break; |
| 656 | case AC_GRP_MODEM_FUNCTION: | 657 | case AC_GRP_MODEM_FUNCTION: |
| 657 | codec->mfg = nid; | 658 | codec->mfg = nid; |
| 659 | codec->function_id = function_id; | ||
| 658 | break; | 660 | break; |
| 659 | default: | 661 | default: |
| 660 | break; | 662 | break; |
