aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/gdth.c48
-rw-r--r--drivers/scsi/gdth.h6
2 files changed, 22 insertions, 32 deletions
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index d0b95ce0ba00..55e4d2dc2bbe 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -902,11 +902,6 @@ static void __init gdth_search_dev(gdth_pci_str *pcistr, ushort *cnt,
902 return; 902 return;
903 /* GDT PCI controller found, resources are already in pdev */ 903 /* GDT PCI controller found, resources are already in pdev */
904 pcistr[*cnt].pdev = pdev; 904 pcistr[*cnt].pdev = pdev;
905 pcistr[*cnt].vendor_id = vendor;
906 pcistr[*cnt].device_id = device;
907 pcistr[*cnt].subdevice_id = pdev->subsystem_device;
908 pcistr[*cnt].bus = pdev->bus->number;
909 pcistr[*cnt].device_fn = pdev->devfn;
910 pcistr[*cnt].irq = pdev->irq; 905 pcistr[*cnt].irq = pdev->irq;
911 base0 = pci_resource_flags(pdev, 0); 906 base0 = pci_resource_flags(pdev, 0);
912 base1 = pci_resource_flags(pdev, 1); 907 base1 = pci_resource_flags(pdev, 1);
@@ -926,7 +921,8 @@ static void __init gdth_search_dev(gdth_pci_str *pcistr, ushort *cnt,
926 pcistr[*cnt].io = pci_resource_start(pdev, 1); 921 pcistr[*cnt].io = pci_resource_start(pdev, 1);
927 } 922 }
928 TRACE2(("Controller found at %d/%d, irq %d, dpmem 0x%lx\n", 923 TRACE2(("Controller found at %d/%d, irq %d, dpmem 0x%lx\n",
929 pcistr[*cnt].bus, PCI_SLOT(pcistr[*cnt].device_fn), 924 pcistr[*cnt].pdev->bus->number,
925 PCI_SLOT(pcistr[*cnt].pdev->devfn),
930 pcistr[*cnt].irq, pcistr[*cnt].dpmem)); 926 pcistr[*cnt].irq, pcistr[*cnt].dpmem));
931 (*cnt)++; 927 (*cnt)++;
932 } 928 }
@@ -946,20 +942,20 @@ static void __init gdth_sort_pci(gdth_pci_str *pcistr, int cnt)
946 changed = FALSE; 942 changed = FALSE;
947 for (i = 0; i < cnt-1; ++i) { 943 for (i = 0; i < cnt-1; ++i) {
948 if (!reverse_scan) { 944 if (!reverse_scan) {
949 if ((pcistr[i].bus > pcistr[i+1].bus) || 945 if ((pcistr[i].pdev->bus->number > pcistr[i+1].pdev->bus->number) ||
950 (pcistr[i].bus == pcistr[i+1].bus && 946 (pcistr[i].pdev->bus->number == pcistr[i+1].pdev->bus->number &&
951 PCI_SLOT(pcistr[i].device_fn) > 947 PCI_SLOT(pcistr[i].pdev->devfn) >
952 PCI_SLOT(pcistr[i+1].device_fn))) { 948 PCI_SLOT(pcistr[i+1].pdev->devfn))) {
953 temp = pcistr[i]; 949 temp = pcistr[i];
954 pcistr[i] = pcistr[i+1]; 950 pcistr[i] = pcistr[i+1];
955 pcistr[i+1] = temp; 951 pcistr[i+1] = temp;
956 changed = TRUE; 952 changed = TRUE;
957 } 953 }
958 } else { 954 } else {
959 if ((pcistr[i].bus < pcistr[i+1].bus) || 955 if ((pcistr[i].pdev->bus->number < pcistr[i+1].pdev->bus->number) ||
960 (pcistr[i].bus == pcistr[i+1].bus && 956 (pcistr[i].pdev->bus->number == pcistr[i+1].pdev->bus->number &&
961 PCI_SLOT(pcistr[i].device_fn) < 957 PCI_SLOT(pcistr[i].pdev->devfn) <
962 PCI_SLOT(pcistr[i+1].device_fn))) { 958 PCI_SLOT(pcistr[i+1].pdev->devfn))) {
963 temp = pcistr[i]; 959 temp = pcistr[i];
964 pcistr[i] = pcistr[i+1]; 960 pcistr[i] = pcistr[i+1];
965 pcistr[i+1] = temp; 961 pcistr[i+1] = temp;
@@ -1176,17 +1172,16 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
1176 1172
1177 TRACE(("gdth_init_pci()\n")); 1173 TRACE(("gdth_init_pci()\n"));
1178 1174
1179 if (pcistr->vendor_id == PCI_VENDOR_ID_INTEL) 1175 if (pcistr->pdev->vendor == PCI_VENDOR_ID_INTEL)
1180 ha->oem_id = OEM_ID_INTEL; 1176 ha->oem_id = OEM_ID_INTEL;
1181 else 1177 else
1182 ha->oem_id = OEM_ID_ICP; 1178 ha->oem_id = OEM_ID_ICP;
1183 ha->brd_phys = (pcistr->bus << 8) | (pcistr->device_fn & 0xf8); 1179 ha->brd_phys = (pcistr->pdev->bus->number << 8) | (pcistr->pdev->devfn & 0xf8);
1184 ha->stype = (ulong32)pcistr->device_id; 1180 ha->stype = (ulong32)pcistr->pdev->device;
1185 ha->subdevice_id = pcistr->subdevice_id;
1186 ha->irq = pcistr->irq; 1181 ha->irq = pcistr->irq;
1187 ha->pdev = pcistr->pdev; 1182 ha->pdev = pcistr->pdev;
1188 1183
1189 if (ha->stype <= PCI_DEVICE_ID_VORTEX_GDT6000B) { /* GDT6000/B */ 1184 if (ha->pdev->device <= PCI_DEVICE_ID_VORTEX_GDT6000B) { /* GDT6000/B */
1190 TRACE2(("init_pci() dpmem %lx irq %d\n",pcistr->dpmem,ha->irq)); 1185 TRACE2(("init_pci() dpmem %lx irq %d\n",pcistr->dpmem,ha->irq));
1191 ha->brd = ioremap(pcistr->dpmem, sizeof(gdt6_dpram_str)); 1186 ha->brd = ioremap(pcistr->dpmem, sizeof(gdt6_dpram_str));
1192 if (ha->brd == NULL) { 1187 if (ha->brd == NULL) {
@@ -1293,7 +1288,7 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
1293 1288
1294 ha->dma64_support = 0; 1289 ha->dma64_support = 0;
1295 1290
1296 } else if (ha->stype <= PCI_DEVICE_ID_VORTEX_GDT6555) { /* GDT6110, ... */ 1291 } else if (ha->pdev->device <= PCI_DEVICE_ID_VORTEX_GDT6555) { /* GDT6110, ... */
1297 ha->plx = (gdt6c_plx_regs *)pcistr->io; 1292 ha->plx = (gdt6c_plx_regs *)pcistr->io;
1298 TRACE2(("init_pci_new() dpmem %lx irq %d\n", 1293 TRACE2(("init_pci_new() dpmem %lx irq %d\n",
1299 pcistr->dpmem,ha->irq)); 1294 pcistr->dpmem,ha->irq));
@@ -4601,7 +4596,8 @@ static int __init gdth_detect(Scsi_Host_Template *shtp)
4601 } 4596 }
4602 /* controller found and initialized */ 4597 /* controller found and initialized */
4603 printk("Configuring GDT-PCI HA at %d/%d IRQ %u\n", 4598 printk("Configuring GDT-PCI HA at %d/%d IRQ %u\n",
4604 pcistr[ctr].bus,PCI_SLOT(pcistr[ctr].device_fn),ha->irq); 4599 pcistr[ctr].pdev->bus->number,
4600 PCI_SLOT(pcistr[ctr].pdev->devfn), ha->irq);
4605 4601
4606 if (request_irq(ha->irq, gdth_interrupt, 4602 if (request_irq(ha->irq, gdth_interrupt,
4607 IRQF_DISABLED|IRQF_SHARED, "gdth", ha)) 4603 IRQF_DISABLED|IRQF_SHARED, "gdth", ha))
@@ -4637,7 +4633,7 @@ static int __init gdth_detect(Scsi_Host_Template *shtp)
4637#endif 4633#endif
4638 ha->scratch_busy = FALSE; 4634 ha->scratch_busy = FALSE;
4639 ha->req_first = NULL; 4635 ha->req_first = NULL;
4640 ha->tid_cnt = pcistr[ctr].device_id >= 0x200 ? MAXID : MAX_HDRIVES; 4636 ha->tid_cnt = pcistr[ctr].pdev->device >= 0x200 ? MAXID : MAX_HDRIVES;
4641 if (max_ids > 0 && max_ids < ha->tid_cnt) 4637 if (max_ids > 0 && max_ids < ha->tid_cnt)
4642 ha->tid_cnt = max_ids; 4638 ha->tid_cnt = max_ids;
4643 for (i=0; i<GDTH_MAXCMDS; ++i) 4639 for (i=0; i<GDTH_MAXCMDS; ++i)
@@ -4810,7 +4806,7 @@ static const char *gdth_ctr_name(int hanum)
4810 } else if (ha->type == GDT_ISA) { 4806 } else if (ha->type == GDT_ISA) {
4811 return("GDT2000/2020"); 4807 return("GDT2000/2020");
4812 } else if (ha->type == GDT_PCI) { 4808 } else if (ha->type == GDT_PCI) {
4813 switch (ha->stype) { 4809 switch (ha->pdev->device) {
4814 case PCI_DEVICE_ID_VORTEX_GDT60x0: 4810 case PCI_DEVICE_ID_VORTEX_GDT60x0:
4815 return("GDT6000/6020/6050"); 4811 return("GDT6000/6020/6050");
4816 case PCI_DEVICE_ID_VORTEX_GDT6000B: 4812 case PCI_DEVICE_ID_VORTEX_GDT6000B:
@@ -5448,12 +5444,12 @@ static int gdth_ioctl(struct inode *inode, struct file *filep,
5448 ctrt.type = 5444 ctrt.type =
5449 (ha->oem_id == OEM_ID_INTEL ? 0xfd : 0xfe); 5445 (ha->oem_id == OEM_ID_INTEL ? 0xfd : 0xfe);
5450 if (ha->stype >= 0x300) 5446 if (ha->stype >= 0x300)
5451 ctrt.ext_type = 0x6000 | ha->subdevice_id; 5447 ctrt.ext_type = 0x6000 | ha->pdev->subsystem_device;
5452 else 5448 else
5453 ctrt.ext_type = 0x6000 | ha->stype; 5449 ctrt.ext_type = 0x6000 | ha->stype;
5454 } 5450 }
5455 ctrt.device_id = ha->stype; 5451 ctrt.device_id = ha->pdev->device;
5456 ctrt.sub_device_id = ha->subdevice_id; 5452 ctrt.sub_device_id = ha->pdev->subsystem_device;
5457 } 5453 }
5458 ctrt.info = ha->brd_phys; 5454 ctrt.info = ha->brd_phys;
5459 ctrt.oem_id = ha->oem_id; 5455 ctrt.oem_id = ha->oem_id;
diff --git a/drivers/scsi/gdth.h b/drivers/scsi/gdth.h
index 8c29eafd51c5..37423300592e 100644
--- a/drivers/scsi/gdth.h
+++ b/drivers/scsi/gdth.h
@@ -845,11 +845,6 @@ typedef struct {
845/* PCI resources */ 845/* PCI resources */
846typedef struct { 846typedef struct {
847 struct pci_dev *pdev; 847 struct pci_dev *pdev;
848 ushort vendor_id; /* vendor (ICP, Intel, ..) */
849 ushort device_id; /* device ID (0,..,9) */
850 ushort subdevice_id; /* sub device ID */
851 unchar bus; /* PCI bus */
852 unchar device_fn; /* PCI device/function no. */
853 ulong dpmem; /* DPRAM address */ 848 ulong dpmem; /* DPRAM address */
854 ulong io; /* IO address */ 849 ulong io; /* IO address */
855 ulong io_mm; /* IO address mem. mapped */ 850 ulong io_mm; /* IO address mem. mapped */
@@ -862,7 +857,6 @@ typedef struct {
862 ushort oem_id; /* OEM */ 857 ushort oem_id; /* OEM */
863 ushort type; /* controller class */ 858 ushort type; /* controller class */
864 ulong32 stype; /* subtype (PCI: device ID) */ 859 ulong32 stype; /* subtype (PCI: device ID) */
865 ushort subdevice_id; /* sub device ID (PCI) */
866 ushort fw_vers; /* firmware version */ 860 ushort fw_vers; /* firmware version */
867 ushort cache_feat; /* feat. cache serv. (s/g,..)*/ 861 ushort cache_feat; /* feat. cache serv. (s/g,..)*/
868 ushort raw_feat; /* feat. raw service (s/g,..)*/ 862 ushort raw_feat; /* feat. raw service (s/g,..)*/