diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-18 12:32:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-18 12:32:36 -0400 |
| commit | 0894910cce8d9105e5d8457fd8686fe96dc958eb (patch) | |
| tree | a0ff479fa080f8373e9d90d45d96da023b459d14 | |
| parent | b2d597cb6d64d5e30236273249e3790434387743 (diff) | |
| parent | fb0582f91fdd62b67bf54a440d7c79b19ed84da8 (diff) | |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
libata: adjust libata to ignore errors after spinup
ata_piix: add TECRA M7 to broken suspend list
pata_hpt{37x|3x2n}: fix clock reporting (take 2)
pata_hpt37x: actually clock HPT374 with 50 MHz DPLL (take 2)
pata_artop: fix UDMA5 for AEC6280[R] and UDMA6 for AEC6880[R]
ata_piix: update map 10b for ich8m
sata_mv: PCI IDs for Hightpoint RocketRaid 1740/1742
[libata] pata_isapnp: replace missing module device table
| -rw-r--r-- | drivers/ata/ata_piix.c | 9 | ||||
| -rw-r--r-- | drivers/ata/libata-core.c | 2 | ||||
| -rw-r--r-- | drivers/ata/pata_artop.c | 19 | ||||
| -rw-r--r-- | drivers/ata/pata_hpt37x.c | 20 | ||||
| -rw-r--r-- | drivers/ata/pata_hpt3x2n.c | 8 | ||||
| -rw-r--r-- | drivers/ata/pata_isapnp.c | 2 | ||||
| -rw-r--r-- | drivers/ata/sata_mv.c | 3 |
7 files changed, 42 insertions, 21 deletions
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index a78832ea81fa..071d274afaab 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
| @@ -436,7 +436,7 @@ static const struct piix_map_db ich8_map_db = { | |||
| 436 | /* PM PS SM SS MAP */ | 436 | /* PM PS SM SS MAP */ |
| 437 | { P0, P2, P1, P3 }, /* 00b (hardwired when in AHCI) */ | 437 | { P0, P2, P1, P3 }, /* 00b (hardwired when in AHCI) */ |
| 438 | { RV, RV, RV, RV }, | 438 | { RV, RV, RV, RV }, |
| 439 | { IDE, IDE, NA, NA }, /* 10b (IDE mode) */ | 439 | { P0, P2, IDE, IDE }, /* 10b (IDE mode) */ |
| 440 | { RV, RV, RV, RV }, | 440 | { RV, RV, RV, RV }, |
| 441 | }, | 441 | }, |
| 442 | }; | 442 | }; |
| @@ -901,6 +901,13 @@ static int piix_broken_suspend(void) | |||
| 901 | }, | 901 | }, |
| 902 | }, | 902 | }, |
| 903 | { | 903 | { |
| 904 | .ident = "TECRA M7", | ||
| 905 | .matches = { | ||
| 906 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
| 907 | DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M7"), | ||
| 908 | }, | ||
| 909 | }, | ||
| 910 | { | ||
| 904 | .ident = "Satellite U205", | 911 | .ident = "Satellite U205", |
| 905 | .matches = { | 912 | .matches = { |
| 906 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 913 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 60e78bef469f..99d4fbffb0df 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -1723,7 +1723,7 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, | |||
| 1723 | tf.protocol = ATA_PROT_NODATA; | 1723 | tf.protocol = ATA_PROT_NODATA; |
| 1724 | tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; | 1724 | tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; |
| 1725 | err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); | 1725 | err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0); |
| 1726 | if (err_mask) { | 1726 | if (err_mask && id[2] != 0x738c) { |
| 1727 | rc = -EIO; | 1727 | rc = -EIO; |
| 1728 | reason = "SPINUP failed"; | 1728 | reason = "SPINUP failed"; |
| 1729 | goto err_out; | 1729 | goto err_out; |
diff --git a/drivers/ata/pata_artop.c b/drivers/ata/pata_artop.c index ce589d96ca42..b5352ebecef9 100644 --- a/drivers/ata/pata_artop.c +++ b/drivers/ata/pata_artop.c | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | * pata_artop.c - ARTOP ATA controller driver | 2 | * pata_artop.c - ARTOP ATA controller driver |
| 3 | * | 3 | * |
| 4 | * (C) 2006 Red Hat <alan@redhat.com> | 4 | * (C) 2006 Red Hat <alan@redhat.com> |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | ||
| 5 | * | 6 | * |
| 6 | * Based in part on drivers/ide/pci/aec62xx.c | 7 | * Based in part on drivers/ide/pci/aec62xx.c |
| 7 | * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org> | 8 | * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org> |
| @@ -28,7 +29,7 @@ | |||
| 28 | #include <linux/ata.h> | 29 | #include <linux/ata.h> |
| 29 | 30 | ||
| 30 | #define DRV_NAME "pata_artop" | 31 | #define DRV_NAME "pata_artop" |
| 31 | #define DRV_VERSION "0.4.3" | 32 | #define DRV_VERSION "0.4.4" |
| 32 | 33 | ||
| 33 | /* | 34 | /* |
| 34 | * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we | 35 | * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we |
| @@ -430,7 +431,7 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 430 | .udma_mask = ATA_UDMA4, | 431 | .udma_mask = ATA_UDMA4, |
| 431 | .port_ops = &artop6260_ops, | 432 | .port_ops = &artop6260_ops, |
| 432 | }; | 433 | }; |
| 433 | static const struct ata_port_info info_626x_fast = { | 434 | static const struct ata_port_info info_628x = { |
| 434 | .sht = &artop_sht, | 435 | .sht = &artop_sht, |
| 435 | .flags = ATA_FLAG_SLAVE_POSS, | 436 | .flags = ATA_FLAG_SLAVE_POSS, |
| 436 | .pio_mask = 0x1f, /* pio0-4 */ | 437 | .pio_mask = 0x1f, /* pio0-4 */ |
| @@ -438,6 +439,14 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 438 | .udma_mask = ATA_UDMA5, | 439 | .udma_mask = ATA_UDMA5, |
| 439 | .port_ops = &artop6260_ops, | 440 | .port_ops = &artop6260_ops, |
| 440 | }; | 441 | }; |
| 442 | static const struct ata_port_info info_628x_fast = { | ||
| 443 | .sht = &artop_sht, | ||
| 444 | .flags = ATA_FLAG_SLAVE_POSS, | ||
| 445 | .pio_mask = 0x1f, /* pio0-4 */ | ||
| 446 | .mwdma_mask = 0x07, /* mwdma0-2 */ | ||
| 447 | .udma_mask = ATA_UDMA6, | ||
| 448 | .port_ops = &artop6260_ops, | ||
| 449 | }; | ||
| 441 | const struct ata_port_info *ppi[] = { NULL, NULL }; | 450 | const struct ata_port_info *ppi[] = { NULL, NULL }; |
| 442 | 451 | ||
| 443 | if (!printed_version++) | 452 | if (!printed_version++) |
| @@ -455,13 +464,13 @@ static int artop_init_one (struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 455 | } | 464 | } |
| 456 | else if (id->driver_data == 1) /* 6260 */ | 465 | else if (id->driver_data == 1) /* 6260 */ |
| 457 | ppi[0] = &info_626x; | 466 | ppi[0] = &info_626x; |
| 458 | else if (id->driver_data == 2) { /* 6260 or 6260 + fast */ | 467 | else if (id->driver_data == 2) { /* 6280 or 6280 + fast */ |
| 459 | unsigned long io = pci_resource_start(pdev, 4); | 468 | unsigned long io = pci_resource_start(pdev, 4); |
| 460 | u8 reg; | 469 | u8 reg; |
| 461 | 470 | ||
| 462 | ppi[0] = &info_626x; | 471 | ppi[0] = &info_628x; |
| 463 | if (inb(io) & 0x10) | 472 | if (inb(io) & 0x10) |
| 464 | ppi[0] = &info_626x_fast; | 473 | ppi[0] = &info_628x_fast; |
| 465 | /* Mac systems come up with some registers not set as we | 474 | /* Mac systems come up with some registers not set as we |
| 466 | will need them */ | 475 | will need them */ |
| 467 | 476 | ||
diff --git a/drivers/ata/pata_hpt37x.c b/drivers/ata/pata_hpt37x.c index 84d9c5568567..c5ddd937dbf2 100644 --- a/drivers/ata/pata_hpt37x.c +++ b/drivers/ata/pata_hpt37x.c | |||
| @@ -8,12 +8,10 @@ | |||
| 8 | * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> | 8 | * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> |
| 9 | * Portions Copyright (C) 2001 Sun Microsystems, Inc. | 9 | * Portions Copyright (C) 2001 Sun Microsystems, Inc. |
| 10 | * Portions Copyright (C) 2003 Red Hat Inc | 10 | * Portions Copyright (C) 2003 Red Hat Inc |
| 11 | * Portions Copyright (C) 2005-2006 MontaVista Software, Inc. | 11 | * Portions Copyright (C) 2005-2007 MontaVista Software, Inc. |
| 12 | * | 12 | * |
| 13 | * TODO | 13 | * TODO |
| 14 | * PLL mode | 14 | * Look into engine reset on timeout errors. Should not be required. |
| 15 | * Look into engine reset on timeout errors. Should not be | ||
| 16 | * required. | ||
| 17 | */ | 15 | */ |
| 18 | 16 | ||
| 19 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| @@ -26,7 +24,7 @@ | |||
| 26 | #include <linux/libata.h> | 24 | #include <linux/libata.h> |
| 27 | 25 | ||
| 28 | #define DRV_NAME "pata_hpt37x" | 26 | #define DRV_NAME "pata_hpt37x" |
| 29 | #define DRV_VERSION "0.6.7" | 27 | #define DRV_VERSION "0.6.9" |
| 30 | 28 | ||
| 31 | struct hpt_clock { | 29 | struct hpt_clock { |
| 32 | u8 xfer_speed; | 30 | u8 xfer_speed; |
| @@ -1092,9 +1090,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 1092 | int dpll, adjust; | 1090 | int dpll, adjust; |
| 1093 | 1091 | ||
| 1094 | /* Compute DPLL */ | 1092 | /* Compute DPLL */ |
| 1095 | dpll = 2; | 1093 | dpll = (port->udma_mask & 0xC0) ? 3 : 2; |
| 1096 | if (port->udma_mask & 0xE0) | ||
| 1097 | dpll = 3; | ||
| 1098 | 1094 | ||
| 1099 | f_low = (MHz[clock_slot] * 48) / MHz[dpll]; | 1095 | f_low = (MHz[clock_slot] * 48) / MHz[dpll]; |
| 1100 | f_high = f_low + 2; | 1096 | f_high = f_low + 2; |
| @@ -1116,7 +1112,7 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 1116 | pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low | 0x100); | 1112 | pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low | 0x100); |
| 1117 | } | 1113 | } |
| 1118 | if (adjust == 8) { | 1114 | if (adjust == 8) { |
| 1119 | printk(KERN_WARNING "hpt37x: DPLL did not stabilize.\n"); | 1115 | printk(KERN_ERR "pata_hpt37x: DPLL did not stabilize!\n"); |
| 1120 | return -ENODEV; | 1116 | return -ENODEV; |
| 1121 | } | 1117 | } |
| 1122 | if (dpll == 3) | 1118 | if (dpll == 3) |
| @@ -1124,7 +1120,8 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 1124 | else | 1120 | else |
| 1125 | private_data = (void *)hpt37x_timings_50; | 1121 | private_data = (void *)hpt37x_timings_50; |
| 1126 | 1122 | ||
| 1127 | printk(KERN_INFO "hpt37x: Bus clock %dMHz, using DPLL.\n", MHz[dpll]); | 1123 | printk(KERN_INFO "pata_hpt37x: bus clock %dMHz, using %dMHz DPLL.\n", |
| 1124 | MHz[clock_slot], MHz[dpll]); | ||
| 1128 | } else { | 1125 | } else { |
| 1129 | private_data = (void *)chip_table->clocks[clock_slot]; | 1126 | private_data = (void *)chip_table->clocks[clock_slot]; |
| 1130 | /* | 1127 | /* |
| @@ -1137,7 +1134,8 @@ static int hpt37x_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 1137 | port = &info_hpt370_33; | 1134 | port = &info_hpt370_33; |
| 1138 | if (clock_slot < 2 && port == &info_hpt370a) | 1135 | if (clock_slot < 2 && port == &info_hpt370a) |
| 1139 | port = &info_hpt370a_33; | 1136 | port = &info_hpt370a_33; |
| 1140 | printk(KERN_INFO "hpt37x: %s: Bus clock %dMHz.\n", chip_table->name, MHz[clock_slot]); | 1137 | printk(KERN_INFO "pata_hpt37x: %s using %dMHz bus clock.\n", |
| 1138 | chip_table->name, MHz[clock_slot]); | ||
| 1141 | } | 1139 | } |
| 1142 | 1140 | ||
| 1143 | /* Now kick off ATA set up */ | 1141 | /* Now kick off ATA set up */ |
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c index aa29cde09f8b..f8f234bfc8ce 100644 --- a/drivers/ata/pata_hpt3x2n.c +++ b/drivers/ata/pata_hpt3x2n.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> | 8 | * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> |
| 9 | * Portions Copyright (C) 2001 Sun Microsystems, Inc. | 9 | * Portions Copyright (C) 2001 Sun Microsystems, Inc. |
| 10 | * Portions Copyright (C) 2003 Red Hat Inc | 10 | * Portions Copyright (C) 2003 Red Hat Inc |
| 11 | * Portions Copyright (C) 2005-2006 MontaVista Software, Inc. | 11 | * Portions Copyright (C) 2005-2007 MontaVista Software, Inc. |
| 12 | * | 12 | * |
| 13 | * | 13 | * |
| 14 | * TODO | 14 | * TODO |
| @@ -25,7 +25,7 @@ | |||
| 25 | #include <linux/libata.h> | 25 | #include <linux/libata.h> |
| 26 | 26 | ||
| 27 | #define DRV_NAME "pata_hpt3x2n" | 27 | #define DRV_NAME "pata_hpt3x2n" |
| 28 | #define DRV_VERSION "0.3.3" | 28 | #define DRV_VERSION "0.3.4" |
| 29 | 29 | ||
| 30 | enum { | 30 | enum { |
| 31 | HPT_PCI_FAST = (1 << 31), | 31 | HPT_PCI_FAST = (1 << 31), |
| @@ -579,10 +579,12 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
| 579 | pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low); | 579 | pci_write_config_dword(dev, 0x5C, (f_high << 16) | f_low); |
| 580 | } | 580 | } |
| 581 | if (adjust == 8) { | 581 | if (adjust == 8) { |
| 582 | printk(KERN_WARNING "hpt3x2n: DPLL did not stabilize.\n"); | 582 | printk(KERN_ERR "pata_hpt3x2n: DPLL did not stabilize!\n"); |
| 583 | return -ENODEV; | 583 | return -ENODEV; |
| 584 | } | 584 | } |
| 585 | 585 | ||
| 586 | printk(KERN_INFO "pata_hpt37x: bus clock %dMHz, using 66MHz DPLL.\n", | ||
| 587 | pci_mhz); | ||
| 586 | /* Set our private data up. We only need a few flags so we use | 588 | /* Set our private data up. We only need a few flags so we use |
| 587 | it directly */ | 589 | it directly */ |
| 588 | port.private_data = NULL; | 590 | port.private_data = NULL; |
diff --git a/drivers/ata/pata_isapnp.c b/drivers/ata/pata_isapnp.c index 5525518204e6..91a396fa5b20 100644 --- a/drivers/ata/pata_isapnp.c +++ b/drivers/ata/pata_isapnp.c | |||
| @@ -139,6 +139,8 @@ static struct pnp_device_id isapnp_devices[] = { | |||
| 139 | {.id = ""} | 139 | {.id = ""} |
| 140 | }; | 140 | }; |
| 141 | 141 | ||
| 142 | MODULE_DEVICE_TABLE(pnp, isapnp_devices); | ||
| 143 | |||
| 142 | static struct pnp_driver isapnp_driver = { | 144 | static struct pnp_driver isapnp_driver = { |
| 143 | .name = DRV_NAME, | 145 | .name = DRV_NAME, |
| 144 | .id_table = isapnp_devices, | 146 | .id_table = isapnp_devices, |
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index 8ec520885b95..3acf65e75eb2 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
| @@ -621,6 +621,9 @@ static const struct pci_device_id mv_pci_tbl[] = { | |||
| 621 | { PCI_VDEVICE(MARVELL, 0x5041), chip_504x }, | 621 | { PCI_VDEVICE(MARVELL, 0x5041), chip_504x }, |
| 622 | { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 }, | 622 | { PCI_VDEVICE(MARVELL, 0x5080), chip_5080 }, |
| 623 | { PCI_VDEVICE(MARVELL, 0x5081), chip_508x }, | 623 | { PCI_VDEVICE(MARVELL, 0x5081), chip_508x }, |
| 624 | /* RocketRAID 1740/174x have different identifiers */ | ||
| 625 | { PCI_VDEVICE(TTI, 0x1740), chip_508x }, | ||
| 626 | { PCI_VDEVICE(TTI, 0x1742), chip_508x }, | ||
| 624 | 627 | ||
| 625 | { PCI_VDEVICE(MARVELL, 0x6040), chip_604x }, | 628 | { PCI_VDEVICE(MARVELL, 0x6040), chip_604x }, |
| 626 | { PCI_VDEVICE(MARVELL, 0x6041), chip_604x }, | 629 | { PCI_VDEVICE(MARVELL, 0x6041), chip_604x }, |
