aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/hda_intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r--sound/pci/hda/hda_intel.c94
1 files changed, 51 insertions, 43 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index ec9c348336cc..43b7cfb7cffd 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -125,6 +125,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
125 "{Intel, ICH9}," 125 "{Intel, ICH9},"
126 "{Intel, ICH10}," 126 "{Intel, ICH10},"
127 "{Intel, PCH}," 127 "{Intel, PCH},"
128 "{Intel, CPT},"
128 "{Intel, SCH}," 129 "{Intel, SCH},"
129 "{ATI, SB450}," 130 "{ATI, SB450},"
130 "{ATI, SB600}," 131 "{ATI, SB600},"
@@ -259,8 +260,6 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
259#define AZX_MAX_FRAG 32 260#define AZX_MAX_FRAG 32
260/* max buffer size - no h/w limit, you can increase as you like */ 261/* max buffer size - no h/w limit, you can increase as you like */
261#define AZX_MAX_BUF_SIZE (1024*1024*1024) 262#define AZX_MAX_BUF_SIZE (1024*1024*1024)
262/* max number of PCM devics per card */
263#define AZX_MAX_PCMS 8
264 263
265/* RIRB int mask: overrun[2], response[0] */ 264/* RIRB int mask: overrun[2], response[0] */
266#define RIRB_INT_RESPONSE 0x01 265#define RIRB_INT_RESPONSE 0x01
@@ -268,7 +267,8 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2, SDO3 };
268#define RIRB_INT_MASK 0x05 267#define RIRB_INT_MASK 0x05
269 268
270/* STATESTS int mask: S3,SD2,SD1,SD0 */ 269/* STATESTS int mask: S3,SD2,SD1,SD0 */
271#define AZX_MAX_CODECS 4 270#define AZX_MAX_CODECS 8
271#define AZX_DEFAULT_CODECS 4
272#define STATESTS_INT_MASK ((1 << AZX_MAX_CODECS) - 1) 272#define STATESTS_INT_MASK ((1 << AZX_MAX_CODECS) - 1)
273 273
274/* SD_CTL bits */ 274/* SD_CTL bits */
@@ -408,7 +408,7 @@ struct azx {
408 struct azx_dev *azx_dev; 408 struct azx_dev *azx_dev;
409 409
410 /* PCM */ 410 /* PCM */
411 struct snd_pcm *pcm[AZX_MAX_PCMS]; 411 struct snd_pcm *pcm[HDA_MAX_PCMS];
412 412
413 /* HD codec */ 413 /* HD codec */
414 unsigned short codec_mask; 414 unsigned short codec_mask;
@@ -426,6 +426,7 @@ struct azx {
426 426
427 /* flags */ 427 /* flags */
428 int position_fix; 428 int position_fix;
429 int poll_count;
429 unsigned int running :1; 430 unsigned int running :1;
430 unsigned int initialized :1; 431 unsigned int initialized :1;
431 unsigned int single_cmd :1; 432 unsigned int single_cmd :1;
@@ -448,6 +449,7 @@ struct azx {
448/* driver types */ 449/* driver types */
449enum { 450enum {
450 AZX_DRIVER_ICH, 451 AZX_DRIVER_ICH,
452 AZX_DRIVER_PCH,
451 AZX_DRIVER_SCH, 453 AZX_DRIVER_SCH,
452 AZX_DRIVER_ATI, 454 AZX_DRIVER_ATI,
453 AZX_DRIVER_ATIHDMI, 455 AZX_DRIVER_ATIHDMI,
@@ -462,6 +464,7 @@ enum {
462 464
463static char *driver_short_names[] __devinitdata = { 465static char *driver_short_names[] __devinitdata = {
464 [AZX_DRIVER_ICH] = "HDA Intel", 466 [AZX_DRIVER_ICH] = "HDA Intel",
467 [AZX_DRIVER_PCH] = "HDA Intel PCH",
465 [AZX_DRIVER_SCH] = "HDA Intel MID", 468 [AZX_DRIVER_SCH] = "HDA Intel MID",
466 [AZX_DRIVER_ATI] = "HDA ATI SB", 469 [AZX_DRIVER_ATI] = "HDA ATI SB",
467 [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI", 470 [AZX_DRIVER_ATIHDMI] = "HDA ATI HDMI",
@@ -506,7 +509,7 @@ static char *driver_short_names[] __devinitdata = {
506#define get_azx_dev(substream) (substream->runtime->private_data) 509#define get_azx_dev(substream) (substream->runtime->private_data)
507 510
508static int azx_acquire_irq(struct azx *chip, int do_disconnect); 511static int azx_acquire_irq(struct azx *chip, int do_disconnect);
509 512static int azx_send_cmd(struct hda_bus *bus, unsigned int val);
510/* 513/*
511 * Interface for HD codec 514 * Interface for HD codec
512 */ 515 */
@@ -664,11 +667,12 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
664{ 667{
665 struct azx *chip = bus->private_data; 668 struct azx *chip = bus->private_data;
666 unsigned long timeout; 669 unsigned long timeout;
670 int do_poll = 0;
667 671
668 again: 672 again:
669 timeout = jiffies + msecs_to_jiffies(1000); 673 timeout = jiffies + msecs_to_jiffies(1000);
670 for (;;) { 674 for (;;) {
671 if (chip->polling_mode) { 675 if (chip->polling_mode || do_poll) {
672 spin_lock_irq(&chip->reg_lock); 676 spin_lock_irq(&chip->reg_lock);
673 azx_update_rirb(chip); 677 azx_update_rirb(chip);
674 spin_unlock_irq(&chip->reg_lock); 678 spin_unlock_irq(&chip->reg_lock);
@@ -676,6 +680,9 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
676 if (!chip->rirb.cmds[addr]) { 680 if (!chip->rirb.cmds[addr]) {
677 smp_rmb(); 681 smp_rmb();
678 bus->rirb_error = 0; 682 bus->rirb_error = 0;
683
684 if (!do_poll)
685 chip->poll_count = 0;
679 return chip->rirb.res[addr]; /* the last value */ 686 return chip->rirb.res[addr]; /* the last value */
680 } 687 }
681 if (time_after(jiffies, timeout)) 688 if (time_after(jiffies, timeout))
@@ -688,6 +695,16 @@ static unsigned int azx_rirb_get_response(struct hda_bus *bus,
688 } 695 }
689 } 696 }
690 697
698 if (!chip->polling_mode && chip->poll_count < 2) {
699 snd_printdd(SFX "azx_get_response timeout, "
700 "polling the codec once: last cmd=0x%08x\n",
701 chip->last_cmd[addr]);
702 do_poll = 1;
703 chip->poll_count++;
704 goto again;
705 }
706
707
691 if (!chip->polling_mode) { 708 if (!chip->polling_mode) {
692 snd_printk(KERN_WARNING SFX "azx_get_response timeout, " 709 snd_printk(KERN_WARNING SFX "azx_get_response timeout, "
693 "switching to polling mode: last cmd=0x%08x\n", 710 "switching to polling mode: last cmd=0x%08x\n",
@@ -953,8 +970,8 @@ static void azx_stream_start(struct azx *chip, struct azx_dev *azx_dev)
953 azx_dev->insufficient = 1; 970 azx_dev->insufficient = 1;
954 971
955 /* enable SIE */ 972 /* enable SIE */
956 azx_writeb(chip, INTCTL, 973 azx_writel(chip, INTCTL,
957 azx_readb(chip, INTCTL) | (1 << azx_dev->index)); 974 azx_readl(chip, INTCTL) | (1 << azx_dev->index));
958 /* set DMA start and interrupt mask */ 975 /* set DMA start and interrupt mask */
959 azx_sd_writeb(azx_dev, SD_CTL, azx_sd_readb(azx_dev, SD_CTL) | 976 azx_sd_writeb(azx_dev, SD_CTL, azx_sd_readb(azx_dev, SD_CTL) |
960 SD_CTL_DMA_START | SD_INT_MASK); 977 SD_CTL_DMA_START | SD_INT_MASK);
@@ -973,8 +990,8 @@ static void azx_stream_stop(struct azx *chip, struct azx_dev *azx_dev)
973{ 990{
974 azx_stream_clear(chip, azx_dev); 991 azx_stream_clear(chip, azx_dev);
975 /* disable SIE */ 992 /* disable SIE */
976 azx_writeb(chip, INTCTL, 993 azx_writel(chip, INTCTL,
977 azx_readb(chip, INTCTL) & ~(1 << azx_dev->index)); 994 azx_readl(chip, INTCTL) & ~(1 << azx_dev->index));
978} 995}
979 996
980 997
@@ -1050,6 +1067,7 @@ static void azx_init_pci(struct azx *chip)
1050 0x01, NVIDIA_HDA_ENABLE_COHBIT); 1067 0x01, NVIDIA_HDA_ENABLE_COHBIT);
1051 break; 1068 break;
1052 case AZX_DRIVER_SCH: 1069 case AZX_DRIVER_SCH:
1070 case AZX_DRIVER_PCH:
1053 pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop); 1071 pci_read_config_word(chip->pci, INTEL_SCH_HDA_DEVC, &snoop);
1054 if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) { 1072 if (snoop & INTEL_SCH_HDA_DEVC_NOSNOOP) {
1055 pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC, 1073 pci_write_config_word(chip->pci, INTEL_SCH_HDA_DEVC,
@@ -1335,7 +1353,7 @@ static void azx_bus_reset(struct hda_bus *bus)
1335 if (chip->initialized) { 1353 if (chip->initialized) {
1336 int i; 1354 int i;
1337 1355
1338 for (i = 0; i < AZX_MAX_PCMS; i++) 1356 for (i = 0; i < HDA_MAX_PCMS; i++)
1339 snd_pcm_suspend_all(chip->pcm[i]); 1357 snd_pcm_suspend_all(chip->pcm[i]);
1340 snd_hda_suspend(chip->bus); 1358 snd_hda_suspend(chip->bus);
1341 snd_hda_resume(chip->bus); 1359 snd_hda_resume(chip->bus);
@@ -1350,6 +1368,7 @@ static void azx_bus_reset(struct hda_bus *bus)
1350 1368
1351/* number of codec slots for each chipset: 0 = default slots (i.e. 4) */ 1369/* number of codec slots for each chipset: 0 = default slots (i.e. 4) */
1352static unsigned int azx_max_codecs[AZX_NUM_DRIVERS] __devinitdata = { 1370static unsigned int azx_max_codecs[AZX_NUM_DRIVERS] __devinitdata = {
1371 [AZX_DRIVER_NVIDIA] = 8,
1353 [AZX_DRIVER_TERA] = 1, 1372 [AZX_DRIVER_TERA] = 1,
1354}; 1373};
1355 1374
@@ -1382,7 +1401,7 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model)
1382 codecs = 0; 1401 codecs = 0;
1383 max_slots = azx_max_codecs[chip->driver_type]; 1402 max_slots = azx_max_codecs[chip->driver_type];
1384 if (!max_slots) 1403 if (!max_slots)
1385 max_slots = AZX_MAX_CODECS; 1404 max_slots = AZX_DEFAULT_CODECS;
1386 1405
1387 /* First try to probe all given codec slots */ 1406 /* First try to probe all given codec slots */
1388 for (c = 0; c < max_slots; c++) { 1407 for (c = 0; c < max_slots; c++) {
@@ -1397,7 +1416,7 @@ static int __devinit azx_codec_create(struct azx *chip, const char *model)
1397 chip->codec_mask &= ~(1 << c); 1416 chip->codec_mask &= ~(1 << c);
1398 /* More badly, accessing to a non-existing 1417 /* More badly, accessing to a non-existing
1399 * codec often screws up the controller chip, 1418 * codec often screws up the controller chip,
1400 * and distrubs the further communications. 1419 * and disturbs the further communications.
1401 * Thus if an error occurs during probing, 1420 * Thus if an error occurs during probing,
1402 * better to reset the controller chip to 1421 * better to reset the controller chip to
1403 * get back to the sanity state. 1422 * get back to the sanity state.
@@ -1878,6 +1897,9 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
1878 1897
1879 if (!bdl_pos_adj[chip->dev_index]) 1898 if (!bdl_pos_adj[chip->dev_index])
1880 return 1; /* no delayed ack */ 1899 return 1; /* no delayed ack */
1900 if (WARN_ONCE(!azx_dev->period_bytes,
1901 "hda-intel: zero azx_dev->period_bytes"))
1902 return 0; /* this shouldn't happen! */
1881 if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) 1903 if (pos % azx_dev->period_bytes > azx_dev->period_bytes / 2)
1882 return 0; /* NG - it's below the period boundary */ 1904 return 0; /* NG - it's below the period boundary */
1883 return 1; /* OK, it's fine */ 1905 return 1; /* OK, it's fine */
@@ -1965,7 +1987,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec,
1965 int pcm_dev = cpcm->device; 1987 int pcm_dev = cpcm->device;
1966 int s, err; 1988 int s, err;
1967 1989
1968 if (pcm_dev >= AZX_MAX_PCMS) { 1990 if (pcm_dev >= HDA_MAX_PCMS) {
1969 snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n", 1991 snd_printk(KERN_ERR SFX "Invalid PCM device number %d\n",
1970 pcm_dev); 1992 pcm_dev);
1971 return -EINVAL; 1993 return -EINVAL;
@@ -2043,7 +2065,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)
2043{ 2065{
2044 if (request_irq(chip->pci->irq, azx_interrupt, 2066 if (request_irq(chip->pci->irq, azx_interrupt,
2045 chip->msi ? 0 : IRQF_SHARED, 2067 chip->msi ? 0 : IRQF_SHARED,
2046 "HDA Intel", chip)) { 2068 "hda_intel", chip)) {
2047 printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " 2069 printk(KERN_ERR "hda-intel: unable to grab IRQ %d, "
2048 "disabling device\n", chip->pci->irq); 2070 "disabling device\n", chip->pci->irq);
2049 if (do_disconnect) 2071 if (do_disconnect)
@@ -2121,7 +2143,7 @@ static int azx_suspend(struct pci_dev *pci, pm_message_t state)
2121 2143
2122 snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); 2144 snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
2123 azx_clear_irq_pending(chip); 2145 azx_clear_irq_pending(chip);
2124 for (i = 0; i < AZX_MAX_PCMS; i++) 2146 for (i = 0; i < HDA_MAX_PCMS; i++)
2125 snd_pcm_suspend_all(chip->pcm[i]); 2147 snd_pcm_suspend_all(chip->pcm[i]);
2126 if (chip->initialized) 2148 if (chip->initialized)
2127 snd_hda_suspend(chip->bus); 2149 snd_hda_suspend(chip->bus);
@@ -2243,9 +2265,12 @@ static int azx_dev_free(struct snd_device *device)
2243static struct snd_pci_quirk position_fix_list[] __devinitdata = { 2265static struct snd_pci_quirk position_fix_list[] __devinitdata = {
2244 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB), 2266 SND_PCI_QUIRK(0x1028, 0x01cc, "Dell D820", POS_FIX_LPIB),
2245 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB), 2267 SND_PCI_QUIRK(0x1028, 0x01de, "Dell Precision 390", POS_FIX_LPIB),
2268 SND_PCI_QUIRK(0x1028, 0x01f6, "Dell Latitude 131L", POS_FIX_LPIB),
2246 SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB), 2269 SND_PCI_QUIRK(0x103c, 0x306d, "HP dv3", POS_FIX_LPIB),
2270 SND_PCI_QUIRK(0x1106, 0x3288, "ASUS M2V-MX SE", POS_FIX_LPIB),
2247 SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB), 2271 SND_PCI_QUIRK(0x1043, 0x813d, "ASUS P5AD2", POS_FIX_LPIB),
2248 SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB), 2272 SND_PCI_QUIRK(0x1462, 0x1002, "MSI Wind U115", POS_FIX_LPIB),
2273 SND_PCI_QUIRK(0x1565, 0x820f, "Biostar Microtech", POS_FIX_LPIB),
2249 {} 2274 {}
2250}; 2275};
2251 2276
@@ -2332,6 +2357,8 @@ static void __devinit check_probe_mask(struct azx *chip, int dev)
2332 */ 2357 */
2333static struct snd_pci_quirk msi_black_list[] __devinitdata = { 2358static struct snd_pci_quirk msi_black_list[] __devinitdata = {
2334 SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */ 2359 SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */
2360 SND_PCI_QUIRK(0x1043, 0x81f6, "ASUS", 0), /* nvidia */
2361 SND_PCI_QUIRK(0x1849, 0x0888, "ASRock", 0), /* Athlon64 X2 + nvidia */
2335 {} 2362 {}
2336}; 2363};
2337 2364
@@ -2399,6 +2426,7 @@ static int __devinit azx_create(struct snd_card *card, struct pci_dev *pci,
2399 if (bdl_pos_adj[dev] < 0) { 2426 if (bdl_pos_adj[dev] < 0) {
2400 switch (chip->driver_type) { 2427 switch (chip->driver_type) {
2401 case AZX_DRIVER_ICH: 2428 case AZX_DRIVER_ICH:
2429 case AZX_DRIVER_PCH:
2402 bdl_pos_adj[dev] = 1; 2430 bdl_pos_adj[dev] = 1;
2403 break; 2431 break;
2404 default: 2432 default:
@@ -2664,7 +2692,7 @@ static void __devexit azx_remove(struct pci_dev *pci)
2664} 2692}
2665 2693
2666/* PCI IDs */ 2694/* PCI IDs */
2667static struct pci_device_id azx_ids[] = { 2695static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
2668 /* ICH 6..10 */ 2696 /* ICH 6..10 */
2669 { PCI_DEVICE(0x8086, 0x2668), .driver_data = AZX_DRIVER_ICH }, 2697 { PCI_DEVICE(0x8086, 0x2668), .driver_data = AZX_DRIVER_ICH },
2670 { PCI_DEVICE(0x8086, 0x27d8), .driver_data = AZX_DRIVER_ICH }, 2698 { PCI_DEVICE(0x8086, 0x27d8), .driver_data = AZX_DRIVER_ICH },
@@ -2677,6 +2705,8 @@ static struct pci_device_id azx_ids[] = {
2677 { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH }, 2705 { PCI_DEVICE(0x8086, 0x3a6e), .driver_data = AZX_DRIVER_ICH },
2678 /* PCH */ 2706 /* PCH */
2679 { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH }, 2707 { PCI_DEVICE(0x8086, 0x3b56), .driver_data = AZX_DRIVER_ICH },
2708 /* CPT */
2709 { PCI_DEVICE(0x8086, 0x1c20), .driver_data = AZX_DRIVER_PCH },
2680 /* SCH */ 2710 /* SCH */
2681 { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH }, 2711 { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH },
2682 /* ATI SB 450/600 */ 2712 /* ATI SB 450/600 */
@@ -2704,32 +2734,10 @@ static struct pci_device_id azx_ids[] = {
2704 /* ULI M5461 */ 2734 /* ULI M5461 */
2705 { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI }, 2735 { PCI_DEVICE(0x10b9, 0x5461), .driver_data = AZX_DRIVER_ULI },
2706 /* NVIDIA MCP */ 2736 /* NVIDIA MCP */
2707 { PCI_DEVICE(0x10de, 0x026c), .driver_data = AZX_DRIVER_NVIDIA }, 2737 { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID),
2708 { PCI_DEVICE(0x10de, 0x0371), .driver_data = AZX_DRIVER_NVIDIA }, 2738 .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8,
2709 { PCI_DEVICE(0x10de, 0x03e4), .driver_data = AZX_DRIVER_NVIDIA }, 2739 .class_mask = 0xffffff,
2710 { PCI_DEVICE(0x10de, 0x03f0), .driver_data = AZX_DRIVER_NVIDIA }, 2740 .driver_data = AZX_DRIVER_NVIDIA },
2711 { PCI_DEVICE(0x10de, 0x044a), .driver_data = AZX_DRIVER_NVIDIA },
2712 { PCI_DEVICE(0x10de, 0x044b), .driver_data = AZX_DRIVER_NVIDIA },
2713 { PCI_DEVICE(0x10de, 0x055c), .driver_data = AZX_DRIVER_NVIDIA },
2714 { PCI_DEVICE(0x10de, 0x055d), .driver_data = AZX_DRIVER_NVIDIA },
2715 { PCI_DEVICE(0x10de, 0x0590), .driver_data = AZX_DRIVER_NVIDIA },
2716 { PCI_DEVICE(0x10de, 0x0774), .driver_data = AZX_DRIVER_NVIDIA },
2717 { PCI_DEVICE(0x10de, 0x0775), .driver_data = AZX_DRIVER_NVIDIA },
2718 { PCI_DEVICE(0x10de, 0x0776), .driver_data = AZX_DRIVER_NVIDIA },
2719 { PCI_DEVICE(0x10de, 0x0777), .driver_data = AZX_DRIVER_NVIDIA },
2720 { PCI_DEVICE(0x10de, 0x07fc), .driver_data = AZX_DRIVER_NVIDIA },
2721 { PCI_DEVICE(0x10de, 0x07fd), .driver_data = AZX_DRIVER_NVIDIA },
2722 { PCI_DEVICE(0x10de, 0x0ac0), .driver_data = AZX_DRIVER_NVIDIA },
2723 { PCI_DEVICE(0x10de, 0x0ac1), .driver_data = AZX_DRIVER_NVIDIA },
2724 { PCI_DEVICE(0x10de, 0x0ac2), .driver_data = AZX_DRIVER_NVIDIA },
2725 { PCI_DEVICE(0x10de, 0x0ac3), .driver_data = AZX_DRIVER_NVIDIA },
2726 { PCI_DEVICE(0x10de, 0x0be2), .driver_data = AZX_DRIVER_NVIDIA },
2727 { PCI_DEVICE(0x10de, 0x0be3), .driver_data = AZX_DRIVER_NVIDIA },
2728 { PCI_DEVICE(0x10de, 0x0be4), .driver_data = AZX_DRIVER_NVIDIA },
2729 { PCI_DEVICE(0x10de, 0x0d94), .driver_data = AZX_DRIVER_NVIDIA },
2730 { PCI_DEVICE(0x10de, 0x0d95), .driver_data = AZX_DRIVER_NVIDIA },
2731 { PCI_DEVICE(0x10de, 0x0d96), .driver_data = AZX_DRIVER_NVIDIA },
2732 { PCI_DEVICE(0x10de, 0x0d97), .driver_data = AZX_DRIVER_NVIDIA },
2733 /* Teradici */ 2741 /* Teradici */
2734 { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA }, 2742 { PCI_DEVICE(0x6549, 0x1200), .driver_data = AZX_DRIVER_TERA },
2735 /* Creative X-Fi (CA0110-IBG) */ 2743 /* Creative X-Fi (CA0110-IBG) */