Re: [PATCH 00/14] Rewrite Tegra PCIe driver

From: Bjorn Helgaas
Date: Mon Jan 28 2013 - 13:15:41 EST


On Wed, Jan 9, 2013 at 1:43 PM, Thierry Reding
<thierry.reding@xxxxxxxxxxxxxxxxx> 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

Hi Thierry,

Since the bulk of this series affects ARM, I'm assuming this will be
merged via the ARM tree or at least some non-PCI route. It looks like
[10/14] is the only one that touches drivers/pci, and since it's only
adding new stuff (the rewrite of the Tegra PCIe driver, if I
understand correctly), that's fine with me.

There have been enough comments that I assume you'll be posting an
updated series soon. I'll watch for it and review and ack the
drivers/pci parts. Let me know if you want me to do anything else.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/