1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree for the ARM Integrator/AP platform 4 * with the IM-PD1 example logical module mounted. 5 */ 6 7#include "integratorap.dts" 8 9/ { 10 model = "ARM Integrator/AP with IM-PD1"; 11 compatible = "arm,integrator-ap"; 12 13 reserved-memory { 14 #address-cells = <1>; 15 #size-cells = <1>; 16 ranges; 17 18 impd1_ram: vram@c2000000 { 19 /* 1 MB of designated video RAM on the IM-PD1 */ 20 compatible = "shared-dma-pool"; 21 reg = <0xc2000000 0x00100000>; 22 no-map; 23 }; 24 }; 25}; 26 27&lm0 { 28 syscon@0 { 29 compatible = "arm,im-pd1-syscon", "syscon"; 30 reg = <0x00000000 0x1000>; 31 ranges; 32 #address-cells = <1>; 33 #size-cells = <1>; 34 35 vco1: clock-controller@0 { 36 compatible = "arm,impd1-vco1"; 37 reg = <0x00 0x04>; 38 #clock-cells = <0>; 39 lock-offset = <0x08>; 40 vco-offset = <0x00>; 41 clocks = <&sysclk>; 42 clock-output-names = "IM-PD1-VCO1"; 43 }; 44 45 vco2: clock-controller@4 { 46 compatible = "arm,impd1-vco2"; 47 reg = <0x04 0x04>; 48 #clock-cells = <0>; 49 lock-offset = <0x08>; 50 vco-offset = <0x04>; 51 clocks = <&sysclk>; 52 clock-output-names = "IM-PD1-VCO2"; 53 }; 54 }; 55 56 /* Also used for the Smart Card Interface SCI */ 57 impd1_uartclk: clock@1_4 { 58 compatible = "fixed-factor-clock"; 59 #clock-cells = <0>; 60 clock-div = <4>; 61 clock-mult = <1>; 62 clocks = <&vco2>; 63 clock-output-names = "VCO2_DIV4"; 64 }; 65 66 /* For the SSP the clock is divided by 64 */ 67 impd1_sspclk: clock@1_64 { 68 compatible = "fixed-factor-clock"; 69 #clock-cells = <0>; 70 clock-div = <64>; 71 clock-mult = <1>; 72 clocks = <&vco2>; 73 clock-output-names = "VCO2_DIV64"; 74 }; 75 76 /* Fixed regulator for the MMC */ 77 impd1_3v3: regulator { 78 compatible = "regulator-fixed"; 79 regulator-name = "3V3"; 80 regulator-min-microvolt = <3300000>; 81 regulator-max-microvolt = <3300000>; 82 regulator-always-on; 83 }; 84 85 /* Push buttons on the IM-PD1 */ 86 gpio_keys { 87 compatible = "gpio-keys"; 88 #address-cells = <1>; 89 #size-cells = <0>; 90 91 button@0 { 92 debounce-interval = <50>; 93 linux,code = <KEY_UP>; 94 label = "UP"; 95 gpios = <&impd1_gpio1 0 GPIO_ACTIVE_HIGH>; 96 }; 97 button@1 { 98 debounce-interval = <50>; 99 linux,code = <KEY_DOWN>; 100 label = "DOWN"; 101 gpios = <&impd1_gpio1 1 GPIO_ACTIVE_HIGH>; 102 }; 103 button@2 { 104 debounce-interval = <50>; 105 linux,code = <KEY_LEFT>; 106 label = "LEFT"; 107 gpios = <&impd1_gpio1 2 GPIO_ACTIVE_HIGH>; 108 }; 109 button@3 { 110 debounce-interval = <50>; 111 linux,code = <KEY_RIGHT>; 112 label = "UP"; 113 gpios = <&impd1_gpio1 3 GPIO_ACTIVE_HIGH>; 114 }; 115 button@4 { 116 debounce-interval = <50>; 117 linux,code = <KEY_ESC>; 118 label = "ESC"; 119 gpios = <&impd1_gpio1 4 GPIO_ACTIVE_HIGH>; 120 }; 121 button@5 { 122 debounce-interval = <50>; 123 linux,code = <KEY_ENTER>; 124 label = "ENTER"; 125 gpios = <&impd1_gpio1 5 GPIO_ACTIVE_HIGH>; 126 }; 127 }; 128 129 130 bridge { 131 compatible = "ti,ths8134b", "ti,ths8134"; 132 #address-cells = <1>; 133 #size-cells = <0>; 134 135 ports { 136 #address-cells = <1>; 137 #size-cells = <0>; 138 port@0 { 139 reg = <0>; 140 vga_bridge_in: endpoint { 141 remote-endpoint = <&clcd_pads_vga_dac>; 142 }; 143 }; 144 145 port@1 { 146 reg = <1>; 147 148 vga_bridge_out: endpoint { 149 remote-endpoint = <&vga_con_in>; 150 }; 151 }; 152 }; 153 }; 154 155 vga { 156 compatible = "vga-connector"; 157 158 port { 159 vga_con_in: endpoint { 160 remote-endpoint = <&vga_bridge_out>; 161 }; 162 }; 163 }; 164 165 uart@100000 { 166 compatible = "arm,pl011", "arm,primecell"; 167 reg = <0x00100000 0x1000>; 168 interrupts-extended = <&impd1_vic 1>; 169 clocks = <&impd1_uartclk>, <&sysclk>; 170 clock-names = "uartclk", "apb_pclk"; 171 }; 172 173 uart@200000 { 174 compatible = "arm,pl011", "arm,primecell"; 175 reg = <0x00200000 0x1000>; 176 interrupts-extended = <&impd1_vic 2>; 177 clocks = <&impd1_uartclk>, <&sysclk>; 178 clock-names = "uartclk", "apb_pclk"; 179 }; 180 181 ssp@300000 { 182 compatible = "arm,pl022", "arm,primecell"; 183 reg = <0x00300000 0x1000>; 184 interrupts-extended = <&impd1_vic 3>; 185 clocks = <&impd1_sspclk>, <&sysclk>; 186 clock-names = "spiclk", "apb_pclk"; 187 }; 188 189 impd1_gpio0: gpio@400000 { 190 compatible = "arm,pl061", "arm,primecell"; 191 reg = <0x00400000 0x1000>; 192 gpio-controller; 193 #gpio-cells = <2>; 194 interrupt-controller; 195 #interrupt-cells = <2>; 196 interrupts-extended = <&impd1_vic 4>; 197 clocks = <&sysclk>; 198 clock-names = "apb_pclk"; 199 }; 200 201 impd1_gpio1: gpio@500000 { 202 compatible = "arm,pl061", "arm,primecell"; 203 reg = <0x00500000 0x1000>; 204 gpio-controller; 205 #gpio-cells = <2>; 206 interrupt-controller; 207 #interrupt-cells = <2>; 208 interrupts-extended = <&impd1_vic 5>; 209 clocks = <&sysclk>; 210 clock-names = "apb_pclk"; 211 }; 212 213 rtc@600000 { 214 compatible = "arm,pl030", "arm,primecell"; 215 reg = <0x00600000 0x1000>; 216 interrupts-extended = <&impd1_vic 6>; 217 clocks = <&sysclk>; 218 clock-names = "apb_pclk"; 219 }; 220 221 mmc@700000 { 222 compatible = "arm,pl181", "arm,primecell"; 223 reg = <0x00700000 0x1000>; 224 interrupts-extended = <&impd1_vic 7>, 225 <&impd1_vic 8>; 226 clocks = <&sysclk>, <&sysclk>; 227 clock-names = "mclk", "apb_pclk"; 228 bus-width = <1>; 229 max-frequency = <515633>; 230 vmmc-supply = <&impd1_3v3>; 231 wp-gpios = <&impd1_gpio0 3 GPIO_ACTIVE_HIGH>; 232 cd-gpios = <&impd1_gpio0 4 GPIO_ACTIVE_LOW>; 233 }; 234 235 aaci@800000 { 236 compatible = "arm,pl041", "arm,primecell"; 237 reg = <0x00800000 0x1000>; 238 interrupts-extended = <&impd1_vic 9>; 239 clocks = <&sysclk>; 240 clock-names = "apb_pclk"; 241 }; 242 243 display@1000000 { 244 compatible = "arm,pl110", "arm,primecell"; 245 reg = <0x01000000 0x1000>; 246 interrupts-extended = <&impd1_vic 11>; 247 clocks = <&vco1>, <&sysclk>; 248 clock-names = "clcdclk", "apb_pclk"; 249 /* 640x480 16bpp @ 25.175MHz is 36827428 bytes/s */ 250 max-memory-bandwidth = <40000000>; 251 memory-region = <&impd1_ram>; 252 253 port@0 { 254 #address-cells = <1>; 255 #size-cells = <0>; 256 257 clcd_pads_vga_dac: endpoint@0 { 258 reg = <0>; 259 remote-endpoint = <&vga_bridge_in>; 260 arm,pl11x,tft-r0g0b0-pads = <0 8 16>; 261 }; 262 }; 263 }; 264 265 impd1_vic: interrupt-controller@3000000 { 266 compatible = "arm,pl192-vic"; 267 interrupt-controller; 268 #interrupt-cells = <1>; 269 reg = <0x03000000 0x1000>; 270 /* Valid interrupts, 0-9 and 11 */ 271 valid-mask = <0x00000bff>; 272 /* LM site 0 has IRQ 9 on the PIC */ 273 interrupts-extended = <&pic 9>; 274 }; 275}; 276