• Srinath Mannam's avatar
    PCI: iproc: Add CRS check in config read · 73b9e4d3
    Srinath Mannam authored
    The IPROC PCIe host controller implementation returns CFG_RETRY_STATUS
    (0xffff0001) data when it receives a CRS completion, regardless of the
    address of the read or the CRS Software Visibility Enable bit. As a
    workaround the driver retries in software any read that returns
    CFG_RETRY_STATUS even though, for reads of registers that are not Vendor
    ID, the register value can correspond to CFG_RETRY_STATUS; this
    situation would cause a timeout and failure of reading a valid register
    value.
    
    IPROC PCIe host controller PAXB v2 has a register to show config read
    status flags like SC, UR, CRS and CA. Using this status flag,
    an extra check is added to confirm the CRS using status flags before
    reissuing a config read, fixing the issue.
    Signed-off-by: default avatarSrinath Mannam <srinath.mannam@broadcom.com>
    [lorenzo.pieralisi@arm.com: rewrote commit log]
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: default avatarScott Branden <scott.branden@broadcom.com>
    73b9e4d3
pcie-iproc.c 39.4 KB