aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/hpsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/hpsa.c')
-rw-r--r--drivers/scsi/hpsa.c39
1 files changed, 29 insertions, 10 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 2b4261cb7742..4217e49aea46 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -99,6 +99,15 @@ static const struct pci_device_id hpsa_pci_device_id[] = {
99 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3354}, 99 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3354},
100 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3355}, 100 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3355},
101 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3356}, 101 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3356},
102 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1920},
103 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1921},
104 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1922},
105 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1923},
106 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1924},
107 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1925},
108 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1926},
109 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1928},
110 {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x334d},
102 {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 111 {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
103 PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0}, 112 PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0},
104 {0,} 113 {0,}
@@ -118,13 +127,22 @@ static struct board_type products[] = {
118 {0x3249103C, "Smart Array P812", &SA5_access}, 127 {0x3249103C, "Smart Array P812", &SA5_access},
119 {0x324a103C, "Smart Array P712m", &SA5_access}, 128 {0x324a103C, "Smart Array P712m", &SA5_access},
120 {0x324b103C, "Smart Array P711m", &SA5_access}, 129 {0x324b103C, "Smart Array P711m", &SA5_access},
121 {0x3350103C, "Smart Array", &SA5_access}, 130 {0x3350103C, "Smart Array P222", &SA5_access},
122 {0x3351103C, "Smart Array", &SA5_access}, 131 {0x3351103C, "Smart Array P420", &SA5_access},
123 {0x3352103C, "Smart Array", &SA5_access}, 132 {0x3352103C, "Smart Array P421", &SA5_access},
124 {0x3353103C, "Smart Array", &SA5_access}, 133 {0x3353103C, "Smart Array P822", &SA5_access},
125 {0x3354103C, "Smart Array", &SA5_access}, 134 {0x3354103C, "Smart Array P420i", &SA5_access},
126 {0x3355103C, "Smart Array", &SA5_access}, 135 {0x3355103C, "Smart Array P220i", &SA5_access},
127 {0x3356103C, "Smart Array", &SA5_access}, 136 {0x3356103C, "Smart Array P721m", &SA5_access},
137 {0x1920103C, "Smart Array", &SA5_access},
138 {0x1921103C, "Smart Array", &SA5_access},
139 {0x1922103C, "Smart Array", &SA5_access},
140 {0x1923103C, "Smart Array", &SA5_access},
141 {0x1924103C, "Smart Array", &SA5_access},
142 {0x1925103C, "Smart Array", &SA5_access},
143 {0x1926103C, "Smart Array", &SA5_access},
144 {0x1928103C, "Smart Array", &SA5_access},
145 {0x334d103C, "Smart Array P822se", &SA5_access},
128 {0xFFFF103C, "Unknown Smart Array", &SA5_access}, 146 {0xFFFF103C, "Unknown Smart Array", &SA5_access},
129}; 147};
130 148
@@ -2610,7 +2628,7 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc)
2610 /* not in reqQ, if also not in cmpQ, must have already completed */ 2628 /* not in reqQ, if also not in cmpQ, must have already completed */
2611 found = hpsa_find_cmd_in_queue(h, sc, &h->cmpQ); 2629 found = hpsa_find_cmd_in_queue(h, sc, &h->cmpQ);
2612 if (!found) { 2630 if (!found) {
2613 dev_dbg(&h->pdev->dev, "%s Request FAILED (not known to driver).\n", 2631 dev_dbg(&h->pdev->dev, "%s Request SUCCEEDED (not known to driver).\n",
2614 msg); 2632 msg);
2615 return SUCCESS; 2633 return SUCCESS;
2616 } 2634 }
@@ -3266,7 +3284,7 @@ static void fill_cmd(struct CommandList *c, u8 cmd, struct ctlr_info *h,
3266 c->Request.Timeout = 0; /* Don't time out */ 3284 c->Request.Timeout = 0; /* Don't time out */
3267 memset(&c->Request.CDB[0], 0, sizeof(c->Request.CDB)); 3285 memset(&c->Request.CDB[0], 0, sizeof(c->Request.CDB));
3268 c->Request.CDB[0] = cmd; 3286 c->Request.CDB[0] = cmd;
3269 c->Request.CDB[1] = 0x03; /* Reset target above */ 3287 c->Request.CDB[1] = HPSA_RESET_TYPE_LUN;
3270 /* If bytes 4-7 are zero, it means reset the */ 3288 /* If bytes 4-7 are zero, it means reset the */
3271 /* LunID device */ 3289 /* LunID device */
3272 c->Request.CDB[4] = 0x00; 3290 c->Request.CDB[4] = 0x00;
@@ -3338,7 +3356,8 @@ static void __iomem *remap_pci_mem(ulong base, ulong size)
3338{ 3356{
3339 ulong page_base = ((ulong) base) & PAGE_MASK; 3357 ulong page_base = ((ulong) base) & PAGE_MASK;
3340 ulong page_offs = ((ulong) base) - page_base; 3358 ulong page_offs = ((ulong) base) - page_base;
3341 void __iomem *page_remapped = ioremap(page_base, page_offs + size); 3359 void __iomem *page_remapped = ioremap_nocache(page_base,
3360 page_offs + size);
3342 3361
3343 return page_remapped ? (page_remapped + page_offs) : NULL; 3362 return page_remapped ? (page_remapped + page_offs) : NULL;
3344} 3363}