08 Oct, 2013

1 commit


18 Jun, 2013

1 commit

  • This patch adds the compatible string of the exynos5440 sata controller
    compliant with the ahci 1.3 and sata 3.0 specification.

    changes in v2:
    changed the compatible string by adding the actual IP
    owners name instead of the SoC vendor name.

    Signed-off-by: Girish K S
    Signed-off-by: Tejun Heo

    Girish K S
     

04 Jan, 2013

1 commit

  • CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    and __devexit from these drivers.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Cc: Jeff Garzik
    Cc: Viresh Kumar
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

14 Dec, 2012

1 commit


03 Dec, 2012

4 commits

  • Signed-off-by: Brian Norris
    Signed-off-by: Jeff Garzik

    Brian Norris
     
  • AHCI platform devices may provide an exit() routine, via
    ahci_platform_data, that powers off the SATA core. Such a routine should
    be executed from the ata_port_operations host_stop() hook. That way, the
    ATA subsystem can perform any last-minute hardware cleanup (via devres,
    for example), then trigger the power-off at the appropriate time.

    This patch fixes bus errors triggered during module removal or device
    unbinding, seen on an SoC SATA core.

    Signed-off-by: Brian Norris
    Signed-off-by: Jeff Garzik

    Brian Norris
     
  • The ahci_platform driver can now use the module_platform_driver() macro.

    Signed-off-by: Brian Norris
    Signed-off-by: Jeff Garzik

    Brian Norris
     
  • platform_driver_probe() should be used for registering this driver only
    if we want to

    "...remove its run-once probe() infrastructure from memory after the
    driver has bound to the device."

    However, we may want to leave the probe infrastructure in place in order
    to support binding/unbinding a device dynamically. This is useful, for
    instance, as a power management mechanism, where a device can be totally
    powered down when unbound (whereas with runtime power management,
    powering down the SATA core would incur unacceptable loss of
    functionality).

    Thus, convert this driver to use platform_driver_register().

    Signed-off-by: Brian Norris
    Signed-off-by: Jeff Garzik

    Brian Norris
     

16 Nov, 2012

1 commit

  • This will fix warnings like following when CONFIG_PM_SLEEP is not set:

    warning: 'xxx_suspend' defined but not used [-Wunused-function]
    warning: 'xxx_resume' defined but not used [-Wunused-function]

    Because
    SET_SYSTEM_SLEEP_PM_OPS(suspend_fn, resume_fn)

    Only references the callbacks on CONFIG_PM_SLEEP (instead of CONFIG_PM).

    Cc: Viresh Kumar
    Cc: linux-ide@vger.kernel.org
    Signed-off-by: Yuanhan Liu
    Signed-off-by: Fengguang Wu
    Signed-off-by: Jeff Garzik

    Yuanhan Liu
     

13 Sep, 2012

2 commits

  • On many architectures, drivers are supposed to prepare/unprepare &
    enable/disable functional clock of device. This patch adds clock support for
    ahci_platform.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Jeff Garzik

    Viresh Kumar
     
  • Calxeda highbank SATA phy has intermittent problems bringing up a link
    with Gen3 drives. Retrying the phy hard reset can work-around this issue,
    but each reset also disables spread spectrum support. The reset function
    also needs to reprogram the phy to enable spread spectrum support.

    Create a new driver based on ahci_platform to support the Calxeda Highbank
    SATA controller.

    Signed-off-by: Mark Langsdorf
    Signed-off-by: Rob Herring
    Signed-off-by: Jeff Garzik

    Mark Langsdorf
     

26 Jul, 2012

1 commit


04 May, 2012

1 commit


14 Mar, 2012

1 commit


09 Jan, 2012

1 commit


17 Nov, 2011

1 commit

  • The change in commit 904c04feaf13ed "ahci_platform: Add the board_ids..."
    doesn't work for the DT probing case as platform_get_device_id returns
    NULL. Pick the default ahci_port_info in this case.

    Signed-off-by: Rob Herring
    Acked-by: Anton Vorontsov
    Cc: Richard Zhu
    Cc: linux-ide@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Jeff Garzik

    Rob Herring
     

09 Nov, 2011

1 commit


04 Nov, 2011

1 commit


08 Oct, 2011

1 commit


22 Oct, 2010

