[PATCH 00/14] Rewrite Tegra PCIe driver

Murali Karicheri m-karicheri2 at ti.com
Thu Mar 7 05:16:57 EST 2013


Hi Thierry,

I am working to add a PCIE driver on a ARM platform and I want to use DT 
to specify the device configuration. I see that your patch set is doing 
similar thing for Tegra. Would you mind if I take a peak at your code 
base? Do you have your code posted to an external git repo?

Thanks.

Murali

On 1/9/2013 3:43 PM, Thierry Reding wrote:
> This patch series contains an almost complete rewrite of the Tegra PCIe
> driver. The code is moved to the drivers/pci/host directory and turned
> into a proper platform driver, adding MSI and DT support while at it.
> Other PCI host controller drivers can be added to that directory in an
> attempt to make it easier to factor out common code.
>
> Patches 1 to 4 add generic OF helpers to parse a PCI node's ranges
> property as well as obtain the bus, device and function numbers from a
> node's reg property.
>
> Patch 5 provides an implementation of a cache for I/O mappings. This can
> be used in situations where a large physical memory region needs to be
> ioremap()'ed. On Tegra, the PCIe standard and extended configuration
> spaces can be accessed through a 256 MiB window. Mapping that in one
> chunk is wasteful and may not always work because the vmalloc area may
> not be large enough. The implementation in this patch uses an LRU based
> approach to map a limited amount of pages on an as-needed basis.
>
> Patches 6 and 7 prepare the ARM PCI code to enable PCI host controller
> drivers to load after the init stage, which can happen due to deferred
> probing, and to allow private data to be passed for each controller.
>
> Patches 8 and 9 move some of the Tegra specific code around to allow it
> to be used from outside the arch/arm/mach-tegra directory.
>
> Patch 10 moves the Tegra PCIe controller driver to the drivers/pci/host
> directory and turns it into a proper platform driver. It also adds MSI
> (based on patches by NVIDIA) and DT support.
>
> Patches 11 to 14 add device tree based probing for the TEC, Harmony and
> TrimSlice boards.
>
> Thierry
>
> Andrew Murray (1):
>    of/pci: Provide support for parsing PCI DT ranges property
>
> Thierry Reding (13):
>    of/pci: Add of_pci_get_devfn() function
>    of/pci: Add of_pci_get_bus() function
>    of/pci: Add of_pci_parse_bus_range() function
>    lib: Add I/O map cache implementation
>    ARM: pci: Keep pci_common_init() around after init
>    ARM: pci: Allow passing per-controller private data
>    ARM: tegra: Move tegra_pcie_xclk_clamp() to PMC
>    ARM: tegra: Move pmc.h to include/mach
>    PCI: tegra: Move PCIe driver to drivers/pci/host
>    ARM: tegra: tamonten: Add PCIe support
>    ARM: tegra: tec: Add PCIe support
>    ARM: tegra: harmony: Initialize PCIe from DT
>    ARM: tegra: trimslice: Initialize PCIe from DT
>
>   .../bindings/pci/nvidia,tegra20-pcie.txt           |  115 ++
>   arch/arm/Kconfig                                   |    2 +
>   arch/arm/boot/dts/tegra20-harmony.dts              |   20 +-
>   arch/arm/boot/dts/tegra20-tamonten.dtsi            |    2 +-
>   arch/arm/boot/dts/tegra20-tec.dts                  |  198 +++
>   arch/arm/boot/dts/tegra20-trimslice.dts            |   12 +
>   arch/arm/boot/dts/tegra20.dtsi                     |   45 +
>   arch/arm/include/asm/mach/pci.h                    |    1 +
>   arch/arm/kernel/bios32.c                           |    9 +-
>   arch/arm/mach-tegra/Kconfig                        |    5 -
>   arch/arm/mach-tegra/Makefile                       |    3 -
>   arch/arm/mach-tegra/board-dt-tegra20.c             |   24 -
>   arch/arm/mach-tegra/board-harmony-pcie.c           |   84 --
>   arch/arm/mach-tegra/board.h                        |    4 +-
>   arch/arm/mach-tegra/common.c                       |    2 +-
>   arch/arm/mach-tegra/include/mach/pmc.h             |   24 +
>   arch/arm/mach-tegra/iomap.h                        |    3 -
>   arch/arm/mach-tegra/pcie.c                         |  887 -------------
>   arch/arm/mach-tegra/pmc.c                          |   16 +
>   arch/arm/mach-tegra/pmc.h                          |   23 -
>   drivers/of/address.c                               |   63 +
>   drivers/of/of_pci.c                                |   78 +-
>   drivers/pci/Kconfig                                |    2 +
>   drivers/pci/Makefile                               |    3 +
>   drivers/pci/host/Kconfig                           |    8 +
>   drivers/pci/host/Makefile                          |    1 +
>   drivers/pci/host/pci-tegra.c                       | 1322 ++++++++++++++++++++
>   include/linux/io.h                                 |   12 +
>   include/linux/of_address.h                         |    9 +
>   include/linux/of_pci.h                             |    3 +
>   lib/ioremap.c                                      |  266 ++++
>   31 files changed, 2203 insertions(+), 1043 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
>   delete mode 100644 arch/arm/mach-tegra/board-harmony-pcie.c
>   create mode 100644 arch/arm/mach-tegra/include/mach/pmc.h
>   delete mode 100644 arch/arm/mach-tegra/pcie.c
>   delete mode 100644 arch/arm/mach-tegra/pmc.h
>   create mode 100644 drivers/pci/host/Kconfig
>   create mode 100644 drivers/pci/host/Makefile
>   create mode 100644 drivers/pci/host/pci-tegra.c
>



More information about the devicetree-discuss mailing list