aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci
diff options
context:
space:
mode:
authorGuillaume Munch <diabo@free.fr>2006-08-16 13:35:12 -0400
committerJaroslav Kysela <perex@suse.cz>2006-09-23 04:41:14 -0400
commit99ccc560b73ff7381153dc1391d18391373931d3 (patch)
tree711cc97dab35104206c16a347e9213dd5ee58fb6 /sound/pci
parentd244bf897b2e7933112067ec8d8dc1d47b86145f (diff)
[ALSA] Add support for Sony Vaio AR 11B
This patch adds automatic detection for Sigmatel ID 7664, the sound chip in Sony Vaio AR 11B (european name). - patch_stac7661 becomes patch_stac766x - .id = 0x83847664 is added Signed-off-by: Guillaume Munch <diabo@free.fr> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci')
-rw-r--r--sound/pci/hda/patch_sigmatel.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index d572f030c3e..7eaf755b014 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -1449,10 +1449,10 @@ static int patch_stac9205(struct hda_codec *codec)
1449} 1449}
1450 1450
1451/* 1451/*
1452 * STAC 7661(?) hack 1452 * STAC 7661(?) and 7664 hack
1453 */ 1453 */
1454 1454
1455/* static config for Sony VAIO FE550G */ 1455/* static config for Sony VAIO FE550G and Sony VAIO AR */
1456static hda_nid_t vaio_dacs[] = { 0x2 }; 1456static hda_nid_t vaio_dacs[] = { 0x2 };
1457#define VAIO_HP_DAC 0x5 1457#define VAIO_HP_DAC 0x5
1458static hda_nid_t vaio_adcs[] = { 0x8 /*,0x6*/ }; 1458static hda_nid_t vaio_adcs[] = { 0x8 /*,0x6*/ };
@@ -1552,7 +1552,7 @@ static struct snd_kcontrol_new vaio_mixer[] = {
1552 {} 1552 {}
1553}; 1553};
1554 1554
1555static struct hda_codec_ops stac7661_patch_ops = { 1555static struct hda_codec_ops stac766x_patch_ops = {
1556 .build_controls = stac92xx_build_controls, 1556 .build_controls = stac92xx_build_controls,
1557 .build_pcms = stac92xx_build_pcms, 1557 .build_pcms = stac92xx_build_pcms,
1558 .init = stac92xx_init, 1558 .init = stac92xx_init,
@@ -1562,23 +1562,25 @@ static struct hda_codec_ops stac7661_patch_ops = {
1562#endif 1562#endif
1563}; 1563};
1564 1564
1565enum { STAC7661_VAIO }; 1565enum { STAC766x_VAIO };
1566 1566
1567static struct hda_board_config stac7661_cfg_tbl[] = { 1567static struct hda_board_config stac766x_cfg_tbl[] = {
1568 { .modelname = "vaio", .config = STAC7661_VAIO }, 1568 { .modelname = "vaio", .config = STAC766x_VAIO },
1569 { .pci_subvendor = 0x104d, .pci_subdevice = 0x81e6, 1569 { .pci_subvendor = 0x104d, .pci_subdevice = 0x81e6,
1570 .config = STAC7661_VAIO }, 1570 .config = STAC766x_VAIO },
1571 { .pci_subvendor = 0x104d, .pci_subdevice = 0x81ef, 1571 { .pci_subvendor = 0x104d, .pci_subdevice = 0x81ef,
1572 .config = STAC7661_VAIO }, 1572 .config = STAC766x_VAIO },
1573 { .pci_subvendor = 0x104d, .pci_subdevice = 0x81fd,
1574 .config = STAC766x_VAIO },
1573 {} 1575 {}
1574}; 1576};
1575 1577
1576static int patch_stac7661(struct hda_codec *codec) 1578static int patch_stac766x(struct hda_codec *codec)
1577{ 1579{
1578 struct sigmatel_spec *spec; 1580 struct sigmatel_spec *spec;
1579 int board_config; 1581 int board_config;
1580 1582
1581 board_config = snd_hda_check_board_config(codec, stac7661_cfg_tbl); 1583 board_config = snd_hda_check_board_config(codec, stac766x_cfg_tbl);
1582 if (board_config < 0) 1584 if (board_config < 0)
1583 /* unknown config, let generic-parser do its job... */ 1585 /* unknown config, let generic-parser do its job... */
1584 return snd_hda_parse_generic_codec(codec); 1586 return snd_hda_parse_generic_codec(codec);
@@ -1589,7 +1591,7 @@ static int patch_stac7661(struct hda_codec *codec)
1589 1591
1590 codec->spec = spec; 1592 codec->spec = spec;
1591 switch (board_config) { 1593 switch (board_config) {
1592 case STAC7661_VAIO: 1594 case STAC766x_VAIO:
1593 spec->mixer = vaio_mixer; 1595 spec->mixer = vaio_mixer;
1594 spec->init = vaio_init; 1596 spec->init = vaio_init;
1595 spec->multiout.max_channels = 2; 1597 spec->multiout.max_channels = 2;
@@ -1603,7 +1605,7 @@ static int patch_stac7661(struct hda_codec *codec)
1603 break; 1605 break;
1604 } 1606 }
1605 1607
1606 codec->patch_ops = stac7661_patch_ops; 1608 codec->patch_ops = stac766x_patch_ops;
1607 return 0; 1609 return 0;
1608} 1610}
1609 1611
@@ -1635,7 +1637,7 @@ struct hda_codec_preset snd_hda_preset_sigmatel[] = {
1635 { .id = 0x83847627, .name = "STAC9271D", .patch = patch_stac927x }, 1637 { .id = 0x83847627, .name = "STAC9271D", .patch = patch_stac927x },
1636 { .id = 0x83847628, .name = "STAC9274X5NH", .patch = patch_stac927x }, 1638 { .id = 0x83847628, .name = "STAC9274X5NH", .patch = patch_stac927x },
1637 { .id = 0x83847629, .name = "STAC9274D5NH", .patch = patch_stac927x }, 1639 { .id = 0x83847629, .name = "STAC9274D5NH", .patch = patch_stac927x },
1638 { .id = 0x83847661, .name = "STAC7661", .patch = patch_stac7661 }, 1640 { .id = 0x83847661, .name = "STAC7661", .patch = patch_stac766x },
1639 { .id = 0x838476a0, .name = "STAC9205", .patch = patch_stac9205 }, 1641 { .id = 0x838476a0, .name = "STAC9205", .patch = patch_stac9205 },
1640 { .id = 0x838476a1, .name = "STAC9205D", .patch = patch_stac9205 }, 1642 { .id = 0x838476a1, .name = "STAC9205D", .patch = patch_stac9205 },
1641 { .id = 0x838476a2, .name = "STAC9204", .patch = patch_stac9205 }, 1643 { .id = 0x838476a2, .name = "STAC9204", .patch = patch_stac9205 },
@@ -1644,5 +1646,6 @@ struct hda_codec_preset snd_hda_preset_sigmatel[] = {
1644 { .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 }, 1646 { .id = 0x838476a5, .name = "STAC9255D", .patch = patch_stac9205 },
1645 { .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 }, 1647 { .id = 0x838476a6, .name = "STAC9254", .patch = patch_stac9205 },
1646 { .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 }, 1648 { .id = 0x838476a7, .name = "STAC9254D", .patch = patch_stac9205 },
1649 { .id = 0x83847664, .name = "STAC7664", .patch = patch_stac766x },
1647 {} /* terminator */ 1650 {} /* terminator */
1648}; 1651};