[alsa-devel] [PATCH V5 14/18] ALSA: HDA: Make hda sound card usable for Loongson.
Huacai Chen
chenhuacai at gmail.com
Mon Aug 13 10:22:27 CEST 2012
OK, I will improve the code.
On Mon, Aug 13, 2012 at 4:00 PM, Takashi Iwai <tiwai at suse.de> wrote:
> At Sat, 11 Aug 2012 17:32:19 +0800,
> Huacai Chen wrote:
>>
>> Lemote A1004(Laptop) and A1205(All-In-One) use Conexant's hda codec,
>> this patch modify patch_conexant.c to add Lemote specific code.
>>
>> Signed-off-by: Jie Chen <chenj at lemote.com>
>> Signed-off-by: Huacai Chen <chenhc at lemote.com>
>> Signed-off-by: Hongliang Tao <taohl at lemote.com>
>> Signed-off-by: Hua Yan <yanh at lemote.com>
>> Cc: alsa-devel at alsa-project.org
>> ---
>> include/linux/pci_ids.h | 2 ++
>> sound/pci/hda/patch_conexant.c | 24 ++++++++++++++++++++++++
>> 2 files changed, 26 insertions(+), 0 deletions(-)
>>
>> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
>> index fc35260..b28270e 100644
>> --- a/include/linux/pci_ids.h
>> +++ b/include/linux/pci_ids.h
>> @@ -2918,3 +2918,5 @@
>> #define PCI_DEVICE_ID_XEN_PLATFORM 0x0001
>>
>> #define PCI_VENDOR_ID_OCZ 0x1b85
>> +
>> +#define PCI_VENDOR_ID_LEMOTE 0x1c06
>> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
>> index 1436118..b7de368 100644
>> --- a/sound/pci/hda/patch_conexant.c
>> +++ b/sound/pci/hda/patch_conexant.c
>> @@ -4414,6 +4414,8 @@ static const struct hda_codec_ops cx_auto_patch_ops = {
>> enum {
>> CXT_PINCFG_LENOVO_X200,
>> CXT_PINCFG_LENOVO_TP410,
>> + CXT_PINCFG_LEMOTE_A1004,
>> + CXT_PINCFG_LEMOTE_A1205,
>> CXT_FIXUP_STEREO_DMIC,
>> };
>>
>> @@ -4441,6 +4443,18 @@ static const struct hda_pintbl cxt_pincfg_lenovo_tp410[] = {
>> {}
>> };
>>
>> +/* Lemote A1004/A1205 with cxt5066 */
>> +static const struct hda_pintbl cxt_pincfg_lemote[] = {
>> + { 0x1a, 0x90a10020 }, /* Internal mic */
>> + { 0x1b, 0x03a11020 }, /* External mic */
>> + { 0x1d, 0x400101f0 }, /* Not used */
>> + { 0x1e, 0x40a701f0 }, /* Not used */
>> + { 0x20, 0x404501f0 }, /* Not used */
>> + { 0x22, 0x404401f0 }, /* Not used */
>> + { 0x23, 0x40a701f0 }, /* Not used */
>> + {}
>> +};
>> +
>> static const struct hda_fixup cxt_fixups[] = {
>> [CXT_PINCFG_LENOVO_X200] = {
>> .type = HDA_FIXUP_PINS,
>> @@ -4450,6 +4464,14 @@ static const struct hda_fixup cxt_fixups[] = {
>> .type = HDA_FIXUP_PINS,
>> .v.pins = cxt_pincfg_lenovo_tp410,
>> },
>> + [CXT_PINCFG_LEMOTE_A1004] = {
>> + .type = HDA_FIXUP_PINS,
>> + .v.pins = cxt_pincfg_lemote,
>> + },
>> + [CXT_PINCFG_LEMOTE_A1205] = {
>> + .type = HDA_FIXUP_PINS,
>> + .v.pins = cxt_pincfg_lemote,
>> + },
>
> Well, if both point to the same pin configuration, there is no merit
> to create two distinct fixup types.
> Just create CXT_PINCFG_LEMOTE_A1X05, then pass it in your both device
> entries.
>
>
>> [CXT_FIXUP_STEREO_DMIC] = {
>> .type = HDA_FIXUP_FUNC,
>> .v.func = cxt_fixup_stereo_dmic,
>> @@ -4467,6 +4489,8 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
>> SND_PCI_QUIRK(0x17aa, 0x215f, "Lenovo T510", CXT_PINCFG_LENOVO_TP410),
>> SND_PCI_QUIRK(0x17aa, 0x21ce, "Lenovo T420", CXT_PINCFG_LENOVO_TP410),
>> SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520", CXT_PINCFG_LENOVO_TP410),
>> + SND_PCI_QUIRK(PCI_VENDOR_ID_LEMOTE, 0x2011, "Lemote A1004", CXT_PINCFG_LEMOTE_A1004),
>> + SND_PCI_QUIRK(PCI_VENDOR_ID_LEMOTE, 0x2012, "Lemote A1205", CXT_PINCFG_LEMOTE_A1205),
>> SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC),
>> SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC),
>
> Don't put entries suddenly in the middle of others.
> As you can see, the list is sorted in the order of id numbers.
>
> Also, in this case, we prefer having numbers over PCI_* literals.
> It's easier to check through the table in the end.
>
>
> thanks,
>
> Takashi
More information about the Alsa-devel
mailing list