| From stable-bounces@linux.kernel.org Wed Oct 10 06:13:31 2007 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Wed, 10 Oct 2007 15:13:07 +0200 |
| Subject: ALSA: hda-codec - Avoid zero NID in line_out_pins[] of STAC codecs |
| To: stable@kernel.org |
| Message-ID: <s5hwstvqfj0.wl%tiwai@suse.de> |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| patch c480f79bdca58923e605ff5e4698cfe1779bae70 in mainline |
| |
| [ALSA] hda-codec - Avoid zero NID in line_out_pins[] of STAC codecs |
| |
| The STAC codes adds line_out_pins[] for shared mic/line-inputs accordingly. |
| But, the current code may give a hole with NID=0 in some setting, which |
| results in an error at probe. This patch fixes the problem. |
| |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| sound/pci/hda/patch_sigmatel.c | 15 ++++++++++----- |
| 1 file changed, 10 insertions(+), 5 deletions(-) |
| |
| --- a/sound/pci/hda/patch_sigmatel.c |
| +++ b/sound/pci/hda/patch_sigmatel.c |
| @@ -1182,7 +1182,8 @@ static int stac92xx_add_dyn_out_pins(str |
| case 3: |
| /* add line-in as side */ |
| if (cfg->input_pins[AUTO_PIN_LINE] && num_dacs > 3) { |
| - cfg->line_out_pins[3] = cfg->input_pins[AUTO_PIN_LINE]; |
| + cfg->line_out_pins[cfg->line_outs] = |
| + cfg->input_pins[AUTO_PIN_LINE]; |
| spec->line_switch = 1; |
| cfg->line_outs++; |
| } |
| @@ -1190,12 +1191,14 @@ static int stac92xx_add_dyn_out_pins(str |
| case 2: |
| /* add line-in as clfe and mic as side */ |
| if (cfg->input_pins[AUTO_PIN_LINE] && num_dacs > 2) { |
| - cfg->line_out_pins[2] = cfg->input_pins[AUTO_PIN_LINE]; |
| + cfg->line_out_pins[cfg->line_outs] = |
| + cfg->input_pins[AUTO_PIN_LINE]; |
| spec->line_switch = 1; |
| cfg->line_outs++; |
| } |
| if (cfg->input_pins[AUTO_PIN_MIC] && num_dacs > 3) { |
| - cfg->line_out_pins[3] = cfg->input_pins[AUTO_PIN_MIC]; |
| + cfg->line_out_pins[cfg->line_outs] = |
| + cfg->input_pins[AUTO_PIN_MIC]; |
| spec->mic_switch = 1; |
| cfg->line_outs++; |
| } |
| @@ -1203,12 +1206,14 @@ static int stac92xx_add_dyn_out_pins(str |
| case 1: |
| /* add line-in as surr and mic as clfe */ |
| if (cfg->input_pins[AUTO_PIN_LINE] && num_dacs > 1) { |
| - cfg->line_out_pins[1] = cfg->input_pins[AUTO_PIN_LINE]; |
| + cfg->line_out_pins[cfg->line_outs] = |
| + cfg->input_pins[AUTO_PIN_LINE]; |
| spec->line_switch = 1; |
| cfg->line_outs++; |
| } |
| if (cfg->input_pins[AUTO_PIN_MIC] && num_dacs > 2) { |
| - cfg->line_out_pins[2] = cfg->input_pins[AUTO_PIN_MIC]; |
| + cfg->line_out_pins[cfg->line_outs] = |
| + cfg->input_pins[AUTO_PIN_MIC]; |
| spec->mic_switch = 1; |
| cfg->line_outs++; |
| } |