Andre Przywara | 4ac36bb | 2023-10-19 15:45:32 +0100 | [diff] [blame] | 1 | // SPDX-License-Identifier: (GPL-2.0+ or MIT) |
| 2 | // Copyright (C) 2021-2022 Samuel Holland <samuel@sholland.org> |
| 3 | |
| 4 | #include <dt-bindings/clock/sun6i-rtc.h> |
| 5 | #include <dt-bindings/clock/sun8i-de2.h> |
| 6 | #include <dt-bindings/clock/sun8i-tcon-top.h> |
| 7 | #include <dt-bindings/clock/sun20i-d1-ccu.h> |
| 8 | #include <dt-bindings/clock/sun20i-d1-r-ccu.h> |
| 9 | #include <dt-bindings/interrupt-controller/irq.h> |
| 10 | #include <dt-bindings/reset/sun8i-de2.h> |
| 11 | #include <dt-bindings/reset/sun20i-d1-ccu.h> |
| 12 | #include <dt-bindings/reset/sun20i-d1-r-ccu.h> |
| 13 | |
| 14 | / { |
| 15 | #address-cells = <1>; |
| 16 | #size-cells = <1>; |
| 17 | |
| 18 | dcxo: dcxo-clk { |
| 19 | compatible = "fixed-clock"; |
| 20 | clock-output-names = "dcxo"; |
| 21 | #clock-cells = <0>; |
| 22 | }; |
| 23 | |
| 24 | de: display-engine { |
| 25 | compatible = "allwinner,sun20i-d1-display-engine"; |
| 26 | allwinner,pipelines = <&mixer0>, <&mixer1>; |
| 27 | status = "disabled"; |
| 28 | }; |
| 29 | |
| 30 | soc { |
| 31 | compatible = "simple-bus"; |
| 32 | ranges; |
| 33 | dma-noncoherent; |
| 34 | #address-cells = <1>; |
| 35 | #size-cells = <1>; |
| 36 | |
| 37 | pio: pinctrl@2000000 { |
| 38 | compatible = "allwinner,sun20i-d1-pinctrl"; |
| 39 | reg = <0x2000000 0x800>; |
| 40 | interrupts = <SOC_PERIPHERAL_IRQ(69) IRQ_TYPE_LEVEL_HIGH>, |
| 41 | <SOC_PERIPHERAL_IRQ(71) IRQ_TYPE_LEVEL_HIGH>, |
| 42 | <SOC_PERIPHERAL_IRQ(73) IRQ_TYPE_LEVEL_HIGH>, |
| 43 | <SOC_PERIPHERAL_IRQ(75) IRQ_TYPE_LEVEL_HIGH>, |
| 44 | <SOC_PERIPHERAL_IRQ(77) IRQ_TYPE_LEVEL_HIGH>, |
| 45 | <SOC_PERIPHERAL_IRQ(79) IRQ_TYPE_LEVEL_HIGH>; |
| 46 | clocks = <&ccu CLK_APB0>, |
| 47 | <&dcxo>, |
| 48 | <&rtc CLK_OSC32K>; |
| 49 | clock-names = "apb", "hosc", "losc"; |
| 50 | gpio-controller; |
| 51 | interrupt-controller; |
| 52 | #gpio-cells = <3>; |
| 53 | #interrupt-cells = <3>; |
| 54 | |
| 55 | /omit-if-no-ref/ |
| 56 | can0_pins: can0-pins { |
| 57 | pins = "PB2", "PB3"; |
| 58 | function = "can0"; |
| 59 | }; |
| 60 | |
| 61 | /omit-if-no-ref/ |
| 62 | can1_pins: can1-pins { |
| 63 | pins = "PB4", "PB5"; |
| 64 | function = "can1"; |
| 65 | }; |
| 66 | |
| 67 | /omit-if-no-ref/ |
| 68 | clk_pg11_pin: clk-pg11-pin { |
| 69 | pins = "PG11"; |
| 70 | function = "clk"; |
| 71 | }; |
| 72 | |
| 73 | /omit-if-no-ref/ |
| 74 | dsi_4lane_pins: dsi-4lane-pins { |
| 75 | pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", |
| 76 | "PD6", "PD7", "PD8", "PD9"; |
| 77 | drive-strength = <30>; |
| 78 | function = "dsi"; |
| 79 | }; |
| 80 | |
| 81 | /omit-if-no-ref/ |
| 82 | lcd_rgb666_pins: lcd-rgb666-pins { |
| 83 | pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", |
| 84 | "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", |
| 85 | "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", |
| 86 | "PD18", "PD19", "PD20", "PD21"; |
| 87 | function = "lcd0"; |
| 88 | }; |
| 89 | |
| 90 | /omit-if-no-ref/ |
| 91 | mmc0_pins: mmc0-pins { |
| 92 | pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; |
| 93 | function = "mmc0"; |
| 94 | }; |
| 95 | |
| 96 | /omit-if-no-ref/ |
| 97 | mmc1_pins: mmc1-pins { |
| 98 | pins = "PG0", "PG1", "PG2", "PG3", "PG4", "PG5"; |
| 99 | function = "mmc1"; |
| 100 | }; |
| 101 | |
| 102 | /omit-if-no-ref/ |
| 103 | mmc2_pins: mmc2-pins { |
| 104 | pins = "PC2", "PC3", "PC4", "PC5", "PC6", "PC7"; |
| 105 | function = "mmc2"; |
| 106 | }; |
| 107 | |
| 108 | /omit-if-no-ref/ |
| 109 | rgmii_pe_pins: rgmii-pe-pins { |
| 110 | pins = "PE0", "PE1", "PE2", "PE3", "PE4", |
| 111 | "PE5", "PE6", "PE7", "PE8", "PE9", |
| 112 | "PE11", "PE12", "PE13", "PE14", "PE15"; |
| 113 | function = "emac"; |
| 114 | }; |
| 115 | |
| 116 | /omit-if-no-ref/ |
| 117 | rmii_pe_pins: rmii-pe-pins { |
| 118 | pins = "PE0", "PE1", "PE2", "PE3", "PE4", |
| 119 | "PE5", "PE6", "PE7", "PE8", "PE9"; |
| 120 | function = "emac"; |
| 121 | }; |
| 122 | |
| 123 | /omit-if-no-ref/ |
| 124 | spi0_pins: spi0-pins { |
| 125 | pins = "PC2", "PC3", "PC4", "PC5"; |
| 126 | function = "spi0"; |
| 127 | }; |
| 128 | |
| 129 | /omit-if-no-ref/ |
| 130 | uart1_pg6_pins: uart1-pg6-pins { |
| 131 | pins = "PG6", "PG7"; |
| 132 | function = "uart1"; |
| 133 | }; |
| 134 | |
| 135 | /omit-if-no-ref/ |
| 136 | uart1_pg8_rts_cts_pins: uart1-pg8-rts-cts-pins { |
| 137 | pins = "PG8", "PG9"; |
| 138 | function = "uart1"; |
| 139 | }; |
| 140 | |
| 141 | /omit-if-no-ref/ |
| 142 | uart3_pb_pins: uart3-pb-pins { |
| 143 | pins = "PB6", "PB7"; |
| 144 | function = "uart3"; |
| 145 | }; |
| 146 | }; |
| 147 | |
| 148 | ccu: clock-controller@2001000 { |
| 149 | compatible = "allwinner,sun20i-d1-ccu"; |
| 150 | reg = <0x2001000 0x1000>; |
| 151 | clocks = <&dcxo>, |
| 152 | <&rtc CLK_OSC32K>, |
| 153 | <&rtc CLK_IOSC>; |
| 154 | clock-names = "hosc", "losc", "iosc"; |
| 155 | #clock-cells = <1>; |
| 156 | #reset-cells = <1>; |
| 157 | }; |
| 158 | |
| 159 | gpadc: adc@2009000 { |
| 160 | compatible = "allwinner,sun20i-d1-gpadc"; |
| 161 | reg = <0x2009000 0x400>; |
| 162 | clocks = <&ccu CLK_BUS_GPADC>; |
| 163 | resets = <&ccu RST_BUS_GPADC>; |
| 164 | interrupts = <SOC_PERIPHERAL_IRQ(57) IRQ_TYPE_LEVEL_HIGH>; |
| 165 | status = "disabled"; |
| 166 | #io-channel-cells = <1>; |
| 167 | }; |
| 168 | |
| 169 | dmic: dmic@2031000 { |
| 170 | compatible = "allwinner,sun20i-d1-dmic", |
| 171 | "allwinner,sun50i-h6-dmic"; |
| 172 | reg = <0x2031000 0x400>; |
| 173 | interrupts = <SOC_PERIPHERAL_IRQ(24) IRQ_TYPE_LEVEL_HIGH>; |
| 174 | clocks = <&ccu CLK_BUS_DMIC>, |
| 175 | <&ccu CLK_DMIC>; |
| 176 | clock-names = "bus", "mod"; |
| 177 | resets = <&ccu RST_BUS_DMIC>; |
| 178 | dmas = <&dma 8>; |
| 179 | dma-names = "rx"; |
| 180 | status = "disabled"; |
| 181 | #sound-dai-cells = <0>; |
| 182 | }; |
| 183 | |
| 184 | i2s1: i2s@2033000 { |
| 185 | compatible = "allwinner,sun20i-d1-i2s", |
| 186 | "allwinner,sun50i-r329-i2s"; |
| 187 | reg = <0x2033000 0x1000>; |
| 188 | interrupts = <SOC_PERIPHERAL_IRQ(27) IRQ_TYPE_LEVEL_HIGH>; |
| 189 | clocks = <&ccu CLK_BUS_I2S1>, |
| 190 | <&ccu CLK_I2S1>; |
| 191 | clock-names = "apb", "mod"; |
| 192 | resets = <&ccu RST_BUS_I2S1>; |
| 193 | dmas = <&dma 4>, <&dma 4>; |
| 194 | dma-names = "rx", "tx"; |
| 195 | status = "disabled"; |
| 196 | #sound-dai-cells = <0>; |
| 197 | }; |
| 198 | |
| 199 | i2s2: i2s@2034000 { |
| 200 | compatible = "allwinner,sun20i-d1-i2s", |
| 201 | "allwinner,sun50i-r329-i2s"; |
| 202 | reg = <0x2034000 0x1000>; |
| 203 | interrupts = <SOC_PERIPHERAL_IRQ(28) IRQ_TYPE_LEVEL_HIGH>; |
| 204 | clocks = <&ccu CLK_BUS_I2S2>, |
| 205 | <&ccu CLK_I2S2>; |
| 206 | clock-names = "apb", "mod"; |
| 207 | resets = <&ccu RST_BUS_I2S2>; |
| 208 | dmas = <&dma 5>, <&dma 5>; |
| 209 | dma-names = "rx", "tx"; |
| 210 | status = "disabled"; |
| 211 | #sound-dai-cells = <0>; |
| 212 | }; |
| 213 | |
| 214 | timer: timer@2050000 { |
| 215 | compatible = "allwinner,sun20i-d1-timer", |
| 216 | "allwinner,sun8i-a23-timer"; |
| 217 | reg = <0x2050000 0xa0>; |
| 218 | interrupts = <SOC_PERIPHERAL_IRQ(59) IRQ_TYPE_LEVEL_HIGH>, |
| 219 | <SOC_PERIPHERAL_IRQ(60) IRQ_TYPE_LEVEL_HIGH>; |
| 220 | clocks = <&dcxo>; |
| 221 | }; |
| 222 | |
| 223 | wdt: watchdog@20500a0 { |
| 224 | compatible = "allwinner,sun20i-d1-wdt-reset", |
| 225 | "allwinner,sun20i-d1-wdt"; |
| 226 | reg = <0x20500a0 0x20>; |
| 227 | interrupts = <SOC_PERIPHERAL_IRQ(63) IRQ_TYPE_LEVEL_HIGH>; |
| 228 | clocks = <&dcxo>, <&rtc CLK_OSC32K>; |
| 229 | clock-names = "hosc", "losc"; |
| 230 | status = "reserved"; |
| 231 | }; |
| 232 | |
| 233 | uart0: serial@2500000 { |
| 234 | compatible = "snps,dw-apb-uart"; |
| 235 | reg = <0x2500000 0x400>; |
| 236 | reg-io-width = <4>; |
| 237 | reg-shift = <2>; |
| 238 | interrupts = <SOC_PERIPHERAL_IRQ(2) IRQ_TYPE_LEVEL_HIGH>; |
| 239 | clocks = <&ccu CLK_BUS_UART0>; |
| 240 | resets = <&ccu RST_BUS_UART0>; |
| 241 | dmas = <&dma 14>, <&dma 14>; |
| 242 | dma-names = "tx", "rx"; |
| 243 | status = "disabled"; |
| 244 | }; |
| 245 | |
| 246 | uart1: serial@2500400 { |
| 247 | compatible = "snps,dw-apb-uart"; |
| 248 | reg = <0x2500400 0x400>; |
| 249 | reg-io-width = <4>; |
| 250 | reg-shift = <2>; |
| 251 | interrupts = <SOC_PERIPHERAL_IRQ(3) IRQ_TYPE_LEVEL_HIGH>; |
| 252 | clocks = <&ccu CLK_BUS_UART1>; |
| 253 | resets = <&ccu RST_BUS_UART1>; |
| 254 | dmas = <&dma 15>, <&dma 15>; |
| 255 | dma-names = "tx", "rx"; |
| 256 | status = "disabled"; |
| 257 | }; |
| 258 | |
| 259 | uart2: serial@2500800 { |
| 260 | compatible = "snps,dw-apb-uart"; |
| 261 | reg = <0x2500800 0x400>; |
| 262 | reg-io-width = <4>; |
| 263 | reg-shift = <2>; |
| 264 | interrupts = <SOC_PERIPHERAL_IRQ(4) IRQ_TYPE_LEVEL_HIGH>; |
| 265 | clocks = <&ccu CLK_BUS_UART2>; |
| 266 | resets = <&ccu RST_BUS_UART2>; |
| 267 | dmas = <&dma 16>, <&dma 16>; |
| 268 | dma-names = "tx", "rx"; |
| 269 | status = "disabled"; |
| 270 | }; |
| 271 | |
| 272 | uart3: serial@2500c00 { |
| 273 | compatible = "snps,dw-apb-uart"; |
| 274 | reg = <0x2500c00 0x400>; |
| 275 | reg-io-width = <4>; |
| 276 | reg-shift = <2>; |
| 277 | interrupts = <SOC_PERIPHERAL_IRQ(5) IRQ_TYPE_LEVEL_HIGH>; |
| 278 | clocks = <&ccu CLK_BUS_UART3>; |
| 279 | resets = <&ccu RST_BUS_UART3>; |
| 280 | dmas = <&dma 17>, <&dma 17>; |
| 281 | dma-names = "tx", "rx"; |
| 282 | status = "disabled"; |
| 283 | }; |
| 284 | |
| 285 | uart4: serial@2501000 { |
| 286 | compatible = "snps,dw-apb-uart"; |
| 287 | reg = <0x2501000 0x400>; |
| 288 | reg-io-width = <4>; |
| 289 | reg-shift = <2>; |
| 290 | interrupts = <SOC_PERIPHERAL_IRQ(6) IRQ_TYPE_LEVEL_HIGH>; |
| 291 | clocks = <&ccu CLK_BUS_UART4>; |
| 292 | resets = <&ccu RST_BUS_UART4>; |
| 293 | dmas = <&dma 18>, <&dma 18>; |
| 294 | dma-names = "tx", "rx"; |
| 295 | status = "disabled"; |
| 296 | }; |
| 297 | |
| 298 | uart5: serial@2501400 { |
| 299 | compatible = "snps,dw-apb-uart"; |
| 300 | reg = <0x2501400 0x400>; |
| 301 | reg-io-width = <4>; |
| 302 | reg-shift = <2>; |
| 303 | interrupts = <SOC_PERIPHERAL_IRQ(7) IRQ_TYPE_LEVEL_HIGH>; |
| 304 | clocks = <&ccu CLK_BUS_UART5>; |
| 305 | resets = <&ccu RST_BUS_UART5>; |
| 306 | dmas = <&dma 19>, <&dma 19>; |
| 307 | dma-names = "tx", "rx"; |
| 308 | status = "disabled"; |
| 309 | }; |
| 310 | |
| 311 | i2c0: i2c@2502000 { |
| 312 | compatible = "allwinner,sun20i-d1-i2c", |
| 313 | "allwinner,sun8i-v536-i2c", |
| 314 | "allwinner,sun6i-a31-i2c"; |
| 315 | reg = <0x2502000 0x400>; |
| 316 | interrupts = <SOC_PERIPHERAL_IRQ(9) IRQ_TYPE_LEVEL_HIGH>; |
| 317 | clocks = <&ccu CLK_BUS_I2C0>; |
| 318 | resets = <&ccu RST_BUS_I2C0>; |
| 319 | dmas = <&dma 43>, <&dma 43>; |
| 320 | dma-names = "rx", "tx"; |
| 321 | status = "disabled"; |
| 322 | #address-cells = <1>; |
| 323 | #size-cells = <0>; |
| 324 | }; |
| 325 | |
| 326 | i2c1: i2c@2502400 { |
| 327 | compatible = "allwinner,sun20i-d1-i2c", |
| 328 | "allwinner,sun8i-v536-i2c", |
| 329 | "allwinner,sun6i-a31-i2c"; |
| 330 | reg = <0x2502400 0x400>; |
| 331 | interrupts = <SOC_PERIPHERAL_IRQ(10) IRQ_TYPE_LEVEL_HIGH>; |
| 332 | clocks = <&ccu CLK_BUS_I2C1>; |
| 333 | resets = <&ccu RST_BUS_I2C1>; |
| 334 | dmas = <&dma 44>, <&dma 44>; |
| 335 | dma-names = "rx", "tx"; |
| 336 | status = "disabled"; |
| 337 | #address-cells = <1>; |
| 338 | #size-cells = <0>; |
| 339 | }; |
| 340 | |
| 341 | i2c2: i2c@2502800 { |
| 342 | compatible = "allwinner,sun20i-d1-i2c", |
| 343 | "allwinner,sun8i-v536-i2c", |
| 344 | "allwinner,sun6i-a31-i2c"; |
| 345 | reg = <0x2502800 0x400>; |
| 346 | interrupts = <SOC_PERIPHERAL_IRQ(11) IRQ_TYPE_LEVEL_HIGH>; |
| 347 | clocks = <&ccu CLK_BUS_I2C2>; |
| 348 | resets = <&ccu RST_BUS_I2C2>; |
| 349 | dmas = <&dma 45>, <&dma 45>; |
| 350 | dma-names = "rx", "tx"; |
| 351 | status = "disabled"; |
| 352 | #address-cells = <1>; |
| 353 | #size-cells = <0>; |
| 354 | }; |
| 355 | |
| 356 | i2c3: i2c@2502c00 { |
| 357 | compatible = "allwinner,sun20i-d1-i2c", |
| 358 | "allwinner,sun8i-v536-i2c", |
| 359 | "allwinner,sun6i-a31-i2c"; |
| 360 | reg = <0x2502c00 0x400>; |
| 361 | interrupts = <SOC_PERIPHERAL_IRQ(12) IRQ_TYPE_LEVEL_HIGH>; |
| 362 | clocks = <&ccu CLK_BUS_I2C3>; |
| 363 | resets = <&ccu RST_BUS_I2C3>; |
| 364 | dmas = <&dma 46>, <&dma 46>; |
| 365 | dma-names = "rx", "tx"; |
| 366 | status = "disabled"; |
| 367 | #address-cells = <1>; |
| 368 | #size-cells = <0>; |
| 369 | }; |
| 370 | |
| 371 | can0: can@2504000 { |
| 372 | compatible = "allwinner,sun20i-d1-can"; |
| 373 | reg = <0x02504000 0x400>; |
| 374 | interrupts = <SOC_PERIPHERAL_IRQ(21) IRQ_TYPE_LEVEL_HIGH>; |
| 375 | clocks = <&ccu CLK_BUS_CAN0>; |
| 376 | resets = <&ccu RST_BUS_CAN0>; |
| 377 | pinctrl-names = "default"; |
| 378 | pinctrl-0 = <&can0_pins>; |
| 379 | status = "disabled"; |
| 380 | }; |
| 381 | |
| 382 | can1: can@2504400 { |
| 383 | compatible = "allwinner,sun20i-d1-can"; |
| 384 | reg = <0x02504400 0x400>; |
| 385 | interrupts = <SOC_PERIPHERAL_IRQ(22) IRQ_TYPE_LEVEL_HIGH>; |
| 386 | clocks = <&ccu CLK_BUS_CAN1>; |
| 387 | resets = <&ccu RST_BUS_CAN1>; |
| 388 | pinctrl-names = "default"; |
| 389 | pinctrl-0 = <&can1_pins>; |
| 390 | status = "disabled"; |
| 391 | }; |
| 392 | |
| 393 | syscon: syscon@3000000 { |
| 394 | compatible = "allwinner,sun20i-d1-system-control"; |
| 395 | reg = <0x3000000 0x1000>; |
| 396 | ranges; |
| 397 | #address-cells = <1>; |
| 398 | #size-cells = <1>; |
| 399 | }; |
| 400 | |
| 401 | dma: dma-controller@3002000 { |
| 402 | compatible = "allwinner,sun20i-d1-dma"; |
| 403 | reg = <0x3002000 0x1000>; |
| 404 | interrupts = <SOC_PERIPHERAL_IRQ(50) IRQ_TYPE_LEVEL_HIGH>; |
| 405 | clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>; |
| 406 | clock-names = "bus", "mbus"; |
| 407 | resets = <&ccu RST_BUS_DMA>; |
| 408 | dma-channels = <16>; |
| 409 | dma-requests = <48>; |
| 410 | #dma-cells = <1>; |
| 411 | }; |
| 412 | |
| 413 | sid: efuse@3006000 { |
| 414 | compatible = "allwinner,sun20i-d1-sid"; |
| 415 | reg = <0x3006000 0x1000>; |
| 416 | #address-cells = <1>; |
| 417 | #size-cells = <1>; |
| 418 | }; |
| 419 | |
| 420 | crypto: crypto@3040000 { |
| 421 | compatible = "allwinner,sun20i-d1-crypto"; |
| 422 | reg = <0x3040000 0x800>; |
| 423 | interrupts = <SOC_PERIPHERAL_IRQ(52) IRQ_TYPE_LEVEL_HIGH>; |
| 424 | clocks = <&ccu CLK_BUS_CE>, |
| 425 | <&ccu CLK_CE>, |
| 426 | <&ccu CLK_MBUS_CE>, |
| 427 | <&rtc CLK_IOSC>; |
| 428 | clock-names = "bus", "mod", "ram", "trng"; |
| 429 | resets = <&ccu RST_BUS_CE>; |
| 430 | }; |
| 431 | |
| 432 | mbus: dram-controller@3102000 { |
| 433 | compatible = "allwinner,sun20i-d1-mbus"; |
| 434 | reg = <0x3102000 0x1000>, |
| 435 | <0x3103000 0x1000>; |
| 436 | reg-names = "mbus", "dram"; |
| 437 | interrupts = <SOC_PERIPHERAL_IRQ(43) IRQ_TYPE_LEVEL_HIGH>; |
| 438 | clocks = <&ccu CLK_MBUS>, |
| 439 | <&ccu CLK_DRAM>, |
| 440 | <&ccu CLK_BUS_DRAM>; |
| 441 | clock-names = "mbus", "dram", "bus"; |
| 442 | dma-ranges = <0 0x40000000 0x80000000>; |
| 443 | #address-cells = <1>; |
| 444 | #size-cells = <1>; |
| 445 | #interconnect-cells = <1>; |
| 446 | }; |
| 447 | |
| 448 | mmc0: mmc@4020000 { |
| 449 | compatible = "allwinner,sun20i-d1-mmc"; |
| 450 | reg = <0x4020000 0x1000>; |
| 451 | interrupts = <SOC_PERIPHERAL_IRQ(40) IRQ_TYPE_LEVEL_HIGH>; |
| 452 | clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>; |
| 453 | clock-names = "ahb", "mmc"; |
| 454 | resets = <&ccu RST_BUS_MMC0>; |
| 455 | reset-names = "ahb"; |
| 456 | cap-sd-highspeed; |
| 457 | max-frequency = <150000000>; |
| 458 | no-mmc; |
| 459 | status = "disabled"; |
| 460 | #address-cells = <1>; |
| 461 | #size-cells = <0>; |
| 462 | }; |
| 463 | |
| 464 | mmc1: mmc@4021000 { |
| 465 | compatible = "allwinner,sun20i-d1-mmc"; |
| 466 | reg = <0x4021000 0x1000>; |
| 467 | interrupts = <SOC_PERIPHERAL_IRQ(41) IRQ_TYPE_LEVEL_HIGH>; |
| 468 | clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>; |
| 469 | clock-names = "ahb", "mmc"; |
| 470 | resets = <&ccu RST_BUS_MMC1>; |
| 471 | reset-names = "ahb"; |
| 472 | cap-sd-highspeed; |
| 473 | max-frequency = <150000000>; |
| 474 | no-mmc; |
| 475 | status = "disabled"; |
| 476 | #address-cells = <1>; |
| 477 | #size-cells = <0>; |
| 478 | }; |
| 479 | |
| 480 | mmc2: mmc@4022000 { |
| 481 | compatible = "allwinner,sun20i-d1-emmc", |
| 482 | "allwinner,sun50i-a100-emmc"; |
| 483 | reg = <0x4022000 0x1000>; |
| 484 | interrupts = <SOC_PERIPHERAL_IRQ(42) IRQ_TYPE_LEVEL_HIGH>; |
| 485 | clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>; |
| 486 | clock-names = "ahb", "mmc"; |
| 487 | resets = <&ccu RST_BUS_MMC2>; |
| 488 | reset-names = "ahb"; |
| 489 | cap-mmc-highspeed; |
| 490 | max-frequency = <150000000>; |
| 491 | mmc-ddr-1_8v; |
| 492 | mmc-ddr-3_3v; |
| 493 | no-sd; |
| 494 | no-sdio; |
| 495 | status = "disabled"; |
| 496 | #address-cells = <1>; |
| 497 | #size-cells = <0>; |
| 498 | }; |
| 499 | |
| 500 | spi0: spi@4025000 { |
| 501 | compatible = "allwinner,sun20i-d1-spi", |
| 502 | "allwinner,sun50i-r329-spi"; |
| 503 | reg = <0x04025000 0x1000>; |
| 504 | interrupts = <SOC_PERIPHERAL_IRQ(15) IRQ_TYPE_LEVEL_HIGH>; |
| 505 | clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>; |
| 506 | clock-names = "ahb", "mod"; |
| 507 | dmas = <&dma 22>, <&dma 22>; |
| 508 | dma-names = "rx", "tx"; |
| 509 | resets = <&ccu RST_BUS_SPI0>; |
| 510 | status = "disabled"; |
| 511 | #address-cells = <1>; |
| 512 | #size-cells = <0>; |
| 513 | }; |
| 514 | |
| 515 | spi1: spi@4026000 { |
| 516 | compatible = "allwinner,sun20i-d1-spi-dbi", |
| 517 | "allwinner,sun50i-r329-spi-dbi", |
| 518 | "allwinner,sun50i-r329-spi"; |
| 519 | reg = <0x04026000 0x1000>; |
| 520 | interrupts = <SOC_PERIPHERAL_IRQ(16) IRQ_TYPE_LEVEL_HIGH>; |
| 521 | clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>; |
| 522 | clock-names = "ahb", "mod"; |
| 523 | dmas = <&dma 23>, <&dma 23>; |
| 524 | dma-names = "rx", "tx"; |
| 525 | resets = <&ccu RST_BUS_SPI1>; |
| 526 | status = "disabled"; |
| 527 | #address-cells = <1>; |
| 528 | #size-cells = <0>; |
| 529 | }; |
| 530 | |
| 531 | usb_otg: usb@4100000 { |
| 532 | compatible = "allwinner,sun20i-d1-musb", |
| 533 | "allwinner,sun8i-a33-musb"; |
| 534 | reg = <0x4100000 0x400>; |
| 535 | interrupts = <SOC_PERIPHERAL_IRQ(29) IRQ_TYPE_LEVEL_HIGH>; |
| 536 | interrupt-names = "mc"; |
| 537 | clocks = <&ccu CLK_BUS_OTG>; |
| 538 | resets = <&ccu RST_BUS_OTG>; |
| 539 | extcon = <&usbphy 0>; |
| 540 | phys = <&usbphy 0>; |
| 541 | phy-names = "usb"; |
| 542 | status = "disabled"; |
| 543 | }; |
| 544 | |
| 545 | usbphy: phy@4100400 { |
| 546 | compatible = "allwinner,sun20i-d1-usb-phy"; |
| 547 | reg = <0x4100400 0x100>, |
| 548 | <0x4101800 0x100>, |
| 549 | <0x4200800 0x100>; |
| 550 | reg-names = "phy_ctrl", |
| 551 | "pmu0", |
| 552 | "pmu1"; |
| 553 | clocks = <&dcxo>, |
| 554 | <&dcxo>; |
| 555 | clock-names = "usb0_phy", |
| 556 | "usb1_phy"; |
| 557 | resets = <&ccu RST_USB_PHY0>, |
| 558 | <&ccu RST_USB_PHY1>; |
| 559 | reset-names = "usb0_reset", |
| 560 | "usb1_reset"; |
| 561 | status = "disabled"; |
| 562 | #phy-cells = <1>; |
| 563 | }; |
| 564 | |
| 565 | ehci0: usb@4101000 { |
| 566 | compatible = "allwinner,sun20i-d1-ehci", |
| 567 | "generic-ehci"; |
| 568 | reg = <0x4101000 0x100>; |
| 569 | interrupts = <SOC_PERIPHERAL_IRQ(30) IRQ_TYPE_LEVEL_HIGH>; |
| 570 | clocks = <&ccu CLK_BUS_OHCI0>, |
| 571 | <&ccu CLK_BUS_EHCI0>, |
| 572 | <&ccu CLK_USB_OHCI0>; |
| 573 | resets = <&ccu RST_BUS_OHCI0>, |
| 574 | <&ccu RST_BUS_EHCI0>; |
| 575 | phys = <&usbphy 0>; |
| 576 | phy-names = "usb"; |
| 577 | status = "disabled"; |
| 578 | }; |
| 579 | |
| 580 | ohci0: usb@4101400 { |
| 581 | compatible = "allwinner,sun20i-d1-ohci", |
| 582 | "generic-ohci"; |
| 583 | reg = <0x4101400 0x100>; |
| 584 | interrupts = <SOC_PERIPHERAL_IRQ(31) IRQ_TYPE_LEVEL_HIGH>; |
| 585 | clocks = <&ccu CLK_BUS_OHCI0>, |
| 586 | <&ccu CLK_USB_OHCI0>; |
| 587 | resets = <&ccu RST_BUS_OHCI0>; |
| 588 | phys = <&usbphy 0>; |
| 589 | phy-names = "usb"; |
| 590 | status = "disabled"; |
| 591 | }; |
| 592 | |
| 593 | ehci1: usb@4200000 { |
| 594 | compatible = "allwinner,sun20i-d1-ehci", |
| 595 | "generic-ehci"; |
| 596 | reg = <0x4200000 0x100>; |
| 597 | interrupts = <SOC_PERIPHERAL_IRQ(33) IRQ_TYPE_LEVEL_HIGH>; |
| 598 | clocks = <&ccu CLK_BUS_OHCI1>, |
| 599 | <&ccu CLK_BUS_EHCI1>, |
| 600 | <&ccu CLK_USB_OHCI1>; |
| 601 | resets = <&ccu RST_BUS_OHCI1>, |
| 602 | <&ccu RST_BUS_EHCI1>; |
| 603 | phys = <&usbphy 1>; |
| 604 | phy-names = "usb"; |
| 605 | status = "disabled"; |
| 606 | }; |
| 607 | |
| 608 | ohci1: usb@4200400 { |
| 609 | compatible = "allwinner,sun20i-d1-ohci", |
| 610 | "generic-ohci"; |
| 611 | reg = <0x4200400 0x100>; |
| 612 | interrupts = <SOC_PERIPHERAL_IRQ(34) IRQ_TYPE_LEVEL_HIGH>; |
| 613 | clocks = <&ccu CLK_BUS_OHCI1>, |
| 614 | <&ccu CLK_USB_OHCI1>; |
| 615 | resets = <&ccu RST_BUS_OHCI1>; |
| 616 | phys = <&usbphy 1>; |
| 617 | phy-names = "usb"; |
| 618 | status = "disabled"; |
| 619 | }; |
| 620 | |
| 621 | emac: ethernet@4500000 { |
| 622 | compatible = "allwinner,sun20i-d1-emac", |
| 623 | "allwinner,sun50i-a64-emac"; |
| 624 | reg = <0x4500000 0x10000>; |
| 625 | interrupts = <SOC_PERIPHERAL_IRQ(46) IRQ_TYPE_LEVEL_HIGH>; |
| 626 | interrupt-names = "macirq"; |
| 627 | clocks = <&ccu CLK_BUS_EMAC>; |
| 628 | clock-names = "stmmaceth"; |
| 629 | resets = <&ccu RST_BUS_EMAC>; |
| 630 | reset-names = "stmmaceth"; |
| 631 | syscon = <&syscon>; |
| 632 | status = "disabled"; |
| 633 | |
| 634 | mdio: mdio { |
| 635 | compatible = "snps,dwmac-mdio"; |
| 636 | #address-cells = <1>; |
| 637 | #size-cells = <0>; |
| 638 | }; |
| 639 | }; |
| 640 | |
| 641 | display_clocks: clock-controller@5000000 { |
| 642 | compatible = "allwinner,sun20i-d1-de2-clk", |
| 643 | "allwinner,sun50i-h5-de2-clk"; |
| 644 | reg = <0x5000000 0x10000>; |
| 645 | clocks = <&ccu CLK_BUS_DE>, <&ccu CLK_DE>; |
| 646 | clock-names = "bus", "mod"; |
| 647 | resets = <&ccu RST_BUS_DE>; |
| 648 | #clock-cells = <1>; |
| 649 | #reset-cells = <1>; |
| 650 | }; |
| 651 | |
| 652 | mixer0: mixer@5100000 { |
| 653 | compatible = "allwinner,sun20i-d1-de2-mixer-0"; |
| 654 | reg = <0x5100000 0x100000>; |
| 655 | clocks = <&display_clocks CLK_BUS_MIXER0>, |
| 656 | <&display_clocks CLK_MIXER0>; |
| 657 | clock-names = "bus", "mod"; |
| 658 | resets = <&display_clocks RST_MIXER0>; |
| 659 | |
| 660 | ports { |
| 661 | #address-cells = <1>; |
| 662 | #size-cells = <0>; |
| 663 | |
| 664 | mixer0_out: port@1 { |
| 665 | reg = <1>; |
| 666 | |
| 667 | mixer0_out_tcon_top_mixer0: endpoint { |
| 668 | remote-endpoint = <&tcon_top_mixer0_in_mixer0>; |
| 669 | }; |
| 670 | }; |
| 671 | }; |
| 672 | }; |
| 673 | |
| 674 | mixer1: mixer@5200000 { |
| 675 | compatible = "allwinner,sun20i-d1-de2-mixer-1"; |
| 676 | reg = <0x5200000 0x100000>; |
| 677 | clocks = <&display_clocks CLK_BUS_MIXER1>, |
| 678 | <&display_clocks CLK_MIXER1>; |
| 679 | clock-names = "bus", "mod"; |
| 680 | resets = <&display_clocks RST_MIXER1>; |
| 681 | |
| 682 | ports { |
| 683 | #address-cells = <1>; |
| 684 | #size-cells = <0>; |
| 685 | |
| 686 | mixer1_out: port@1 { |
| 687 | reg = <1>; |
| 688 | |
| 689 | mixer1_out_tcon_top_mixer1: endpoint { |
| 690 | remote-endpoint = <&tcon_top_mixer1_in_mixer1>; |
| 691 | }; |
| 692 | }; |
| 693 | }; |
| 694 | }; |
| 695 | |
| 696 | dsi: dsi@5450000 { |
| 697 | compatible = "allwinner,sun20i-d1-mipi-dsi", |
| 698 | "allwinner,sun50i-a100-mipi-dsi"; |
| 699 | reg = <0x5450000 0x1000>; |
| 700 | interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; |
| 701 | clocks = <&ccu CLK_BUS_MIPI_DSI>, |
| 702 | <&tcon_top CLK_TCON_TOP_DSI>; |
| 703 | clock-names = "bus", "mod"; |
| 704 | resets = <&ccu RST_BUS_MIPI_DSI>; |
| 705 | phys = <&dphy>; |
| 706 | phy-names = "dphy"; |
| 707 | status = "disabled"; |
| 708 | |
| 709 | port { |
| 710 | dsi_in_tcon_lcd0: endpoint { |
| 711 | remote-endpoint = <&tcon_lcd0_out_dsi>; |
| 712 | }; |
| 713 | }; |
| 714 | }; |
| 715 | |
| 716 | dphy: phy@5451000 { |
| 717 | compatible = "allwinner,sun20i-d1-mipi-dphy", |
| 718 | "allwinner,sun50i-a100-mipi-dphy"; |
| 719 | reg = <0x5451000 0x1000>; |
| 720 | interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; |
| 721 | clocks = <&ccu CLK_BUS_MIPI_DSI>, |
| 722 | <&ccu CLK_MIPI_DSI>; |
| 723 | clock-names = "bus", "mod"; |
| 724 | resets = <&ccu RST_BUS_MIPI_DSI>; |
| 725 | #phy-cells = <0>; |
| 726 | }; |
| 727 | |
| 728 | tcon_top: tcon-top@5460000 { |
| 729 | compatible = "allwinner,sun20i-d1-tcon-top"; |
| 730 | reg = <0x5460000 0x1000>; |
| 731 | clocks = <&ccu CLK_BUS_DPSS_TOP>, |
| 732 | <&ccu CLK_TCON_TV>, |
| 733 | <&ccu CLK_TVE>, |
| 734 | <&ccu CLK_TCON_LCD0>; |
| 735 | clock-names = "bus", "tcon-tv0", "tve0", "dsi"; |
| 736 | clock-output-names = "tcon-top-tv0", "tcon-top-dsi"; |
| 737 | resets = <&ccu RST_BUS_DPSS_TOP>; |
| 738 | #clock-cells = <1>; |
| 739 | |
| 740 | ports { |
| 741 | #address-cells = <1>; |
| 742 | #size-cells = <0>; |
| 743 | |
| 744 | tcon_top_mixer0_in: port@0 { |
| 745 | reg = <0>; |
| 746 | |
| 747 | tcon_top_mixer0_in_mixer0: endpoint { |
| 748 | remote-endpoint = <&mixer0_out_tcon_top_mixer0>; |
| 749 | }; |
| 750 | }; |
| 751 | |
| 752 | tcon_top_mixer0_out: port@1 { |
| 753 | reg = <1>; |
| 754 | #address-cells = <1>; |
| 755 | #size-cells = <0>; |
| 756 | |
| 757 | tcon_top_mixer0_out_tcon_lcd0: endpoint@0 { |
| 758 | reg = <0>; |
| 759 | remote-endpoint = <&tcon_lcd0_in_tcon_top_mixer0>; |
| 760 | }; |
| 761 | |
| 762 | tcon_top_mixer0_out_tcon_tv0: endpoint@2 { |
| 763 | reg = <2>; |
| 764 | remote-endpoint = <&tcon_tv0_in_tcon_top_mixer0>; |
| 765 | }; |
| 766 | }; |
| 767 | |
| 768 | tcon_top_mixer1_in: port@2 { |
| 769 | reg = <2>; |
| 770 | #address-cells = <1>; |
| 771 | #size-cells = <0>; |
| 772 | |
| 773 | tcon_top_mixer1_in_mixer1: endpoint@1 { |
| 774 | reg = <1>; |
| 775 | remote-endpoint = <&mixer1_out_tcon_top_mixer1>; |
| 776 | }; |
| 777 | }; |
| 778 | |
| 779 | tcon_top_mixer1_out: port@3 { |
| 780 | reg = <3>; |
| 781 | #address-cells = <1>; |
| 782 | #size-cells = <0>; |
| 783 | |
| 784 | tcon_top_mixer1_out_tcon_lcd0: endpoint@0 { |
| 785 | reg = <0>; |
| 786 | remote-endpoint = <&tcon_lcd0_in_tcon_top_mixer1>; |
| 787 | }; |
| 788 | |
| 789 | tcon_top_mixer1_out_tcon_tv0: endpoint@2 { |
| 790 | reg = <2>; |
| 791 | remote-endpoint = <&tcon_tv0_in_tcon_top_mixer1>; |
| 792 | }; |
| 793 | }; |
| 794 | |
| 795 | tcon_top_hdmi_in: port@4 { |
| 796 | reg = <4>; |
| 797 | |
| 798 | tcon_top_hdmi_in_tcon_tv0: endpoint { |
| 799 | remote-endpoint = <&tcon_tv0_out_tcon_top_hdmi>; |
| 800 | }; |
| 801 | }; |
| 802 | |
| 803 | tcon_top_hdmi_out: port@5 { |
| 804 | reg = <5>; |
| 805 | }; |
| 806 | }; |
| 807 | }; |
| 808 | |
| 809 | tcon_lcd0: lcd-controller@5461000 { |
| 810 | compatible = "allwinner,sun20i-d1-tcon-lcd"; |
| 811 | reg = <0x5461000 0x1000>; |
| 812 | interrupts = <SOC_PERIPHERAL_IRQ(90) IRQ_TYPE_LEVEL_HIGH>; |
| 813 | clocks = <&ccu CLK_BUS_TCON_LCD0>, |
| 814 | <&ccu CLK_TCON_LCD0>; |
| 815 | clock-names = "ahb", "tcon-ch0"; |
| 816 | clock-output-names = "tcon-pixel-clock"; |
| 817 | resets = <&ccu RST_BUS_TCON_LCD0>, |
| 818 | <&ccu RST_BUS_LVDS0>; |
| 819 | reset-names = "lcd", "lvds"; |
| 820 | #clock-cells = <0>; |
| 821 | |
| 822 | ports { |
| 823 | #address-cells = <1>; |
| 824 | #size-cells = <0>; |
| 825 | |
| 826 | tcon_lcd0_in: port@0 { |
| 827 | reg = <0>; |
| 828 | #address-cells = <1>; |
| 829 | #size-cells = <0>; |
| 830 | |
| 831 | tcon_lcd0_in_tcon_top_mixer0: endpoint@0 { |
| 832 | reg = <0>; |
| 833 | remote-endpoint = <&tcon_top_mixer0_out_tcon_lcd0>; |
| 834 | }; |
| 835 | |
| 836 | tcon_lcd0_in_tcon_top_mixer1: endpoint@1 { |
| 837 | reg = <1>; |
| 838 | remote-endpoint = <&tcon_top_mixer1_out_tcon_lcd0>; |
| 839 | }; |
| 840 | }; |
| 841 | |
| 842 | tcon_lcd0_out: port@1 { |
| 843 | reg = <1>; |
| 844 | #address-cells = <1>; |
| 845 | #size-cells = <0>; |
| 846 | |
| 847 | tcon_lcd0_out_dsi: endpoint@1 { |
| 848 | reg = <1>; |
| 849 | remote-endpoint = <&dsi_in_tcon_lcd0>; |
| 850 | }; |
| 851 | }; |
| 852 | }; |
| 853 | }; |
| 854 | |
| 855 | tcon_tv0: lcd-controller@5470000 { |
| 856 | compatible = "allwinner,sun20i-d1-tcon-tv"; |
| 857 | reg = <0x5470000 0x1000>; |
| 858 | interrupts = <SOC_PERIPHERAL_IRQ(91) IRQ_TYPE_LEVEL_HIGH>; |
| 859 | clocks = <&ccu CLK_BUS_TCON_TV>, |
| 860 | <&tcon_top CLK_TCON_TOP_TV0>; |
| 861 | clock-names = "ahb", "tcon-ch1"; |
| 862 | resets = <&ccu RST_BUS_TCON_TV>; |
| 863 | reset-names = "lcd"; |
| 864 | |
| 865 | ports { |
| 866 | #address-cells = <1>; |
| 867 | #size-cells = <0>; |
| 868 | |
| 869 | tcon_tv0_in: port@0 { |
| 870 | reg = <0>; |
| 871 | #address-cells = <1>; |
| 872 | #size-cells = <0>; |
| 873 | |
| 874 | tcon_tv0_in_tcon_top_mixer0: endpoint@0 { |
| 875 | reg = <0>; |
| 876 | remote-endpoint = <&tcon_top_mixer0_out_tcon_tv0>; |
| 877 | }; |
| 878 | |
| 879 | tcon_tv0_in_tcon_top_mixer1: endpoint@1 { |
| 880 | reg = <1>; |
| 881 | remote-endpoint = <&tcon_top_mixer1_out_tcon_tv0>; |
| 882 | }; |
| 883 | }; |
| 884 | |
| 885 | tcon_tv0_out: port@1 { |
| 886 | reg = <1>; |
| 887 | |
| 888 | tcon_tv0_out_tcon_top_hdmi: endpoint { |
| 889 | remote-endpoint = <&tcon_top_hdmi_in_tcon_tv0>; |
| 890 | }; |
| 891 | }; |
| 892 | }; |
| 893 | }; |
| 894 | |
| 895 | ppu: power-controller@7001000 { |
| 896 | compatible = "allwinner,sun20i-d1-ppu"; |
| 897 | reg = <0x7001000 0x1000>; |
| 898 | clocks = <&r_ccu CLK_BUS_R_PPU>; |
| 899 | resets = <&r_ccu RST_BUS_R_PPU>; |
| 900 | #power-domain-cells = <1>; |
| 901 | }; |
| 902 | |
| 903 | r_ccu: clock-controller@7010000 { |
| 904 | compatible = "allwinner,sun20i-d1-r-ccu"; |
| 905 | reg = <0x7010000 0x400>; |
| 906 | clocks = <&dcxo>, |
| 907 | <&rtc CLK_OSC32K>, |
| 908 | <&rtc CLK_IOSC>, |
| 909 | <&ccu CLK_PLL_PERIPH0_DIV3>; |
| 910 | clock-names = "hosc", "losc", "iosc", "pll-periph"; |
| 911 | #clock-cells = <1>; |
| 912 | #reset-cells = <1>; |
| 913 | }; |
| 914 | |
| 915 | rtc: rtc@7090000 { |
| 916 | compatible = "allwinner,sun20i-d1-rtc", |
| 917 | "allwinner,sun50i-r329-rtc"; |
| 918 | reg = <0x7090000 0x400>; |
| 919 | interrupts = <SOC_PERIPHERAL_IRQ(144) IRQ_TYPE_LEVEL_HIGH>; |
| 920 | clocks = <&r_ccu CLK_BUS_R_RTC>, |
| 921 | <&dcxo>, |
| 922 | <&r_ccu CLK_R_AHB>; |
| 923 | clock-names = "bus", "hosc", "ahb"; |
| 924 | #clock-cells = <1>; |
| 925 | }; |
| 926 | }; |
| 927 | }; |