diff options
author | Vitaliy Kulikov <Vitaliy.Kulikov@idt.com> | 2012-02-27 17:47:37 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-28 01:29:40 -0500 |
commit | 5556e147083fb4d473d5c1a82f73205b8b145cd9 (patch) | |
tree | 9ac253bf873945b896c61475f69fc53e7d9c774e | |
parent | 6edc59e602b36cd3c95a426ef6e8cad0344af8c7 (diff) |
ALSA: hda - Fix audio playback support on HP Zephyr system
Enables port E of IDT 92HD91 codec as output and sets correct output
phase between ports E and D and high pass filter.
Signed-off-by: Vitaliy Kulikov <Vitaliy.Kulikov@idt.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 4c769405d72a..8c346ac59d46 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -99,6 +99,7 @@ enum { | |||
99 | STAC_DELL_VOSTRO_3500, | 99 | STAC_DELL_VOSTRO_3500, |
100 | STAC_92HD83XXX_HP_cNB11_INTQUAD, | 100 | STAC_92HD83XXX_HP_cNB11_INTQUAD, |
101 | STAC_HP_DV7_4000, | 101 | STAC_HP_DV7_4000, |
102 | STAC_HP_ZEPHYR, | ||
102 | STAC_92HD83XXX_MODELS | 103 | STAC_92HD83XXX_MODELS |
103 | }; | 104 | }; |
104 | 105 | ||
@@ -894,6 +895,13 @@ static const struct hda_verb stac92hd83xxx_core_init[] = { | |||
894 | {} | 895 | {} |
895 | }; | 896 | }; |
896 | 897 | ||
898 | static const struct hda_verb stac92hd83xxx_hp_zephyr_init[] = { | ||
899 | { 0x22, 0x785, 0x43 }, | ||
900 | { 0x22, 0x782, 0xe0 }, | ||
901 | { 0x22, 0x795, 0x00 }, | ||
902 | {} | ||
903 | }; | ||
904 | |||
897 | static const struct hda_verb stac92hd71bxx_core_init[] = { | 905 | static const struct hda_verb stac92hd71bxx_core_init[] = { |
898 | /* set master volume and direct control */ | 906 | /* set master volume and direct control */ |
899 | { 0x28, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, | 907 | { 0x28, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, |
@@ -1621,6 +1629,12 @@ static const unsigned int hp_dv7_4000_pin_configs[10] = { | |||
1621 | 0x40f000f0, 0x40f000f0, | 1629 | 0x40f000f0, 0x40f000f0, |
1622 | }; | 1630 | }; |
1623 | 1631 | ||
1632 | static const unsigned int hp_zephyr_pin_configs[10] = { | ||
1633 | 0x01813050, 0x0421201f, 0x04a1205e, 0x96130310, | ||
1634 | 0x96130310, 0x0101401f, 0x1111611f, 0xd5a30130, | ||
1635 | 0, 0, | ||
1636 | }; | ||
1637 | |||
1624 | static const unsigned int hp_cNB11_intquad_pin_configs[10] = { | 1638 | static const unsigned int hp_cNB11_intquad_pin_configs[10] = { |
1625 | 0x40f000f0, 0x0221101f, 0x02a11020, 0x92170110, | 1639 | 0x40f000f0, 0x0221101f, 0x02a11020, 0x92170110, |
1626 | 0x40f000f0, 0x92170110, 0x40f000f0, 0xd5a30130, | 1640 | 0x40f000f0, 0x92170110, 0x40f000f0, 0xd5a30130, |
@@ -1634,6 +1648,7 @@ static const unsigned int *stac92hd83xxx_brd_tbl[STAC_92HD83XXX_MODELS] = { | |||
1634 | [STAC_DELL_VOSTRO_3500] = dell_vostro_3500_pin_configs, | 1648 | [STAC_DELL_VOSTRO_3500] = dell_vostro_3500_pin_configs, |
1635 | [STAC_92HD83XXX_HP_cNB11_INTQUAD] = hp_cNB11_intquad_pin_configs, | 1649 | [STAC_92HD83XXX_HP_cNB11_INTQUAD] = hp_cNB11_intquad_pin_configs, |
1636 | [STAC_HP_DV7_4000] = hp_dv7_4000_pin_configs, | 1650 | [STAC_HP_DV7_4000] = hp_dv7_4000_pin_configs, |
1651 | [STAC_HP_ZEPHYR] = hp_zephyr_pin_configs, | ||
1637 | }; | 1652 | }; |
1638 | 1653 | ||
1639 | static const char * const stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { | 1654 | static const char * const stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { |
@@ -1644,6 +1659,7 @@ static const char * const stac92hd83xxx_models[STAC_92HD83XXX_MODELS] = { | |||
1644 | [STAC_DELL_VOSTRO_3500] = "dell-vostro-3500", | 1659 | [STAC_DELL_VOSTRO_3500] = "dell-vostro-3500", |
1645 | [STAC_92HD83XXX_HP_cNB11_INTQUAD] = "hp_cNB11_intquad", | 1660 | [STAC_92HD83XXX_HP_cNB11_INTQUAD] = "hp_cNB11_intquad", |
1646 | [STAC_HP_DV7_4000] = "hp-dv7-4000", | 1661 | [STAC_HP_DV7_4000] = "hp-dv7-4000", |
1662 | [STAC_HP_ZEPHYR] = "hp-zephyr", | ||
1647 | }; | 1663 | }; |
1648 | 1664 | ||
1649 | static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | 1665 | static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { |
@@ -1696,6 +1712,14 @@ static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { | |||
1696 | "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), | 1712 | "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), |
1697 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3593, | 1713 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3593, |
1698 | "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), | 1714 | "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), |
1715 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3561, | ||
1716 | "HP", STAC_HP_ZEPHYR), | ||
1717 | {} /* terminator */ | ||
1718 | }; | ||
1719 | |||
1720 | static const struct snd_pci_quirk stac92hd83xxx_codec_id_cfg_tbl[] = { | ||
1721 | SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3561, | ||
1722 | "HP", STAC_HP_ZEPHYR), | ||
1699 | {} /* terminator */ | 1723 | {} /* terminator */ |
1700 | }; | 1724 | }; |
1701 | 1725 | ||
@@ -5565,6 +5589,12 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
5565 | STAC_92HD83XXX_MODELS, | 5589 | STAC_92HD83XXX_MODELS, |
5566 | stac92hd83xxx_models, | 5590 | stac92hd83xxx_models, |
5567 | stac92hd83xxx_cfg_tbl); | 5591 | stac92hd83xxx_cfg_tbl); |
5592 | /* check codec subsystem id if not found */ | ||
5593 | if (spec->board_config < 0) | ||
5594 | spec->board_config = | ||
5595 | snd_hda_check_board_codec_sid_config(codec, | ||
5596 | STAC_92HD83XXX_MODELS, stac92hd83xxx_models, | ||
5597 | stac92hd83xxx_codec_id_cfg_tbl); | ||
5568 | again: | 5598 | again: |
5569 | if (spec->board_config < 0) | 5599 | if (spec->board_config < 0) |
5570 | snd_printdd(KERN_INFO "hda_codec: %s: BIOS auto-probing.\n", | 5600 | snd_printdd(KERN_INFO "hda_codec: %s: BIOS auto-probing.\n", |
@@ -5575,6 +5605,12 @@ again: | |||
5575 | 5605 | ||
5576 | codec->patch_ops = stac92xx_patch_ops; | 5606 | codec->patch_ops = stac92xx_patch_ops; |
5577 | 5607 | ||
5608 | switch (spec->board_config) { | ||
5609 | case STAC_HP_ZEPHYR: | ||
5610 | spec->init = stac92hd83xxx_hp_zephyr_init; | ||
5611 | break; | ||
5612 | } | ||
5613 | |||
5578 | if (find_mute_led_cfg(codec, -1/*no default cfg*/)) | 5614 | if (find_mute_led_cfg(codec, -1/*no default cfg*/)) |
5579 | snd_printd("mute LED gpio %d polarity %d\n", | 5615 | snd_printd("mute LED gpio %d polarity %d\n", |
5580 | spec->gpio_led, | 5616 | spec->gpio_led, |