aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/gdth.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/gdth.c')
-rw-r--r--drivers/scsi/gdth.c59
1 files changed, 28 insertions, 31 deletions
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 0b2080d33575..12be6729898a 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -649,7 +649,6 @@ static void __init gdth_search_dev(gdth_pci_str *pcistr, ushort *cnt,
649 649
650 /* GDT PCI controller found, resources are already in pdev */ 650 /* GDT PCI controller found, resources are already in pdev */
651 pcistr[*cnt].pdev = pdev; 651 pcistr[*cnt].pdev = pdev;
652 pcistr[*cnt].irq = pdev->irq;
653 base0 = pci_resource_flags(pdev, 0); 652 base0 = pci_resource_flags(pdev, 0);
654 base1 = pci_resource_flags(pdev, 1); 653 base1 = pci_resource_flags(pdev, 1);
655 base2 = pci_resource_flags(pdev, 2); 654 base2 = pci_resource_flags(pdev, 2);
@@ -664,7 +663,6 @@ static void __init gdth_search_dev(gdth_pci_str *pcistr, ushort *cnt,
664 !(base1 & IORESOURCE_IO)) 663 !(base1 & IORESOURCE_IO))
665 continue; 664 continue;
666 pcistr[*cnt].dpmem = pci_resource_start(pdev, 2); 665 pcistr[*cnt].dpmem = pci_resource_start(pdev, 2);
667 pcistr[*cnt].io_mm = pci_resource_start(pdev, 0);
668 pcistr[*cnt].io = pci_resource_start(pdev, 1); 666 pcistr[*cnt].io = pci_resource_start(pdev, 1);
669 } 667 }
670 TRACE2(("Controller found at %d/%d, irq %d, dpmem 0x%lx\n", 668 TRACE2(("Controller found at %d/%d, irq %d, dpmem 0x%lx\n",
@@ -909,7 +907,8 @@ static int __init gdth_init_isa(ulong32 bios_adr,gdth_ha_str *ha)
909#endif /* CONFIG_ISA */ 907#endif /* CONFIG_ISA */
910 908
911#ifdef CONFIG_PCI 909#ifdef CONFIG_PCI
912static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha) 910static int __init gdth_init_pci(struct pci_dev *pdev, gdth_pci_str *pcistr,
911 gdth_ha_str *ha)
913{ 912{
914 register gdt6_dpram_str __iomem *dp6_ptr; 913 register gdt6_dpram_str __iomem *dp6_ptr;
915 register gdt6c_dpram_str __iomem *dp6c_ptr; 914 register gdt6c_dpram_str __iomem *dp6c_ptr;
@@ -921,14 +920,14 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
921 920
922 TRACE(("gdth_init_pci()\n")); 921 TRACE(("gdth_init_pci()\n"));
923 922
924 if (pcistr->pdev->vendor == PCI_VENDOR_ID_INTEL) 923 if (pdev->vendor == PCI_VENDOR_ID_INTEL)
925 ha->oem_id = OEM_ID_INTEL; 924 ha->oem_id = OEM_ID_INTEL;
926 else 925 else
927 ha->oem_id = OEM_ID_ICP; 926 ha->oem_id = OEM_ID_ICP;
928 ha->brd_phys = (pcistr->pdev->bus->number << 8) | (pcistr->pdev->devfn & 0xf8); 927 ha->brd_phys = (pdev->bus->number << 8) | (pdev->devfn & 0xf8);
929 ha->stype = (ulong32)pcistr->pdev->device; 928 ha->stype = (ulong32)pdev->device;
930 ha->irq = pcistr->irq; 929 ha->irq = pdev->irq;
931 ha->pdev = pcistr->pdev; 930 ha->pdev = pdev;
932 931
933 if (ha->pdev->device <= PCI_DEVICE_ID_VORTEX_GDT6000B) { /* GDT6000/B */ 932 if (ha->pdev->device <= PCI_DEVICE_ID_VORTEX_GDT6000B) { /* GDT6000/B */
934 TRACE2(("init_pci() dpmem %lx irq %d\n",pcistr->dpmem,ha->irq)); 933 TRACE2(("init_pci() dpmem %lx irq %d\n",pcistr->dpmem,ha->irq));
@@ -956,8 +955,7 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
956 continue; 955 continue;
957 } 956 }
958 iounmap(ha->brd); 957 iounmap(ha->brd);
959 pci_write_config_dword(pcistr->pdev, 958 pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, i);
960 PCI_BASE_ADDRESS_0, i);
961 ha->brd = ioremap(i, sizeof(gdt6_dpram_str)); 959 ha->brd = ioremap(i, sizeof(gdt6_dpram_str));
962 if (ha->brd == NULL) { 960 if (ha->brd == NULL) {
963 printk("GDT-PCI: Initialization error (DPMEM remap error)\n"); 961 printk("GDT-PCI: Initialization error (DPMEM remap error)\n");
@@ -1066,8 +1064,7 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
1066 continue; 1064 continue;
1067 } 1065 }
1068 iounmap(ha->brd); 1066 iounmap(ha->brd);
1069 pci_write_config_dword(pcistr->pdev, 1067 pci_write_config_dword(pdev, PCI_BASE_ADDRESS_2, i);
1070 PCI_BASE_ADDRESS_2, i);
1071 ha->brd = ioremap(i, sizeof(gdt6c_dpram_str)); 1068 ha->brd = ioremap(i, sizeof(gdt6c_dpram_str));
1072 if (ha->brd == NULL) { 1069 if (ha->brd == NULL) {
1073 printk("GDT-PCI: Initialization error (DPMEM remap error)\n"); 1070 printk("GDT-PCI: Initialization error (DPMEM remap error)\n");
@@ -1159,16 +1156,16 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
1159 } 1156 }
1160 1157
1161 /* manipulate config. space to enable DPMEM, start RP controller */ 1158 /* manipulate config. space to enable DPMEM, start RP controller */
1162 pci_read_config_word(pcistr->pdev, PCI_COMMAND, &command); 1159 pci_read_config_word(pdev, PCI_COMMAND, &command);
1163 command |= 6; 1160 command |= 6;
1164 pci_write_config_word(pcistr->pdev, PCI_COMMAND, command); 1161 pci_write_config_word(pdev, PCI_COMMAND, command);
1165 if (pci_resource_start(pcistr->pdev, 8) == 1UL) 1162 if (pci_resource_start(pdev, 8) == 1UL)
1166 pci_resource_start(pcistr->pdev, 8) = 0UL; 1163 pci_resource_start(pdev, 8) = 0UL;
1167 i = 0xFEFF0001UL; 1164 i = 0xFEFF0001UL;
1168 pci_write_config_dword(pcistr->pdev, PCI_ROM_ADDRESS, i); 1165 pci_write_config_dword(pdev, PCI_ROM_ADDRESS, i);
1169 gdth_delay(1); 1166 gdth_delay(1);
1170 pci_write_config_dword(pcistr->pdev, PCI_ROM_ADDRESS, 1167 pci_write_config_dword(pdev, PCI_ROM_ADDRESS,
1171 pci_resource_start(pcistr->pdev, 8)); 1168 pci_resource_start(pdev, 8));
1172 1169
1173 dp6m_ptr = ha->brd; 1170 dp6m_ptr = ha->brd;
1174 1171
@@ -1195,8 +1192,7 @@ static int __init gdth_init_pci(gdth_pci_str *pcistr,gdth_ha_str *ha)
1195 continue; 1192 continue;
1196 } 1193 }
1197 iounmap(ha->brd); 1194 iounmap(ha->brd);
1198 pci_write_config_dword(pcistr->pdev, 1195 pci_write_config_dword(pdev, PCI_BASE_ADDRESS_0, i);
1199 PCI_BASE_ADDRESS_0, i);
1200 ha->brd = ioremap(i, sizeof(gdt6m_dpram_str)); 1196 ha->brd = ioremap(i, sizeof(gdt6m_dpram_str));
1201 if (ha->brd == NULL) { 1197 if (ha->brd == NULL) {
1202 printk("GDT-PCI: Initialization error (DPMEM remap error)\n"); 1198 printk("GDT-PCI: Initialization error (DPMEM remap error)\n");
@@ -4955,12 +4951,13 @@ static int __init gdth_eisa_probe_one(ushort eisa_slot)
4955#endif /* CONFIG_EISA */ 4951#endif /* CONFIG_EISA */
4956 4952
4957#ifdef CONFIG_PCI 4953#ifdef CONFIG_PCI
4958static int __init gdth_pci_probe_one(gdth_pci_str *pcistr, int ctr) 4954static int __init gdth_pci_probe_one(gdth_pci_str *pcistr)
4959{ 4955{
4960 struct Scsi_Host *shp; 4956 struct Scsi_Host *shp;
4961 gdth_ha_str *ha; 4957 gdth_ha_str *ha;
4962 dma_addr_t scratch_dma_handle = 0; 4958 dma_addr_t scratch_dma_handle = 0;
4963 int error, i; 4959 int error, i;
4960 struct pci_dev *pdev = pcistr->pdev;
4964 4961
4965 shp = scsi_host_alloc(&gdth_template, sizeof(gdth_ha_str)); 4962 shp = scsi_host_alloc(&gdth_template, sizeof(gdth_ha_str));
4966 if (!shp) 4963 if (!shp)
@@ -4968,13 +4965,13 @@ static int __init gdth_pci_probe_one(gdth_pci_str *pcistr, int ctr)
4968 ha = shost_priv(shp); 4965 ha = shost_priv(shp);
4969 4966
4970 error = -ENODEV; 4967 error = -ENODEV;
4971 if (!gdth_init_pci(&pcistr[ctr],ha)) 4968 if (!gdth_init_pci(pdev, pcistr, ha))
4972 goto out_host_put; 4969 goto out_host_put;
4973 4970
4974 /* controller found and initialized */ 4971 /* controller found and initialized */
4975 printk("Configuring GDT-PCI HA at %d/%d IRQ %u\n", 4972 printk("Configuring GDT-PCI HA at %d/%d IRQ %u\n",
4976 pcistr[ctr].pdev->bus->number, 4973 pdev->bus->number,
4977 PCI_SLOT(pcistr[ctr].pdev->devfn), 4974 PCI_SLOT(pdev->devfn),
4978 ha->irq); 4975 ha->irq);
4979 4976
4980 error = request_irq(ha->irq, gdth_interrupt, 4977 error = request_irq(ha->irq, gdth_interrupt,
@@ -5019,7 +5016,7 @@ static int __init gdth_pci_probe_one(gdth_pci_str *pcistr, int ctr)
5019 5016
5020 ha->scratch_busy = FALSE; 5017 ha->scratch_busy = FALSE;
5021 ha->req_first = NULL; 5018 ha->req_first = NULL;
5022 ha->tid_cnt = pcistr[ctr].pdev->device >= 0x200 ? MAXID : MAX_HDRIVES; 5019 ha->tid_cnt = pdev->device >= 0x200 ? MAXID : MAX_HDRIVES;
5023 if (max_ids > 0 && max_ids < ha->tid_cnt) 5020 if (max_ids > 0 && max_ids < ha->tid_cnt)
5024 ha->tid_cnt = max_ids; 5021 ha->tid_cnt = max_ids;
5025 for (i = 0; i < GDTH_MAXCMDS; ++i) 5022 for (i = 0; i < GDTH_MAXCMDS; ++i)
@@ -5039,16 +5036,16 @@ static int __init gdth_pci_probe_one(gdth_pci_str *pcistr, int ctr)
5039 /* 64-bit DMA only supported from FW >= x.43 */ 5036 /* 64-bit DMA only supported from FW >= x.43 */
5040 if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat & GDT_64BIT) || 5037 if (!(ha->cache_feat & ha->raw_feat & ha->screen_feat & GDT_64BIT) ||
5041 !ha->dma64_support) { 5038 !ha->dma64_support) {
5042 if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { 5039 if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
5043 printk(KERN_WARNING "GDT-PCI %d: " 5040 printk(KERN_WARNING "GDT-PCI %d: "
5044 "Unable to set 32-bit DMA\n", ha->hanum); 5041 "Unable to set 32-bit DMA\n", ha->hanum);
5045 goto out_free_coal_stat; 5042 goto out_free_coal_stat;
5046 } 5043 }
5047 } else { 5044 } else {
5048 shp->max_cmd_len = 16; 5045 shp->max_cmd_len = 16;
5049 if (!pci_set_dma_mask(pcistr[ctr].pdev, DMA_64BIT_MASK)) { 5046 if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) {
5050 printk("GDT-PCI %d: 64-bit DMA enabled\n", ha->hanum); 5047 printk("GDT-PCI %d: 64-bit DMA enabled\n", ha->hanum);
5051 } else if (pci_set_dma_mask(pcistr[ctr].pdev, DMA_32BIT_MASK)) { 5048 } else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
5052 printk(KERN_WARNING "GDT-PCI %d: " 5049 printk(KERN_WARNING "GDT-PCI %d: "
5053 "Unable to set 64/32-bit DMA\n", ha->hanum); 5050 "Unable to set 64/32-bit DMA\n", ha->hanum);
5054 goto out_free_coal_stat; 5051 goto out_free_coal_stat;
@@ -5062,7 +5059,7 @@ static int __init gdth_pci_probe_one(gdth_pci_str *pcistr, int ctr)
5062 spin_lock_init(&ha->smp_lock); 5059 spin_lock_init(&ha->smp_lock);
5063 gdth_enable_int(ha); 5060 gdth_enable_int(ha);
5064 5061
5065 error = scsi_add_host(shp, &pcistr[ctr].pdev->dev); 5062 error = scsi_add_host(shp, &pdev->dev);
5066 if (error) 5063 if (error)
5067 goto out_free_coal_stat; 5064 goto out_free_coal_stat;
5068 list_add_tail(&ha->list, &gdth_instances); 5065 list_add_tail(&ha->list, &gdth_instances);
@@ -5193,7 +5190,7 @@ static int __init gdth_init(void)
5193 printk("GDT-HA: Found %d PCI Storage RAID Controllers\n", cnt); 5190 printk("GDT-HA: Found %d PCI Storage RAID Controllers\n", cnt);
5194 gdth_sort_pci(pcistr,cnt); 5191 gdth_sort_pci(pcistr,cnt);
5195 for (ctr = 0; ctr < cnt; ++ctr) 5192 for (ctr = 0; ctr < cnt; ++ctr)
5196 gdth_pci_probe_one(pcistr, ctr); 5193 gdth_pci_probe_one(&pcistr[ctr]);
5197 } 5194 }
5198#endif /* CONFIG_PCI */ 5195#endif /* CONFIG_PCI */
5199 5196