2 * at91sam9x5.dtsi - Device Tree Include file for AT91SAM9x5 family SoC
3 * applies to AT91SAM9G15, AT91SAM9G25, AT91SAM9G35,
4 * AT91SAM9X25, AT91SAM9X35 SoC
6 * Copyright (C) 2012 Atmel,
7 * 2012 Nicolas Ferre <nicolas.ferre@atmel.com>
9 * Licensed under GPLv2 or later.
12 /include/ "skeleton.dtsi"
15 model = "Atmel AT91SAM9x5 family SoC";
16 compatible = "atmel,at91sam9x5";
17 interrupt-parent = <&aic>;
40 compatible = "arm,arm926ej-s";
46 reg = <0x20000000 0x10000000>;
50 compatible = "simple-bus";
56 compatible = "simple-bus";
61 aic: interrupt-controller@fffff000 {
62 #interrupt-cells = <3>;
63 compatible = "atmel,at91rm9200-aic";
65 reg = <0xfffff000 0x200>;
66 atmel,external-irqs = <31>;
69 ramc0: ramc@ffffe800 {
70 compatible = "atmel,at91sam9g45-ddramc";
71 reg = <0xffffe800 0x200>;
75 compatible = "atmel,at91rm9200-pmc";
76 reg = <0xfffffc00 0x100>;
80 compatible = "atmel,at91sam9g45-rstc";
81 reg = <0xfffffe00 0x10>;
85 compatible = "atmel,at91sam9x5-shdwc";
86 reg = <0xfffffe10 0x10>;
90 compatible = "atmel,at91sam9260-pit";
91 reg = <0xfffffe30 0xf>;
95 tcb0: timer@f8008000 {
96 compatible = "atmel,at91sam9x5-tcb";
97 reg = <0xf8008000 0x100>;
98 interrupts = <17 4 0>;
101 tcb1: timer@f800c000 {
102 compatible = "atmel,at91sam9x5-tcb";
103 reg = <0xf800c000 0x100>;
104 interrupts = <17 4 0>;
107 dma0: dma-controller@ffffec00 {
108 compatible = "atmel,at91sam9g45-dma";
109 reg = <0xffffec00 0x200>;
110 interrupts = <20 4 0>;
114 dma1: dma-controller@ffffee00 {
115 compatible = "atmel,at91sam9g45-dma";
116 reg = <0xffffee00 0x200>;
117 interrupts = <21 4 0>;
122 #address-cells = <1>;
124 compatible = "atmel,at91sam9x5-pinctrl", "atmel,at91rm9200-pinctrl", "simple-bus";
125 ranges = <0xfffff400 0xfffff400 0x800>;
127 /* shared pinctrl settings */
129 pinctrl_dbgu: dbgu-0 {
131 <0 9 0x1 0x0 /* PA9 periph A */
132 0 10 0x1 0x1>; /* PA10 periph A with pullup */
137 pinctrl_usart0: usart0-0 {
139 <0 0 0x1 0x1 /* PA0 periph A with pullup */
140 0 1 0x1 0x0>; /* PA1 periph A */
143 pinctrl_usart0_rts: usart0_rts-0 {
145 <0 2 0x1 0x0>; /* PA2 periph A */
148 pinctrl_usart0_cts: usart0_cts-0 {
150 <0 3 0x1 0x0>; /* PA3 periph A */
153 pinctrl_usart0_sck: usart0_sck-0 {
155 <0 4 0x1 0x0>; /* PA4 periph A */
160 pinctrl_usart1: usart1-0 {
162 <0 5 0x1 0x1 /* PA5 periph A with pullup */
163 0 6 0x1 0x0>; /* PA6 periph A */
166 pinctrl_usart1_rts: usart1_rts-0 {
168 <2 27 0x3 0x0>; /* PC27 periph C */
171 pinctrl_usart1_cts: usart1_cts-0 {
173 <2 28 0x3 0x0>; /* PC28 periph C */
176 pinctrl_usart1_sck: usart1_sck-0 {
178 <2 28 0x3 0x0>; /* PC29 periph C */
183 pinctrl_usart2: usart2-0 {
185 <0 7 0x1 0x1 /* PA7 periph A with pullup */
186 0 8 0x1 0x0>; /* PA8 periph A */
189 pinctrl_uart2_rts: uart2_rts-0 {
191 <1 0 0x2 0x0>; /* PB0 periph B */
194 pinctrl_uart2_cts: uart2_cts-0 {
196 <1 1 0x2 0x0>; /* PB1 periph B */
199 pinctrl_usart2_sck: usart2_sck-0 {
201 <1 2 0x2 0x0>; /* PB2 periph B */
206 pinctrl_usart3: usart3-0 {
208 <2 22 0x2 0x1 /* PC22 periph B with pullup */
209 2 23 0x2 0x0>; /* PC23 periph B */
212 pinctrl_usart3_rts: usart3_rts-0 {
214 <2 24 0x2 0x0>; /* PC24 periph B */
217 pinctrl_usart3_cts: usart3_cts-0 {
219 <2 25 0x2 0x0>; /* PC25 periph B */
222 pinctrl_usart3_sck: usart3_sck-0 {
224 <2 26 0x2 0x0>; /* PC26 periph B */
229 pinctrl_uart0: uart0-0 {
231 <2 8 0x3 0x0 /* PC8 periph C */
232 2 9 0x3 0x1>; /* PC9 periph C with pullup */
237 pinctrl_uart1: uart1-0 {
239 <2 16 0x3 0x0 /* PC16 periph C */
240 2 17 0x3 0x1>; /* PC17 periph C with pullup */
245 pinctrl_nand: nand-0 {
247 <3 0 0x1 0x0 /* PD0 periph A Read Enable */
248 3 1 0x1 0x0 /* PD1 periph A Write Enable */
249 3 2 0x1 0x0 /* PD2 periph A Address Latch Enable */
250 3 3 0x1 0x0 /* PD3 periph A Command Latch Enable */
251 3 4 0x0 0x1 /* PD4 gpio Chip Enable pin pull_up */
252 3 5 0x0 0x1 /* PD5 gpio RDY/BUSY pin pull_up */
253 3 6 0x1 0x0 /* PD6 periph A Data bit 0 */
254 3 7 0x1 0x0 /* PD7 periph A Data bit 1 */
255 3 8 0x1 0x0 /* PD8 periph A Data bit 2 */
256 3 9 0x1 0x0 /* PD9 periph A Data bit 3 */
257 3 10 0x1 0x0 /* PD10 periph A Data bit 4 */
258 3 11 0x1 0x0 /* PD11 periph A Data bit 5 */
259 3 12 0x1 0x0 /* PD12 periph A Data bit 6 */
260 3 13 0x1 0x0>; /* PD13 periph A Data bit 7 */
263 pinctrl_nand_16bits: nand_16bits-0 {
265 <3 14 0x1 0x0 /* PD14 periph A Data bit 8 */
266 3 15 0x1 0x0 /* PD15 periph A Data bit 9 */
267 3 16 0x1 0x0 /* PD16 periph A Data bit 10 */
268 3 17 0x1 0x0 /* PD17 periph A Data bit 11 */
269 3 18 0x1 0x0 /* PD18 periph A Data bit 12 */
270 3 19 0x1 0x0 /* PD19 periph A Data bit 13 */
271 3 20 0x1 0x0 /* PD20 periph A Data bit 14 */
272 3 21 0x1 0x0>; /* PD21 periph A Data bit 15 */
277 pinctrl_macb0_rmii: macb0_rmii-0 {
279 <1 0 0x1 0x0 /* PB0 periph A */
280 1 1 0x1 0x0 /* PB1 periph A */
281 1 2 0x1 0x0 /* PB2 periph A */
282 1 3 0x1 0x0 /* PB3 periph A */
283 1 4 0x1 0x0 /* PB4 periph A */
284 1 5 0x1 0x0 /* PB5 periph A */
285 1 6 0x1 0x0 /* PB6 periph A */
286 1 7 0x1 0x0 /* PB7 periph A */
287 1 9 0x1 0x0 /* PB9 periph A */
288 1 10 0x1 0x0>; /* PB10 periph A */
291 pinctrl_macb0_rmii_mii: macb0_rmii_mii-0 {
293 <1 8 0x1 0x0 /* PB8 periph A */
294 1 11 0x1 0x0 /* PB11 periph A */
295 1 12 0x1 0x0 /* PB12 periph A */
296 1 13 0x1 0x0 /* PB13 periph A */
297 1 14 0x1 0x0 /* PB14 periph A */
298 1 15 0x1 0x0 /* PB15 periph A */
299 1 16 0x1 0x0 /* PB16 periph A */
300 1 17 0x1 0x0>; /* PB17 periph A */
305 pinctrl_mmc0_slot0_clk_cmd_dat0: mmc0_slot0_clk_cmd_dat0-0 {
307 <0 17 0x1 0x0 /* PA17 periph A */
308 0 16 0x1 0x1 /* PA16 periph A with pullup */
309 0 15 0x1 0x1>; /* PA15 periph A with pullup */
312 pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
314 <0 18 0x1 0x1 /* PA18 periph A with pullup */
315 0 19 0x1 0x1 /* PA19 periph A with pullup */
316 0 20 0x1 0x1>; /* PA20 periph A with pullup */
321 pinctrl_mmc1_slot0_clk_cmd_dat0: mmc1_slot0_clk_cmd_dat0-0 {
323 <0 13 0x2 0x0 /* PA13 periph B */
324 0 12 0x2 0x1 /* PA12 periph B with pullup */
325 0 11 0x2 0x1>; /* PA11 periph B with pullup */
328 pinctrl_mmc1_slot0_dat1_3: mmc1_slot0_dat1_3-0 {
330 <0 2 0x2 0x1 /* PA2 periph B with pullup */
331 0 3 0x2 0x1 /* PA3 periph B with pullup */
332 0 4 0x2 0x1>; /* PA4 periph B with pullup */
337 pinctrl_ssc0_tx: ssc0_tx-0 {
339 <0 24 0x2 0x0 /* PA24 periph B */
340 0 25 0x2 0x0 /* PA25 periph B */
341 0 26 0x2 0x0>; /* PA26 periph B */
344 pinctrl_ssc0_rx: ssc0_rx-0 {
346 <0 27 0x2 0x0 /* PA27 periph B */
347 0 28 0x2 0x0 /* PA28 periph B */
348 0 29 0x2 0x0>; /* PA29 periph B */
353 pinctrl_spi0: spi0-0 {
355 <0 11 0x1 0x0 /* PA11 periph A SPI0_MISO pin */
356 0 12 0x1 0x0 /* PA12 periph A SPI0_MOSI pin */
357 0 13 0x1 0x0>; /* PA13 periph A SPI0_SPCK pin */
362 pinctrl_spi1: spi1-0 {
364 <0 21 0x2 0x0 /* PA21 periph B SPI1_MISO pin */
365 0 22 0x2 0x0 /* PA22 periph B SPI1_MOSI pin */
366 0 23 0x2 0x0>; /* PA23 periph B SPI1_SPCK pin */
371 pinctrl_i2c0: i2c0-0 {
373 <0 30 0x1 0x0 /* PA30 periph A I2C0 data */
374 0 31 0x1 0x0>; /* PA31 periph A I2C0 clock */
379 pinctrl_i2c1: i2c1-0 {
381 <2 0 0x3 0x0 /* PC0 periph C I2C1 data */
382 2 1 0x3 0x0>; /* PC1 periph C I2C1 clock */
387 pinctrl_i2c2: i2c2-0 {
389 <1 4 0x2 0x0 /* PB4 periph B I2C2 data */
390 1 5 0x2 0x0>; /* PB5 periph B I2C2 clock */
395 pinctrl_i2c_gpio0: i2c_gpio0-0 {
397 <0 30 0x0 0x2 /* PA30 gpio multidrive I2C0 data */
398 0 31 0x0 0x2>; /* PA31 gpio multidrive I2C0 clock */
403 pinctrl_i2c_gpio1: i2c_gpio1-0 {
405 <2 0 0x0 0x2 /* PC0 gpio multidrive I2C1 data */
406 2 1 0x0 0x2>; /* PC1 gpio multidrive I2C1 clock */
411 pinctrl_i2c_gpio2: i2c_gpio2-0 {
413 <1 4 0x0 0x2 /* PB4 gpio multidrive I2C2 data */
414 1 5 0x0 0x2>; /* PB5 gpio multidrive I2C2 clock */
418 pioA: gpio@fffff400 {
419 compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
420 reg = <0xfffff400 0x200>;
421 interrupts = <2 4 1>;
424 interrupt-controller;
425 #interrupt-cells = <2>;
428 pioB: gpio@fffff600 {
429 compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
430 reg = <0xfffff600 0x200>;
431 interrupts = <2 4 1>;
435 interrupt-controller;
436 #interrupt-cells = <2>;
439 pioC: gpio@fffff800 {
440 compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
441 reg = <0xfffff800 0x200>;
442 interrupts = <3 4 1>;
445 interrupt-controller;
446 #interrupt-cells = <2>;
449 pioD: gpio@fffffa00 {
450 compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
451 reg = <0xfffffa00 0x200>;
452 interrupts = <3 4 1>;
456 interrupt-controller;
457 #interrupt-cells = <2>;
462 compatible = "atmel,at91sam9g45-ssc";
463 reg = <0xf0010000 0x4000>;
464 interrupts = <28 4 5>;
465 pinctrl-names = "default";
466 pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
471 compatible = "atmel,hsmci";
472 reg = <0xf0008000 0x600>;
473 interrupts = <12 4 0>;
476 #address-cells = <1>;
482 compatible = "atmel,hsmci";
483 reg = <0xf000c000 0x600>;
484 interrupts = <26 4 0>;
487 #address-cells = <1>;
492 dbgu: serial@fffff200 {
493 compatible = "atmel,at91sam9260-usart";
494 reg = <0xfffff200 0x200>;
495 interrupts = <1 4 7>;
496 pinctrl-names = "default";
497 pinctrl-0 = <&pinctrl_dbgu>;
501 usart0: serial@f801c000 {
502 compatible = "atmel,at91sam9260-usart";
503 reg = <0xf801c000 0x200>;
504 interrupts = <5 4 5>;
505 pinctrl-names = "default";
506 pinctrl-0 = <&pinctrl_usart0>;
510 usart1: serial@f8020000 {
511 compatible = "atmel,at91sam9260-usart";
512 reg = <0xf8020000 0x200>;
513 interrupts = <6 4 5>;
514 pinctrl-names = "default";
515 pinctrl-0 = <&pinctrl_usart1>;
519 usart2: serial@f8024000 {
520 compatible = "atmel,at91sam9260-usart";
521 reg = <0xf8024000 0x200>;
522 interrupts = <7 4 5>;
523 pinctrl-names = "default";
524 pinctrl-0 = <&pinctrl_usart2>;
528 macb0: ethernet@f802c000 {
529 compatible = "cdns,at32ap7000-macb", "cdns,macb";
530 reg = <0xf802c000 0x100>;
531 interrupts = <24 4 3>;
532 pinctrl-names = "default";
533 pinctrl-0 = <&pinctrl_macb0_rmii>;
537 macb1: ethernet@f8030000 {
538 compatible = "cdns,at32ap7000-macb", "cdns,macb";
539 reg = <0xf8030000 0x100>;
540 interrupts = <27 4 3>;
545 compatible = "atmel,at91sam9x5-i2c";
546 reg = <0xf8010000 0x100>;
547 interrupts = <9 4 6>;
550 dma-names = "tx", "rx";
551 #address-cells = <1>;
553 pinctrl-names = "default";
554 pinctrl-0 = <&pinctrl_i2c0>;
559 compatible = "atmel,at91sam9x5-i2c";
560 reg = <0xf8014000 0x100>;
561 interrupts = <10 4 6>;
564 dma-names = "tx", "rx";
565 #address-cells = <1>;
567 pinctrl-names = "default";
568 pinctrl-0 = <&pinctrl_i2c1>;
573 compatible = "atmel,at91sam9x5-i2c";
574 reg = <0xf8018000 0x100>;
575 interrupts = <11 4 6>;
578 dma-names = "tx", "rx";
579 #address-cells = <1>;
581 pinctrl-names = "default";
582 pinctrl-0 = <&pinctrl_i2c2>;
587 compatible = "atmel,at91sam9260-adc";
588 reg = <0xf804c000 0x100>;
589 interrupts = <19 4 0>;
590 atmel,adc-use-external;
591 atmel,adc-channels-used = <0xffff>;
592 atmel,adc-vref = <3300>;
593 atmel,adc-num-channels = <12>;
594 atmel,adc-startup-time = <40>;
595 atmel,adc-channel-base = <0x50>;
596 atmel,adc-drdy-mask = <0x1000000>;
597 atmel,adc-status-register = <0x30>;
598 atmel,adc-trigger-register = <0xc0>;
599 atmel,adc-res = <8 10>;
600 atmel,adc-res-names = "lowres", "highres";
601 atmel,adc-use-res = "highres";
604 trigger-name = "external-rising";
605 trigger-value = <0x1>;
610 trigger-name = "external-falling";
611 trigger-value = <0x2>;
616 trigger-name = "external-any";
617 trigger-value = <0x3>;
622 trigger-name = "continuous";
623 trigger-value = <0x6>;
628 #address-cells = <1>;
630 compatible = "atmel,at91rm9200-spi";
631 reg = <0xf0000000 0x100>;
632 interrupts = <13 4 3>;
633 pinctrl-names = "default";
634 pinctrl-0 = <&pinctrl_spi0>;
639 #address-cells = <1>;
641 compatible = "atmel,at91rm9200-spi";
642 reg = <0xf0004000 0x100>;
643 interrupts = <14 4 3>;
644 pinctrl-names = "default";
645 pinctrl-0 = <&pinctrl_spi1>;
650 compatible = "atmel,at91sam9x5-rtc";
651 reg = <0xfffffeb0 0x40>;
652 interrupts = <1 4 7>;
657 nand0: nand@40000000 {
658 compatible = "atmel,at91rm9200-nand";
659 #address-cells = <1>;
661 reg = <0x40000000 0x10000000
662 0xffffe000 0x600 /* PMECC Registers */
663 0xffffe600 0x200 /* PMECC Error Location Registers */
664 0x00108000 0x18000 /* PMECC looup table in ROM code */
666 atmel,pmecc-lookup-table-offset = <0x0 0x8000>;
667 atmel,nand-addr-offset = <21>;
668 atmel,nand-cmd-offset = <22>;
669 pinctrl-names = "default";
670 pinctrl-0 = <&pinctrl_nand>;
678 usb0: ohci@00600000 {
679 compatible = "atmel,at91rm9200-ohci", "usb-ohci";
680 reg = <0x00600000 0x100000>;
681 interrupts = <22 4 2>;
685 usb1: ehci@00700000 {
686 compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
687 reg = <0x00700000 0x100000>;
688 interrupts = <22 4 2>;
694 compatible = "i2c-gpio";
695 gpios = <&pioA 30 0 /* sda */
698 i2c-gpio,sda-open-drain;
699 i2c-gpio,scl-open-drain;
700 i2c-gpio,delay-us = <2>; /* ~100 kHz */
701 #address-cells = <1>;
703 pinctrl-names = "default";
704 pinctrl-0 = <&pinctrl_i2c_gpio0>;
709 compatible = "i2c-gpio";
710 gpios = <&pioC 0 0 /* sda */
713 i2c-gpio,sda-open-drain;
714 i2c-gpio,scl-open-drain;
715 i2c-gpio,delay-us = <2>; /* ~100 kHz */
716 #address-cells = <1>;
718 pinctrl-names = "default";
719 pinctrl-0 = <&pinctrl_i2c_gpio1>;
724 compatible = "i2c-gpio";
725 gpios = <&pioB 4 0 /* sda */
728 i2c-gpio,sda-open-drain;
729 i2c-gpio,scl-open-drain;
730 i2c-gpio,delay-us = <2>; /* ~100 kHz */
731 #address-cells = <1>;
733 pinctrl-names = "default";
734 pinctrl-0 = <&pinctrl_i2c_gpio2>;