1. 01 10月, 2014 5 次提交
    • L
      of/pci: Add support for parsing PCI host bridge resources from DT · cbe4097f
      Liviu Dudau 提交于
      Provide a function to parse the PCI DT ranges that can be used to create a
      pci_host_bridge structure together with its associated bus.
      Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      [make io_base parameter optional]
      Signed-off-by: NRobert Richter <rrichter@cavium.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Arnd Bergmann <arnd@arndb.de>
      CC: Grant Likely <grant.likely@linaro.org>
      CC: Rob Herring <robh+dt@kernel.org>
      CC: Catalin Marinas <catalin.marinas@arm.com>
      cbe4097f
    • L
      of/pci: Add pci_get_new_domain_nr() and of_get_pci_domain_nr() · 41e5c0f8
      Liviu Dudau 提交于
      Add pci_get_new_domain_nr() to allocate a new domain number and
      of_get_pci_domain_nr() to retrieve the PCI domain number of a given device
      from DT.  Host bridge drivers or architecture-specific code can choose to
      implement their PCI domain number policy using these two functions.
      
      Using of_get_pci_domain_nr() guarantees a stable PCI domain number on every
      boot provided that all host bridge controllers are assigned a number in the
      device tree using "linux,pci-domain" property.  Mixing use of
      pci_get_new_domain_nr() and of_get_pci_domain_nr() is not recommended as it
      can lead to potentially conflicting domain numbers being assigned to root
      buses behind different host bridges.
      Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Arnd Bergmann <arnd@arndb.de>
      CC: Grant Likely <grant.likely@linaro.org>
      CC: Rob Herring <robh+dt@kernel.org>
      CC: Catalin Marinas <catalin.marinas@arm.com>
      41e5c0f8
    • C
      PCI: Add generic domain handling · 670ba0c8
      Catalin Marinas 提交于
      The handling of PCI domains (or PCI segments in ACPI speak) is usually a
      straightforward affair but its implementation is currently left to the
      architectural code, with pci_domain_nr(b) querying the value of the domain
      associated with bus b.
      
      This patch introduces CONFIG_PCI_DOMAINS_GENERIC as an option that can be
      selected if an architecture wants a simple implementation where the value
      of the domain associated with a bus is stored in struct pci_bus.
      
      The architectures that select CONFIG_PCI_DOMAINS_GENERIC will then have to
      implement pci_bus_assign_domain_nr() as a way of setting the domain number
      associated with a root bus.  All child buses except the root bus will
      inherit the domain_nr value from their parent.
      Signed-off-by: NCatalin Marinas <Catalin.Marinas@arm.com>
      [Renamed pci_set_domain_nr() to pci_bus_assign_domain_nr()]
      Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Arnd Bergmann <arnd@arndb.de>
      670ba0c8
    • L
      of/pci: Fix the conversion of IO ranges into IO resources · 0b0b0893
      Liviu Dudau 提交于
      The ranges property for a host bridge controller in DT describes the
      mapping between the PCI bus address and the CPU physical address.  The
      resources framework however expects that the IO resources start at a pseudo
      "port" address 0 (zero) and have a maximum size of IO_SPACE_LIMIT.  The
      conversion from PCI ranges to resources failed to take that into account,
      returning a CPU physical address instead of a port number.
      
      Also fix all the drivers that depend on the old behaviour by fetching the
      CPU physical address based on the port number where it is being needed.
      Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      CC: Grant Likely <grant.likely@linaro.org>
      CC: Rob Herring <robh+dt@kernel.org>
      CC: Arnd Bergmann <arnd@arndb.de>
      CC: Thierry Reding <thierry.reding@gmail.com>
      CC: Simon Horman <horms@verge.net.au>
      CC: Catalin Marinas <catalin.marinas@arm.com>
      0b0b0893
    • L
      of/pci: Move of_pci_range_to_resource() to of/address.c · 83bbde1c
      Liviu Dudau 提交于
      We need to enhance of_pci_range_to_resources() enough that it won't make
      sense for it to be inline anymore.  Move it to drivers/of/address.c, under
      #ifdef CONFIG_PCI.
      
      of_address.h previously implemented of_pci_range_to_resources()
      unconditionally, regardless of any config options.  The implementation in
      address.c is defined only when CONFIG_OF_ADDRESS=y and CONFIG_PCI=y,
      so add a dummy version to avoid build errors when CONFIG_OF or
      CONFIG_OF_ADDRESS is not defined.
      
      [bhelgaas: drop extra detail from changelog, move def under CONFIG_PCI,
      add dummy of_pci_range_to_resource() for build errors (from Arnd)]
      Signed-off-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      CC: Grant Likely <grant.likely@linaro.org>
      CC: Rob Herring <robh+dt@kernel.org>
      CC: Arnd Bergmann <arnd@arndb.de>
      CC: Catalin Marinas <catalin.marinas@arm.com>
      83bbde1c
  2. 30 9月, 2014 1 次提交
    • L
      of/pci: Add pci_register_io_range() and pci_pio_to_address() · 41f8bba7
      Liviu Dudau 提交于
      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: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: NCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: NRob Herring <robh@kernel.org>
      CC: Grant Likely <grant.likely@linaro.org>
      41f8bba7
  3. 25 8月, 2014 1 次提交
  4. 23 8月, 2014 5 次提交
  5. 22 8月, 2014 10 次提交
  6. 21 8月, 2014 8 次提交
  7. 20 8月, 2014 5 次提交
  8. 19 8月, 2014 5 次提交