diff options
Diffstat (limited to 'drivers/ata/pata_cmd64x.c')
-rw-r--r-- | drivers/ata/pata_cmd64x.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c index 3e02c6a3ba9c..2a79b335cfcc 100644 --- a/drivers/ata/pata_cmd64x.c +++ b/drivers/ata/pata_cmd64x.c | |||
@@ -377,7 +377,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
377 | { | 377 | { |
378 | u32 class_rev; | 378 | u32 class_rev; |
379 | 379 | ||
380 | static struct ata_port_info cmd_info[6] = { | 380 | static const struct ata_port_info cmd_info[6] = { |
381 | { /* CMD 643 - no UDMA */ | 381 | { /* CMD 643 - no UDMA */ |
382 | .sht = &cmd64x_sht, | 382 | .sht = &cmd64x_sht, |
383 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, | 383 | .flags = ATA_FLAG_SLAVE_POSS | ATA_FLAG_SRST, |
@@ -424,11 +424,9 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
424 | .port_ops = &cmd648_port_ops | 424 | .port_ops = &cmd648_port_ops |
425 | } | 425 | } |
426 | }; | 426 | }; |
427 | static struct ata_port_info *port_info[2], *info; | 427 | const struct ata_port_info *ppi[] = { &cmd_info[id->driver_data], NULL }; |
428 | u8 mrdmode; | 428 | u8 mrdmode; |
429 | 429 | ||
430 | info = &cmd_info[id->driver_data]; | ||
431 | |||
432 | pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev); | 430 | pci_read_config_dword(pdev, PCI_CLASS_REVISION, &class_rev); |
433 | class_rev &= 0xFF; | 431 | class_rev &= 0xFF; |
434 | 432 | ||
@@ -438,10 +436,10 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
438 | if (pdev->device == PCI_DEVICE_ID_CMD_646) { | 436 | if (pdev->device == PCI_DEVICE_ID_CMD_646) { |
439 | /* Does UDMA work ? */ | 437 | /* Does UDMA work ? */ |
440 | if (class_rev > 4) | 438 | if (class_rev > 4) |
441 | info = &cmd_info[2]; | 439 | ppi[0] = &cmd_info[2]; |
442 | /* Early rev with other problems ? */ | 440 | /* Early rev with other problems ? */ |
443 | else if (class_rev == 1) | 441 | else if (class_rev == 1) |
444 | info = &cmd_info[3]; | 442 | ppi[0] = &cmd_info[3]; |
445 | } | 443 | } |
446 | 444 | ||
447 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 64); | 445 | pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 64); |
@@ -457,8 +455,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
457 | pci_write_config_byte(pdev, UDIDETCR0, 0xF0); | 455 | pci_write_config_byte(pdev, UDIDETCR0, 0xF0); |
458 | #endif | 456 | #endif |
459 | 457 | ||
460 | port_info[0] = port_info[1] = info; | 458 | return ata_pci_init_one(pdev, ppi); |
461 | return ata_pci_init_one(pdev, port_info, 2); | ||
462 | } | 459 | } |
463 | 460 | ||
464 | #ifdef CONFIG_PM | 461 | #ifdef CONFIG_PM |