1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Device Tree file for Cirrus Logic systems EP93XX SoC 4 */ 5#include <dt-bindings/gpio/gpio.h> 6#include <dt-bindings/leds/common.h> 7#include <dt-bindings/input/input.h> 8#include <dt-bindings/clock/cirrus,ep9301-syscon.h> 9/ { 10 soc: soc { 11 compatible = "simple-bus"; 12 ranges; 13 #address-cells = <1>; 14 #size-cells = <1>; 15 16 syscon: syscon@80930000 { 17 compatible = "cirrus,ep9301-syscon", "syscon"; 18 reg = <0x80930000 0x1000>; 19 20 #clock-cells = <1>; 21 clocks = <&xtali>; 22 23 spi_default_pins: pins-spi { 24 function = "spi"; 25 groups = "ssp"; 26 }; 27 28 ac97_default_pins: pins-ac97 { 29 function = "ac97"; 30 groups = "ac97"; 31 }; 32 33 i2s_on_ssp_pins: pins-i2sonssp { 34 function = "i2s"; 35 groups = "i2s_on_ssp"; 36 }; 37 38 i2s_on_ac97_pins: pins-i2sonac97 { 39 function = "i2s"; 40 groups = "i2s_on_ac97"; 41 }; 42 43 gpio1_default_pins: pins-gpio1 { 44 function = "gpio"; 45 groups = "gpio1agrp"; 46 }; 47 48 pwm1_default_pins: pins-pwm1 { 49 function = "pwm"; 50 groups = "pwm1"; 51 }; 52 53 gpio2_default_pins: pins-gpio2 { 54 function = "gpio"; 55 groups = "gpio2agrp"; 56 }; 57 58 gpio3_default_pins: pins-gpio3 { 59 function = "gpio"; 60 groups = "gpio3agrp"; 61 }; 62 63 keypad_default_pins: pins-keypad { 64 function = "keypad"; 65 groups = "keypadgrp"; 66 }; 67 68 gpio4_default_pins: pins-gpio4 { 69 function = "gpio"; 70 groups = "gpio4agrp"; 71 }; 72 73 gpio6_default_pins: pins-gpio6 { 74 function = "gpio"; 75 groups = "gpio6agrp"; 76 }; 77 78 gpio7_default_pins: pins-gpio7 { 79 function = "gpio"; 80 groups = "gpio7agrp"; 81 }; 82 83 ide_default_pins: pins-ide { 84 function = "pata"; 85 groups = "idegrp"; 86 }; 87 88 lcd_on_dram0_pins: pins-rasteronsdram0 { 89 function = "lcd"; 90 groups = "rasteronsdram0grp"; 91 }; 92 93 lcd_on_dram3_pins: pins-rasteronsdram3 { 94 function = "lcd"; 95 groups = "rasteronsdram3grp"; 96 }; 97 }; 98 99 adc: adc@80900000 { 100 compatible = "cirrus,ep9301-adc"; 101 reg = <0x80900000 0x28>; 102 clocks = <&syscon EP93XX_CLK_ADC>; 103 interrupt-parent = <&vic0>; 104 interrupts = <30>; 105 status = "disabled"; 106 }; 107 108 /* 109 * The EP93XX expansion bus is a set of up to 7 each up to 16MB 110 * windows in the 256MB space from 0x50000000 to 0x5fffffff. 111 * But since we don't require to setup it in any way, we can 112 * represent it as a simple-bus. 113 */ 114 ebi: bus@80080000 { 115 compatible = "simple-bus"; 116 reg = <0x80080000 0x20>; 117 native-endian; 118 #address-cells = <1>; 119 #size-cells = <1>; 120 ranges; 121 }; 122 123 dma0: dma-controller@80000000 { 124 compatible = "cirrus,ep9301-dma-m2p"; 125 reg = <0x80000000 0x0040>, 126 <0x80000040 0x0040>, 127 <0x80000080 0x0040>, 128 <0x800000c0 0x0040>, 129 <0x80000240 0x0040>, 130 <0x80000200 0x0040>, 131 <0x800002c0 0x0040>, 132 <0x80000280 0x0040>, 133 <0x80000340 0x0040>, 134 <0x80000300 0x0040>; 135 clocks = <&syscon EP93XX_CLK_M2P0>, 136 <&syscon EP93XX_CLK_M2P1>, 137 <&syscon EP93XX_CLK_M2P2>, 138 <&syscon EP93XX_CLK_M2P3>, 139 <&syscon EP93XX_CLK_M2P4>, 140 <&syscon EP93XX_CLK_M2P5>, 141 <&syscon EP93XX_CLK_M2P6>, 142 <&syscon EP93XX_CLK_M2P7>, 143 <&syscon EP93XX_CLK_M2P8>, 144 <&syscon EP93XX_CLK_M2P9>; 145 clock-names = "m2p0", "m2p1", 146 "m2p2", "m2p3", 147 "m2p4", "m2p5", 148 "m2p6", "m2p7", 149 "m2p8", "m2p9"; 150 interrupt-parent = <&vic0>; 151 interrupts = <7>, <8>, <9>, <10>, <11>, 152 <12>, <13>, <14>, <15>, <16>; 153 #dma-cells = <2>; 154 }; 155 156 dma1: dma-controller@80000100 { 157 compatible = "cirrus,ep9301-dma-m2m"; 158 reg = <0x80000100 0x0040>, 159 <0x80000140 0x0040>; 160 clocks = <&syscon EP93XX_CLK_M2M0>, 161 <&syscon EP93XX_CLK_M2M1>; 162 clock-names = "m2m0", "m2m1"; 163 interrupt-parent = <&vic0>; 164 interrupts = <17>, <18>; 165 #dma-cells = <2>; 166 }; 167 168 eth0: ethernet@80010000 { 169 compatible = "cirrus,ep9301-eth"; 170 reg = <0x80010000 0x10000>; 171 interrupt-parent = <&vic1>; 172 interrupts = <7>; 173 mdio0: mdio { 174 #address-cells = <1>; 175 #size-cells = <0>; 176 }; 177 }; 178 179 gpio0: gpio@80840000 { 180 compatible = "cirrus,ep9301-gpio"; 181 reg = <0x80840000 0x04>, 182 <0x80840010 0x04>, 183 <0x80840090 0x1c>; 184 reg-names = "data", "dir", "intr"; 185 gpio-controller; 186 #gpio-cells = <2>; 187 interrupt-controller; 188 #interrupt-cells = <2>; 189 interrupt-parent = <&vic1>; 190 interrupts = <27>; 191 }; 192 193 gpio1: gpio@80840004 { 194 compatible = "cirrus,ep9301-gpio"; 195 reg = <0x80840004 0x04>, 196 <0x80840014 0x04>, 197 <0x808400ac 0x1c>; 198 reg-names = "data", "dir", "intr"; 199 gpio-controller; 200 #gpio-cells = <2>; 201 interrupt-controller; 202 #interrupt-cells = <2>; 203 interrupt-parent = <&vic1>; 204 interrupts = <27>; 205 }; 206 207 gpio2: gpio@80840008 { 208 compatible = "cirrus,ep9301-gpio"; 209 reg = <0x80840008 0x04>, 210 <0x80840018 0x04>; 211 reg-names = "data", "dir"; 212 gpio-controller; 213 #gpio-cells = <2>; 214 pinctrl-names = "default"; 215 pinctrl-0 = <&gpio2_default_pins>; 216 }; 217 218 gpio3: gpio@8084000c { 219 compatible = "cirrus,ep9301-gpio"; 220 reg = <0x8084000c 0x04>, 221 <0x8084001c 0x04>; 222 reg-names = "data", "dir"; 223 gpio-controller; 224 #gpio-cells = <2>; 225 pinctrl-names = "default"; 226 pinctrl-0 = <&gpio3_default_pins>; 227 }; 228 229 gpio4: gpio@80840020 { 230 compatible = "cirrus,ep9301-gpio"; 231 reg = <0x80840020 0x04>, 232 <0x80840024 0x04>; 233 reg-names = "data", "dir"; 234 gpio-controller; 235 #gpio-cells = <2>; 236 pinctrl-names = "default"; 237 pinctrl-0 = <&gpio4_default_pins>; 238 }; 239 240 gpio5: gpio@80840030 { 241 compatible = "cirrus,ep9301-gpio"; 242 reg = <0x80840030 0x04>, 243 <0x80840034 0x04>, 244 <0x8084004c 0x1c>; 245 reg-names = "data", "dir", "intr"; 246 gpio-controller; 247 #gpio-cells = <2>; 248 interrupt-controller; 249 #interrupt-cells = <2>; 250 interrupts-extended = <&vic0 19>, <&vic0 20>, 251 <&vic0 21>, <&vic0 22>, 252 <&vic1 15>, <&vic1 16>, 253 <&vic1 17>, <&vic1 18>; 254 }; 255 256 gpio6: gpio@80840038 { 257 compatible = "cirrus,ep9301-gpio"; 258 reg = <0x80840038 0x04>, 259 <0x8084003c 0x04>; 260 reg-names = "data", "dir"; 261 gpio-controller; 262 #gpio-cells = <2>; 263 pinctrl-names = "default"; 264 pinctrl-0 = <&gpio6_default_pins>; 265 }; 266 267 gpio7: gpio@80840040 { 268 compatible = "cirrus,ep9301-gpio"; 269 reg = <0x80840040 0x04>, 270 <0x80840044 0x04>; 271 reg-names = "data", "dir"; 272 gpio-controller; 273 #gpio-cells = <2>; 274 pinctrl-names = "default"; 275 pinctrl-0 = <&gpio7_default_pins>; 276 }; 277 278 i2s: i2s@80820000 { 279 compatible = "cirrus,ep9301-i2s"; 280 reg = <0x80820000 0x100>; 281 #sound-dai-cells = <0>; 282 interrupt-parent = <&vic1>; 283 interrupts = <28>; 284 clocks = <&syscon EP93XX_CLK_I2S_MCLK>, 285 <&syscon EP93XX_CLK_I2S_SCLK>, 286 <&syscon EP93XX_CLK_I2S_LRCLK>; 287 clock-names = "mclk", "sclk", "lrclk"; 288 dmas = <&dma0 0 1>, <&dma0 0 2>; 289 dma-names = "tx", "rx"; 290 status = "disabled"; 291 }; 292 293 ide: ide@800a0000 { 294 compatible = "cirrus,ep9312-pata"; 295 reg = <0x800a0000 0x38>; 296 interrupt-parent = <&vic1>; 297 interrupts = <8>; 298 pinctrl-names = "default"; 299 pinctrl-0 = <&ide_default_pins>; 300 status = "disabled"; 301 }; 302 303 vic0: interrupt-controller@800b0000 { 304 compatible = "arm,pl192-vic"; 305 reg = <0x800b0000 0x1000>; 306 interrupt-controller; 307 #interrupt-cells = <1>; 308 valid-mask = <0x7ffffffc>; 309 valid-wakeup-mask = <0x0>; 310 }; 311 312 vic1: interrupt-controller@800c0000 { 313 compatible = "arm,pl192-vic"; 314 reg = <0x800c0000 0x1000>; 315 interrupt-controller; 316 #interrupt-cells = <1>; 317 valid-mask = <0x1fffffff>; 318 valid-wakeup-mask = <0x0>; 319 }; 320 321 keypad: keypad@800f0000 { 322 compatible = "cirrus,ep9307-keypad"; 323 reg = <0x800f0000 0x0c>; 324 interrupt-parent = <&vic0>; 325 interrupts = <29>; 326 clocks = <&syscon EP93XX_CLK_KEYPAD>; 327 pinctrl-names = "default"; 328 pinctrl-0 = <&keypad_default_pins>; 329 linux,keymap = <KEY_UP>, 330 <KEY_DOWN>, 331 <KEY_VOLUMEDOWN>, 332 <KEY_HOME>, 333 <KEY_RIGHT>, 334 <KEY_LEFT>, 335 <KEY_ENTER>, 336 <KEY_VOLUMEUP>, 337 <KEY_F6>, 338 <KEY_F8>, 339 <KEY_F9>, 340 <KEY_F10>, 341 <KEY_F1>, 342 <KEY_F2>, 343 <KEY_F3>, 344 <KEY_POWER>; 345 }; 346 347 pwm0: pwm@80910000 { 348 compatible = "cirrus,ep9301-pwm"; 349 reg = <0x80910000 0x10>; 350 clocks = <&syscon EP93XX_CLK_PWM>; 351 #pwm-cells = <3>; 352 status = "disabled"; 353 }; 354 355 pwm1: pwm@80910020 { 356 compatible = "cirrus,ep9301-pwm"; 357 reg = <0x80910020 0x10>; 358 clocks = <&syscon EP93XX_CLK_PWM>; 359 #pwm-cells = <3>; 360 pinctrl-names = "default"; 361 pinctrl-0 = <&pwm1_default_pins>; 362 status = "disabled"; 363 }; 364 365 rtc0: rtc@80920000 { 366 compatible = "cirrus,ep9301-rtc"; 367 reg = <0x80920000 0x100>; 368 }; 369 370 spi0: spi@808a0000 { 371 compatible = "cirrus,ep9301-spi"; 372 reg = <0x808a0000 0x18>; 373 #address-cells = <1>; 374 #size-cells = <0>; 375 interrupt-parent = <&vic1>; 376 interrupts = <21>; 377 clocks = <&syscon EP93XX_CLK_SPI>; 378 pinctrl-names = "default"; 379 pinctrl-0 = <&spi_default_pins>; 380 status = "disabled"; 381 }; 382 383 timer: timer@80810000 { 384 compatible = "cirrus,ep9301-timer"; 385 reg = <0x80810000 0x100>; 386 interrupt-parent = <&vic1>; 387 interrupts = <19>; 388 }; 389 390 uart0: serial@808c0000 { 391 compatible = "arm,pl011", "arm,primecell"; 392 reg = <0x808c0000 0x1000>; 393 arm,primecell-periphid = <0x00041010>; 394 clocks = <&syscon EP93XX_CLK_UART1>, <&syscon EP93XX_CLK_UART>; 395 clock-names = "uartclk", "apb_pclk"; 396 interrupt-parent = <&vic1>; 397 interrupts = <20>; 398 status = "disabled"; 399 }; 400 401 uart1: uart@808d0000 { 402 compatible = "arm,primecell"; 403 reg = <0x808d0000 0x1000>; 404 arm,primecell-periphid = <0x00041010>; 405 clocks = <&syscon EP93XX_CLK_UART2>, <&syscon EP93XX_CLK_UART>; 406 clock-names = "apb:uart2", "apb_pclk"; 407 interrupt-parent = <&vic1>; 408 interrupts = <22>; 409 status = "disabled"; 410 }; 411 412 uart2: uart@808b0000 { 413 compatible = "arm,primecell"; 414 reg = <0x808b0000 0x1000>; 415 arm,primecell-periphid = <0x00041010>; 416 clocks = <&syscon EP93XX_CLK_UART3>, <&syscon EP93XX_CLK_UART>; 417 clock-names = "apb:uart3", "apb_pclk"; 418 interrupt-parent = <&vic1>; 419 interrupts = <23>; 420 status = "disabled"; 421 }; 422 423 usb0: usb@80020000 { 424 compatible = "generic-ohci"; 425 reg = <0x80020000 0x10000>; 426 interrupt-parent = <&vic1>; 427 interrupts = <24>; 428 clocks = <&syscon EP93XX_CLK_USB>; 429 status = "disabled"; 430 }; 431 432 watchdog0: watchdog@80940000 { 433 compatible = "cirrus,ep9301-wdt"; 434 reg = <0x80940000 0x08>; 435 }; 436 }; 437 438 xtali: oscillator { 439 compatible = "fixed-clock"; 440 #clock-cells = <0>; 441 clock-frequency = <14745600>; 442 clock-output-names = "xtali"; 443 }; 444}; 445