aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/pci
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 15:03:49 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-10-09 15:03:49 -0400
commit80213c03c4151d900cf293ef0fc51f8d88495e14 (patch)
treeaf2422fa255aed96c23cef894e0adbf817f30c45 /Documentation/devicetree/bindings/pci
parentea584595fc85e65796335033dfca25ed655cd0ed (diff)
parentf92d9ee3ab39841d1f29f2d1aa96ff7c74b36ee1 (diff)
Merge tag 'pci-v3.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas: "The interesting things here are: - Turn on Config Request Retry Status Software Visibility. This caused hangs last time, but we included a fix this time. - Rework PCI device configuration to use _HPP/_HPX more aggressively - Allow PCI devices to be put into D3cold during system suspend - Add arm64 PCI support - Add APM X-Gene host bridge driver - Add TI Keystone host bridge driver - Add Xilinx AXI host bridge driver More detailed summary: Enumeration - Check Vendor ID only for Config Request Retry Status (Rajat Jain) - Enable Config Request Retry Status when supported (Rajat Jain) - Add generic domain handling (Catalin Marinas) - Generate uppercase hex for modalias interface class (Ricardo Ribalda Delgado) Resource management - Add missing MEM_64 mask in pci_assign_unassigned_bridge_resources() (Yinghai Lu) - Increase IBM ipr SAS Crocodile BARs to at least system page size (Douglas Lehr) PCI device hotplug - Prevent NULL dereference during pciehp probe (Andreas Noever) - Move _HPP & _HPX handling into core (Bjorn Helgaas) - Apply _HPP to PCIe devices as well as PCI (Bjorn Helgaas) - Apply _HPP/_HPX to display devices (Bjorn Helgaas) - Preserve SERR & PARITY settings when applying _HPP/_HPX (Bjorn Helgaas) - Preserve MPS and MRRS settings when applying _HPP/_HPX (Bjorn Helgaas) - Apply _HPP/_HPX to all devices, not just hot-added ones (Bjorn Helgaas) - Fix wait time in pciehp timeout message (Yinghai Lu) - Add more pciehp Slot Control debug output (Yinghai Lu) - Stop disabling pciehp notifications during init (Yinghai Lu) MSI - Remove arch_msi_check_device() (Alexander Gordeev) - Rename pci_msi_check_device() to pci_msi_supported() (Alexander Gordeev) - Move D0 check into pci_msi_check_device() (Alexander Gordeev) - Remove unused kobject from struct msi_desc (Yijing Wang) - Remove "pos" from the struct msi_desc msi_attrib (Yijing Wang) - Add "msi_bus" sysfs MSI/MSI-X control for endpoints (Yijing Wang) - Use __get_cached_msi_msg() instead of get_cached_msi_msg() (Yijing Wang) - Use __read_msi_msg() instead of read_msi_msg() (Yijing Wang) - Use __write_msi_msg() instead of write_msi_msg() (Yijing Wang) Power management - Drop unused runtime PM support code for PCIe ports (Rafael J. Wysocki) - Allow PCI devices to be put into D3cold during system suspend (Rafael J. Wysocki) AER - Add additional AER error strings (Gong Chen) - Make <linux/aer.h> standalone includable (Thierry Reding) Virtualization - Add ACS quirk for Solarflare SFC9120 & SFC9140 (Alex Williamson) - Add ACS quirk for Intel 10G NICs (Alex Williamson) - Add ACS quirk for AMD A88X southbridge (Marti Raudsepp) - Remove unused pci_find_upstream_pcie_bridge(), pci_get_dma_source() (Alex Williamson) - Add device flag helpers (Ethan Zhao) - Assume all Mellanox devices have broken INTx masking (Gavin Shan) Generic host bridge driver - Fix ioport_map() for !CONFIG_GENERIC_IOMAP (Liviu Dudau) - Add pci_register_io_range() and pci_pio_to_address() (Liviu Dudau) - Define PCI_IOBASE as the base of virtual PCI IO space (Liviu Dudau) - Fix the conversion of IO ranges into IO resources (Liviu Dudau) - Add pci_get_new_domain_nr() and of_get_pci_domain_nr() (Liviu Dudau) - Add support for parsing PCI host bridge resources from DT (Liviu Dudau) - Add pci_remap_iospace() to map bus I/O resources (Liviu Dudau) - Add arm64 architectural support for PCI (Liviu Dudau) APM X-Gene - Add APM X-Gene PCIe driver (Tanmay Inamdar) - Add arm64 DT APM X-Gene PCIe device tree nodes (Tanmay Inamdar) Freescale i.MX6 - Probe in module_init(), not fs_initcall() (Lucas Stach) - Delay enabling reference clock for SS until it stabilizes (Tim Harvey) Marvell MVEBU - Fix uninitialized variable in mvebu_get_tgt_attr() (Thomas Petazzoni) NVIDIA Tegra - Make sure the PCIe PLL is really reset (Eric Yuen) - Add error path tegra_msi_teardown_irq() cleanup (Jisheng Zhang) - Fix extended configuration space mapping (Peter Daifuku) - Implement resource hierarchy (Thierry Reding) - Clear CLKREQ# enable on port disable (Thierry Reding) - Add Tegra124 support (Thierry Reding) ST Microelectronics SPEAr13xx - Pass config resource through reg property (Pratyush Anand) Synopsys DesignWare - Use NULL instead of false (Fabio Estevam) - Parse bus-range property from devicetree (Lucas Stach) - Use pci_create_root_bus() instead of pci_scan_root_bus() (Lucas Stach) - Remove pci_assign_unassigned_resources() (Lucas Stach) - Check private_data validity in single place (Lucas Stach) - Setup and clear exactly one MSI at a time (Lucas Stach) - Remove open-coded bitmap operations (Lucas Stach) - Fix configuration base address when using 'reg' (Minghuan Lian) - Fix IO resource end address calculation (Minghuan Lian) - Rename get_msi_data() to get_msi_addr() (Minghuan Lian) - Add get_msi_data() to pcie_host_ops (Minghuan Lian) - Add support for v3.65 hardware (Murali Karicheri) - Fold struct pcie_port_info into struct pcie_port (Pratyush Anand) TI Keystone - Add TI Keystone PCIe driver (Murali Karicheri) - Limit MRSS for all downstream devices (Murali Karicheri) - Assume controller is already in RC mode (Murali Karicheri) - Set device ID based on SoC to support multiple ports (Murali Karicheri) Xilinx AXI - Add Xilinx AXI PCIe driver (Srikanth Thokala) - Fix xilinx_pcie_assign_msi() return value test (Dan Carpenter) Miscellaneous - Clean up whitespace (Quentin Lambert) - Remove assignments from "if" conditions (Quentin Lambert) - Move PCI_VENDOR_ID_VMWARE to pci_ids.h (Francesco Ruggeri) - x86: Mark DMI tables as initialization data (Mathias Krause) - x86: Move __init annotation to the correct place (Mathias Krause) - x86: Mark constants of pci_mmcfg_nvidia_mcp55() as __initconst (Mathias Krause) - x86: Constify pci_mmcfg_probes[] array (Mathias Krause) - x86: Mark PCI BIOS initialization code as such (Mathias Krause) - Parenthesize PCI_DEVID and PCI_VPD_LRDT_ID parameters (Megan Kamiya) - Remove unnecessary variable in pci_add_dynid() (Tobias Klauser)" * tag 'pci-v3.18-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (109 commits) arm64: dts: Add APM X-Gene PCIe device tree nodes PCI: Add ACS quirk for AMD A88X southbridge devices PCI: xgene: Add APM X-Gene PCIe driver PCI: designware: Remove open-coded bitmap operations PCI/MSI: Remove unnecessary temporary variable PCI/MSI: Use __write_msi_msg() instead of write_msi_msg() MSI/powerpc: Use __read_msi_msg() instead of read_msi_msg() PCI/MSI: Use __get_cached_msi_msg() instead of get_cached_msi_msg() PCI/MSI: Add "msi_bus" sysfs MSI/MSI-X control for endpoints PCI/MSI: Remove "pos" from the struct msi_desc msi_attrib PCI/MSI: Remove unused kobject from struct msi_desc PCI/MSI: Rename pci_msi_check_device() to pci_msi_supported() PCI/MSI: Move D0 check into pci_msi_check_device() PCI/MSI: Remove arch_msi_check_device() irqchip: armada-370-xp: Remove arch_msi_check_device() PCI/MSI/PPC: Remove arch_msi_check_device() arm64: Add architectural support for PCI PCI: Add pci_remap_iospace() to map bus I/O resources of/pci: Add support for parsing PCI host bridge resources from DT of/pci: Add pci_get_new_domain_nr() and of_get_pci_domain_nr() ... Conflicts: arch/arm64/boot/dts/apm-storm.dtsi
Diffstat (limited to 'Documentation/devicetree/bindings/pci')
-rw-r--r--Documentation/devicetree/bindings/pci/designware-pcie.txt3
-rw-r--r--Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt25
-rw-r--r--Documentation/devicetree/bindings/pci/pci-keystone.txt63
-rw-r--r--Documentation/devicetree/bindings/pci/xgene-pci.txt57
-rw-r--r--Documentation/devicetree/bindings/pci/xilinx-pcie.txt62
5 files changed, 209 insertions, 1 deletions
diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt
index ed0d9b9fff2b..9f4faa8e8d00 100644
--- a/Documentation/devicetree/bindings/pci/designware-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt
@@ -23,3 +23,6 @@ Required properties:
23 23
24Optional properties: 24Optional properties:
25- reset-gpio: gpio pin number of power good signal 25- reset-gpio: gpio pin number of power good signal
26- bus-range: PCI bus numbers covered (it is recommended for new devicetrees to
27 specify this property, to keep backwards compatibility a range of 0x00-0xff
28 is assumed if not present)
diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
index 0823362548dc..d763e047c6ae 100644
--- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
+++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
@@ -1,7 +1,10 @@
1NVIDIA Tegra PCIe controller 1NVIDIA Tegra PCIe controller
2 2
3Required properties: 3Required properties:
4- compatible: "nvidia,tegra20-pcie" or "nvidia,tegra30-pcie" 4- compatible: Must be one of:
5 - "nvidia,tegra20-pcie"
6 - "nvidia,tegra30-pcie"
7 - "nvidia,tegra124-pcie"
5- device_type: Must be "pci" 8- device_type: Must be "pci"
6- reg: A list of physical base address and length for each set of controller 9- 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 property. 10 registers. Must contain an entry for each entry in the reg-names property.
@@ -57,6 +60,11 @@ Required properties:
57 - afi 60 - afi
58 - pcie_x 61 - pcie_x
59 62
63Required properties on Tegra124 and later:
64- phys: Must contain an entry for each entry in phy-names.
65- phy-names: Must include the following entries:
66 - pcie
67
60Power supplies for Tegra20: 68Power supplies for Tegra20:
61- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 69- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
62- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 70- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
@@ -84,6 +92,21 @@ Power supplies for Tegra30:
84 - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 92 - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
85 - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 93 - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
86 94
95Power supplies for Tegra124:
96- Required:
97 - avddio-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
98 - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
99 - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must
100 supply 1.05 V.
101 - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks.
102 Must supply 3.3 V.
103 - hvdd-pex-pll-e-supply: High-voltage supply for PLLE (shared with USB3).
104 Must supply 3.3 V.
105 - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must
106 supply 2.8-3.3 V.
107 - avdd-pll-erefe-supply: Power supply for PLLE (shared with USB3). Must
108 supply 1.05 V.
109
87Root ports are defined as subnodes of the PCIe controller node. 110Root ports are defined as subnodes of the PCIe controller node.
88 111
89Required properties: 112Required properties:
diff --git a/Documentation/devicetree/bindings/pci/pci-keystone.txt b/Documentation/devicetree/bindings/pci/pci-keystone.txt
new file mode 100644
index 000000000000..54eae2938174
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/pci-keystone.txt
@@ -0,0 +1,63 @@
1TI Keystone PCIe interface
2
3Keystone PCI host Controller is based on Designware PCI h/w version 3.65.
4It shares common functions with PCIe Designware core driver and inherit
5common properties defined in
6Documentation/devicetree/bindings/pci/designware-pci.txt
7
8Please refer to Documentation/devicetree/bindings/pci/designware-pci.txt
9for the details of Designware DT bindings. Additional properties are
10described here as well as properties that are not applicable.
11
12Required Properties:-
13
14compatibility: "ti,keystone-pcie"
15reg: index 1 is the base address and length of DW application registers.
16 index 2 is the base address and length of PCI device ID register.
17
18pcie_msi_intc : Interrupt controller device node for MSI IRQ chip
19 interrupt-cells: should be set to 1
20 interrupt-parent: Parent interrupt controller phandle
21 interrupts: GIC interrupt lines connected to PCI MSI interrupt lines
22
23 Example:
24 pcie_msi_intc: msi-interrupt-controller {
25 interrupt-controller;
26 #interrupt-cells = <1>;
27 interrupt-parent = <&gic>;
28 interrupts = <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>,
29 <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>,
30 <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>,
31 <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>,
32 <GIC_SPI 34 IRQ_TYPE_EDGE_RISING>,
33 <GIC_SPI 35 IRQ_TYPE_EDGE_RISING>,
34 <GIC_SPI 36 IRQ_TYPE_EDGE_RISING>,
35 <GIC_SPI 37 IRQ_TYPE_EDGE_RISING>;
36 };
37
38pcie_intc: Interrupt controller device node for Legacy IRQ chip
39 interrupt-cells: should be set to 1
40 interrupt-parent: Parent interrupt controller phandle
41 interrupts: GIC interrupt lines connected to PCI Legacy interrupt lines
42
43 Example:
44 pcie_intc: legacy-interrupt-controller {
45 interrupt-controller;
46 #interrupt-cells = <1>;
47 interrupt-parent = <&gic>;
48 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>,
49 <GIC_SPI 27 IRQ_TYPE_EDGE_RISING>,
50 <GIC_SPI 28 IRQ_TYPE_EDGE_RISING>,
51 <GIC_SPI 29 IRQ_TYPE_EDGE_RISING>;
52 };
53
54Optional properties:-
55 phys: phandle to Generic Keystone SerDes phy for PCI
56 phy-names: name of the Generic Keystine SerDes phy for PCI
57 - If boot loader already does PCI link establishment, then phys and
58 phy-names shouldn't be present.
59
60Designware DT Properties not applicable for Keystone PCI
61
621. pcie_bus clock-names not used. Instead, a phandle to phys is used.
63
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/Documentation/devicetree/bindings/pci/xilinx-pcie.txt b/Documentation/devicetree/bindings/pci/xilinx-pcie.txt
new file mode 100644
index 000000000000..3e2c88d97ad4
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/xilinx-pcie.txt
@@ -0,0 +1,62 @@
1* Xilinx AXI PCIe Root Port Bridge DT description
2
3Required properties:
4- #address-cells: Address representation for root ports, set to <3>
5- #size-cells: Size representation for root ports, set to <2>
6- #interrupt-cells: specifies the number of cells needed to encode an
7 interrupt source. The value must be 1.
8- compatible: Should contain "xlnx,axi-pcie-host-1.00.a"
9- reg: Should contain AXI PCIe registers location and length
10- device_type: must be "pci"
11- interrupts: Should contain AXI PCIe interrupt
12- interrupt-map-mask,
13 interrupt-map: standard PCI properties to define the mapping of the
14 PCI interface to interrupt numbers.
15- ranges: ranges for the PCI memory regions (I/O space region is not
16 supported by hardware)
17 Please refer to the standard PCI bus binding document for a more
18 detailed explanation
19
20Optional properties:
21- bus-range: PCI bus numbers covered
22
23Interrupt controller child node
24+++++++++++++++++++++++++++++++
25Required properties:
26- interrupt-controller: identifies the node as an interrupt controller
27- #address-cells: specifies the number of cells needed to encode an
28 address. The value must be 0.
29- #interrupt-cells: specifies the number of cells needed to encode an
30 interrupt source. The value must be 1.
31
32NOTE:
33The core provides a single interrupt for both INTx/MSI messages. So,
34created a interrupt controller node to support 'interrupt-map' DT
35functionality. The driver will create an IRQ domain for this map, decode
36the four INTx interrupts in ISR and route them to this domain.
37
38
39Example:
40++++++++
41
42 pci_express: axi-pcie@50000000 {
43 #address-cells = <3>;
44 #size-cells = <2>;
45 #interrupt-cells = <1>;
46 compatible = "xlnx,axi-pcie-host-1.00.a";
47 reg = < 0x50000000 0x10000000 >;
48 device_type = "pci";
49 interrupts = < 0 52 4 >;
50 interrupt-map-mask = <0 0 0 7>;
51 interrupt-map = <0 0 0 1 &pcie_intc 1>,
52 <0 0 0 2 &pcie_intc 2>,
53 <0 0 0 3 &pcie_intc 3>,
54 <0 0 0 4 &pcie_intc 4>;
55 ranges = < 0x02000000 0 0x60000000 0x60000000 0 0x10000000 >;
56
57 pcie_intc: interrupt-controller {
58 interrupt-controller;
59 #address-cells = <0>;
60 #interrupt-cells = <1>;
61 }
62 };