xref: /openbmc/linux/Documentation/devicetree/bindings/pci/xgene-pci-msi.txt (revision cf40a76e7d5874bb25f4404eecc58a2e033af885)
1dcd19de3SDuc Dang* AppliedMicro X-Gene v1 PCIe MSI controller
2dcd19de3SDuc Dang
3dcd19de3SDuc DangRequired properties:
4dcd19de3SDuc Dang
5dcd19de3SDuc Dang- compatible: should be "apm,xgene1-msi" to identify
6dcd19de3SDuc Dang	      X-Gene v1 PCIe MSI controller block.
7*96291d56SBjorn Helgaas- msi-controller: indicates that this is an X-Gene v1 PCIe MSI controller node
8dcd19de3SDuc Dang- reg: physical base address (0x79000000) and length (0x900000) for controller
9dcd19de3SDuc Dang       registers. These registers include the MSI termination address and data
10dcd19de3SDuc Dang       registers as well as the MSI interrupt status registers.
11dcd19de3SDuc Dang- reg-names: not required
12dcd19de3SDuc Dang- interrupts: A list of 16 interrupt outputs of the controller, starting from
13dcd19de3SDuc Dang	      interrupt number 0x10 to 0x1f.
14dcd19de3SDuc Dang- interrupt-names: not required
15dcd19de3SDuc Dang
16*96291d56SBjorn HelgaasEach PCIe node needs to have property msi-parent that points to an MSI
17*96291d56SBjorn Helgaascontroller node
18dcd19de3SDuc Dang
19dcd19de3SDuc DangExamples:
20dcd19de3SDuc Dang
21dcd19de3SDuc DangSoC DTSI:
22dcd19de3SDuc Dang
23dcd19de3SDuc Dang	+ MSI node:
24dcd19de3SDuc Dang	msi@79000000 {
25dcd19de3SDuc Dang		compatible = "apm,xgene1-msi";
26dcd19de3SDuc Dang		msi-controller;
27dcd19de3SDuc Dang		reg = <0x00 0x79000000 0x0 0x900000>;
28dcd19de3SDuc Dang		interrupts = 	<0x0 0x10 0x4>
29dcd19de3SDuc Dang				<0x0 0x11 0x4>
30dcd19de3SDuc Dang				<0x0 0x12 0x4>
31dcd19de3SDuc Dang				<0x0 0x13 0x4>
32dcd19de3SDuc Dang				<0x0 0x14 0x4>
33dcd19de3SDuc Dang				<0x0 0x15 0x4>
34dcd19de3SDuc Dang				<0x0 0x16 0x4>
35dcd19de3SDuc Dang				<0x0 0x17 0x4>
36dcd19de3SDuc Dang				<0x0 0x18 0x4>
37dcd19de3SDuc Dang				<0x0 0x19 0x4>
38dcd19de3SDuc Dang				<0x0 0x1a 0x4>
39dcd19de3SDuc Dang				<0x0 0x1b 0x4>
40dcd19de3SDuc Dang				<0x0 0x1c 0x4>
41dcd19de3SDuc Dang				<0x0 0x1d 0x4>
42dcd19de3SDuc Dang				<0x0 0x1e 0x4>
43dcd19de3SDuc Dang				<0x0 0x1f 0x4>;
44dcd19de3SDuc Dang	};
45dcd19de3SDuc Dang
46dcd19de3SDuc Dang	+ PCIe controller node with msi-parent property pointing to MSI node:
47dcd19de3SDuc Dang	pcie0: pcie@1f2b0000 {
48dcd19de3SDuc Dang		device_type = "pci";
49dcd19de3SDuc Dang		compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
50dcd19de3SDuc Dang		#interrupt-cells = <1>;
51dcd19de3SDuc Dang		#size-cells = <2>;
52dcd19de3SDuc Dang		#address-cells = <3>;
53dcd19de3SDuc Dang		reg = < 0x00 0x1f2b0000 0x0 0x00010000   /* Controller registers */
54dcd19de3SDuc Dang			0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
55dcd19de3SDuc Dang		reg-names = "csr", "cfg";
56dcd19de3SDuc Dang		ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000   /* io */
57dcd19de3SDuc Dang			  0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
58dcd19de3SDuc Dang		dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
59dcd19de3SDuc Dang			      0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
60dcd19de3SDuc Dang		interrupt-map-mask = <0x0 0x0 0x0 0x7>;
61dcd19de3SDuc Dang		interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
62dcd19de3SDuc Dang				 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
63dcd19de3SDuc Dang				 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
64dcd19de3SDuc Dang				 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
65dcd19de3SDuc Dang		dma-coherent;
66dcd19de3SDuc Dang		clocks = <&pcie0clk 0>;
67dcd19de3SDuc Dang		msi-parent= <&msi>;
68dcd19de3SDuc Dang	};
69