diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/arch/ppc64/kernel/pmac_feature.c linux-2.6.10-rc1/arch/ppc64/kernel/pmac_feature.c --- /usr/src/linux-2.6.10-rc1/arch/ppc64/kernel/pmac_feature.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/arch/ppc64/kernel/pmac_feature.c 2004-11-11 12:50:58.000000000 +0100 @@ -347,6 +347,10 @@ static struct pmac_mb_def pmac_mb_defs[] PMAC_TYPE_POWERMAC_G5, g5_features, 0, }, + { "PowerMac8,1", "IMac G5", + PMAC_TYPE_POWERMAC_G5, g5_features, + 0, + }, { "RackMac3,1", "XServe G5", PMAC_TYPE_POWERMAC_G5, g5_features, 0, diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/arch/ppc64/kernel/pmac_pci.c linux-2.6.10-rc1/arch/ppc64/kernel/pmac_pci.c --- /usr/src/linux-2.6.10-rc1/arch/ppc64/kernel/pmac_pci.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/arch/ppc64/kernel/pmac_pci.c 2004-11-16 14:52:18.000000000 +0100 @@ -40,7 +40,7 @@ #endif extern int pci_probe_only; -extern int pci_read_irq_line(struct pci_dev *pci_dev); +extern int pmac_pci_read_irq_line(struct pci_dev *pci_dev); /* XXX Could be per-controller, but I don't think we risk anything by * assuming we won't have both UniNorth and Bandit */ @@ -670,7 +670,7 @@ void __init pmac_pcibios_fixup(void) struct pci_dev *dev = NULL; while ((dev = pci_find_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) - pci_read_irq_line(dev); + pmac_pci_read_irq_line(dev); pci_fix_bus_sysdata(); @@ -789,3 +789,26 @@ void fixup_k2_sata(struct pci_dev* dev) } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SERVERWORKS, 0x0240, fixup_k2_sata); + +int pmac_pci_read_irq_line(struct pci_dev *pci_dev) +{ + u8 intpin; + struct device_node *node; + + node = pci_device_to_OF_node(pci_dev); + if (node == NULL) + return -1; + if (node->n_intrs == 0) + return -1; + pci_dev->irq = node->intrs[0].line; + + /* Update PCI configuration space only for devices which have the + * interrupt pin defined + */ + pci_read_config_byte(pci_dev, PCI_INTERRUPT_PIN, &intpin); + if (intpin != 0) + pci_write_config_byte(pci_dev, PCI_INTERRUPT_LINE, pci_dev->irq); + + return 0; +} +EXPORT_SYMBOL(pmac_pci_read_irq_line); diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/ide/ppc/pmac.c linux-2.6.10-rc1/drivers/ide/ppc/pmac.c --- /usr/src/linux-2.6.10-rc1/drivers/ide/ppc/pmac.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/ide/ppc/pmac.c 2004-11-14 15:54:47.098997808 +0100 @@ -91,7 +91,8 @@ enum { controller_kl_ata3, /* KeyLargo ATA-3 */ controller_kl_ata4, /* KeyLargo ATA-4 */ controller_un_ata6, /* UniNorth2 ATA-6 */ - controller_k2_ata6 /* K2 ATA-6 */ + controller_k2_ata6, /* K2 ATA-6 */ + controller_sh_ata6, /* Shasta ATA-6 */ }; static const char* model_name[] = { @@ -101,6 +102,7 @@ static const char* model_name[] = { "KeyLargo ATA-4", /* KeyLargo ATA-4 (UDMA/66) */ "UniNorth ATA-6", /* UniNorth2 ATA-6 (UDMA/100) */ "K2 ATA-6", /* K2 ATA-6 (UDMA/100) */ + "Shasta ATA-6", /* Shasta ATA-6 (UDMA/133) */ }; /* @@ -549,7 +551,7 @@ pmac_ide_do_update_timings(ide_drive_t * if (pmif == NULL) return; - if (pmif->kind == controller_un_ata6 || pmif->kind == controller_k2_ata6) + if (pmif->kind == controller_sh_ata6 || pmif->kind == controller_un_ata6 || pmif->kind == controller_k2_ata6) pmac_ide_kauai_selectproc(drive); else pmac_ide_selectproc(drive); @@ -667,6 +669,8 @@ pmac_ide_tuneproc(ide_drive_t *drive, u8 pio = ide_get_best_pio_mode(drive, pio, 4, &d); switch (pmif->kind) { + case controller_sh_ata6: + /* XXX: 133Mhz cell may use other timings ? */ case controller_un_ata6: case controller_k2_ata6: { /* 100Mhz cell */ @@ -805,6 +809,7 @@ set_timings_mdma(ide_drive_t *drive, int cycleTime = 150; /* Get the proper timing array for this controller */ switch(intf_type) { + case controller_sh_ata6: case controller_un_ata6: case controller_k2_ata6: break; @@ -838,6 +843,7 @@ set_timings_mdma(ide_drive_t *drive, int #endif } switch(intf_type) { + case controller_sh_ata6: case controller_un_ata6: case controller_k2_ata6: { /* 100Mhz cell */ @@ -934,7 +940,8 @@ pmac_ide_tune_chipset (ide_drive_t *driv #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC case XFER_UDMA_5: if (pmif->kind != controller_un_ata6 && - pmif->kind != controller_k2_ata6) + pmif->kind != controller_k2_ata6 && + pmif->kind != controller_sh_ata6) return 1; case XFER_UDMA_4: case XFER_UDMA_3: @@ -946,7 +953,8 @@ pmac_ide_tune_chipset (ide_drive_t *driv if (pmif->kind == controller_kl_ata4) ret = set_timings_udma_ata4(timings, speed); else if (pmif->kind == controller_un_ata6 - || pmif->kind == controller_k2_ata6) + || pmif->kind == controller_k2_ata6 + || pmif->kind == controller_sh_ata6) ret = set_timings_udma_ata6(timings, timings2, speed); else ret = 1; @@ -996,6 +1004,7 @@ sanitize_timings(pmac_ide_hwif_t *pmif) switch(pmif->kind) { case controller_un_ata6: case controller_k2_ata6: + case controller_sh_ata6: value = 0x08618a92; value2 = 0x00002921; break; @@ -1144,7 +1153,9 @@ pmac_ide_setup_device(pmac_ide_hwif_t *p pmif->cable_80 = 0; pmif->broken_dma = pmif->broken_dma_warn = 0; - if (device_is_compatible(np, "kauai-ata")) + if (device_is_compatible(np, "shasta-ata")) + pmif->kind = controller_sh_ata6; + else if (device_is_compatible(np, "kauai-ata")) pmif->kind = controller_un_ata6; else if (device_is_compatible(np, "K2-UATA")) pmif->kind = controller_k2_ata6; @@ -1165,7 +1176,8 @@ pmac_ide_setup_device(pmac_ide_hwif_t *p /* Get cable type from device-tree */ if (pmif->kind == controller_kl_ata4 || pmif->kind == controller_un_ata6 - || pmif->kind == controller_k2_ata6) { + || pmif->kind == controller_k2_ata6 + || pmif->kind == controller_sh_ata6) { char* cable = get_property(np, "cable-type", NULL); if (cable && !strncmp(cable, "80-", 3)) pmif->cable_80 = 1; @@ -1219,7 +1231,9 @@ pmac_ide_setup_device(pmac_ide_hwif_t *p hwif->drives[0].unmask = 1; hwif->drives[1].unmask = 1; hwif->tuneproc = pmac_ide_tuneproc; - if (pmif->kind == controller_un_ata6 || pmif->kind == controller_k2_ata6) + if (pmif->kind == controller_un_ata6 + || pmif->kind == controller_k2_ata6 + || pmif->kind == controller_sh_ata6) hwif->selectproc = pmac_ide_kauai_selectproc; else hwif->selectproc = pmac_ide_selectproc; @@ -1444,11 +1458,7 @@ pmac_ide_pci_attach(struct pci_dev *pdev pmif->dma_regs = base + 0x1000; #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ - /* We use the OF node irq mapping */ - if (np->n_intrs == 0) pmif->irq = pdev->irq; - else - pmif->irq = np->intrs[0].line; pci_set_drvdata(pdev, hwif); @@ -1532,6 +1542,7 @@ static struct pci_device_id pmac_ide_pci { PCI_VENDOR_ID_APPLE, PCI_DEVIEC_ID_APPLE_UNI_N_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_IPID_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_ATA100, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, + { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_ATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, }; static struct pci_driver pmac_ide_pci_driver = { @@ -1792,7 +1803,9 @@ pmac_ide_udma_enable(ide_drive_t *drive, timing_local[1] = *timings2; /* Calculate timings for interface */ - if (pmif->kind == controller_un_ata6 || pmif->kind == controller_k2_ata6) + if (pmif->kind == controller_un_ata6 + || pmif->kind == controller_k2_ata6 + || pmif->kind == controller_sh_ata6) ret = set_timings_udma_ata6( &timing_local[0], &timing_local[1], mode); @@ -1847,13 +1860,17 @@ pmac_ide_dma_check(ide_drive_t *drive) map = XFER_MWDMA; if (pmif->kind == controller_kl_ata4 || pmif->kind == controller_un_ata6 - || pmif->kind == controller_k2_ata6) { + || pmif->kind == controller_k2_ata6 + || pmif->kind == controller_sh_ata6) { map |= XFER_UDMA; if (pmif->cable_80) { map |= XFER_UDMA_66; if (pmif->kind == controller_un_ata6 || - pmif->kind == controller_k2_ata6) + pmif->kind == controller_k2_ata6 || + pmif->kind == controller_sh_ata6) map |= XFER_UDMA_100; + if (pmif->kind == controller_sh_ata6) + map |= XFER_UDMA_133; } } mode = ide_find_best_mode(drive, map); @@ -2093,6 +2110,7 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif switch(pmif->kind) { case controller_un_ata6: case controller_k2_ata6: + case controller_sh_ata6: hwif->ultra_mask = pmif->cable_80 ? 0x3f : 0x07; hwif->mwdma_mask = 0x07; hwif->swdma_mask = 0x00; diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/net/sungem.c linux-2.6.10-rc1/drivers/net/sungem.c --- /usr/src/linux-2.6.10-rc1/drivers/net/sungem.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/net/sungem.c 2004-11-11 18:25:37.000000000 +0100 @@ -109,6 +109,8 @@ static struct pci_device_id gem_pci_tbl[ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_K2_GMAC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, + { PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_SH_SUNGEM, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL }, {0, } }; diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/pci/pci.ids linux-2.6.10-rc1/drivers/pci/pci.ids --- /usr/src/linux-2.6.10-rc1/drivers/pci/pci.ids 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/pci/pci.ids 2004-11-11 12:50:58.000000000 +0100 @@ -2189,6 +2189,14 @@ 0049 K2 HT-PCI Bridge 004b U3 AGP 004c K2 GMAC (Sun GEM) + 004f Shasta Mac I/O + 0050 Shasta IDE + 0051 Shasta (Sun GEM) + 0052 Shasta FireWire + 0053 Shasta PCI Bridge + 0054 Shasta PCI Bridge + 0055 Shasta PCI Bridge + 0058 U3L AGP Bridge 1645 Tigon3 Gigabit Ethernet NIC (BCM5701) 106c Hyundai Electronics America 8801 Dual Pentium ISA/PCI Motherboard diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/scsi/libata-core.c linux-2.6.10-rc1/drivers/scsi/libata-core.c --- /usr/src/linux-2.6.10-rc1/drivers/scsi/libata-core.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/scsi/libata-core.c 2004-11-11 18:17:41.000000000 +0100 @@ -3250,6 +3249,9 @@ int ata_device_add(struct ata_probe_ent host_set->mmio_base = ent->mmio_base; host_set->private_data = ent->private_data; host_set->ops = ent->port_ops; + if (host_set->ops->host_start) + host_set->ops->host_start(host_set); + /* register each port bound to this device */ for (i = 0; i < ent->n_ports; i++) { diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/scsi/sata_svw.c linux-2.6.10-rc1/drivers/scsi/sata_svw.c --- /usr/src/linux-2.6.10-rc1/drivers/scsi/sata_svw.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/scsi/sata_svw.c 2004-11-14 15:57:29.394959352 +0100 @@ -49,7 +49,7 @@ #endif /* CONFIG_PPC_OF */ #define DRV_NAME "sata_svw" -#define DRV_VERSION "1.04" +#define DRV_VERSION "1.05" /* Taskfile registers offsets */ #define K2_SATA_TF_CMD_OFFSET 0x00 @@ -75,10 +75,19 @@ #define K2_SATA_SICR1_OFFSET 0x80 #define K2_SATA_SICR2_OFFSET 0x84 #define K2_SATA_SIM_OFFSET 0x88 +#define K2_SATA_MDIO_ACCESS 0x8c /* Port stride */ #define K2_SATA_PORT_OFFSET 0x100 +/* Private structure */ +struct k2_sata_priv +{ +#ifdef CONFIG_PPC_OF + struct device_node *of_node; +#endif + int need_mdio_phy_reset; +}; static u32 k2_sata_scr_read (struct ata_port *ap, unsigned int sc_reg) { @@ -96,6 +105,41 @@ static void k2_sata_scr_write (struct at writel(val, (void *) ap->ioaddr.scr_addr + (sc_reg * 4)); } +static u16 k2_sata_mdio_read(struct ata_host_set *host_set, int reg) +{ + u16 val; + int timeout; + + writel((reg & 0x1f) | 0x4000, + host_set->mmio_base + K2_SATA_MDIO_ACCESS); + for(timeout = 10000; timeout > 0; timeout++) { + val = readl(host_set->mmio_base + K2_SATA_MDIO_ACCESS); + if (val & 0x8000) + break; + udelay(100); + } + if (timeout <= 0) { + printk(KERN_WARNING "sata_svw: timeout reading MDIO reg %d\n", reg); + return 0xffff; + } + return val >> 16; +} + +static void k2_sata_mdio_write(struct ata_host_set *host_set, int reg, u16 val) +{ + int timeout; + + writel((reg & 0x1f) | (((u32)val) << 16) | 0x2000, + host_set->mmio_base + K2_SATA_MDIO_ACCESS); + for(timeout = 10000; timeout > 0; timeout++) { + val = readl(host_set->mmio_base + K2_SATA_MDIO_ACCESS); + if (val & 0x8000) + break; + udelay(100); + } + if (timeout <= 0) + printk(KERN_WARNING "sata_svw: timeout writing MDIO reg %d\n", reg); +} static void k2_sata_tf_load(struct ata_port *ap, struct ata_taskfile *tf) { @@ -220,6 +264,31 @@ static u8 k2_stat_check_status(struct at return readl((void *) ap->ioaddr.status_addr); } +static void k2_sata_mdio_phy_reset(struct ata_host_set *host_set) +{ + u16 reg; + + reg = k2_sata_mdio_read(host_set, 4); + k2_sata_mdio_write(host_set, 4, reg | 0x0008); + udelay(200); + k2_sata_mdio_write(host_set, 4, reg); + udelay(250); +} + +static void k2_sata_host_start(struct ata_host_set *host_set) +{ + struct k2_sata_priv *pp; + + pp = host_set->private_data; + + /* Some cell revs need a HW reset of the PHY layer at this point, and + * on wakeup from power management + */ + if (pp->need_mdio_phy_reset) + k2_sata_mdio_phy_reset(host_set); +} + + #ifdef CONFIG_PPC_OF /* * k2_sata_proc_info @@ -237,6 +306,7 @@ static int k2_sata_proc_info(struct Scsi { struct ata_port *ap; struct device_node *np; + struct k2_sata_priv *pp; int len, index; /* Find the ata_port */ @@ -245,7 +315,8 @@ static int k2_sata_proc_info(struct Scsi return 0; /* Find the OF node for the PCI device proper */ - np = pci_device_to_OF_node(ap->host_set->pdev); + pp = ap->host_set->private_data; + np = pp->of_node; if (np == NULL) return 0; @@ -310,6 +381,7 @@ static struct ata_port_operations k2_sat .scr_write = k2_sata_scr_write, .port_start = ata_port_start, .port_stop = ata_port_stop, + .host_start = k2_sata_host_start, }; static void k2_sata_setup_port(struct ata_ioports *port, unsigned long base) @@ -338,6 +410,7 @@ static int k2_sata_init_one (struct pci_ struct ata_probe_ent *probe_ent = NULL; unsigned long base; void *mmio_base; + struct k2_sata_priv *pp = NULL; int rc; if (!printed_version++) @@ -376,9 +449,31 @@ static int k2_sata_init_one (struct pci_ } memset(probe_ent, 0, sizeof(*probe_ent)); + + pp = (struct k2_sata_priv *)kmalloc(sizeof(struct k2_sata_priv), GFP_KERNEL); + if (pp == NULL) { + rc = -ENOMEM; + goto err_out_free_ent; + } + memset(pp, 0, sizeof(struct k2_sata_priv)); + probe_ent->pdev = pdev; INIT_LIST_HEAD(&probe_ent->node); + probe_ent->private_data = pdev; + +#ifdef CONFIG_PPC_OF + /* Find the OF node for the PCI device proper */ + pp->of_node = pci_device_to_OF_node(pdev); + + /* Check for revision 1 */ + if (pp->of_node) { + u32 *rev; + rev = (u32 *)get_property(pp->of_node, "cell-revision", NULL); + if (rev && (*rev) > 0) + pp->need_mdio_phy_reset = 1; + } +#endif /* CONFIG_PPC_OF */ mmio_base = ioremap(pci_resource_start(pdev, 5), pci_resource_len(pdev, 5)); if (mmio_base == NULL) { @@ -429,6 +524,9 @@ static int k2_sata_init_one (struct pci_ return 0; err_out_free_ent: + if (pp) + kfree(pp); + if (probe_ent) kfree(probe_ent); err_out_regions: pci_release_regions(pdev); diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/video/modedb.c linux-2.6.10-rc1/drivers/video/modedb.c --- /usr/src/linux-2.6.10-rc1/drivers/video/modedb.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/video/modedb.c 2004-11-11 15:45:54.000000000 +0100 @@ -248,6 +248,10 @@ static const __init struct fb_videomode /* 480x300 @ 72 Hz, 48.0 kHz hsync */ NULL, 72, 480, 300, 33386, 40, 24, 11, 19, 80, 3, 0, FB_VMODE_DOUBLE + }, { + /* 1440x900 @ 72 Hz, 67.6 kHz hsync */ + NULL, 72, 1440, 900, 10000, 16, 16, 16, 16, 80, 8, + 0, FB_VMODE_NONINTERLACED }, }; diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/drivers/video/riva/fbdev.c linux-2.6.10-rc1/drivers/video/riva/fbdev.c --- /usr/src/linux-2.6.10-rc1/drivers/video/riva/fbdev.c 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/drivers/video/riva/fbdev.c 2004-11-11 15:03:10.000000000 +0100 @@ -192,6 +192,8 @@ static struct pci_device_id rivafb_pci_t PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_FX_GO5200, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, { 0, } /* terminate list */ }; MODULE_DEVICE_TABLE(pci, rivafb_pci_tbl); diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/include/linux/libata.h linux-2.6.10-rc1/include/linux/libata.h --- /usr/src/linux-2.6.10-rc1/include/linux/libata.h 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/include/linux/libata.h 2004-11-11 12:50:59.000000000 +0100 @@ -349,6 +349,7 @@ struct ata_port_operations { int (*port_start) (struct ata_port *ap); void (*port_stop) (struct ata_port *ap); + void (*host_start) (struct ata_host_set *host_set); void (*host_stop) (struct ata_host_set *host_set); }; diff -urpBbN --exclude='*.orig' --exclude='*.diff' --exclude='*.rej' --exclude='*~' /usr/src/linux-2.6.10-rc1/include/linux/pci_ids.h linux-2.6.10-rc1/include/linux/pci_ids.h --- /usr/src/linux-2.6.10-rc1/include/linux/pci_ids.h 2004-11-09 06:38:44.000000000 +0100 +++ linux-2.6.10-rc1/include/linux/pci_ids.h 2004-11-11 15:01:30.000000000 +0100 @@ -844,6 +844,9 @@ #define PCI_DEVICE_ID_APPLE_KEYLARGO_I 0x003e #define PCI_DEVICE_ID_APPLE_K2_ATA100 0x0043 #define PCI_DEVICE_ID_APPLE_K2_GMAC 0x004c +#define PCI_DEVICE_ID_APPLE_SH_ATA 0x0050 +#define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 +#define PCI_DEVICE_ID_APPLE_SH_FW 0x0052 #define PCI_DEVICE_ID_APPLE_TIGON3 0x1645 #define PCI_VENDOR_ID_YAMAHA 0x1073 @@ -1139,6 +1142,7 @@ #define PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL 0x0258 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL 0x0259 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL 0x025B +#define PCI_DEVICE_ID_NVIDIA_GEFORCE2_FX_GO5200 0x0329 #define PCI_VENDOR_ID_IMS 0x10e0 #define PCI_DEVICE_ID_IMS_8849 0x8849