mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
Merge branch 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
Pull libata updates from Tejun Heo:
"A lot of activities on libata side this time.
- A lot of changes around ahci. Various embedded platforms are
implementing ahci controllers. Some were built atop ahci_platform,
others were doing their own things. Hans made some structural
changes to libahci and librarized ahci_platform so that ahci
platform drivers can share more common code. A couple platform
drivers are added on top of that and several are added to replace
older drivers which were doing their own things (older ones are
scheduled to be removed).
- Dan finishes the patchset to make libata PM operations
asynchronous. Combined with one patch being routed through scsi,
this should speed resume measurably.
- Various fixes and cleanups from Bartlomiej and others"
* 'for-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata: (61 commits)
ata: fix Marvell SATA driver dependencies
ata: fix ARASAN CompactFlash PATA driver dependencies
ata: remove superfluous casts
ata: sata_highbank: remove superfluous cast
ata: fix Calxeda Highbank SATA driver dependencies
ata: fix R-Car SATA driver dependencies
ARM: davinci: da850: update SATA AHCI support
ata: add new-style AHCI platform driver for DaVinci DA850 AHCI controller
ata: move library code from ahci_platform.c to libahci_platform.c
ata: ahci_platform: fix ahci_platform_data->suspend method handling
libata: remove unused ata_sas_port_async_resume() stub
libata.h: add stub for ata_sas_port_resume
libata: async resume
libata, libsas: kill pm_result and related cleanup
ata: Fix compiler warning with APM X-Gene host controller driver
arm64: Add APM X-Gene SoC AHCI SATA host controller DTS entries
ata: Add APM X-Gene SoC AHCI SATA host controller driver
Documentation: Add documentation for the APM X-Gene SoC SATA host controller DTS binding
arm64: Add APM X-Gene SoC 15Gbps Multi-purpose PHY DTS entries
ata: ahci_sunxi: fix code formatting
...
This commit is contained in:
commit
01d5f3b598
92 changed files with 2249 additions and 836 deletions
|
|
@ -700,46 +700,26 @@ void sas_probe_sata(struct asd_sas_port *port)
|
|||
|
||||
}
|
||||
|
||||
static bool sas_ata_flush_pm_eh(struct asd_sas_port *port, const char *func)
|
||||
static void sas_ata_flush_pm_eh(struct asd_sas_port *port, const char *func)
|
||||
{
|
||||
struct domain_device *dev, *n;
|
||||
bool retry = false;
|
||||
|
||||
list_for_each_entry_safe(dev, n, &port->dev_list, dev_list_node) {
|
||||
int rc;
|
||||
|
||||
if (!dev_is_sata(dev))
|
||||
continue;
|
||||
|
||||
sas_ata_wait_eh(dev);
|
||||
rc = dev->sata_dev.pm_result;
|
||||
if (rc == -EAGAIN)
|
||||
retry = true;
|
||||
else if (rc) {
|
||||
/* since we don't have a
|
||||
* ->port_{suspend|resume} routine in our
|
||||
* ata_port ops, and no entanglements with
|
||||
* acpi, suspend should just be mechanical trip
|
||||
* through eh, catch cases where these
|
||||
* assumptions are invalidated
|
||||
*/
|
||||
WARN_ONCE(1, "failed %s %s error: %d\n", func,
|
||||
dev_name(&dev->rphy->dev), rc);
|
||||
}
|
||||
|
||||
/* if libata failed to power manage the device, tear it down */
|
||||
if (ata_dev_disabled(sas_to_ata_dev(dev)))
|
||||
sas_fail_probe(dev, func, -ENODEV);
|
||||
}
|
||||
|
||||
return retry;
|
||||
}
|
||||
|
||||
void sas_suspend_sata(struct asd_sas_port *port)
|
||||
{
|
||||
struct domain_device *dev;
|
||||
|
||||
retry:
|
||||
mutex_lock(&port->ha->disco_mutex);
|
||||
list_for_each_entry(dev, &port->dev_list, dev_list_node) {
|
||||
struct sata_device *sata;
|
||||
|
|
@ -751,20 +731,17 @@ void sas_suspend_sata(struct asd_sas_port *port)
|
|||
if (sata->ap->pm_mesg.event == PM_EVENT_SUSPEND)
|
||||
continue;
|
||||
|
||||
sata->pm_result = -EIO;
|
||||
ata_sas_port_async_suspend(sata->ap, &sata->pm_result);
|
||||
ata_sas_port_suspend(sata->ap);
|
||||
}
|
||||
mutex_unlock(&port->ha->disco_mutex);
|
||||
|
||||
if (sas_ata_flush_pm_eh(port, __func__))
|
||||
goto retry;
|
||||
sas_ata_flush_pm_eh(port, __func__);
|
||||
}
|
||||
|
||||
void sas_resume_sata(struct asd_sas_port *port)
|
||||
{
|
||||
struct domain_device *dev;
|
||||
|
||||
retry:
|
||||
mutex_lock(&port->ha->disco_mutex);
|
||||
list_for_each_entry(dev, &port->dev_list, dev_list_node) {
|
||||
struct sata_device *sata;
|
||||
|
|
@ -776,13 +753,11 @@ void sas_resume_sata(struct asd_sas_port *port)
|
|||
if (sata->ap->pm_mesg.event == PM_EVENT_ON)
|
||||
continue;
|
||||
|
||||
sata->pm_result = -EIO;
|
||||
ata_sas_port_async_resume(sata->ap, &sata->pm_result);
|
||||
ata_sas_port_resume(sata->ap);
|
||||
}
|
||||
mutex_unlock(&port->ha->disco_mutex);
|
||||
|
||||
if (sas_ata_flush_pm_eh(port, __func__))
|
||||
goto retry;
|
||||
sas_ata_flush_pm_eh(port, __func__);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue