aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_promise.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/sata_promise.c')
-rw-r--r--drivers/scsi/sata_promise.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c
index c4e9e0298122..5c1d4411457a 100644
--- a/drivers/scsi/sata_promise.c
+++ b/drivers/scsi/sata_promise.c
@@ -59,6 +59,7 @@ enum {
59 59
60 board_2037x = 0, /* FastTrak S150 TX2plus */ 60 board_2037x = 0, /* FastTrak S150 TX2plus */
61 board_20319 = 1, /* FastTrak S150 TX4 */ 61 board_20319 = 1, /* FastTrak S150 TX4 */
62 board_20619 = 2, /* FastTrak TX4000 */
62 63
63 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */ 64 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */
64 65
@@ -122,6 +123,7 @@ static struct ata_port_operations pdc_ata_ops = {
122 .scr_write = pdc_sata_scr_write, 123 .scr_write = pdc_sata_scr_write,
123 .port_start = pdc_port_start, 124 .port_start = pdc_port_start,
124 .port_stop = pdc_port_stop, 125 .port_stop = pdc_port_stop,
126 .host_stop = ata_host_stop,
125}; 127};
126 128
127static struct ata_port_info pdc_port_info[] = { 129static struct ata_port_info pdc_port_info[] = {
@@ -146,6 +148,17 @@ static struct ata_port_info pdc_port_info[] = {
146 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 148 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
147 .port_ops = &pdc_ata_ops, 149 .port_ops = &pdc_ata_ops,
148 }, 150 },
151
152 /* board_20619 */
153 {
154 .sht = &pdc_ata_sht,
155 .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST |
156 ATA_FLAG_MMIO | ATA_FLAG_SLAVE_POSS,
157 .pio_mask = 0x1f, /* pio0-4 */
158 .mwdma_mask = 0x07, /* mwdma0-2 */
159 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
160 .port_ops = &pdc_ata_ops,
161 },
149}; 162};
150 163
151static struct pci_device_id pdc_ata_pci_tbl[] = { 164static struct pci_device_id pdc_ata_pci_tbl[] = {
@@ -171,6 +184,9 @@ static struct pci_device_id pdc_ata_pci_tbl[] = {
171 { PCI_VENDOR_ID_PROMISE, 0x3d18, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 184 { PCI_VENDOR_ID_PROMISE, 0x3d18, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
172 board_20319 }, 185 board_20319 },
173 186
187 { PCI_VENDOR_ID_PROMISE, 0x6629, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
188 board_20619 },
189
174 { } /* terminate list */ 190 { } /* terminate list */
175}; 191};
176 192
@@ -635,6 +651,15 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
635 case board_2037x: 651 case board_2037x:
636 probe_ent->n_ports = 2; 652 probe_ent->n_ports = 2;
637 break; 653 break;
654 case board_20619:
655 probe_ent->n_ports = 4;
656
657 pdc_ata_setup_port(&probe_ent->port[2], base + 0x300);
658 pdc_ata_setup_port(&probe_ent->port[3], base + 0x380);
659
660 probe_ent->port[2].scr_addr = base + 0x600;
661 probe_ent->port[3].scr_addr = base + 0x700;
662 break;
638 default: 663 default:
639 BUG(); 664 BUG();
640 break; 665 break;
@@ -675,7 +700,7 @@ static void __exit pdc_ata_exit(void)
675 700
676 701
677MODULE_AUTHOR("Jeff Garzik"); 702MODULE_AUTHOR("Jeff Garzik");
678MODULE_DESCRIPTION("Promise SATA TX2/TX4 low-level driver"); 703MODULE_DESCRIPTION("Promise ATA TX2/TX4/TX4000 low-level driver");
679MODULE_LICENSE("GPL"); 704MODULE_LICENSE("GPL");
680MODULE_DEVICE_TABLE(pci, pdc_ata_pci_tbl); 705MODULE_DEVICE_TABLE(pci, pdc_ata_pci_tbl);
681MODULE_VERSION(DRV_VERSION); 706MODULE_VERSION(DRV_VERSION);