• Liviu Dudau's avatar
    of/pci: Add pci_register_io_range() and pci_pio_to_address() · 41f8bba7
    Liviu Dudau authored
    Some architectures do not have a simple view of the PCI I/O space and
    instead use a range of CPU addresses that map to bus addresses.  For some
    architectures these ranges will be expressed by OF bindings in a device
    tree file.
    
    This patch introduces a pci_register_io_range() helper function with a
    generic implementation that can be used by such architectures to keep track
    of the I/O ranges described by the PCI bindings.  If the PCI_IOBASE macro
    is not defined, that signals lack of support for PCI and we return an
    error.
    
    In order to retrieve the CPU address associated with an I/O port, a new
    helper function pci_pio_to_address() is introduced.  This will search in
    the list of ranges registered with pci_register_io_range() and return the
    CPU address that corresponds to the given port.
    
    [arnd: add dummy !CONFIG_OF pci_pio_to_address() to fix build errors]
    Signed-off-by: default avatarLiviu Dudau <Liviu.Dudau@arm.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Acked-by: default avatarRob Herring <robh@kernel.org>
    CC: Grant Likely <grant.likely@linaro.org>
    41f8bba7
address.c 23.1 KB