PATCH: 2.6.10 - Add support for CSB6 RAID

From: Alan Cox
Date: Mon Dec 27 2004 - 10:07:32 EST


The serverworks chips include a raid variant that the 2.6 driver didn't
support. This enables support for this and removes a pile of #if and
other pointless obfuscations. This removes the need to use various
vendor binary only drivers for CSB6 RAID

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.10/drivers/ide/pci/serverworks.c linux-2.6.10/drivers/ide/pci/serverworks.c
--- linux.vanilla-2.6.10/drivers/ide/pci/serverworks.c 2004-12-25 21:15:34.000000000 +0000
+++ linux-2.6.10/drivers/ide/pci/serverworks.c 2004-12-26 18:50:17.058127504 +0000
@@ -359,11 +359,9 @@
else if ((dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) ||
(dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE) ||
(dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2)) {
-// u32 pioreg = 0, dmareg = 0;

/* Third Channel Test */
if (!(PCI_FUNC(dev->devfn) & 1)) {
-#if 1
struct pci_dev * findev = NULL;
u32 reg4c = 0;
findev = pci_find_device(PCI_VENDOR_ID_SERVERWORKS,
@@ -375,19 +373,11 @@
reg4c |= 0x00000020;
pci_write_config_dword(findev, 0x4C, reg4c);
}
-#endif
outb_p(0x06, 0x0c00);
dev->irq = inb_p(0x0c01);
#if 0
- /* WE need to figure out how to get the correct one */
- printk("%s: interrupt %d\n", name, dev->irq);
- if (dev->irq != 0x0B)
- dev->irq = 0x0B;
-#endif
-#if 0
printk("%s: device class (0x%04x)\n",
name, dev->class);
-#else
if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE) {
dev->class &= ~0x000F0F00;
// dev->class |= ~0x00000400;
@@ -413,7 +403,8 @@
* interrupt pin to be set, and it is a compatibility
* mode issue.
*/
- dev->irq = 0;
+ if ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE)
+ dev->irq = 0;
}
// pci_read_config_dword(dev, 0x40, &pioreg)
// pci_write_config_dword(dev, 0x40, 0x99999999);
@@ -577,9 +568,6 @@
d->bootable = NEVER_BOARD;
if (dev->resource[0].start == 0x01f1)
d->bootable = ON_BOARD;
- } else {
- if ((dev->class >> 8) != PCI_CLASS_STORAGE_IDE)
- return;
}
#if 0
if ((IDE_PCI_DEVID_EQ(d->devid, DEVID_CSB6) &&
@@ -625,10 +613,6 @@
.name = "Serverworks_IDE",
.id_table = svwks_pci_tbl,
.probe = svwks_init_one,
-#if 0 /* FIXME: implement */
- .suspend = ,
- .resume = ,
-#endif
};

static int svwks_ide_init(void)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/