diff options
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 1 | ||||
-rw-r--r-- | 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 1d38b0dfba95..84e81ad7ba2d 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -282,6 +282,7 @@ Conexant 5051 | |||
282 | hp HP Spartan laptop | 282 | hp HP Spartan laptop |
283 | hp-dv6736 HP dv6736 | 283 | hp-dv6736 HP dv6736 |
284 | hp-f700 HP Compaq Presario F700 | 284 | hp-f700 HP Compaq Presario F700 |
285 | ideapad Lenovo IdeaPad laptop | ||
285 | lenovo-x200 Lenovo X200 laptop | 286 | lenovo-x200 Lenovo X200 laptop |
286 | toshiba Toshiba Satellite M300 | 287 | toshiba Toshiba Satellite M300 |
287 | 288 | ||
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 2bf2cb5da956..54f74191ebca 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) | |||
1632 | pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0; | 1632 | pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0; |
1633 | snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, | 1633 | snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, |
1634 | pinctl); | 1634 | pinctl); |
1635 | /* on ideapad there is an aditional speaker (subwoofer) to mute */ | ||
1636 | if (spec->ideapad) | ||
1637 | snd_hda_codec_write(codec, 0x1b, 0, | ||
1638 | AC_VERB_SET_PIN_WIDGET_CONTROL, | ||
1639 | pinctl); | ||
1635 | } | 1640 | } |
1636 | 1641 | ||
1637 | /* turn on/off EAPD (+ mute HP) as a master switch */ | 1642 | /* 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, | |||
1888 | #endif | 1893 | #endif |
1889 | } | 1894 | } |
1890 | 1895 | ||
1896 | static struct hda_verb cxt5051_ideapad_init_verbs[] = { | ||
1897 | /* Subwoofer */ | ||
1898 | {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
1899 | {0x1b, AC_VERB_SET_CONNECT_SEL, 0x00}, | ||
1900 | { } /* end */ | ||
1901 | }; | ||
1902 | |||
1891 | /* initialize jack-sensing, too */ | 1903 | /* initialize jack-sensing, too */ |
1892 | static int cxt5051_init(struct hda_codec *codec) | 1904 | static int cxt5051_init(struct hda_codec *codec) |
1893 | { | 1905 | { |
@@ -1917,6 +1929,7 @@ enum { | |||
1917 | CXT5051_LENOVO_X200, /* Lenovo X200 laptop, also used for Advanced Mini Dock 250410 */ | 1929 | CXT5051_LENOVO_X200, /* Lenovo X200 laptop, also used for Advanced Mini Dock 250410 */ |
1918 | CXT5051_F700, /* HP Compaq Presario F700 */ | 1930 | CXT5051_F700, /* HP Compaq Presario F700 */ |
1919 | CXT5051_TOSHIBA, /* Toshiba M300 & co */ | 1931 | CXT5051_TOSHIBA, /* Toshiba M300 & co */ |
1932 | CXT5051_IDEAPAD, /* Lenovo IdeaPad Y430 */ | ||
1920 | CXT5051_MODELS | 1933 | CXT5051_MODELS |
1921 | }; | 1934 | }; |
1922 | 1935 | ||
@@ -1927,6 +1940,7 @@ static const char *cxt5051_models[CXT5051_MODELS] = { | |||
1927 | [CXT5051_LENOVO_X200] = "lenovo-x200", | 1940 | [CXT5051_LENOVO_X200] = "lenovo-x200", |
1928 | [CXT5051_F700] = "hp-700", | 1941 | [CXT5051_F700] = "hp-700", |
1929 | [CXT5051_TOSHIBA] = "toshiba", | 1942 | [CXT5051_TOSHIBA] = "toshiba", |
1943 | [CXT5051_IDEAPAD] = "ideapad", | ||
1930 | }; | 1944 | }; |
1931 | 1945 | ||
1932 | static struct snd_pci_quirk cxt5051_cfg_tbl[] = { | 1946 | static struct snd_pci_quirk cxt5051_cfg_tbl[] = { |
@@ -1938,6 +1952,7 @@ static struct snd_pci_quirk cxt5051_cfg_tbl[] = { | |||
1938 | CXT5051_LAPTOP), | 1952 | CXT5051_LAPTOP), |
1939 | SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP), | 1953 | SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP), |
1940 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT5051_LENOVO_X200), | 1954 | SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo X200", CXT5051_LENOVO_X200), |
1955 | SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo IdeaPad", CXT5051_IDEAPAD), | ||
1941 | {} | 1956 | {} |
1942 | }; | 1957 | }; |
1943 | 1958 | ||
@@ -1999,6 +2014,11 @@ static int patch_cxt5051(struct hda_codec *codec) | |||
1999 | spec->mixers[0] = cxt5051_toshiba_mixers; | 2014 | spec->mixers[0] = cxt5051_toshiba_mixers; |
2000 | spec->auto_mic = AUTO_MIC_PORTB; | 2015 | spec->auto_mic = AUTO_MIC_PORTB; |
2001 | break; | 2016 | break; |
2017 | case CXT5051_IDEAPAD: | ||
2018 | spec->init_verbs[spec->num_init_verbs++] = | ||
2019 | cxt5051_ideapad_init_verbs; | ||
2020 | spec->ideapad = 1; | ||
2021 | break; | ||
2002 | } | 2022 | } |
2003 | 2023 | ||
2004 | return 0; | 2024 | return 0; |