diff options
Diffstat (limited to 'drivers/scsi/hpsa.c')
-rw-r--r-- | drivers/scsi/hpsa.c | 39 |
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 | } |