1* Mediatek/Ralink RT3883 PCI controller 2 31) Main node 4 5 Required properties: 6 7 - compatible: must be "ralink,rt3883-pci" 8 9 - reg: specifies the physical base address of the controller and 10 the length of the memory mapped region. 11 12 - #address-cells: specifies the number of cells needed to encode an 13 address. The value must be 1. 14 15 - #size-cells: specifies the number of cells used to represent the size 16 of an address. The value must be 1. 17 18 - ranges: specifies the translation between child address space and parent 19 address space 20 21 Optional properties: 22 23 - status: indicates the operational status of the device. 24 Value must be either "disabled" or "okay". 25 262) Child nodes 27 28 The main node must have two child nodes which describes the built-in 29 interrupt controller and the PCI host bridge. 30 31 a) Interrupt controller: 32 33 Required properties: 34 35 - interrupt-controller: identifies the node as an interrupt controller 36 37 - #address-cells: specifies the number of cells needed to encode an 38 address. The value must be 0. As such, 'interrupt-map' nodes do not 39 have to specify a parent unit address. 40 41 - #interrupt-cells: specifies the number of cells needed to encode an 42 interrupt source. The value must be 1. 43 44 - interrupts: specifies the interrupt source of the parent interrupt 45 controller. The format of the interrupt specifier depends on the 46 parent interrupt controller. 47 48 b) PCI host bridge: 49 50 Required properties: 51 52 - #address-cells: specifies the number of cells needed to encode an 53 address. The value must be 0. 54 55 - #size-cells: specifies the number of cells used to represent the size 56 of an address. The value must be 2. 57 58 - #interrupt-cells: specifies the number of cells needed to encode an 59 interrupt source. The value must be 1. 60 61 - device_type: must be "pci" 62 63 - bus-range: PCI bus numbers covered 64 65 - ranges: specifies the ranges for the PCI memory and I/O regions 66 67 - interrupt-map-mask, 68 - interrupt-map: standard PCI properties to define the mapping of the 69 PCI interface to interrupt numbers. 70 71 The PCI host bridge node might have additional sub-nodes representing 72 the onboard PCI devices/PCI slots. Each such sub-node must have the 73 following mandatory properties: 74 75 - reg: used only for interrupt mapping, so only the first four bytes 76 are used to refer to the correct bus number and device number. 77 78 - device_type: must be "pci" 79 80 If a given sub-node represents a PCI bridge it must have following 81 mandatory properties as well: 82 83 - #address-cells: must be set to <3> 84 85 - #size-cells: must set to <2> 86 87 - #interrupt-cells: must be set to <1> 88 89 - interrupt-map-mask, 90 - interrupt-map: standard PCI properties to define the mapping of the 91 PCI interface to interrupt numbers. 92 93 Besides the required properties the sub-nodes may have these optional 94 properties: 95 96 - status: indicates the operational status of the sub-node. 97 Value must be either "disabled" or "okay". 98 993) Example: 100 101 a) SoC specific dtsi file: 102 103 pci@10140000 { 104 compatible = "ralink,rt3883-pci"; 105 reg = <0x10140000 0x20000>; 106 #address-cells = <1>; 107 #size-cells = <1>; 108 ranges; /* direct mapping */ 109 110 status = "disabled"; 111 112 pciintc: interrupt-controller { 113 interrupt-controller; 114 #address-cells = <0>; 115 #interrupt-cells = <1>; 116 117 interrupt-parent = <&cpuintc>; 118 interrupts = <4>; 119 }; 120 121 host-bridge { 122 #address-cells = <3>; 123 #size-cells = <2>; 124 #interrupt-cells = <1>; 125 126 device_type = "pci"; 127 128 bus-range = <0 255>; 129 ranges = < 130 0x02000000 0 0x00000000 0x20000000 0 0x10000000 /* pci memory */ 131 0x01000000 0 0x00000000 0x10160000 0 0x00010000 /* io space */ 132 >; 133 134 interrupt-map-mask = <0xf800 0 0 7>; 135 interrupt-map = < 136 /* IDSEL 17 */ 137 0x8800 0 0 1 &pciintc 18 138 0x8800 0 0 2 &pciintc 18 139 0x8800 0 0 3 &pciintc 18 140 0x8800 0 0 4 &pciintc 18 141 /* IDSEL 18 */ 142 0x9000 0 0 1 &pciintc 19 143 0x9000 0 0 2 &pciintc 19 144 0x9000 0 0 3 &pciintc 19 145 0x9000 0 0 4 &pciintc 19 146 >; 147 148 pci-bridge@1 { 149 reg = <0x0800 0 0 0 0>; 150 device_type = "pci"; 151 #interrupt-cells = <1>; 152 #address-cells = <3>; 153 #size-cells = <2>; 154 155 interrupt-map-mask = <0x0 0 0 0>; 156 interrupt-map = <0x0 0 0 0 &pciintc 20>; 157 158 status = "disabled"; 159 }; 160 161 pci-slot@17 { 162 reg = <0x8800 0 0 0 0>; 163 device_type = "pci"; 164 165 status = "disabled"; 166 }; 167 168 pci-slot@18 { 169 reg = <0x9000 0 0 0 0>; 170 device_type = "pci"; 171 172 status = "disabled"; 173 }; 174 }; 175 }; 176 177 b) Board specific dts file: 178 179 pci@10140000 { 180 status = "okay"; 181 182 host-bridge { 183 pci-bridge@1 { 184 status = "okay"; 185 }; 186 }; 187 }; 188