summaryrefslogtreecommitdiffstats
path: root/drivers/ata/ahci_brcmstb.c
Commit message (Collapse)AuthorAgeFilesLines
* drivers: ata: wake port before DMA stop for ALPMDanesh Petigara2016-01-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The AHCI driver code stops and starts port DMA engines at will without considering the power state of the particular port. The AHCI specification isn't very clear on how to handle this scenario, leaving implementation open to interpretation. Broadcom's STB SATA host controller is unable to handle port DMA controller restarts when the port in question is in low power mode. When a port enters partial or slumber mode, its PHY is powered down. When a controller restart is requested, the controller's internal state machine expects the PHY to be brought back up by software which never happens in this case, resulting in failures. To avoid this situation, logic is added to manually wake up the port just before its DMA engine is stopped, if the port happens to be in a low power state. HBA initiated power management ensures that the port eventually returns to its configured low power state, when the link is idle (as per the conditions listed in the spec). A new host flag is also added to ensure this logic is only exercised for hosts with the above limitation. tj: Formatting changes. Signed-off-by: Danesh Petigara <dpetigara@broadcom.com> Reviewed-by: Markus Mayer <mmayer@broadcom.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* libata: skip debounce delay on link resumeDanesh Petigara2016-01-081-0/+1
| | | | | | | | | | | | | | The link resume logic uses a 200msec delay while debouncing the SControl register. The rationale behind that delay is to accommodate some PHYs that behave badly if their SStatus/ SControl registers are pounded immediately on resume. The Broadcom STB SATA PHY does not seem to have this issue. This patch introduces a new link flag that allows platforms to skip the debounce delay if it isn't needed. Signed-off-by: Danesh Petigara <dpetigara@broadcom.com> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* ata: ahci_brcmstb: disable DIPM supportDanesh Petigara2016-01-081-1/+1
| | | | | | | | | | | The Broadcom STB SATA host controller does not support device initiated power management. Disable support for this feature so the driver never sends SETFEATURES commands to the device to enable/disable DIPM. Signed-off-by: Danesh Petigara <dpetigara@broadcom.com> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* ata: ahci_brcmstb: enable support for ALPMDanesh Petigara2016-01-081-0/+35
| | | | | | | | | | | | Enable support for ALPM in the host controller's capabilities register. Also adjust the PLL timeout to give it enough time to lock when the port exits slumber mode. tj: minor style updates Signed-off-by: Danesh Petigara <dpetigara@broadcom.com> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* ata: ahci_brcmstb: add support for MIPS-based platformsJaedon Shin2015-12-311-0/+1
| | | | | | | | | | | | | The BCM7xxx ARM-based and MIPS-based platforms share a similar hardware block for AHCI SATA3. This new compatible string, "brcm,bcm7425-ahci", may be used for most MIPS-based platforms of 40nm process technology. Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com> Tested-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* ata: ahci_brcmstb: remove unused definitionsJaedon Shin2015-11-301-2/+0
| | | | | | | | | Remove unused definitions, and this is to avoid confusion with MIPS-based platforms. Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com> Tested-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com>
* ata: ahci_brcmstb: add a quirk for MIPS-based platformsJaedon Shin2015-11-301-1/+10
| | | | | | | | | | | Whereas ARM-based platforms have four phy interface registers and information, the MIPS-based platforms have only three registers, and there are no information and documentation. In the original BSP, It using "strict-ahci" did not control these registers. Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com> Tested-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com>
* ata: ahci_brcmstb: disable NCQ for MIPS-based platformsJaedon Shin2015-11-301-0/+11
| | | | | | | | | | The most MIPS-based platforms need to disable NCQ while have the NCQ capability in HOST_CAP, and several ARM-based platforms (eg. BCM7349A0, BCM7445A0, BCM7445B0) need to disable too. Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com> Tested-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com>
* ata: ahci_brcmstb: Fix misuse of IS_ENABLEDAxel Lin2015-08-061-2/+2
| | | | | | | | | | | | | While IS_ENABLED() is perfectly fine for CONFIG_* symbols, it is not for other symbols such as __BIG_ENDIAN that is provided directly by the compiler. Switch to use CONFIG_CPU_BIG_ENDIAN instead of __BIG_ENDIAN. Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org> Cc: stable@vger.kernel.org
* ata: ahci_brcmstb: Fix warnings with CONFIG_PM_SLEEP=nFlorian Fainelli2015-07-281-0/+2
| | | | | | | | | | | | | | | | | | | | | When CONFIG_PM_SLEEP is disabled, brcm_ahci_{suspend,resume} are not used, which causes such a build warning to occur: CC drivers/ata/ahci_brcmstb.o drivers/ata/ahci_brcmstb.c:212:12: warning: 'brcm_ahci_suspend' defined but not used [-Wunused-function] static int brcm_ahci_suspend(struct device *dev) ^ drivers/ata/ahci_brcmstb.c:224:12: warning: 'brcm_ahci_resume' defined but not used [-Wunused-function] static int brcm_ahci_resume(struct device *dev) ^ LD drivers/ata/built-in.o Fixes: 766a2d979632 ("ata: add Broadcom AHCI SATA3 driver for STB chips") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
* ata: add Broadcom AHCI SATA3 driver for STB chipsBrian Norris2015-05-241-0/+322
Pretty straightforward driver, using the nice library-ization of the generic ahci_platform driver. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
OpenPOWER on IntegriCloud