• Srinath Mannam's avatar
    PCI: iproc: Allow outbound configuration for 32-bit I/O region · ea2df11f
    Srinath Mannam authored
    The IProc host controller has I/O memory windows allocated in
    the AXI memory map that can be used to address PCI I/O memory
    space.
    
    Mapping from AXI memory windows to PCI outbound memory windows is
    carried out in the host controller through OARR/OMAP registers pairs
    that permit to define power of two region size AXI<->PCI mappings, the
    smallest of which is 128MB.
    
    Current code enables AXI memory window to PCI outbound memory window
    mapping only for AXI windows matching one of the OARR/OMAP window sizes,
    that are SoC dependent and the smallest of which is 128MB.
    
    Some SoCs implementing the IProc host controller have a 32-bit AXI
    memory window into PCI I/O memory space, eg:
    
        Base address | Size
    -----------------------------
    (1) 0x42000000   | 0x2000000
    (2) 0x400000000  | 0x80000000
    
    but its size (32MB - (1) above) is smaller than the smallest AXI<->PCI
    region size provided by OARR (128MB), so the current driver rejects
    mappings for the 32-bit region making the IProc host controller driver
    unusable on 32-bit systems.
    
    However, there is no reason why the 32-bit I/O memory window cannot be
    enabled by mapping it through an OARR/OMAP region bigger in size (ie
    32-bit AXI window size is 32MB but can be mapped using a 128MB OARR/OMAP
    region).
    
    Allow outbound window configuration of I/O memory windows that
    are smaller in size than the host controller OARR/OMAP region, so
    that the 32-bit AXI memory window can actually be enabled,
    making the IProc host controller operational on 32-bit systems.
    
    Link: https://lore.kernel.org/linux-pci/1551415936-30174-3-git-send-email-srinath.mannam@broadcom.com/Signed-off-by: default avatarSrinath Mannam <srinath.mannam@broadcom.com>
    Signed-off-by: default avatarAbhishek Shah <abhishek.shah@broadcom.com>
    Signed-off-by: default avatarRay Jui <ray.jui@broadcom.com>
    [lorenzo.pieralisi@arm.com: rewrote the commit log]
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: default avatarScott Branden <scott.branden@broadcom.com>
    ea2df11f
pcie-iproc.c 39.9 KB