Skip to content
  • Evan Wang's avatar
    ata: ahci: mvebu: override ahci_stop_engine for mvebu AHCI · 75b0436b
    Evan Wang authored
    [ Upstream commit daa2e3bd
    
     ]
    
    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: default avatarEvan 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: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarSasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    75b0436b