|
@@ -59,6 +59,7 @@ enum {
|
|
|
|
|
|
board_2037x = 0, /* FastTrak S150 TX2plus */
|
|
board_2037x = 0, /* FastTrak S150 TX2plus */
|
|
board_20319 = 1, /* FastTrak S150 TX4 */
|
|
board_20319 = 1, /* FastTrak S150 TX4 */
|
|
|
|
+ board_20619 = 2, /* FastTrak TX4000 */
|
|
|
|
|
|
PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */
|
|
PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */
|
|
|
|
|
|
@@ -146,6 +147,17 @@ static struct ata_port_info pdc_port_info[] = {
|
|
.udma_mask = 0x7f, /* udma0-6 ; FIXME */
|
|
.udma_mask = 0x7f, /* udma0-6 ; FIXME */
|
|
.port_ops = &pdc_ata_ops,
|
|
.port_ops = &pdc_ata_ops,
|
|
},
|
|
},
|
|
|
|
+
|
|
|
|
+ /* board_20619 */
|
|
|
|
+ {
|
|
|
|
+ .sht = &pdc_ata_sht,
|
|
|
|
+ .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST |
|
|
|
|
+ ATA_FLAG_MMIO | ATA_FLAG_SLAVE_POSS,
|
|
|
|
+ .pio_mask = 0x1f, /* pio0-4 */
|
|
|
|
+ .mwdma_mask = 0x07, /* mwdma0-2 */
|
|
|
|
+ .udma_mask = 0x7f, /* udma0-6 ; FIXME */
|
|
|
|
+ .port_ops = &pdc_ata_ops,
|
|
|
|
+ },
|
|
};
|
|
};
|
|
|
|
|
|
static struct pci_device_id pdc_ata_pci_tbl[] = {
|
|
static struct pci_device_id pdc_ata_pci_tbl[] = {
|
|
@@ -169,6 +181,9 @@ static struct pci_device_id pdc_ata_pci_tbl[] = {
|
|
{ PCI_VENDOR_ID_PROMISE, 0x3d18, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
|
{ PCI_VENDOR_ID_PROMISE, 0x3d18, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
|
board_20319 },
|
|
board_20319 },
|
|
|
|
|
|
|
|
+ { PCI_VENDOR_ID_PROMISE, 0x6629, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
|
|
|
+ board_20619 },
|
|
|
|
+
|
|
{ } /* terminate list */
|
|
{ } /* terminate list */
|
|
};
|
|
};
|
|
|
|
|
|
@@ -633,6 +648,15 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
|
|
case board_2037x:
|
|
case board_2037x:
|
|
probe_ent->n_ports = 2;
|
|
probe_ent->n_ports = 2;
|
|
break;
|
|
break;
|
|
|
|
+ case board_20619:
|
|
|
|
+ probe_ent->n_ports = 4;
|
|
|
|
+
|
|
|
|
+ pdc_ata_setup_port(&probe_ent->port[2], base + 0x300);
|
|
|
|
+ pdc_ata_setup_port(&probe_ent->port[3], base + 0x380);
|
|
|
|
+
|
|
|
|
+ probe_ent->port[2].scr_addr = base + 0x600;
|
|
|
|
+ probe_ent->port[3].scr_addr = base + 0x700;
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
BUG();
|
|
BUG();
|
|
break;
|
|
break;
|
|
@@ -673,7 +697,7 @@ static void __exit pdc_ata_exit(void)
|
|
|
|
|
|
|
|
|
|
MODULE_AUTHOR("Jeff Garzik");
|
|
MODULE_AUTHOR("Jeff Garzik");
|
|
-MODULE_DESCRIPTION("Promise SATA TX2/TX4 low-level driver");
|
|
|
|
|
|
+MODULE_DESCRIPTION("Promise ATA TX2/TX4/TX4000 low-level driver");
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_LICENSE("GPL");
|
|
MODULE_DEVICE_TABLE(pci, pdc_ata_pci_tbl);
|
|
MODULE_DEVICE_TABLE(pci, pdc_ata_pci_tbl);
|
|
MODULE_VERSION(DRV_VERSION);
|
|
MODULE_VERSION(DRV_VERSION);
|