linux-mips
[Top] [All Lists]

Re: [alsa-devel] [PATCH V4 12/16] ALSA: HDA: Make hda sound card usable

To: Huacai Chen <chenhuacai@gmail.com>
Subject: Re: [alsa-devel] [PATCH V4 12/16] ALSA: HDA: Make hda sound card usable for Loongson.
From: Takashi Iwai <tiwai@suse.de>
Date: Fri, 03 Aug 2012 16:56:48 +0200
Cc: linux-mips@linux-mips.org, alsa-devel@alsa-project.org, Zhangjin Wu <wuzhangjin@gmail.com>, Hua Yan <yanh@lemote.com>, linux-kernel@vger.kernel.org, Ralf Baechle <ralf@linux-mips.org>, Fuxin Zhang <zhangfx@lemote.com>, Huacai Chen <chenhc@lemote.com>, Hongliang Tao <taohl@lemote.com>
In-reply-to: <CAAhV-H5ATFD7pksBkA374ShYWmvrgttGSs0vgu8QJ1F3VeRyzA@mail.gmail.com>
List-archive: <http://www.linux-mips.org/archives/linux-mips/>
List-help: <mailto:ecartis@linux-mips.org?Subject=help>
List-id: linux-mips <linux-mips.eddie.linux-mips.org>
List-owner: <mailto:ralf@linux-mips.org>
List-post: <mailto:linux-mips@linux-mips.org>
List-software: Ecartis version 1.0.0
List-subscribe: <mailto:ecartis@linux-mips.org?subject=subscribe%20linux-mips>
List-unsubscribe: <mailto:ecartis@linux-mips.org?subject=unsubscribe%20linux-mips>
References: <1343977571-2292-1-git-send-email-chenhc@lemote.com> <1343977571-2292-13-git-send-email-chenhc@lemote.com> <s5hobmsqqeh.wl%tiwai@suse.de> <CAAhV-H5ATFD7pksBkA374ShYWmvrgttGSs0vgu8QJ1F3VeRyzA@mail.gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.8 Emacs/24.1 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO)
At Fri, 3 Aug 2012 18:36:40 +0800,
Huacai Chen wrote:
> 
> We write these quirks on 2.6.36 some time ago, and then we port them
> to 3.x (3.2, 3.3, 3.4 and 3.5). As you say, PMON (BIOS for Loongson)
> doesn't set the pins correctly. Anyway, I'll try your suggestions.

Thanks.  I guess it should work by just adding a new entry for your
device in cxt_fixups[] containing the right default pin-configuration
table, then point it in cxt5066_fixups[] with the corresponding PCI
(or codec) SSID.


Takashi

> On Fri, Aug 3, 2012 at 5:24 PM, Takashi Iwai <tiwai@suse.de> wrote:
> > At Fri,  3 Aug 2012 15:06:07 +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: Huacai Chen <chenhc@lemote.com>
> >> Signed-off-by: Hongliang Tao <taohl@lemote.com>
> >> Signed-off-by: Hua Yan <yanh@lemote.com>
> >> Cc: alsa-devel@alsa-project.org
> >
> > Doesn't the recent kernel work as is?  Which kernel have you tested?
> > If it doesn't work with the recent kernel, it's likely just because
> > the pins aren't set properly by BIOS or whatever.
> >
> > In general, we avoid to add this kind of quirks any longer.
> > If the problem is only about the pin configuration, you can add the
> > pin table in the driver.
> >
> >
> > thanks,
> >
> > Takashi
> >
> >> ---
> >>  include/linux/pci_ids.h        |    2 +
> >>  sound/pci/hda/patch_conexant.c |   52 
> >> ++++++++++++++++++++++++++++++++++++++-
> >>  2 files changed, 52 insertions(+), 2 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..6bbac39 100644
> >> --- a/sound/pci/hda/patch_conexant.c
> >> +++ b/sound/pci/hda/patch_conexant.c
> >> @@ -142,6 +142,7 @@ struct conexant_spec {
> >>       unsigned int thinkpad:1;
> >>       unsigned int hp_laptop:1;
> >>       unsigned int asus:1;
> >> +     unsigned int lemote:1;
> >>       unsigned int pin_eapd_ctrls:1;
> >>       unsigned int fixup_stereo_dmic:1;
> >>
> >> @@ -2280,7 +2281,7 @@ static void cxt5066_automic(struct hda_codec *codec)
> >>               cxt5066_thinkpad_automic(codec);
> >>       else if (spec->hp_laptop)
> >>               cxt5066_hp_laptop_automic(codec);
> >> -     else if (spec->asus)
> >> +     else if (spec->asus || spec->lemote)
> >>               cxt5066_asus_automic(codec);
> >>  }
> >>
> >> @@ -2913,6 +2914,32 @@ static const struct hda_verb 
> >> cxt5066_init_verbs_hp_laptop[] = {
> >>       { } /* end */
> >>  };
> >>
> >> +static struct hda_verb cxt5066_init_verbs_lemote[] = {
> >> +     {0x14, AC_VERB_SET_CONNECT_SEL, 0x0}, /* ADC1: Connection index: 0 */
> >> +     {0x19, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | 
> >> CONEXANT_HP_EVENT},
> >> +     {0x1b, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | 
> >> CONEXANT_MIC_EVENT},
> >> +
> >> +     /* DAC2: unused */
> >> +     {0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE},
> >> +
> >> +     /* ADC2, ADC3: unused */
> >> +     {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
> >> +     {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
> >> +     {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)},
> >> +     {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)},
> >> +     {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)},
> >> +     {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)},
> >> +     {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)},
> >> +     {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)},
> >> +
> >> +     /* Disable digital microphone port */
> >> +     {0x23, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
> >> +
> >> +     /* Disable SPDIF */
> >> +     {0x20, AC_VERB_SET_PIN_WIDGET_CONTROL, 0},
> >> +     { } /* end */
> >> +};
> >> +
> >>  /* initialize jack-sensing, too */
> >>  static int cxt5066_init(struct hda_codec *codec)
> >>  {
> >> @@ -2950,6 +2977,8 @@ enum {
> >>       CXT5066_THINKPAD,       /* Lenovo ThinkPad T410s, others? */
> >>       CXT5066_ASUS,           /* Asus K52JU, Lenovo G560 - Int mic at 0x1a 
> >> and Ext mic at 0x1b */
> >>       CXT5066_HP_LAPTOP,      /* HP Laptop */
> >> +     CXT5066_LEMOTE_A1004,   /* Lemote Laptop A1004 */
> >> +     CXT5066_LEMOTE_A1205,   /* Lemote All-In-One A1205 */
> >>       CXT5066_AUTO,           /* BIOS auto-parser */
> >>       CXT5066_MODELS
> >>  };
> >> @@ -2963,6 +2992,8 @@ static const char * const 
> >> cxt5066_models[CXT5066_MODELS] = {
> >>       [CXT5066_THINKPAD]      = "thinkpad",
> >>       [CXT5066_ASUS]          = "asus",
> >>       [CXT5066_HP_LAPTOP]     = "hp-laptop",
> >> +     [CXT5066_LEMOTE_A1004]  = "lemote-laptop-a1004",
> >> +     [CXT5066_LEMOTE_A1205]  = "lemote-aio-a1205",
> >>       [CXT5066_AUTO]          = "auto",
> >>  };
> >>
> >> @@ -2995,6 +3026,8 @@ static const struct snd_pci_quirk cxt5066_cfg_tbl[] 
> >> = {
> >>       SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo U350", CXT5066_ASUS),
> >>       SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G560", CXT5066_ASUS),
> >>       SND_PCI_QUIRK(0x17aa, 0x3938, "Lenovo G565", CXT5066_AUTO),
> >> +     SND_PCI_QUIRK(PCI_VENDOR_ID_LEMOTE, 0x2011, "Lemote A1004", 
> >> CXT5066_LEMOTE_A1004),
> >> +     SND_PCI_QUIRK(PCI_VENDOR_ID_LEMOTE, 0x2012, "Lemote A1205", 
> >> CXT5066_LEMOTE_A1205),
> >>       SND_PCI_QUIRK(0x1b0a, 0x2092, "CyberpowerPC Gamer Xplorer N57001", 
> >> CXT5066_AUTO),
> >>       {}
> >>  };
> >> @@ -3075,7 +3108,22 @@ static int patch_cxt5066(struct hda_codec *codec)
> >>               spec->port_d_mode = 0;
> >>               spec->mic_boost = 3; /* default 30dB gain */
> >>               break;
> >> -
> >> +     case CXT5066_LEMOTE_A1004:
> >> +     case CXT5066_LEMOTE_A1205:
> >> +             codec->patch_ops.init = cxt5066_init;
> >> +             codec->patch_ops.unsol_event = cxt5066_unsol_event;
> >> +             spec->init_verbs[spec->num_init_verbs] =
> >> +                     cxt5066_init_verbs_lemote;
> >> +             spec->num_init_verbs++;
> >> +             spec->lemote = 1;
> >> +             spec->mixers[spec->num_mixers++] = cxt5066_mixer_master;
> >> +             spec->mixers[spec->num_mixers++] = cxt5066_mixers;
> >> +             /* no S/PDIF out */
> >> +             /* input source automatically selected */
> >> +             spec->input_mux = NULL;
> >> +             spec->port_d_mode = 0;
> >> +             spec->mic_boost = 3; /* default 30dB gain */
> >> +             break;
> >>       case CXT5066_OLPC_XO_1_5:
> >>               codec->patch_ops.init = cxt5066_olpc_init;
> >>               codec->patch_ops.unsol_event = cxt5066_olpc_unsol_event;
> >> --
> >> 1.7.7.3
> >>
> >> _______________________________________________
> >> Alsa-devel mailing list
> >> Alsa-devel@alsa-project.org
> >> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> >>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

<Prev in Thread] Current Thread [Next in Thread>