ALSA: Allow to force model to intel-mac-v3 in snd_hda_intel (sigmatel).
authorNicolas Boichat <nicolas@boichat.ch>
Mon, 21 Jul 2008 14:18:01 +0000 (22:18 +0800)
committerTakashi Iwai <tiwai@suse.de>
Sun, 27 Jul 2008 08:22:27 +0000 (10:22 +0200)
commit536319afd1f25383009c0c88f6fb00104f49c178
tree82790c97fccf0396a84b52f447b9dfd0fa3292b0
parentb15ebe2616289da258f85b3ff142fca237ef9f59
ALSA: Allow to force model to intel-mac-v3 in snd_hda_intel (sigmatel).

Currently, even if you pass model=intel-mac-v3 as a module parameter to
snd_hda_intel, the function patch_stac922x (patch_sigmatel.c) will still
try to auto-detect the model type. This is a problem on my MacBook Pro 1st
generation, which needs intel-mac-v3, but sometimes incorrectly reports
0x00000100 as subsystem id, which causes the switch in patch_stac922x to
select intel-mac-v4.

To fix this, I added a new model called intel-mac-auto, so in case no
module parameter is passed, and an Intel Mac board is detected, the
model will be automatically detected, while no detection will be done
if the model is forced to intel-mac-v3.

This problem has been around for quite a while, and I used to fix it
by moving the case statement for 0x00000100 in patch_stac922x so that
intel-mac-v3 is chosen.

Another way to fix the problem would be to check if a module parameter
was set directly in patch_stac922x, using something like this:
if (spec->board_config == STAC_INTEL_MAC_V3 &&
!codec->bus->modelname) {

But I think it is less elegant (if you prefer that way, I can prepare a
patch).

Signed-off-by: Nicolas Boichat <nicolas@boichat.ch>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Documentation/sound/alsa/ALSA-Configuration.txt
sound/pci/hda/patch_sigmatel.c