aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/sata_mv.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-12 16:40:57 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-12 16:40:57 -0400
commit21ba0f88ae56da82a3a15fe54d729208b64c4f4b (patch)
tree17ce67f276fe3ea7284c3dc730bdd6a2ec7dfe2f /drivers/ata/sata_mv.c
parentdc690d8ef842b464f1c429a376ca16cb8dbee6ae (diff)
parent36e235901f90fb83215be43cbd8f1ca14661ea40 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (34 commits) PCI: Only build PCI syscalls on architectures that want them PCI: limit pci_get_bus_and_slot to domain 0 PCI: hotplug: acpiphp: avoid acpiphp "cannot get bridge info" PCI hotplug failure PCI: hotplug: acpiphp: remove hot plug parameter write to PCI host bridge PCI: hotplug: acpiphp: fix slot poweroff problem on systems without _PS3 PCI: hotplug: pciehp: wait for 1 second after power off slot PCI: pci_set_power_state(): check for PM capabilities earlier PCI: cpci_hotplug: Convert to use the kthread API PCI: add pci_try_set_mwi PCI: pcie: remove SPIN_LOCK_UNLOCKED PCI: ROUND_UP macro cleanup in drivers/pci PCI: remove pci_dac_dma_... APIs PCI: pci-x-pci-express-read-control-interfaces cleanups PCI: Fix typo in include/linux/pci.h PCI: pci_ids, remove double or more empty lines PCI: pci_ids, add atheros and 3com_2 vendors PCI: pci_ids, reorder some entries PCI: i386: traps, change VENDOR to DEVICE PCI: ATM: lanai, change VENDOR to DEVICE PCI: Change all drivers to use pci_device->revision ...
Diffstat (limited to 'drivers/ata/sata_mv.c')
-rw-r--r--drivers/ata/sata_mv.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c
index 8a77a0ae83ad..5d576435fccc 100644
--- a/drivers/ata/sata_mv.c
+++ b/drivers/ata/sata_mv.c
@@ -1765,12 +1765,9 @@ static void mv5_scr_write(struct ata_port *ap, unsigned int sc_reg_in, u32 val)
1765 1765
1766static void mv5_reset_bus(struct pci_dev *pdev, void __iomem *mmio) 1766static void mv5_reset_bus(struct pci_dev *pdev, void __iomem *mmio)
1767{ 1767{
1768 u8 rev_id;
1769 int early_5080; 1768 int early_5080;
1770 1769
1771 pci_read_config_byte(pdev, PCI_REVISION_ID, &rev_id); 1770 early_5080 = (pdev->device == 0x5080) && (pdev->revision == 0);
1772
1773 early_5080 = (pdev->device == 0x5080) && (rev_id == 0);
1774 1771
1775 if (!early_5080) { 1772 if (!early_5080) {
1776 u32 tmp = readl(mmio + MV_PCI_EXP_ROM_BAR_CTL); 1773 u32 tmp = readl(mmio + MV_PCI_EXP_ROM_BAR_CTL);
@@ -2387,17 +2384,14 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
2387{ 2384{
2388 struct pci_dev *pdev = to_pci_dev(host->dev); 2385 struct pci_dev *pdev = to_pci_dev(host->dev);
2389 struct mv_host_priv *hpriv = host->private_data; 2386 struct mv_host_priv *hpriv = host->private_data;
2390 u8 rev_id;
2391 u32 hp_flags = hpriv->hp_flags; 2387 u32 hp_flags = hpriv->hp_flags;
2392 2388
2393 pci_read_config_byte(pdev, PCI_REVISION_ID, &rev_id);
2394
2395 switch(board_idx) { 2389 switch(board_idx) {
2396 case chip_5080: 2390 case chip_5080:
2397 hpriv->ops = &mv5xxx_ops; 2391 hpriv->ops = &mv5xxx_ops;
2398 hp_flags |= MV_HP_GEN_I; 2392 hp_flags |= MV_HP_GEN_I;
2399 2393
2400 switch (rev_id) { 2394 switch (pdev->revision) {
2401 case 0x1: 2395 case 0x1:
2402 hp_flags |= MV_HP_ERRATA_50XXB0; 2396 hp_flags |= MV_HP_ERRATA_50XXB0;
2403 break; 2397 break;
@@ -2417,7 +2411,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
2417 hpriv->ops = &mv5xxx_ops; 2411 hpriv->ops = &mv5xxx_ops;
2418 hp_flags |= MV_HP_GEN_I; 2412 hp_flags |= MV_HP_GEN_I;
2419 2413
2420 switch (rev_id) { 2414 switch (pdev->revision) {
2421 case 0x0: 2415 case 0x0:
2422 hp_flags |= MV_HP_ERRATA_50XXB0; 2416 hp_flags |= MV_HP_ERRATA_50XXB0;
2423 break; 2417 break;
@@ -2437,7 +2431,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
2437 hpriv->ops = &mv6xxx_ops; 2431 hpriv->ops = &mv6xxx_ops;
2438 hp_flags |= MV_HP_GEN_II; 2432 hp_flags |= MV_HP_GEN_II;
2439 2433
2440 switch (rev_id) { 2434 switch (pdev->revision) {
2441 case 0x7: 2435 case 0x7:
2442 hp_flags |= MV_HP_ERRATA_60X1B2; 2436 hp_flags |= MV_HP_ERRATA_60X1B2;
2443 break; 2437 break;
@@ -2457,7 +2451,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
2457 hpriv->ops = &mv6xxx_ops; 2451 hpriv->ops = &mv6xxx_ops;
2458 hp_flags |= MV_HP_GEN_IIE; 2452 hp_flags |= MV_HP_GEN_IIE;
2459 2453
2460 switch (rev_id) { 2454 switch (pdev->revision) {
2461 case 0x0: 2455 case 0x0:
2462 hp_flags |= MV_HP_ERRATA_XX42A0; 2456 hp_flags |= MV_HP_ERRATA_XX42A0;
2463 break; 2457 break;
@@ -2585,14 +2579,12 @@ static void mv_print_info(struct ata_host *host)
2585{ 2579{
2586 struct pci_dev *pdev = to_pci_dev(host->dev); 2580 struct pci_dev *pdev = to_pci_dev(host->dev);
2587 struct mv_host_priv *hpriv = host->private_data; 2581 struct mv_host_priv *hpriv = host->private_data;
2588 u8 rev_id, scc; 2582 u8 scc;
2589 const char *scc_s, *gen; 2583 const char *scc_s, *gen;
2590 2584
2591 /* Use this to determine the HW stepping of the chip so we know 2585 /* Use this to determine the HW stepping of the chip so we know
2592 * what errata to workaround 2586 * what errata to workaround
2593 */ 2587 */
2594 pci_read_config_byte(pdev, PCI_REVISION_ID, &rev_id);
2595
2596 pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &scc); 2588 pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &scc);
2597 if (scc == 0) 2589 if (scc == 0)
2598 scc_s = "SCSI"; 2590 scc_s = "SCSI";