mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-22 01:10:28 +00:00
[PATCH] cciss: reference driver support
Add the support to fire up on any HP RAID class device that has a valid cciss signature. Signed-off-by: Mike Miller <mike.miller@hp.com> Acked-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9d827c9e8a
commit
4ff9a9a4ba
@ -83,6 +83,8 @@ static const struct pci_device_id cciss_pci_device_id[] = {
|
|||||||
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3214},
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3214},
|
||||||
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215},
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSD, 0x103C, 0x3215},
|
||||||
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3233},
|
{PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSC, 0x103C, 0x3233},
|
||||||
|
{PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
||||||
|
PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0},
|
||||||
{0,}
|
{0,}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -112,6 +114,7 @@ static struct board_type products[] = {
|
|||||||
{0x3214103C, "Smart Array E200i", &SA5_access},
|
{0x3214103C, "Smart Array E200i", &SA5_access},
|
||||||
{0x3215103C, "Smart Array E200i", &SA5_access},
|
{0x3215103C, "Smart Array E200i", &SA5_access},
|
||||||
{0x3233103C, "Smart Array E500", &SA5_access},
|
{0x3233103C, "Smart Array E500", &SA5_access},
|
||||||
|
{0xFFFF103C, "Unknown Smart Array", &SA5_access},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* How long to wait (in milliseconds) for board to go into simple mode */
|
/* How long to wait (in milliseconds) for board to go into simple mode */
|
||||||
@ -2960,13 +2963,6 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i == ARRAY_SIZE(products)) {
|
|
||||||
printk(KERN_WARNING "cciss: Sorry, I don't know how"
|
|
||||||
" to access the Smart Array controller %08lx\n",
|
|
||||||
(unsigned long)board_id);
|
|
||||||
err = -ENODEV;
|
|
||||||
goto err_out_free_res;
|
|
||||||
}
|
|
||||||
if ((readb(&c->cfgtable->Signature[0]) != 'C') ||
|
if ((readb(&c->cfgtable->Signature[0]) != 'C') ||
|
||||||
(readb(&c->cfgtable->Signature[1]) != 'I') ||
|
(readb(&c->cfgtable->Signature[1]) != 'I') ||
|
||||||
(readb(&c->cfgtable->Signature[2]) != 'S') ||
|
(readb(&c->cfgtable->Signature[2]) != 'S') ||
|
||||||
@ -2975,6 +2971,26 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
|
|||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
goto err_out_free_res;
|
goto err_out_free_res;
|
||||||
}
|
}
|
||||||
|
/* We didn't find the controller in our list. We know the
|
||||||
|
* signature is valid. If it's an HP device let's try to
|
||||||
|
* bind to the device and fire it up. Otherwise we bail.
|
||||||
|
*/
|
||||||
|
if (i == ARRAY_SIZE(products)) {
|
||||||
|
if (subsystem_vendor_id == PCI_VENDOR_ID_HP) {
|
||||||
|
c->product_name = products[i-1].product_name;
|
||||||
|
c->access = *(products[i-1].access);
|
||||||
|
printk(KERN_WARNING "cciss: This is an unknown "
|
||||||
|
"Smart Array controller.\n"
|
||||||
|
"cciss: Please update to the latest driver "
|
||||||
|
"available from www.hp.com.\n");
|
||||||
|
} else {
|
||||||
|
printk(KERN_WARNING "cciss: Sorry, I don't know how"
|
||||||
|
" to access the Smart Array controller %08lx\n"
|
||||||
|
, (unsigned long)board_id);
|
||||||
|
err = -ENODEV;
|
||||||
|
goto err_out_free_res;
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef CONFIG_X86
|
#ifdef CONFIG_X86
|
||||||
{
|
{
|
||||||
/* Need to enable prefetch in the SCSI core for 6400 in x86 */
|
/* Need to enable prefetch in the SCSI core for 6400 in x86 */
|
||||||
|
Loading…
Reference in New Issue
Block a user