2 commits

  • The current LPM implementation has the following issues.

    * Operation order isn't well thought-out. e.g. HIPM should be
    configured after IPM in SControl is properly configured. Not the
    other way around.

    * Suspend/resume paths call ata_lpm_enable/disable() which must only
    be called from EH context directly. Also, ata_lpm_enable/disable()
    were called whether LPM was in use or not.

    * Implementation is per-port when it should be per-link. As a result,
    it can't be used for controllers with slave links or PMP.

    * LPM state isn't managed consistently. After a link reset for
    whatever reason including suspend/resume the actual LPM state would
    be reset leaving ap->lpm_policy inconsistent.

    * Generic/driver-specific logic boundary isn't clear. Currently,
    libahci has to mangle stuff which libata EH proper should be
    handling. This makes the implementation unnecessarily complex and
    fragile.

    * Tied to ALPM. Doesn't consider DIPM only cases and doesn't check
    whether the device allows HIPM.

    * Error handling isn't implemented.

    Given the extent of mismatch with the rest of libata, I don't think
    trying to fix it piecewise makes much sense. This patch reimplements
    LPM support.

    * The new implementation is per-link. The target policy is still
    port-wide (ap->target_lpm_policy) but all the mechanisms and states
    are per-link and integrate well with the rest of link abstraction
    and can work with slave and PMP links.

    * Core EH has proper control of LPM state. LPM state is reconfigured
    when and only when reconfiguration is necessary. It makes sure that
    LPM state is reset when probing for new device on the link.
    Controller agnostic logic is now implemented in libata EH proper and
    driver implementation only has to deal with controller specifics.

    * Proper error handling. LPM config failure is attributed to the
    device on the link and LPM is disabled for the link if it fails
    repeatedly.

    * ops->enable/disable_pm() are replaced with single ops->set_lpm()
    which takes @policy and @hints. This simplifies driver specific
    implementation.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Link power management related symbols are in confusing state w/ mixed
    usages of lpm, ipm and pm. This patch cleans up lpm related symbols
    and sysfs show/store functions as follows.

    * lpm states - NOT_AVAILABLE, MIN_POWER, MAX_PERFORMANCE and
    MEDIUM_POWER are renamed to ATA_LPM_UNKNOWN and
    ATA_LPM_{MIN|MAX|MED}_POWER.

    * Pre/postfixes are unified to lpm.

    * sysfs show/store functions for link_power_management_policy were
    curiously named get/put and unnecessarily complex. Renamed to
    show/store and simplified.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

29 Sep, 2010

1 commit

  • libata depends on scsi_host_template for module reference counting and
    sht's should be owned by each low level driver. During libahci split,
    the sht was left with libahci.ko leaving the actual low level drivers
    not reference counted. This made ahci and ahci_platform always
    unloadable even while they're being actively used.

    Fix it by defining AHCI_SHT() macro in ahci.h and defining a sht for
    each low level ahci driver.

    stable: only applicable to 2.6.35.

    Signed-off-by: Tejun Heo
    Reported-by: Pedro Francisco
    Tested-by: Michael Tokarev
    Cc: stable@kernel.org
    Signed-off-by: Jeff Garzik

    Tejun Heo
     

02 Aug, 2010

2 commits

  • The driver is using platform_driver_probe() during initialization,
    so ahci_driver.probe hook is never used.

    But it causes the following (harmless, luckily) section mismatch:

    WARNING: vmlinux.o(.data+0x2fb20): Section mismatch in reference
    from the variable ahci_driver to the function .init.text:ahci_probe()

    This patch removes the ahci_driver.probe assignment, thus fixes
    the warning.

    p.s. Note that there's another patch[1] from Rene Bolldorf that
    tried to solve the same issue by __refdata annotation. __refdata
    says that this reference is actually OK, but in fact it is not OK,
    because dereferencing .probe() will cause problems. So the proper
    fix is to remove the assignment.

    [1] http://kerneltrap.org/mailarchive/linux-kernel/2010/3/18/4549547

    Signed-off-by: Anton Vorontsov
    Signed-off-by: Jeff Garzik

    Anton Vorontsov
     
  • Some AHCI implementations may use Vendor Specific HBA[A0h, FFh]
    and/or Port[70h, 7Fh] registers to 'prepare' for initialization.
    For that, the platform needs memory mapped address of AHCI registers.

    This patch adds the 'mmio' argument and reorders the call to
    platform init function.

    Signed-off-by: Jassi Brar
    Signed-off-by: Jeff Garzik

    Jassi Brar
     

15 May, 2010

3 commits