[alsa-devel] [PATCH] ALSA: hda - add ideapad model for Conexant 5051 codec
Takashi Iwai
tiwai at suse.de
Thu Jun 17 20:39:20 CEST 2010
At Thu, 17 Jun 2010 14:15:06 -0300,
Herton Ronaldo Krzesinski wrote:
>
> Lenovo IdeaPad Y430 has an additional subwoofer connected at pin 0x1b,
> which isn't muted when headphone is plugged in. This adds additional
> support to the extra subwoofer via new ideapad model.
>
> Signed-off-by: Herton Ronaldo Krzesinski <herton at mandriva.com.br>
Thanks, applied now.
Takashi
> ---
> Documentation/sound/alsa/HD-Audio-Models.txt | 1 +
> sound/pci/hda/patch_conexant.c | 20 ++++++++++++++++++++
> 2 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt
> b/Documentation/sound/alsa/HD-Audio-Models.txt
> index 1d38b0d..84e81ad 100644
> --- a/Documentation/sound/alsa/HD-Audio-Models.txt
> +++ b/Documentation/sound/alsa/HD-Audio-Models.txt
> @@ -282,6 +282,7 @@ Conexant 5051
> hp HP Spartan laptop
> hp-dv6736 HP dv6736
> hp-f700 HP Compaq Presario F700
> + ideapad Lenovo IdeaPad laptop
> lenovo-x200 Lenovo X200 laptop
> toshiba Toshiba Satellite M300
>
> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
> index 2bf2cb5..54f7419 100644
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -1632,6 +1632,11 @@ static void cxt5051_update_speaker(struct hda_codec
> *codec)
> pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
> snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
> pinctl);
> + /* on ideapad there is an aditional speaker (subwoofer) to mute */
> + if (spec->ideapad)
> + snd_hda_codec_write(codec, 0x1b, 0,
> + AC_VERB_SET_PIN_WIDGET_CONTROL,
> + pinctl);
> }
>
> /* turn on/off EAPD (+ mute HP) as a master switch */
> @@ -1888,6 +1893,13 @@ static void cxt5051_init_mic_port(struct hda_codec
> *codec, hda_nid_t nid,
> #endif
> }
>
> +static struct hda_verb cxt5051_ideapad_init_verbs[] = {
> + /* Subwoofer */
> + {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT},
> + {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00},
> + { } /* end */
> +};
> +
> /* initialize jack-sensing, too */
> static int cxt5051_init(struct hda_codec *codec)
> {
> @@ -1917,6 +1929,7 @@ enum {
> CXT5051_LENOVO_X200, /* Lenovo X200 laptop, also used for Advanced Mini
> Dock 250410 */
> CXT5051_F700, /* HP Compaq Presario F700 */
> CXT5051_TOSHIBA, /* Toshiba M300 & co */
> + CXT5051_IDEAPAD, /* Lenovo IdeaPad Y430 */
> CXT5051_MODELS
> };
>
> @@ -1927,6 +1940,7 @@ static const char *cxt5051_models[CXT5051_MODELS] = {
> [CXT5051_LENOVO_X200] = "lenovo-x200",
> [CXT5051_F700] = "hp-700",
> [CXT5051_TOSHIBA] = "toshiba",
> + [CXT5051_IDEAPAD] = "ideapad",
> };
>
> static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
> @@ -1938,6 +1952,7 @@ static struct snd_pci_quirk cxt5051_cfg_tbl[] = {
> CXT5051_LAPTOP),
> SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP),
> SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT5051_LENOVO_X200),
> + SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo IdeaPad", CXT5051_IDEAPAD),
> {}
> };
>
> @@ -1999,6 +2014,11 @@ static int patch_cxt5051(struct hda_codec *codec)
> spec->mixers[0] = cxt5051_toshiba_mixers;
> spec->auto_mic = AUTO_MIC_PORTB;
> break;
> + case CXT5051_IDEAPAD:
> + spec->init_verbs[spec->num_init_verbs++] =
> + cxt5051_ideapad_init_verbs;
> + spec->ideapad = 1;
> + break;
> }
>
> return 0;
> --
> 1.7.1
>
More information about the Alsa-devel
mailing list