diff options
Diffstat (limited to 'drivers/ata/pata_serverworks.c')
-rw-r--r-- | drivers/ata/pata_serverworks.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/ata/pata_serverworks.c b/drivers/ata/pata_serverworks.c index 8bbe4266f760..dee6e211949d 100644 --- a/drivers/ata/pata_serverworks.c +++ b/drivers/ata/pata_serverworks.c | |||
@@ -475,8 +475,7 @@ static void serverworks_fixup_ht1000(struct pci_dev *pdev) | |||
475 | 475 | ||
476 | static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | 476 | static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id *id) |
477 | { | 477 | { |
478 | int ports = 2; | 478 | static const struct ata_port_info info[4] = { |
479 | static struct ata_port_info info[4] = { | ||
480 | { /* OSB4 */ | 479 | { /* OSB4 */ |
481 | .sht = &serverworks_sht, | 480 | .sht = &serverworks_sht, |
482 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, | 481 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, |
@@ -507,8 +506,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
507 | .port_ops = &serverworks_csb_port_ops | 506 | .port_ops = &serverworks_csb_port_ops |
508 | } | 507 | } |
509 | }; | 508 | }; |
510 | static struct ata_port_info *port_info[2]; | 509 | const struct ata_port_info *ppi[] = { &info[id->driver_data], NULL }; |
511 | struct ata_port_info *devinfo = &info[id->driver_data]; | ||
512 | 510 | ||
513 | /* Force master latency timer to 64 PCI clocks */ | 511 | /* Force master latency timer to 64 PCI clocks */ |
514 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); | 512 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40); |
@@ -517,7 +515,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
517 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) { | 515 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_OSB4IDE) { |
518 | /* Select non UDMA capable OSB4 if we can't do fixups */ | 516 | /* Select non UDMA capable OSB4 if we can't do fixups */ |
519 | if ( serverworks_fixup_osb4(pdev) < 0) | 517 | if ( serverworks_fixup_osb4(pdev) < 0) |
520 | devinfo = &info[1]; | 518 | ppi[0] = &info[1]; |
521 | } | 519 | } |
522 | /* setup CSB5/CSB6 : South Bridge and IDE option RAID */ | 520 | /* setup CSB5/CSB6 : South Bridge and IDE option RAID */ |
523 | else if ((pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) || | 521 | else if ((pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) || |
@@ -527,11 +525,11 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
527 | /* If the returned btr is the newer revision then | 525 | /* If the returned btr is the newer revision then |
528 | select the right info block */ | 526 | select the right info block */ |
529 | if (serverworks_fixup_csb(pdev) == 3) | 527 | if (serverworks_fixup_csb(pdev) == 3) |
530 | devinfo = &info[3]; | 528 | ppi[0] = &info[3]; |
531 | 529 | ||
532 | /* Is this the 3rd channel CSB6 IDE ? */ | 530 | /* Is this the 3rd channel CSB6 IDE ? */ |
533 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2) | 531 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2) |
534 | ports = 1; | 532 | ppi[1] = &ata_dummy_port_info; |
535 | } | 533 | } |
536 | /* setup HT1000E */ | 534 | /* setup HT1000E */ |
537 | else if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) | 535 | else if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_HT1000IDE) |
@@ -540,8 +538,7 @@ static int serverworks_init_one(struct pci_dev *pdev, const struct pci_device_id | |||
540 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) | 538 | if (pdev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5IDE) |
541 | ata_pci_clear_simplex(pdev); | 539 | ata_pci_clear_simplex(pdev); |
542 | 540 | ||
543 | port_info[0] = port_info[1] = devinfo; | 541 | return ata_pci_init_one(pdev, ppi); |
544 | return ata_pci_init_one(pdev, port_info, ports); | ||
545 | } | 542 | } |
546 | 543 | ||
547 | #ifdef CONFIG_PM | 544 | #ifdef CONFIG_PM |