diff options
author | Evan Wang <xswang@marvell.com> | 2018-04-13 12:32:31 +0800 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2018-04-26 11:25:15 -0700 |
commit | daa2e3bdbb0b3e691cf20a042350817310cb8cb5 (patch) | |
tree | a5fe675e574d50f1fae48ac7df725861d872e484 /drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c | |
parent | fa89f53bd7288d6aa7a982841119e7123faf5a53 (diff) |
ata: ahci: mvebu: override ahci_stop_engine for mvebu AHCI
There is an issue(Errata Ref#226) that the SATA can not be
detected via SATA Port-MultiPlayer(PMP) with following
error log:
ata1.15: PMP product ID mismatch
ata1.15: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
ata1.15: Port Multiplier vendor mismatch '0x1b4b'!='0x0'
ata1.15: PMP revalidation failed (errno=-19)
After debugging, the reason is found that the value Port-x
FIS-based Switching Control(PxFBS@0x40) become wrong.
According to design, the bits[11:8, 0] of register PxFBS
are cleared when Port Command and Status (0x18) bit[0]
changes its value from 1 to 0, i.e. falling edge of Port
Command and Status bit[0] sends PULSE that resets PxFBS
bits[11:8; 0].
So it needs a mvebu SATA WA to save the port PxFBS register
before PxCMD ST write and restore it afterwards.
This patch implements the WA in a separate function of
ahci_mvebu_stop_engine to override ahci_stop_gngine.
Signed-off-by: Evan Wang <xswang@marvell.com>
Cc: Ofer Heifetz <oferh@marvell.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c')
0 files changed, 0 insertions, 0 deletions