• Oza Pawandeep's avatar
    PCI: iproc: Add 500ms delay during device shutdown · b91c26c6
    Oza Pawandeep authored
    During soft reset (e.g., "reboot" from Linux) on some iProc-based SOCs, the
    LCPLL clock and PERST both go off simultaneously.  This seems in accordance
    with the PCIe Card Electromechanical spec, r2.0, sec 2.2.3, which says the
    clock goes inactive after PERST# goes active, but doesn't specify how long
    the clock should be valid after PERST#.
    
    However, we have observed that with the iProc Stingray, some Intel NVMe
    endpoints, e.g., the P3700 400GB series, are not detected correctly upon
    the next boot sequence unless the clock remains valid for some time after
    PERST# is asserted.
    
    Delay 500ms after asserting PERST# before performing a reboot.  The 500ms
    is experimentally determined.
    Signed-off-by: default avatarOza Pawandeep <oza.oza@broadcom.com>
    [bhelgaas: changelog, add spec reference, fold in iproc_pcie_shutdown()
    export from Arnd Bergmann <arnd@arndb.de>]
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarRay Jui <ray.jui@broadcom.com>
    Reviewed-by: default avatarScott Branden <scott.branden@broadcom.com>
    b91c26c6
pcie-iproc-platform.c 3.91 KB