• Kishon Vijay Abraham I's avatar
    PCI: cadence: Use "dma-ranges" instead of "cdns,no-bar-match-nbits" property · 5d3d063a
    Kishon Vijay Abraham I authored
    Cadence PCIe core driver (host mode) uses "cdns,no-bar-match-nbits"
    property to configure the number of bits passed through from PCIe
    address to internal address in Inbound Address Translation register.
    This only used the NO MATCH BAR.
    
    However standard PCI dt-binding already defines "dma-ranges" to
    describe the address ranges accessible by PCIe controller. Add support
    in Cadence PCIe host driver to parse dma-ranges and configure the
    inbound regions for BAR0, BAR1 and NO MATCH BAR. Cadence IP specifies
    maximum size for BAR0 as 256GB, maximum size for BAR1 as 2 GB.
    
    This adds support to take the next biggest region in "dma-ranges" and
    find the smallest BAR that each of the regions fit in and if there is
    no BAR big enough to hold the region, split the region to see if it can
    be fitted using multiple BARs.
    
    "dma-ranges" of J721E will be
    dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
    Since there is no BAR which can hold 2^48 size, NO_MATCH_BAR will be
    used here.
    
    Legacy device tree binding compatibility is maintained by retaining
    support for "cdns,no-bar-match-nbits".
    
    Link: https://lore.kernel.org/r/20200722110317.4744-2-kishon@ti.comSigned-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: default avatarRob Herring <robh@kernel.org>
    5d3d063a
pcie-cadence.h 14.5 KB