aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2014-10-06 11:59:15 -0400
committerBjorn Helgaas <bhelgaas@google.com>2014-10-06 11:59:15 -0400
commitf92d9ee3ab39841d1f29f2d1aa96ff7c74b36ee1 (patch)
treec747c9ce1882b9a08d284603717890c5ef81bbf7
parent55dd4175a4bc10d943c159dabef552baaf459a59 (diff)
parent767ebaff4ef7235eb49ddec5d48db97b17c37cf5 (diff)
Merge branch 'pci/host-xgene' into next
* pci/host-xgene: arm64: dts: Add APM X-Gene PCIe device tree nodes PCI: xgene: Add APM X-Gene PCIe driver Conflicts: drivers/pci/host/Kconfig drivers/pci/host/Makefile
-rw-r--r--Documentation/devicetree/bindings/pci/xgene-pci.txt57
-rw-r--r--MAINTAINERS8
-rw-r--r--arch/arm64/boot/dts/apm-mustang.dts8
-rw-r--r--arch/arm64/boot/dts/apm-storm.dtsi165
-rw-r--r--drivers/pci/host/Kconfig11
-rw-r--r--drivers/pci/host/Makefile1
-rw-r--r--drivers/pci/host/pci-xgene.c659
7 files changed, 908 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/pci/xgene-pci.txt b/Documentation/devicetree/bindings/pci/xgene-pci.txt
new file mode 100644
index 000000000000..1070b068c7c6
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/xgene-pci.txt
@@ -0,0 +1,57 @@
1* AppliedMicro X-Gene PCIe interface
2
3Required properties:
4- device_type: set to "pci"
5- compatible: should contain "apm,xgene-pcie" to identify the core.
6- reg: A list of physical base address and length for each set of controller
7 registers. Must contain an entry for each entry in the reg-names
8 property.
9- reg-names: Must include the following entries:
10 "csr": controller configuration registers.
11 "cfg": pcie configuration space registers.
12- #address-cells: set to <3>
13- #size-cells: set to <2>
14- ranges: ranges for the outbound memory, I/O regions.
15- dma-ranges: ranges for the inbound memory regions.
16- #interrupt-cells: set to <1>
17- interrupt-map-mask and interrupt-map: standard PCI properties
18 to define the mapping of the PCIe interface to interrupt
19 numbers.
20- clocks: from common clock binding: handle to pci clock.
21
22Optional properties:
23- status: Either "ok" or "disabled".
24- dma-coherent: Present if dma operations are coherent
25
26Example:
27
28SoC specific DT Entry:
29
30 pcie0: pcie@1f2b0000 {
31 status = "disabled";
32 device_type = "pci";
33 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
34 #interrupt-cells = <1>;
35 #size-cells = <2>;
36 #address-cells = <3>;
37 reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */
38 0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
39 reg-names = "csr", "cfg";
40 ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000 /* io */
41 0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
42 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
43 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
44 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
45 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
46 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
47 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
48 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
49 dma-coherent;
50 clocks = <&pcie0clk 0>;
51 };
52
53
54Board specific DT Entry:
55 &pcie0 {
56 status = "ok";
57 };
diff --git a/MAINTAINERS b/MAINTAINERS
index 07fd7e279700..fac7057ba67c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6868,6 +6868,14 @@ F: include/linux/pci*
6868F: arch/x86/pci/ 6868F: arch/x86/pci/
6869F: arch/x86/kernel/quirks.c 6869F: arch/x86/kernel/quirks.c
6870 6870
6871PCI DRIVER FOR APPLIEDMICRO XGENE
6872M: Tanmay Inamdar <tinamdar@apm.com>
6873L: linux-pci@vger.kernel.org
6874L: linux-arm-kernel@lists.infradead.org
6875S: Maintained
6876F: Documentation/devicetree/bindings/pci/xgene-pci.txt
6877F: drivers/pci/host/pci-xgene.c
6878
6871PCI DRIVER FOR IMX6 6879PCI DRIVER FOR IMX6
6872M: Richard Zhu <r65037@freescale.com> 6880M: Richard Zhu <r65037@freescale.com>
6873M: Lucas Stach <l.stach@pengutronix.de> 6881M: Lucas Stach <l.stach@pengutronix.de>
diff --git a/arch/arm64/boot/dts/apm-mustang.dts b/arch/arm64/boot/dts/apm-mustang.dts
index b2f56229aa5e..f64900052f4e 100644
--- a/arch/arm64/boot/dts/apm-mustang.dts
+++ b/arch/arm64/boot/dts/apm-mustang.dts
@@ -25,6 +25,14 @@
25 }; 25 };
26}; 26};
27 27
28&pcie0clk {
29 status = "ok";
30};
31
32&pcie0 {
33 status = "ok";
34};
35
28&serial0 { 36&serial0 {
29 status = "ok"; 37 status = "ok";
30}; 38};
diff --git a/arch/arm64/boot/dts/apm-storm.dtsi b/arch/arm64/boot/dts/apm-storm.dtsi
index c0aceef7f5b3..403197a0e621 100644
--- a/arch/arm64/boot/dts/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm-storm.dtsi
@@ -269,6 +269,171 @@
269 enable-mask = <0x2>; 269 enable-mask = <0x2>;
270 clock-output-names = "rtcclk"; 270 clock-output-names = "rtcclk";
271 }; 271 };
272
273 pcie0clk: pcie0clk@1f2bc000 {
274 status = "disabled";
275 compatible = "apm,xgene-device-clock";
276 #clock-cells = <1>;
277 clocks = <&socplldiv2 0>;
278 reg = <0x0 0x1f2bc000 0x0 0x1000>;
279 reg-names = "csr-reg";
280 clock-output-names = "pcie0clk";
281 };
282
283 pcie1clk: pcie1clk@1f2cc000 {
284 status = "disabled";
285 compatible = "apm,xgene-device-clock";
286 #clock-cells = <1>;
287 clocks = <&socplldiv2 0>;
288 reg = <0x0 0x1f2cc000 0x0 0x1000>;
289 reg-names = "csr-reg";
290 clock-output-names = "pcie1clk";
291 };
292
293 pcie2clk: pcie2clk@1f2dc000 {
294 status = "disabled";
295 compatible = "apm,xgene-device-clock";
296 #clock-cells = <1>;
297 clocks = <&socplldiv2 0>;
298 reg = <0x0 0x1f2dc000 0x0 0x1000>;
299 reg-names = "csr-reg";
300 clock-output-names = "pcie2clk";
301 };
302
303 pcie3clk: pcie3clk@1f50c000 {
304 status = "disabled";
305 compatible = "apm,xgene-device-clock";
306 #clock-cells = <1>;
307 clocks = <&socplldiv2 0>;
308 reg = <0x0 0x1f50c000 0x0 0x1000>;
309 reg-names = "csr-reg";
310 clock-output-names = "pcie3clk";
311 };
312
313 pcie4clk: pcie4clk@1f51c000 {
314 status = "disabled";
315 compatible = "apm,xgene-device-clock";
316 #clock-cells = <1>;
317 clocks = <&socplldiv2 0>;
318 reg = <0x0 0x1f51c000 0x0 0x1000>;
319 reg-names = "csr-reg";
320 clock-output-names = "pcie4clk";
321 };
322 };
323
324 pcie0: pcie@1f2b0000 {
325 status = "disabled";
326 device_type = "pci";
327 compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
328 #interrupt-cells = <1>;
329 #size-cells = <2>;
330 #address-cells = <3>;
331 reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */
332 0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
333 reg-names = "csr", "cfg";
334 ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000 /* io */
335 0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
336 dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
337 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
338 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
339 interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
340 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1