Commit 87618e0003dbca0f51f1ef52fa4199bd65212f41

Authored by Linus Torvalds

Merge branch 'upstream-linus' of git://github.com/jgarzik/libata-dev

* 'upstream-linus' of git://github.com/jgarzik/libata-dev:
  pata_of_platform: Don't use NO_IRQ
  [libata] ahci: Add ASMedia ASM1061 support
  [libata] Issue SRST to Sil3726 PMP
  sata_sis.c: trivial spelling fix
  ahci_platform: use dev_get_platdata()
  [libata] libata-scsi.c: Add function parameter documentation

Showing 8 changed files Side-by-side Diff

... ... @@ -390,6 +390,9 @@
390 390 /* Promise */
391 391 { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */
392 392  
  393 + /* Asmedia */
  394 + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */
  395 +
393 396 /* Generic, PCI class code for AHCI */
394 397 { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
395 398 PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
drivers/ata/ahci_platform.c
... ... @@ -65,7 +65,7 @@
65 65 static int __init ahci_probe(struct platform_device *pdev)
66 66 {
67 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 69 const struct platform_device_id *id = platform_get_device_id(pdev);
70 70 struct ata_port_info pi = ahci_port_info[id->driver_data];
71 71 const struct ata_port_info *ppi[] = { &pi, NULL };
... ... @@ -191,7 +191,7 @@
191 191 static int __devexit ahci_remove(struct platform_device *pdev)
192 192 {
193 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 195 struct ata_host *host = dev_get_drvdata(dev);
196 196  
197 197 ata_host_detach(host);
drivers/ata/libata-eh.c
... ... @@ -2883,7 +2883,7 @@
2883 2883 sata_scr_read(link, SCR_STATUS, &sstatus))
2884 2884 rc = -ERESTART;
2885 2885  
2886   - if (rc == -ERESTART || try >= max_tries) {
  2886 + if (try >= max_tries) {
2887 2887 /*
2888 2888 * Thaw host port even if reset failed, so that the port
2889 2889 * can be retried on the next phy event. This risks
... ... @@ -2907,6 +2907,16 @@
2907 2907 while (delta)
2908 2908 delta = schedule_timeout_uninterruptible(delta);
2909 2909 ata_eh_acquire(ap);
  2910 + }
  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;
2910 2920 }
2911 2921  
2912 2922 if (try == max_tries - 1) {
drivers/ata/libata-pmp.c
... ... @@ -389,12 +389,9 @@
389 389 /* link reports offline after LPM */
390 390 link->flags |= ATA_LFLAG_NO_LPM;
391 391  
392   - /* Class code report is unreliable and SRST
393   - * times out under certain configurations.
394   - */
  392 + /* Class code report is unreliable. */
395 393 if (link->pmp < 5)
396   - link->flags |= ATA_LFLAG_NO_SRST |
397   - ATA_LFLAG_ASSUME_ATA;
  394 + link->flags |= ATA_LFLAG_ASSUME_ATA;
398 395  
399 396 /* port 5 is for SEMB device and it doesn't like SRST */
400 397 if (link->pmp == 5)
drivers/ata/libata-scsi.c
... ... @@ -1217,6 +1217,10 @@
1217 1217  
1218 1218 /**
1219 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 1225 * libsas and libata have different approaches for associating a sdev to
1222 1226 * its ata_port.
drivers/ata/pata_of_platform.c
... ... @@ -52,7 +52,7 @@
52 52 }
53 53  
54 54 ret = of_irq_to_resource(dn, 0, &irq_res);
55   - if (ret == NO_IRQ)
  55 + if (!ret)
56 56 irq_res.start = irq_res.end = 0;
57 57 else
58 58 irq_res.flags = 0;
drivers/ata/sata_sis.c
... ... @@ -104,7 +104,7 @@
104 104 };
105 105  
106 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 108 MODULE_LICENSE("GPL");
109 109 MODULE_DEVICE_TABLE(pci, sis_pci_tbl);
110 110 MODULE_VERSION(DRV_VERSION);
include/linux/pci_ids.h
... ... @@ -2405,6 +2405,8 @@
2405 2405  
2406 2406 #define PCI_VENDOR_ID_AZWAVE 0x1a3b
2407 2407  
  2408 +#define PCI_VENDOR_ID_ASMEDIA 0x1b21
  2409 +
2408 2410 #define PCI_VENDOR_ID_TEKRAM 0x1de1
2409 2411 #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
2410 2412