diff options
Diffstat (limited to 'drivers/ata')
| -rw-r--r-- | drivers/ata/ahci.c | 3 | ||||
| -rw-r--r-- | drivers/ata/ahci_platform.c | 4 | ||||
| -rw-r--r-- | drivers/ata/libata-eh.c | 12 | ||||
| -rw-r--r-- | drivers/ata/libata-pmp.c | 7 | ||||
| -rw-r--r-- | drivers/ata/libata-scsi.c | 4 | ||||
| -rw-r--r-- | drivers/ata/pata_of_platform.c | 2 | ||||
| -rw-r--r-- | drivers/ata/sata_sis.c | 2 |
7 files changed, 24 insertions, 10 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index fb7b90b0592..cf26222a93c 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
| @@ -390,6 +390,9 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
| 390 | /* Promise */ | 390 | /* Promise */ |
| 391 | { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ | 391 | { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ |
| 392 | 392 | ||
| 393 | /* Asmedia */ | ||
| 394 | { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */ | ||
| 395 | |||
| 393 | /* Generic, PCI class code for AHCI */ | 396 | /* Generic, PCI class code for AHCI */ |
| 394 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 397 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, |
| 395 | PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci }, | 398 | PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci }, |
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c index 004f2ce3dc7..ec555951176 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c | |||
| @@ -65,7 +65,7 @@ static struct scsi_host_template ahci_platform_sht = { | |||
| 65 | static int __init ahci_probe(struct platform_device *pdev) | 65 | static int __init ahci_probe(struct platform_device *pdev) |
| 66 | { | 66 | { |
| 67 | struct device *dev = &pdev->dev; | 67 | struct device *dev = &pdev->dev; |
| 68 | struct ahci_platform_data *pdata = dev->platform_data; | 68 | struct ahci_platform_data *pdata = dev_get_platdata(dev); |
| 69 | const struct platform_device_id *id = platform_get_device_id(pdev); | 69 | const struct platform_device_id *id = platform_get_device_id(pdev); |
| 70 | struct ata_port_info pi = ahci_port_info[id->driver_data]; | 70 | struct ata_port_info pi = ahci_port_info[id->driver_data]; |
| 71 | const struct ata_port_info *ppi[] = { &pi, NULL }; | 71 | const struct ata_port_info *ppi[] = { &pi, NULL }; |
| @@ -191,7 +191,7 @@ err0: | |||
| 191 | static int __devexit ahci_remove(struct platform_device *pdev) | 191 | static int __devexit ahci_remove(struct platform_device *pdev) |
| 192 | { | 192 | { |
| 193 | struct device *dev = &pdev->dev; | 193 | struct device *dev = &pdev->dev; |
| 194 | struct ahci_platform_data *pdata = dev->platform_data; | 194 | struct ahci_platform_data *pdata = dev_get_platdata(dev); |
| 195 | struct ata_host *host = dev_get_drvdata(dev); | 195 | struct ata_host *host = dev_get_drvdata(dev); |
| 196 | 196 | ||
| 197 | ata_host_detach(host); | 197 | ata_host_detach(host); |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index f22957c2769..a9b28203800 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
| @@ -2883,7 +2883,7 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
| 2883 | sata_scr_read(link, SCR_STATUS, &sstatus)) | 2883 | sata_scr_read(link, SCR_STATUS, &sstatus)) |
| 2884 | rc = -ERESTART; | 2884 | rc = -ERESTART; |
| 2885 | 2885 | ||
| 2886 | if (rc == -ERESTART || try >= max_tries) { | 2886 | if (try >= max_tries) { |
| 2887 | /* | 2887 | /* |
| 2888 | * Thaw host port even if reset failed, so that the port | 2888 | * Thaw host port even if reset failed, so that the port |
| 2889 | * can be retried on the next phy event. This risks | 2889 | * can be retried on the next phy event. This risks |
| @@ -2909,6 +2909,16 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
| 2909 | ata_eh_acquire(ap); | 2909 | ata_eh_acquire(ap); |
| 2910 | } | 2910 | } |
| 2911 | 2911 | ||
| 2912 | /* | ||
| 2913 | * While disks spinup behind PMP, some controllers fail sending SRST. | ||
| 2914 | * They need to be reset - as well as the PMP - before retrying. | ||
| 2915 | */ | ||
| 2916 | if (rc == -ERESTART) { | ||
| 2917 | if (ata_is_host_link(link)) | ||
| 2918 | ata_eh_thaw_port(ap); | ||
| 2919 | goto out; | ||
| 2920 | } | ||
| 2921 | |||
| 2912 | if (try == max_tries - 1) { | 2922 | if (try == max_tries - 1) { |
| 2913 | sata_down_spd_limit(link, 0); | 2923 | sata_down_spd_limit(link, 0); |
| 2914 | if (slave) | 2924 | if (slave) |
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c index 104462dbc52..21b80c555c6 100644 --- a/drivers/ata/libata-pmp.c +++ b/drivers/ata/libata-pmp.c | |||
| @@ -389,12 +389,9 @@ static void sata_pmp_quirks(struct ata_port *ap) | |||
| 389 | /* link reports offline after LPM */ | 389 | /* link reports offline after LPM */ |
| 390 | link->flags |= ATA_LFLAG_NO_LPM; | 390 | link->flags |= ATA_LFLAG_NO_LPM; |
| 391 | 391 | ||
| 392 | /* Class code report is unreliable and SRST | 392 | /* Class code report is unreliable. */ |
| 393 | * times out under certain configurations. | ||
| 394 | */ | ||
| 395 | if (link->pmp < 5) | 393 | if (link->pmp < 5) |
| 396 | link->flags |= ATA_LFLAG_NO_SRST | | 394 | link->flags |= ATA_LFLAG_ASSUME_ATA; |
| 397 | ATA_LFLAG_ASSUME_ATA; | ||
| 398 | 395 | ||
| 399 | /* port 5 is for SEMB device and it doesn't like SRST */ | 396 | /* port 5 is for SEMB device and it doesn't like SRST */ |
| 400 | if (link->pmp == 5) | 397 | if (link->pmp == 5) |
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 72a9770ac42..2a5412e7e9c 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
| @@ -1217,6 +1217,10 @@ void ata_scsi_slave_destroy(struct scsi_device *sdev) | |||
| 1217 | 1217 | ||
| 1218 | /** | 1218 | /** |
| 1219 | * __ata_change_queue_depth - helper for ata_scsi_change_queue_depth | 1219 | * __ata_change_queue_depth - helper for ata_scsi_change_queue_depth |
| 1220 | * @ap: ATA port to which the device change the queue depth | ||
| 1221 | * @sdev: SCSI device to configure queue depth for | ||
| 1222 | * @queue_depth: new queue depth | ||
| 1223 | * @reason: calling context | ||
| 1220 | * | 1224 | * |
| 1221 | * libsas and libata have different approaches for associating a sdev to | 1225 | * libsas and libata have different approaches for associating a sdev to |
| 1222 | * its ata_port. | 1226 | * its ata_port. |
diff --git a/drivers/ata/pata_of_platform.c b/drivers/ata/pata_of_platform.c index a72ab0dde4e..2a472c5bb7d 100644 --- a/drivers/ata/pata_of_platform.c +++ b/drivers/ata/pata_of_platform.c | |||
| @@ -52,7 +52,7 @@ static int __devinit pata_of_platform_probe(struct platform_device *ofdev) | |||
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | ret = of_irq_to_resource(dn, 0, &irq_res); | 54 | ret = of_irq_to_resource(dn, 0, &irq_res); |
| 55 | if (ret == NO_IRQ) | 55 | if (!ret) |
| 56 | irq_res.start = irq_res.end = 0; | 56 | irq_res.start = irq_res.end = 0; |
| 57 | else | 57 | else |
| 58 | irq_res.flags = 0; | 58 | irq_res.flags = 0; |
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c index 447d9c05fb5..95ec435f0eb 100644 --- a/drivers/ata/sata_sis.c +++ b/drivers/ata/sata_sis.c | |||
| @@ -104,7 +104,7 @@ static const struct ata_port_info sis_port_info = { | |||
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | MODULE_AUTHOR("Uwe Koziolek"); | 106 | MODULE_AUTHOR("Uwe Koziolek"); |
| 107 | MODULE_DESCRIPTION("low-level driver for Silicon Integratad Systems SATA controller"); | 107 | MODULE_DESCRIPTION("low-level driver for Silicon Integrated Systems SATA controller"); |
| 108 | MODULE_LICENSE("GPL"); | 108 | MODULE_LICENSE("GPL"); |
| 109 | MODULE_DEVICE_TABLE(pci, sis_pci_tbl); | 109 | MODULE_DEVICE_TABLE(pci, sis_pci_tbl); |
| 110 | MODULE_VERSION(DRV_VERSION); | 110 | MODULE_VERSION(DRV_VERSION); |
