At Tue, 2 Mar 2010 17:43:28 +0800, Wei Ni wrote:
Hi, Takashi
- About AZX_MAX_CODECS, on our new chipset, the codec_mask=0x31, it means
the codec connect on the slot0, slot4, slot5, and on some GT2xx, the codec will connect to slot6 or slot7, although these chip at most have 4 codecs. So I change the AZX_MAX_CODECS to 8 directly. In hda_intel.c, the azx_command_addr(), azx_response_addr(), and azx_codec_create() use the AZX_MAX_CODECS, if it set as 4, the driver will not detect the codecs which connect to slot4~7.
Yeah, I understand it. But, as mentioned, changing this to *all* controller chips is dangerous. We have already a quirk for controller chips to set max codecs depending on the chip model. Right now, only teradici chip sets to 1.
So, add "#define AZX_DEFAULT_CODECS 4", and use this value unless azx_max_codecs[] is defined. And, for the new controller chip supporting more than 4, it can has 8 in azx_max_codecs[].
Is it feasible?
- yes, it's better to merge the hdmi common codes.
- About ELD, yes, we need to change the Makefile and Kconfig as well.
Could you help me to change it.
In sound/pci/hda/Makefile, hda_eld.c is built into snd-hda-codec-intelhdmi by the following rule:
snd-hda-codec-intelhdmi-objs := patch_intelhdmi.o hda_eld.o
Since now hda_eld.c is used in two modules, this has to be in the common place, such as snd-hda-codec. For this, uncomment the line:
# snd-hda-codec-$(CONFIG_SND_HDA_ELD) += hda_eld.o
and remove hda_eld.o from snd-hda-codec-intelhdmi-objs line.
For Kconfig, right now we have the definition
config SND_HDA_ELD def_bool y depends on SND_HDA_CODEC_INTELHDMI
Change depends on like
depends on SND_HDA_CODEC_INTELHDMI || SND_HDA_CODEC_NVHDMI
This can be done via "select" instead. But, we'd merge all hdmi codes later, so which way to choose is no big matter.
thanks,
Takashi