aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-10-18 18:30:09 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2007-10-18 18:30:09 -0400
commit7ed5829758d8d6c5486ec54fb4414b7683541fad (patch)
tree48024a11dbdf78251b22238a39bac46044faa5e9 /drivers/ide
parentaaf707f061d5d87c9f671caa2904cd41c1c1a99e (diff)
serverworks: remove ->init_setup
Merge init_setup_{svwks,csb6}() into svwks_init_one(). While at it: * Remove redundant dev->device checks. * Operate on a local copy of serverworks_chipsets[] entry. * Use pci_resource_start(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/pci/serverworks.c45
1 files changed, 14 insertions, 31 deletions
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c
index 760e0e3e118e..c506b8bc4bcd 100644
--- a/drivers/ide/pci/serverworks.c
+++ b/drivers/ide/pci/serverworks.c
@@ -379,34 +379,9 @@ static void __devinit init_hwif_svwks (ide_hwif_t *hwif)
379 } 379 }
380} 380}
381 381
382static int __devinit init_setup_svwks (struct pci_dev *dev, ide_pci_device_t *d)
383{
384 return ide_setup_pci_device(dev, d);
385}
386
387static int __devinit init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d)
388{
389 if (!(PCI_FUNC(dev->devfn) & 1)) {
390 if (dev->resource[0].start == 0x01f1)
391 d->host_flags |= IDE_HFLAG_BOOTABLE;
392 else
393 d->host_flags &= ~IDE_HFLAG_BOOTABLE;
394 }
395
396 if ((dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE ||
397 dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2) &&
398 (!(PCI_FUNC(dev->devfn) & 1)))
399 d->host_flags |= IDE_HFLAG_SINGLE;
400 else
401 d->host_flags &= ~IDE_HFLAG_SINGLE;
402
403 return ide_setup_pci_device(dev, d);
404}
405
406static ide_pci_device_t serverworks_chipsets[] __devinitdata = { 382static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
407 { /* 0 */ 383 { /* 0 */
408 .name = "SvrWks OSB4", 384 .name = "SvrWks OSB4",
409 .init_setup = init_setup_svwks,
410 .init_chipset = init_chipset_svwks, 385 .init_chipset = init_chipset_svwks,
411 .init_hwif = init_hwif_svwks, 386 .init_hwif = init_hwif_svwks,
412 .host_flags = IDE_HFLAG_BOOTABLE, 387 .host_flags = IDE_HFLAG_BOOTABLE,
@@ -415,7 +390,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
415 .udma_mask = 0x00, /* UDMA is problematic on OSB4 */ 390 .udma_mask = 0x00, /* UDMA is problematic on OSB4 */
416 },{ /* 1 */ 391 },{ /* 1 */
417 .name = "SvrWks CSB5", 392 .name = "SvrWks CSB5",
418 .init_setup = init_setup_svwks,
419 .init_chipset = init_chipset_svwks, 393 .init_chipset = init_chipset_svwks,
420 .init_hwif = init_hwif_svwks, 394 .init_hwif = init_hwif_svwks,
421 .host_flags = IDE_HFLAG_BOOTABLE, 395 .host_flags = IDE_HFLAG_BOOTABLE,
@@ -424,7 +398,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
424 .udma_mask = ATA_UDMA5, 398 .udma_mask = ATA_UDMA5,
425 },{ /* 2 */ 399 },{ /* 2 */
426 .name = "SvrWks CSB6", 400 .name = "SvrWks CSB6",
427 .init_setup = init_setup_csb6,
428 .init_chipset = init_chipset_svwks, 401 .init_chipset = init_chipset_svwks,
429 .init_hwif = init_hwif_svwks, 402 .init_hwif = init_hwif_svwks,
430 .host_flags = IDE_HFLAG_BOOTABLE, 403 .host_flags = IDE_HFLAG_BOOTABLE,
@@ -433,7 +406,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
433 .udma_mask = ATA_UDMA5, 406 .udma_mask = ATA_UDMA5,
434 },{ /* 3 */ 407 },{ /* 3 */
435 .name = "SvrWks CSB6", 408 .name = "SvrWks CSB6",
436 .init_setup = init_setup_csb6,
437 .init_chipset = init_chipset_svwks, 409 .init_chipset = init_chipset_svwks,
438 .init_hwif = init_hwif_svwks, 410 .init_hwif = init_hwif_svwks,
439 .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE, 411 .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE,
@@ -442,7 +414,6 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
442 .udma_mask = ATA_UDMA5, 414 .udma_mask = ATA_UDMA5,
443 },{ /* 4 */ 415 },{ /* 4 */
444 .name = "SvrWks HT1000", 416 .name = "SvrWks HT1000",
445 .init_setup = init_setup_svwks,
446 .init_chipset = init_chipset_svwks, 417 .init_chipset = init_chipset_svwks,
447 .init_hwif = init_hwif_svwks, 418 .init_hwif = init_hwif_svwks,
448 .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE, 419 .host_flags = IDE_HFLAG_SINGLE | IDE_HFLAG_BOOTABLE,
@@ -463,9 +434,21 @@ static ide_pci_device_t serverworks_chipsets[] __devinitdata = {
463 434
464static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device_id *id) 435static int __devinit svwks_init_one(struct pci_dev *dev, const struct pci_device_id *id)
465{ 436{
466 ide_pci_device_t *d = &serverworks_chipsets[id->driver_data]; 437 ide_pci_device_t d;
438 u8 idx = id->driver_data;
439
440 d = serverworks_chipsets[idx];
441
442 if (idx == 2 || idx == 3) {
443 if ((PCI_FUNC(dev->devfn) & 1) == 0) {
444 if (pci_resource_start(dev, 0) != 0x01f1)
445 d.host_flags &= ~IDE_HFLAG_BOOTABLE;
446 d.host_flags |= IDE_HFLAG_SINGLE;
447 } else
448 d.host_flags &= ~IDE_HFLAG_SINGLE;
449 }
467 450
468 return d->init_setup(dev, d); 451 return ide_setup_pci_device(dev, &d);
469} 452}
470 453
471static const struct pci_device_id svwks_pci_tbl[] = { 454static const struct pci_device_id svwks_pci_tbl[] = {