From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Thierry Reding To: linux-tegra@vger.kernel.org Cc: Grant Likely , Rob Herring , Russell King , Stephen Warren , Bjorn Helgaas , Andrew Murray , Jason Gunthorpe , Arnd Bergmann , Thomas Petazzoni , devicetree-discuss@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org Subject: [PATCH 00/14] Rewrite Tegra PCIe driver Date: Wed, 9 Jan 2013 21:43:00 +0100 Message-Id: <1357764194-12677-1-git-send-email-thierry.reding@avionic-design.de> Sender: linux-kernel-owner@vger.kernel.org List-ID: 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 -- 1.8.1