* [PATCH 0/3] Device tree support for the at91sam9rlek
@ 2014-02-15 1:14 Alexandre Belloni
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-15 1:14 UTC (permalink / raw)
To: linux-arm-kernel
This series adds DT support for the at91sam9rl SoC, then the at91sam9rl-ek
evaluation board.
While the at91sam9rl dtsi should be almost complete (still missing LCD and
touchscreen bits). The at91sam9rlek DT now support the following tested
features:
- MMC
- dbgu
- usart1
- watchdog
- nand
- leds
- buttons
Next:
- spi
- dataflash
- i2c
- lcd
- touchscreen
- usb gadget
- audio
- common clock framework conversion
Alexandre Belloni (3):
ARM: at91: Add at91sam9rl DT SoC support
ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
arch/arm/boot/dts/Makefile | 2 +
arch/arm/boot/dts/at91sam9rl.dtsi | 626 +++++++++++++++++++++++++++++++++++++
arch/arm/boot/dts/at91sam9rlek.dts | 151 +++++++++
arch/arm/configs/at91_dt_defconfig | 1 +
arch/arm/mach-at91/at91sam9rl.c | 16 +
5 files changed, 796 insertions(+)
create mode 100644 arch/arm/boot/dts/at91sam9rl.dtsi
create mode 100644 arch/arm/boot/dts/at91sam9rlek.dts
--
1.8.3.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support
2014-02-15 1:14 [PATCH 0/3] Device tree support for the at91sam9rlek Alexandre Belloni
@ 2014-02-15 1:14 ` Alexandre Belloni
2014-02-17 10:20 ` Thomas Petazzoni
2014-02-17 10:40 ` Nicolas Ferre
2014-02-15 1:14 ` [PATCH 2/3] ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs Alexandre Belloni
2014-02-15 1:14 ` [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek Alexandre Belloni
2 siblings, 2 replies; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-15 1:14 UTC (permalink / raw)
To: linux-arm-kernel
This adds preliminary DT support for the at91sam9rl.
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
arch/arm/boot/dts/at91sam9rl.dtsi | 626 ++++++++++++++++++++++++++++++++++++++
arch/arm/mach-at91/at91sam9rl.c | 16 +
2 files changed, 642 insertions(+)
create mode 100644 arch/arm/boot/dts/at91sam9rl.dtsi
diff --git a/arch/arm/boot/dts/at91sam9rl.dtsi b/arch/arm/boot/dts/at91sam9rl.dtsi
new file mode 100644
index 000000000000..cf67d3a553b2
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9rl.dtsi
@@ -0,0 +1,626 @@
+/*
+ * at91sam9rl.dtsi - Device Tree Include file for AT91SAM9RL family SoC
+ *
+ * Copyright (C) 2014 Alexandre Belloni <alexandre.belloni@free-electrons.com>
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/pinctrl/at91.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ model = "Atmel AT91SAM9RL family SoC";
+ compatible = "atmel,at91sam9rl";
+ interrupt-parent = <&aic>;
+
+ aliases {
+ serial0 = &dbgu;
+ serial1 = &usart0;
+ serial2 = &usart1;
+ serial3 = &usart2;
+ serial4 = &usart3;
+ gpio0 = &pioA;
+ gpio1 = &pioB;
+ gpio2 = &pioC;
+ gpio3 = &pioD;
+ tcb0 = &tcb0;
+ i2c0 = &i2c0;
+ i2c1 = &i2c1;
+ ssc0 = &ssc0;
+ ssc1 = &ssc1;
+ };
+ cpus {
+ #address-cells = <0>;
+ #size-cells = <0>;
+
+ cpu {
+ compatible = "arm,arm926ej-s";
+ device_type = "cpu";
+ };
+ };
+
+ memory {
+ reg = <0x20000000 0x04000000>;
+ };
+
+ ahb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ apb {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ tcb0: timer at fffa0000 {
+ compatible = "atmel,at91rm9200-tcb";
+ reg = <0xfffa0000 0x100>;
+ interrupts = <16 IRQ_TYPE_LEVEL_HIGH 0
+ 17 IRQ_TYPE_LEVEL_HIGH 0
+ 18 IRQ_TYPE_LEVEL_HIGH 0>;
+ };
+
+ mmc0: mmc at fffa4000 {
+ compatible = "atmel,hsmci";
+ reg = <0xfffa4000 0x600>;
+ interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ status = "disabled";
+ };
+
+ i2c0: i2c at fffa8000 {
+ compatible = "atmel,at91sam9260-i2c";
+ reg = <0xfffa8000 0x100>;
+ interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ i2c1: i2c at fffac000 {
+ compatible = "atmel,at91sam9260-i2c";
+ reg = <0xfffac000 0x100>;
+ interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
+ usart0: serial at fffb0000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb0000 0x200>;
+ interrupts = <6 IRQ_TYPE_LEVEL_HIGH 5>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usart0>;
+ status = "disabled";
+ };
+
+ usart1: serial at fffb4000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb4000 0x200>;
+ interrupts = <7 IRQ_TYPE_LEVEL_HIGH 5>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usart1>;
+ status = "disabled";
+ };
+
+ usart2: serial at fffb8000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffb8000 0x200>;
+ interrupts = <8 IRQ_TYPE_LEVEL_HIGH 5>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usart2>;
+ status = "disabled";
+ };
+
+ usart3: serial at fffbc000 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffbc000 0x200>;
+ interrupts = <9 IRQ_TYPE_LEVEL_HIGH 5>;
+ atmel,use-dma-rx;
+ atmel,use-dma-tx;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usart3>;
+ status = "disabled";
+ };
+
+ ssc0: ssc at fffc0000 {
+ compatible = "atmel,at91rm9200-ssc";
+ reg = <0xfffc0000 0x4000>;
+ interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+ status = "disabled";
+ };
+
+ ssc1: ssc at fffc4000 {
+ compatible = "atmel,at91rm9200-ssc";
+ reg = <0xfffc4000 0x4000>;
+ interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
+ status = "disabled";
+ };
+
+ spi0: spi at fffcc000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "atmel,at91rm9200-spi";
+ reg = <0xfffcc000 0x200>;
+ interrupts = <13 IRQ_TYPE_LEVEL_HIGH 3>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_spi0>;
+ status = "disabled";
+ };
+
+ adc0: adc at fffd0000 {
+ compatible = "atmel,at91sam9260-adc";
+ reg = <0xfffd0000 0x100>;
+ interrupts = <20 IRQ_TYPE_LEVEL_HIGH 0>;
+ atmel,adc-use-external-triggers;
+ atmel,adc-channels-used = <0xf>;
+ atmel,adc-vref = <3300>;
+ atmel,adc-num-channels = <4>;
+ atmel,adc-startup-time = <15>;
+ atmel,adc-channel-base = <0x30>;
+ atmel,adc-drdy-mask = <0x10000>;
+ atmel,adc-status-register = <0x1c>;
+ atmel,adc-trigger-register = <0x04>;
+ atmel,adc-res = <8 10>;
+ atmel,adc-res-names = "lowres", "highres";
+ atmel,adc-use-res = "highres";
+
+ trigger at 0 {
+ trigger-name = "timer-counter-0";
+ trigger-value = <0x1>;
+ };
+ trigger at 1 {
+ trigger-name = "timer-counter-1";
+ trigger-value = <0x3>;
+ };
+
+ trigger at 2 {
+ trigger-name = "timer-counter-2";
+ trigger-value = <0x5>;
+ };
+
+ trigger at 3 {
+ trigger-name = "external";
+ trigger-value = <0x13>;
+ trigger-external;
+ };
+ };
+
+ usb0: gadget at fffd4000 {
+ compatible = "atmel,at91rm9200-udc";
+ reg = <0xfffd4000 0x4000>;
+ interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
+ status = "disabled";
+ };
+
+ ramc0: ramc at ffffea00 {
+ compatible = "atmel,at91sam9260-sdramc";
+ reg = <0xffffea00 0x200>;
+ };
+
+ aic: interrupt-controller at fffff000 {
+ #interrupt-cells = <3>;
+ compatible = "atmel,at91rm9200-aic";
+ interrupt-controller;
+ reg = <0xfffff000 0x200>;
+ atmel,external-irqs = <31>;
+ };
+
+ dbgu: serial at fffff200 {
+ compatible = "atmel,at91sam9260-usart";
+ reg = <0xfffff200 0x200>;
+ interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_dbgu>;
+ status = "disabled";
+ };
+
+ pinctrl at fffff400 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
+ ranges = <0xfffff400 0xfffff400 0x800>;
+
+ atmel,mux-mask = <
+ /* A B */
+ 0xffffffff 0xe05c6738 /* pioA */
+ 0xffffffff 0x0000c780 /* pioB */
+ 0xffffffff 0xe3ffff0e /* pioC */
+ 0x003fffff 0x0001ff3c /* pioD */
+ >;
+
+ /* shared pinctrl settings */
+ dbgu {
+ pinctrl_dbgu: dbgu-0 {
+ atmel,pins =
+ <AT91_PIOA 21 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOA 22 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
+ };
+ };
+
+ usart0 {
+ pinctrl_usart0: usart0-0 {
+ atmel,pins =
+ <AT91_PIOA 6 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
+ };
+
+ pinctrl_usart0_rts: usart0_rts-0 {
+ atmel,pins =
+ <AT91_PIOA 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart0_cts: usart0_cts-0 {
+ atmel,pins =
+ <AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart0_dtr_dsr: usart0_dtr_dsr-0 {
+ atmel,pins =
+ <AT91_PIOD 14 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOD 15 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart0_dcd: usart0_dcd-0 {
+ atmel,pins =
+ <AT91_PIOD 16 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart0_ri: usart0_ri-0 {
+ atmel,pins =
+ <AT91_PIOD 17 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart0_sck: usart0_sck-0 {
+ atmel,pins =
+ <AT91_PIOA 8 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+ };
+
+ usart1 {
+ pinctrl_usart1: usart1-0 {
+ atmel,pins =
+ /*TODO check pullup necessary*/
+ <AT91_PIOA 11 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOA 12 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart1_rts: usart1_rts-0 {
+ atmel,pins =
+ <AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart1_cts: usart1_cts-0 {
+ atmel,pins =
+ <AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart1_sck: usart1_sck-0 {
+ atmel,pins =
+ <AT91_PIOD 2 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+ };
+
+ usart2 {
+ pinctrl_usart2: usart2-0 {
+ atmel,pins =
+ <AT91_PIOA 13 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOA 14 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart2_rts: usart2_rts-0 {
+ atmel,pins =
+ <AT91_PIOA 29 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart2_cts: usart2_cts-0 {
+ atmel,pins =
+ <AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart2_sck: usart2_sck-0 {
+ atmel,pins =
+ <AT91_PIOD 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+ };
+
+ usart3 {
+ pinctrl_usart3: usart3-0 {
+ atmel,pins =
+ <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart3_rts: usart3_rts-0 {
+ atmel,pins =
+ <AT91_PIOD 4 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart3_cts: usart3_cts-0 {
+ atmel,pins =
+ <AT91_PIOD 3 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_usart3_sck: usart3_sck-0 {
+ atmel,pins =
+ <AT91_PIOA 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+ };
+
+ nand {
+ pinctrl_nand: nand-0 {
+ atmel,pins =
+ <AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
+ AT91_PIOB 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
+ };
+
+ pinctrl_nand0_ale_cle: nand_ale_cle-0 {
+ atmel,pins =
+ <AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_nand0_oe_we: nand_oe_we-0 {
+ atmel,pins =
+ <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_nand0_cs: nand_cs-0 {
+ atmel,pins =
+ <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+ };
+
+ mmc0 {
+ pinctrl_mmc0_clk: mmc0_clk-0 {
+ atmel,pins =
+ <AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
+ atmel,pins =
+ <AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
+ };
+
+ pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
+ atmel,pins =
+ <AT91_PIOA 3 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOA 4 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+ AT91_PIOA 5 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
+ };
+ };
+
+ ssc0 {
+ pinctrl_ssc0_tx: ssc0_tx-0 {
+ atmel,pins =
+ <AT91_PIOA 15 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_ssc0_rx: ssc0_rx-0 {
+ atmel,pins =
+ <AT91_PIOA 10 AT91_PERIPH_B AT91_PINCTRL_NONE
+ AT91_PIOA 16 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOA 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+ };
+
+ ssc1 {
+ pinctrl_ssc1_tx: ssc1_tx-0 {
+ atmel,pins =
+ <AT91_PIOA 13 AT91_PERIPH_B AT91_PINCTRL_NONE
+ AT91_PIOA 29 AT91_PERIPH_B AT91_PINCTRL_NONE
+ AT91_PIOA 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_ssc1_rx: ssc1_rx-0 {
+ atmel,pins =
+ <AT91_PIOA 8 AT91_PERIPH_B AT91_PINCTRL_NONE
+ AT91_PIOA 9 AT91_PERIPH_B AT91_PINCTRL_NONE
+ AT91_PIOA 14 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+ };
+
+ spi0 {
+ pinctrl_spi0: spi0-0 {
+ atmel,pins =
+ <AT91_PIOA 25 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_NONE
+ AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+ };
+
+ i2c_gpio0 {
+ pinctrl_i2c_gpio0: i2c_gpio0-0 {
+ atmel,pins =
+ <AT91_PIOA 23 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE
+ AT91_PIOA 24 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
+ };
+ };
+
+ i2c_gpio1 {
+ pinctrl_i2c_gpio1: i2c_gpio1-0 {
+ atmel,pins =
+ <AT91_PIOD 10 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE
+ AT91_PIOD 11 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
+ };
+ };
+
+ tcb0 {
+ pinctrl_tcb0_tclk0: tcb0_tclk0-0 {
+ atmel,pins = <AT91_PIOA 3 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tclk1: tcb0_tclk1-0 {
+ atmel,pins = <AT91_PIOC 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tclk2: tcb0_tclk2-0 {
+ atmel,pins = <AT91_PIOD 21 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tioa0: tcb0_tioa0-0 {
+ atmel,pins = <AT91_PIOA 4 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tioa1: tcb0_tioa1-0 {
+ atmel,pins = <AT91_PIOC 29 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tioa2: tcb0_tioa2-0 {
+ atmel,pins = <AT91_PIOD 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tiob0: tcb0_tiob0-0 {
+ atmel,pins = <AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tiob1: tcb0_tiob1-0 {
+ atmel,pins = <AT91_PIOC 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+
+ pinctrl_tcb0_tiob2: tcb0_tiob2-0 {
+ atmel,pins = <AT91_PIOD 11 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+ };
+ };
+
+ pioA: gpio at fffff400 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff400 0x200>;
+ interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ pioB: gpio at fffff600 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff600 0x200>;
+ interrupts = <3 IRQ_TYPE_LEVEL_HIGH 1>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ pioC: gpio at fffff800 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffff800 0x200>;
+ interrupts = <4 IRQ_TYPE_LEVEL_HIGH 1>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ pioD: gpio at fffffa00 {
+ compatible = "atmel,at91rm9200-gpio";
+ reg = <0xfffffa00 0x200>;
+ interrupts = <5 IRQ_TYPE_LEVEL_HIGH 1>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
+ pmc: pmc at fffffc00 {
+ compatible = "atmel,at91rm9200-pmc";
+ reg = <0xfffffc00 0x100>;
+ };
+
+ rstc at fffffd00 {
+ compatible = "atmel,at91sam9260-rstc";
+ reg = <0xfffffd00 0x10>;
+ };
+
+ shdwc at fffffd10 {
+ compatible = "atmel,at91sam9260-shdwc";
+ reg = <0xfffffd10 0x10>;
+ };
+
+ pit: timer at fffffd30 {
+ compatible = "atmel,at91sam9260-pit";
+ reg = <0xfffffd30 0xf>;
+ interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+ };
+
+ watchdog at fffffd40 {
+ compatible = "atmel,at91sam9260-wdt";
+ reg = <0xfffffd40 0x10>;
+ status = "disabled";
+ };
+ };
+
+ nand0: nand at 40000000 {
+ compatible = "atmel,at91rm9200-nand";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0x40000000 0x10000000
+ 0xffffe800 0x200
+ >;
+ atmel,nand-addr-offset = <21>;
+ atmel,nand-cmd-offset = <22>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_nand>;
+ gpios = <&pioD 17 GPIO_ACTIVE_HIGH
+ &pioB 6 GPIO_ACTIVE_HIGH
+ 0
+ >;
+ status = "disabled";
+ };
+ };
+
+ i2c at 0 {
+ compatible = "i2c-gpio";
+ gpios = <&pioA 23 GPIO_ACTIVE_HIGH /* sda */
+ &pioA 24 GPIO_ACTIVE_HIGH /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c_gpio0>;
+ status = "disabled";
+ };
+
+ i2c at 1 {
+ compatible = "i2c-gpio";
+ gpios = <&pioD 10 GPIO_ACTIVE_HIGH /* sda */
+ &pioD 11 GPIO_ACTIVE_HIGH /* scl */
+ >;
+ i2c-gpio,sda-open-drain;
+ i2c-gpio,scl-open-drain;
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_i2c_gpio1>;
+ status = "disabled";
+ };
+};
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c
index 0750ffb7e6b1..3644d479f81c 100644
--- a/arch/arm/mach-at91/at91sam9rl.c
+++ b/arch/arm/mach-at91/at91sam9rl.c
@@ -196,6 +196,22 @@ static struct clk_lookup periph_clocks_lookups[] = {
CLKDEV_CON_ID("pioB", &pioB_clk),
CLKDEV_CON_ID("pioC", &pioC_clk),
CLKDEV_CON_ID("pioD", &pioD_clk),
+ /* more lookup table for DT entries */
+ CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck),
+ CLKDEV_CON_DEV_ID("usart", "fffb0000.serial", &usart0_clk),
+ CLKDEV_CON_DEV_ID("usart", "ffffb400.serial", &usart1_clk),
+ CLKDEV_CON_DEV_ID("usart", "ffffb800.serial", &usart2_clk),
+ CLKDEV_CON_DEV_ID("usart", "ffffbc00.serial", &usart3_clk),
+ CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
+ CLKDEV_CON_DEV_ID("t1_clk", "fffa0000.timer", &tc1_clk),
+ CLKDEV_CON_DEV_ID("t2_clk", "fffa0000.timer", &tc2_clk),
+ CLKDEV_CON_DEV_ID("mci_clk", "fffa4000.mmc", &mmc_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffa8000.i2c", &twi0_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi1_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioA_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioB_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioC_clk),
+ CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioD_clk),
};
static struct clk_lookup usart_clocks_lookups[] = {
--
1.8.3.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs
2014-02-15 1:14 [PATCH 0/3] Device tree support for the at91sam9rlek Alexandre Belloni
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
@ 2014-02-15 1:14 ` Alexandre Belloni
2014-02-15 1:14 ` [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek Alexandre Belloni
2 siblings, 0 replies; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-15 1:14 UTC (permalink / raw)
To: linux-arm-kernel
at91sam9rl now has a device tree, add it to the at91_dt_defconfig.
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
arch/arm/configs/at91_dt_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig
index 690e89273230..c03f5f4c79f6 100644
--- a/arch/arm/configs/at91_dt_defconfig
+++ b/arch/arm/configs/at91_dt_defconfig
@@ -20,6 +20,7 @@ CONFIG_SOC_AT91SAM9263=y
CONFIG_SOC_AT91SAM9G45=y
CONFIG_SOC_AT91SAM9X5=y
CONFIG_SOC_AT91SAM9N12=y
+CONFIG_SOC_AT91SAM9RL=y
CONFIG_MACH_AT91RM9200_DT=y
CONFIG_MACH_AT91SAM9_DT=y
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
--
1.8.3.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
2014-02-15 1:14 [PATCH 0/3] Device tree support for the at91sam9rlek Alexandre Belloni
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
2014-02-15 1:14 ` [PATCH 2/3] ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs Alexandre Belloni
@ 2014-02-15 1:14 ` Alexandre Belloni
2014-02-17 10:30 ` Nicolas Ferre
2 siblings, 1 reply; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-15 1:14 UTC (permalink / raw)
To: linux-arm-kernel
Add a device tree for the at91sam9rl-ek. For now it supports:
- MMC
- dbgu
- usart1
- watchdog
- nand
- leds
- buttons
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---
arch/arm/boot/dts/Makefile | 2 +
arch/arm/boot/dts/at91sam9rlek.dts | 151 +++++++++++++++++++++++++++++++++++++
2 files changed, 153 insertions(+)
create mode 100644 arch/arm/boot/dts/at91sam9rlek.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index d57c1a65b24f..bb28e65d17ee 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -28,6 +28,8 @@ dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb
dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
# sam9n12
dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
+# sam9rl
+dtb-$(CONFIG_ARCH_AT91) += at91sam9rlek.dtb
# sam9x5
dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb
dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
diff --git a/arch/arm/boot/dts/at91sam9rlek.dts b/arch/arm/boot/dts/at91sam9rlek.dts
new file mode 100644
index 000000000000..5ec9589613a1
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9rlek.dts
@@ -0,0 +1,151 @@
+/*
+ * at91sam9rlek.dts - Device Tree file for Atmel at91sam9rl reference board
+ *
+ * Copyright (C) 2014 Alexandre Belloni <alexandre.belloni@free-electrons.com>
+ *
+ * Licensed under GPLv2 only
+ */
+/dts-v1/;
+#include "at91sam9rl.dtsi"
+
+/ {
+ model = "Atmel at91sam9rlek";
+ compatible = "atmel,at91sam9rlek", "atmel,at91sam9rl", "atmel,at91sam9";
+
+ chosen {
+ bootargs = "console=ttyS0,115200 rootfstype=ubifs root=ubi0:rootfs ubi.mtd=7 rw";
+ };
+
+ memory {
+ reg = <0x20000000 0x4000000>;
+ };
+
+ clocks {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ main_clock: clock at 0 {
+ compatible = "atmel,osc", "fixed-clock";
+ clock-frequency = <12000000>;
+ };
+ };
+
+ ahb {
+ apb {
+ mmc0: mmc at fffa4000 {
+ pinctrl-0 = <
+ &pinctrl_board_mmc0
+ &pinctrl_mmc0_clk
+ &pinctrl_mmc0_slot0_cmd_dat0
+ &pinctrl_mmc0_slot0_dat1_3>;
+ status = "okay";
+ slot at 0 {
+ reg = <0>;
+ bus-width = <4>;
+ cd-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ dbgu: serial at fffff200 {
+ status = "okay";
+ };
+
+ usart0: serial at fffb0000 {
+ pinctrl-0 = <
+ &pinctrl_usart0
+ &pinctrl_usart0_rts
+ &pinctrl_usart0_cts>;
+ status = "okay";
+ };
+
+ pinctrl at fffff400 {
+ mmc0 {
+ pinctrl_board_mmc0: mmc0-board {
+ atmel,pins =
+ <AT91_PIOA 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
+ };
+ };
+ };
+
+ watchdog at fffffd40 {
+ status = "okay";
+ };
+ };
+
+ nand0: nand at 40000000 {
+ nand-bus-width = <8>;
+ nand-ecc-mode = "soft";
+ nand-on-flash-bbt = <1>;
+ status = "okay";
+
+ at91bootstrap at 0 {
+ label = "at91bootstrap";
+ reg = <0x0 0x40000>;
+ };
+
+ bootloader at 40000 {
+ label = "bootloader";
+ reg = <0x40000 0x80000>;
+ };
+
+ bootloaderenv at c0000 {
+ label = "bootloader env";
+ reg = <0xc0000 0xc0000>;
+ };
+
+ dtb at 180000 {
+ label = "device tree";
+ reg = <0x180000 0x80000>;
+ };
+
+ kernel at 200000 {
+ label = "kernel";
+ reg = <0x200000 0x600000>;
+ };
+
+ rootfs at 800000 {
+ label = "rootfs";
+ reg = <0x800000 0x0f800000>;
+ };
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ ds1 {
+ label = "ds1";
+ gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
+ };
+
+ ds2 {
+ label = "ds2";
+ gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
+ };
+
+ ds3 {
+ label = "ds3";
+ gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+
+ right_click {
+ label = "right_click";
+ gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
+ linux,code = <273>;
+ gpio-key,wakeup;
+ };
+
+ left_click {
+ label = "left_click";
+ gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
+ linux,code = <272>;
+ gpio-key,wakeup;
+ };
+ };
+};
--
1.8.3.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
@ 2014-02-17 10:20 ` Thomas Petazzoni
2014-02-17 10:54 ` Alexandre Belloni
2014-02-17 10:40 ` Nicolas Ferre
1 sibling, 1 reply; 10+ messages in thread
From: Thomas Petazzoni @ 2014-02-17 10:20 UTC (permalink / raw)
To: linux-arm-kernel
Dear Alexandre Belloni,
On Sat, 15 Feb 2014 02:14:18 +0100, Alexandre Belloni wrote:
> + model = "Atmel AT91SAM9RL family SoC";
> + compatible = "atmel,at91sam9rl";
Since you have it in your board .dts file, I guess you should add the
atmel,at91sam9 compatible string here:
compatible = "atmel,at91sam9rl", "atmel,at91sam9";
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
2014-02-15 1:14 ` [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek Alexandre Belloni
@ 2014-02-17 10:30 ` Nicolas Ferre
2014-02-17 10:52 ` Alexandre Belloni
0 siblings, 1 reply; 10+ messages in thread
From: Nicolas Ferre @ 2014-02-17 10:30 UTC (permalink / raw)
To: linux-arm-kernel
On 15/02/2014 02:14, Alexandre Belloni :
> Add a device tree for the at91sam9rl-ek. For now it supports:
> - MMC
> - dbgu
> - usart1
> - watchdog
> - nand
> - leds
> - buttons
>
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
> arch/arm/boot/dts/Makefile | 2 +
> arch/arm/boot/dts/at91sam9rlek.dts | 151 +++++++++++++++++++++++++++++++++++++
> 2 files changed, 153 insertions(+)
> create mode 100644 arch/arm/boot/dts/at91sam9rlek.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index d57c1a65b24f..bb28e65d17ee 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -28,6 +28,8 @@ dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb
> dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
> # sam9n12
> dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
> +# sam9rl
> +dtb-$(CONFIG_ARCH_AT91) += at91sam9rlek.dtb
> # sam9x5
> dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb
> dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
> diff --git a/arch/arm/boot/dts/at91sam9rlek.dts b/arch/arm/boot/dts/at91sam9rlek.dts
> new file mode 100644
> index 000000000000..5ec9589613a1
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91sam9rlek.dts
> @@ -0,0 +1,151 @@
> +/*
> + * at91sam9rlek.dts - Device Tree file for Atmel at91sam9rl reference board
> + *
> + * Copyright (C) 2014 Alexandre Belloni <alexandre.belloni@free-electrons.com>
> + *
> + * Licensed under GPLv2 only
> + */
> +/dts-v1/;
> +#include "at91sam9rl.dtsi"
> +
> +/ {
> + model = "Atmel at91sam9rlek";
> + compatible = "atmel,at91sam9rlek", "atmel,at91sam9rl", "atmel,at91sam9";
> +
> + chosen {
> + bootargs = "console=ttyS0,115200 rootfstype=ubifs root=ubi0:rootfs ubi.mtd=7 rw";
Isn't it ubi.mtd=5 according to the NAND layer below?
> + };
> +
> + memory {
> + reg = <0x20000000 0x4000000>;
> + };
> +
> + clocks {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + main_clock: clock at 0 {
> + compatible = "atmel,osc", "fixed-clock";
> + clock-frequency = <12000000>;
> + };
> + };
> +
> + ahb {
> + apb {
> + mmc0: mmc at fffa4000 {
Use address ascending order, even for the board, please.
> + pinctrl-0 = <
> + &pinctrl_board_mmc0
> + &pinctrl_mmc0_clk
> + &pinctrl_mmc0_slot0_cmd_dat0
> + &pinctrl_mmc0_slot0_dat1_3>;
> + status = "okay";
> + slot at 0 {
> + reg = <0>;
> + bus-width = <4>;
> + cd-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
> + };
> + };
> +
> + dbgu: serial at fffff200 {
> + status = "okay";
> + };
> +
> + usart0: serial at fffb0000 {
> + pinctrl-0 = <
> + &pinctrl_usart0
> + &pinctrl_usart0_rts
> + &pinctrl_usart0_cts>;
> + status = "okay";
> + };
> +
> + pinctrl at fffff400 {
> + mmc0 {
> + pinctrl_board_mmc0: mmc0-board {
> + atmel,pins =
> + <AT91_PIOA 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
> + };
> + };
> + };
> +
> + watchdog at fffffd40 {
> + status = "okay";
> + };
> + };
> +
> + nand0: nand at 40000000 {
> + nand-bus-width = <8>;
> + nand-ecc-mode = "soft";
> + nand-on-flash-bbt = <1>;
> + status = "okay";
> +
> + at91bootstrap at 0 {
> + label = "at91bootstrap";
> + reg = <0x0 0x40000>;
> + };
> +
> + bootloader at 40000 {
> + label = "bootloader";
> + reg = <0x40000 0x80000>;
> + };
> +
> + bootloaderenv at c0000 {
> + label = "bootloader env";
> + reg = <0xc0000 0xc0000>;
> + };
> +
> + dtb at 180000 {
> + label = "device tree";
> + reg = <0x180000 0x80000>;
> + };
> +
> + kernel at 200000 {
> + label = "kernel";
> + reg = <0x200000 0x600000>;
> + };
> +
> + rootfs at 800000 {
> + label = "rootfs";
> + reg = <0x800000 0x0f800000>;
> + };
> + };
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + ds1 {
> + label = "ds1";
> + gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
> + };
> +
> + ds2 {
> + label = "ds2";
> + gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
> + };
> +
> + ds3 {
> + label = "ds3";
> + gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "heartbeat";
> + };
> + };
> +
> + gpio_keys {
> + compatible = "gpio-keys";
> +
> + right_click {
> + label = "right_click";
> + gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
> + linux,code = <273>;
> + gpio-key,wakeup;
> + };
> +
> + left_click {
> + label = "left_click";
> + gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
> + linux,code = <272>;
> + gpio-key,wakeup;
> + };
> + };
> +};
>
Otherwise, seems okay:
when corrected, you can add my:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
2014-02-17 10:20 ` Thomas Petazzoni
@ 2014-02-17 10:40 ` Nicolas Ferre
1 sibling, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2014-02-17 10:40 UTC (permalink / raw)
To: linux-arm-kernel
On 15/02/2014 02:14, Alexandre Belloni :
> This adds preliminary DT support for the at91sam9rl.
>
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
> arch/arm/boot/dts/at91sam9rl.dtsi | 626 ++++++++++++++++++++++++++++++++++++++
> arch/arm/mach-at91/at91sam9rl.c | 16 +
> 2 files changed, 642 insertions(+)
> create mode 100644 arch/arm/boot/dts/at91sam9rl.dtsi
>
> diff --git a/arch/arm/boot/dts/at91sam9rl.dtsi b/arch/arm/boot/dts/at91sam9rl.dtsi
> new file mode 100644
> index 000000000000..cf67d3a553b2
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91sam9rl.dtsi
> @@ -0,0 +1,626 @@
> +/*
> + * at91sam9rl.dtsi - Device Tree Include file for AT91SAM9RL family SoC
> + *
> + * Copyright (C) 2014 Alexandre Belloni <alexandre.belloni@free-electrons.com>
> + *
> + * Licensed under GPLv2 or later.
> + */
> +
> +#include "skeleton.dtsi"
> +#include <dt-bindings/pinctrl/at91.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> + model = "Atmel AT91SAM9RL family SoC";
> + compatible = "atmel,at91sam9rl";
> + interrupt-parent = <&aic>;
> +
> + aliases {
> + serial0 = &dbgu;
> + serial1 = &usart0;
> + serial2 = &usart1;
> + serial3 = &usart2;
> + serial4 = &usart3;
> + gpio0 = &pioA;
> + gpio1 = &pioB;
> + gpio2 = &pioC;
> + gpio3 = &pioD;
> + tcb0 = &tcb0;
> + i2c0 = &i2c0;
> + i2c1 = &i2c1;
> + ssc0 = &ssc0;
> + ssc1 = &ssc1;
> + };
Nit: add a white line here please.
> + cpus {
> + #address-cells = <0>;
> + #size-cells = <0>;
> +
> + cpu {
> + compatible = "arm,arm926ej-s";
> + device_type = "cpu";
> + };
> + };
> +
> + memory {
> + reg = <0x20000000 0x04000000>;
> + };
> +
> + ahb {
> + compatible = "simple-bus";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + apb {
> + compatible = "simple-bus";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + tcb0: timer at fffa0000 {
> + compatible = "atmel,at91rm9200-tcb";
> + reg = <0xfffa0000 0x100>;
> + interrupts = <16 IRQ_TYPE_LEVEL_HIGH 0
> + 17 IRQ_TYPE_LEVEL_HIGH 0
> + 18 IRQ_TYPE_LEVEL_HIGH 0>;
> + };
> +
> + mmc0: mmc at fffa4000 {
> + compatible = "atmel,hsmci";
> + reg = <0xfffa4000 0x600>;
> + interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pinctrl-names = "default";
> + status = "disabled";
> + };
> +
> + i2c0: i2c at fffa8000 {
> + compatible = "atmel,at91sam9260-i2c";
> + reg = <0xfffa8000 0x100>;
> + interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "disabled";
> + };
> +
> + i2c1: i2c at fffac000 {
> + compatible = "atmel,at91sam9260-i2c";
> + reg = <0xfffac000 0x100>;
> + interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "disabled";
> + };
> +
> + usart0: serial at fffb0000 {
> + compatible = "atmel,at91sam9260-usart";
> + reg = <0xfffb0000 0x200>;
> + interrupts = <6 IRQ_TYPE_LEVEL_HIGH 5>;
> + atmel,use-dma-rx;
> + atmel,use-dma-tx;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_usart0>;
> + status = "disabled";
> + };
> +
> + usart1: serial at fffb4000 {
> + compatible = "atmel,at91sam9260-usart";
> + reg = <0xfffb4000 0x200>;
> + interrupts = <7 IRQ_TYPE_LEVEL_HIGH 5>;
> + atmel,use-dma-rx;
> + atmel,use-dma-tx;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_usart1>;
> + status = "disabled";
> + };
> +
> + usart2: serial at fffb8000 {
> + compatible = "atmel,at91sam9260-usart";
> + reg = <0xfffb8000 0x200>;
> + interrupts = <8 IRQ_TYPE_LEVEL_HIGH 5>;
> + atmel,use-dma-rx;
> + atmel,use-dma-tx;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_usart2>;
> + status = "disabled";
> + };
> +
> + usart3: serial at fffbc000 {
> + compatible = "atmel,at91sam9260-usart";
> + reg = <0xfffbc000 0x200>;
> + interrupts = <9 IRQ_TYPE_LEVEL_HIGH 5>;
> + atmel,use-dma-rx;
> + atmel,use-dma-tx;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_usart3>;
> + status = "disabled";
> + };
> +
> + ssc0: ssc at fffc0000 {
> + compatible = "atmel,at91rm9200-ssc";
> + reg = <0xfffc0000 0x4000>;
> + interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
> + status = "disabled";
> + };
> +
> + ssc1: ssc at fffc4000 {
> + compatible = "atmel,at91rm9200-ssc";
> + reg = <0xfffc4000 0x4000>;
> + interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
> + status = "disabled";
> + };
> +
> + spi0: spi at fffcc000 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "atmel,at91rm9200-spi";
> + reg = <0xfffcc000 0x200>;
> + interrupts = <13 IRQ_TYPE_LEVEL_HIGH 3>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_spi0>;
> + status = "disabled";
> + };
> +
> + adc0: adc at fffd0000 {
> + compatible = "atmel,at91sam9260-adc";
> + reg = <0xfffd0000 0x100>;
> + interrupts = <20 IRQ_TYPE_LEVEL_HIGH 0>;
> + atmel,adc-use-external-triggers;
> + atmel,adc-channels-used = <0xf>;
> + atmel,adc-vref = <3300>;
> + atmel,adc-num-channels = <4>;
> + atmel,adc-startup-time = <15>;
> + atmel,adc-channel-base = <0x30>;
> + atmel,adc-drdy-mask = <0x10000>;
> + atmel,adc-status-register = <0x1c>;
> + atmel,adc-trigger-register = <0x04>;
> + atmel,adc-res = <8 10>;
> + atmel,adc-res-names = "lowres", "highres";
> + atmel,adc-use-res = "highres";
> +
> + trigger at 0 {
> + trigger-name = "timer-counter-0";
> + trigger-value = <0x1>;
> + };
> + trigger at 1 {
> + trigger-name = "timer-counter-1";
> + trigger-value = <0x3>;
> + };
> +
> + trigger at 2 {
> + trigger-name = "timer-counter-2";
> + trigger-value = <0x5>;
> + };
> +
> + trigger at 3 {
> + trigger-name = "external";
> + trigger-value = <0x13>;
> + trigger-external;
> + };
> + };
> +
> + usb0: gadget at fffd4000 {
> + compatible = "atmel,at91rm9200-udc";
> + reg = <0xfffd4000 0x4000>;
> + interrupts = <22 IRQ_TYPE_LEVEL_HIGH 2>;
> + status = "disabled";
> + };
> +
> + ramc0: ramc at ffffea00 {
> + compatible = "atmel,at91sam9260-sdramc";
> + reg = <0xffffea00 0x200>;
> + };
> +
> + aic: interrupt-controller at fffff000 {
> + #interrupt-cells = <3>;
> + compatible = "atmel,at91rm9200-aic";
> + interrupt-controller;
> + reg = <0xfffff000 0x200>;
> + atmel,external-irqs = <31>;
> + };
> +
> + dbgu: serial at fffff200 {
> + compatible = "atmel,at91sam9260-usart";
> + reg = <0xfffff200 0x200>;
> + interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_dbgu>;
> + status = "disabled";
> + };
> +
> + pinctrl at fffff400 {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
> + ranges = <0xfffff400 0xfffff400 0x800>;
> +
> + atmel,mux-mask = <
> + /* A B */
> + 0xffffffff 0xe05c6738 /* pioA */
> + 0xffffffff 0x0000c780 /* pioB */
> + 0xffffffff 0xe3ffff0e /* pioC */
> + 0x003fffff 0x0001ff3c /* pioD */
> + >;
> +
> + /* shared pinctrl settings */
> + dbgu {
> + pinctrl_dbgu: dbgu-0 {
> + atmel,pins =
> + <AT91_PIOA 21 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOA 22 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
> + };
> + };
> +
> + usart0 {
> + pinctrl_usart0: usart0-0 {
> + atmel,pins =
> + <AT91_PIOA 6 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
> + };
> +
> + pinctrl_usart0_rts: usart0_rts-0 {
> + atmel,pins =
> + <AT91_PIOA 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart0_cts: usart0_cts-0 {
> + atmel,pins =
> + <AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart0_dtr_dsr: usart0_dtr_dsr-0 {
> + atmel,pins =
> + <AT91_PIOD 14 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOD 15 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart0_dcd: usart0_dcd-0 {
> + atmel,pins =
> + <AT91_PIOD 16 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart0_ri: usart0_ri-0 {
> + atmel,pins =
> + <AT91_PIOD 17 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart0_sck: usart0_sck-0 {
> + atmel,pins =
> + <AT91_PIOA 8 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + usart1 {
> + pinctrl_usart1: usart1-0 {
> + atmel,pins =
> + /*TODO check pullup necessary*/
> + <AT91_PIOA 11 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOA 12 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart1_rts: usart1_rts-0 {
> + atmel,pins =
> + <AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart1_cts: usart1_cts-0 {
> + atmel,pins =
> + <AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart1_sck: usart1_sck-0 {
> + atmel,pins =
> + <AT91_PIOD 2 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + usart2 {
> + pinctrl_usart2: usart2-0 {
> + atmel,pins =
> + <AT91_PIOA 13 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOA 14 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart2_rts: usart2_rts-0 {
> + atmel,pins =
> + <AT91_PIOA 29 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart2_cts: usart2_cts-0 {
> + atmel,pins =
> + <AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart2_sck: usart2_sck-0 {
> + atmel,pins =
> + <AT91_PIOD 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + usart3 {
> + pinctrl_usart3: usart3-0 {
> + atmel,pins =
> + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart3_rts: usart3_rts-0 {
> + atmel,pins =
> + <AT91_PIOD 4 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart3_cts: usart3_cts-0 {
> + atmel,pins =
> + <AT91_PIOD 3 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_usart3_sck: usart3_sck-0 {
> + atmel,pins =
> + <AT91_PIOA 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + nand {
> + pinctrl_nand: nand-0 {
> + atmel,pins =
> + <AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
> + AT91_PIOB 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
> + };
> +
> + pinctrl_nand0_ale_cle: nand_ale_cle-0 {
> + atmel,pins =
> + <AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_nand0_oe_we: nand_oe_we-0 {
> + atmel,pins =
> + <AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_nand0_cs: nand_cs-0 {
> + atmel,pins =
> + <AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + mmc0 {
> + pinctrl_mmc0_clk: mmc0_clk-0 {
> + atmel,pins =
> + <AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
> + atmel,pins =
> + <AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
> + };
> +
> + pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
> + atmel,pins =
> + <AT91_PIOA 3 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOA 4 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> + AT91_PIOA 5 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
> + };
> + };
> +
> + ssc0 {
> + pinctrl_ssc0_tx: ssc0_tx-0 {
> + atmel,pins =
> + <AT91_PIOA 15 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_ssc0_rx: ssc0_rx-0 {
> + atmel,pins =
> + <AT91_PIOA 10 AT91_PERIPH_B AT91_PINCTRL_NONE
> + AT91_PIOA 16 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOA 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + ssc1 {
> + pinctrl_ssc1_tx: ssc1_tx-0 {
> + atmel,pins =
> + <AT91_PIOA 13 AT91_PERIPH_B AT91_PINCTRL_NONE
> + AT91_PIOA 29 AT91_PERIPH_B AT91_PINCTRL_NONE
> + AT91_PIOA 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_ssc1_rx: ssc1_rx-0 {
> + atmel,pins =
> + <AT91_PIOA 8 AT91_PERIPH_B AT91_PINCTRL_NONE
> + AT91_PIOA 9 AT91_PERIPH_B AT91_PINCTRL_NONE
> + AT91_PIOA 14 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + spi0 {
> + pinctrl_spi0: spi0-0 {
> + atmel,pins =
> + <AT91_PIOA 25 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_NONE
> + AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + i2c_gpio0 {
> + pinctrl_i2c_gpio0: i2c_gpio0-0 {
> + atmel,pins =
> + <AT91_PIOA 23 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE
> + AT91_PIOA 24 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
> + };
> + };
> +
> + i2c_gpio1 {
> + pinctrl_i2c_gpio1: i2c_gpio1-0 {
> + atmel,pins =
> + <AT91_PIOD 10 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE
> + AT91_PIOD 11 AT91_PERIPH_GPIO AT91_PINCTRL_MULTI_DRIVE>;
> + };
> + };
> +
> + tcb0 {
> + pinctrl_tcb0_tclk0: tcb0_tclk0-0 {
> + atmel,pins = <AT91_PIOA 3 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tclk1: tcb0_tclk1-0 {
> + atmel,pins = <AT91_PIOC 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tclk2: tcb0_tclk2-0 {
> + atmel,pins = <AT91_PIOD 21 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tioa0: tcb0_tioa0-0 {
> + atmel,pins = <AT91_PIOA 4 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tioa1: tcb0_tioa1-0 {
> + atmel,pins = <AT91_PIOC 29 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tioa2: tcb0_tioa2-0 {
> + atmel,pins = <AT91_PIOD 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tiob0: tcb0_tiob0-0 {
> + atmel,pins = <AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tiob1: tcb0_tiob1-0 {
> + atmel,pins = <AT91_PIOC 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> +
> + pinctrl_tcb0_tiob2: tcb0_tiob2-0 {
> + atmel,pins = <AT91_PIOD 11 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> + };
> + };
> +
> + pioA: gpio at fffff400 {
> + compatible = "atmel,at91rm9200-gpio";
> + reg = <0xfffff400 0x200>;
> + interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + };
> +
> + pioB: gpio at fffff600 {
> + compatible = "atmel,at91rm9200-gpio";
> + reg = <0xfffff600 0x200>;
> + interrupts = <3 IRQ_TYPE_LEVEL_HIGH 1>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + };
> +
> + pioC: gpio at fffff800 {
> + compatible = "atmel,at91rm9200-gpio";
> + reg = <0xfffff800 0x200>;
> + interrupts = <4 IRQ_TYPE_LEVEL_HIGH 1>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + };
> +
> + pioD: gpio at fffffa00 {
> + compatible = "atmel,at91rm9200-gpio";
> + reg = <0xfffffa00 0x200>;
> + interrupts = <5 IRQ_TYPE_LEVEL_HIGH 1>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + };
> + };
> +
> + pmc: pmc at fffffc00 {
> + compatible = "atmel,at91rm9200-pmc";
> + reg = <0xfffffc00 0x100>;
> + };
> +
> + rstc at fffffd00 {
> + compatible = "atmel,at91sam9260-rstc";
> + reg = <0xfffffd00 0x10>;
> + };
> +
> + shdwc at fffffd10 {
> + compatible = "atmel,at91sam9260-shdwc";
> + reg = <0xfffffd10 0x10>;
> + };
> +
> + pit: timer at fffffd30 {
> + compatible = "atmel,at91sam9260-pit";
> + reg = <0xfffffd30 0xf>;
> + interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
> + };
> +
> + watchdog at fffffd40 {
> + compatible = "atmel,at91sam9260-wdt";
> + reg = <0xfffffd40 0x10>;
> + status = "disabled";
> + };
> + };
> +
> + nand0: nand at 40000000 {
> + compatible = "atmel,at91rm9200-nand";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + reg = <0x40000000 0x10000000
> + 0xffffe800 0x200
> + >;
> + atmel,nand-addr-offset = <21>;
> + atmel,nand-cmd-offset = <22>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_nand>;
> + gpios = <&pioD 17 GPIO_ACTIVE_HIGH
> + &pioB 6 GPIO_ACTIVE_HIGH
> + 0
> + >;
> + status = "disabled";
> + };
> + };
> +
> + i2c at 0 {
> + compatible = "i2c-gpio";
> + gpios = <&pioA 23 GPIO_ACTIVE_HIGH /* sda */
> + &pioA 24 GPIO_ACTIVE_HIGH /* scl */
> + >;
> + i2c-gpio,sda-open-drain;
> + i2c-gpio,scl-open-drain;
> + i2c-gpio,delay-us = <2>; /* ~100 kHz */
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_i2c_gpio0>;
> + status = "disabled";
> + };
> +
> + i2c at 1 {
> + compatible = "i2c-gpio";
> + gpios = <&pioD 10 GPIO_ACTIVE_HIGH /* sda */
> + &pioD 11 GPIO_ACTIVE_HIGH /* scl */
> + >;
> + i2c-gpio,sda-open-drain;
> + i2c-gpio,scl-open-drain;
> + i2c-gpio,delay-us = <2>; /* ~100 kHz */
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_i2c_gpio1>;
> + status = "disabled";
> + };
> +};
> diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c
> index 0750ffb7e6b1..3644d479f81c 100644
> --- a/arch/arm/mach-at91/at91sam9rl.c
> +++ b/arch/arm/mach-at91/at91sam9rl.c
> @@ -196,6 +196,22 @@ static struct clk_lookup periph_clocks_lookups[] = {
> CLKDEV_CON_ID("pioB", &pioB_clk),
> CLKDEV_CON_ID("pioC", &pioC_clk),
> CLKDEV_CON_ID("pioD", &pioD_clk),
> + /* more lookup table for DT entries */
> + CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck),
> + CLKDEV_CON_DEV_ID("usart", "fffb0000.serial", &usart0_clk),
> + CLKDEV_CON_DEV_ID("usart", "ffffb400.serial", &usart1_clk),
> + CLKDEV_CON_DEV_ID("usart", "ffffb800.serial", &usart2_clk),
> + CLKDEV_CON_DEV_ID("usart", "ffffbc00.serial", &usart3_clk),
> + CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
> + CLKDEV_CON_DEV_ID("t1_clk", "fffa0000.timer", &tc1_clk),
> + CLKDEV_CON_DEV_ID("t2_clk", "fffa0000.timer", &tc2_clk),
> + CLKDEV_CON_DEV_ID("mci_clk", "fffa4000.mmc", &mmc_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffa8000.i2c", &twi0_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi1_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioA_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioB_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioC_clk),
> + CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioD_clk),
> };
>
> static struct clk_lookup usart_clocks_lookups[] = {
Alexandre, it seems okay but... I would like all new AT91 SoC converted
to DT to include the CCF from the beginning. It will prevent to have a
temporary phase were people start to use the DT and then have to move
again to another DT description with CCF.
Please follow what Jean-Jacques did for sam9261 DT + CCF.
Bye,
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek
2014-02-17 10:30 ` Nicolas Ferre
@ 2014-02-17 10:52 ` Alexandre Belloni
0 siblings, 0 replies; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-17 10:52 UTC (permalink / raw)
To: linux-arm-kernel
On 17/02/2014 at 11:30:57 +0100, Nicolas Ferre wrote :
> On 15/02/2014 02:14, Alexandre Belloni :
> > Add a device tree for the at91sam9rl-ek. For now it supports:
> > - MMC
> > - dbgu
> > - usart1
> > - watchdog
> > - nand
> > - leds
> > - buttons
> >
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> > ---
> > arch/arm/boot/dts/Makefile | 2 +
> > arch/arm/boot/dts/at91sam9rlek.dts | 151 +++++++++++++++++++++++++++++++++++++
> > 2 files changed, 153 insertions(+)
> > create mode 100644 arch/arm/boot/dts/at91sam9rlek.dts
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index d57c1a65b24f..bb28e65d17ee 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -28,6 +28,8 @@ dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb
> > dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
> > # sam9n12
> > dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
> > +# sam9rl
> > +dtb-$(CONFIG_ARCH_AT91) += at91sam9rlek.dtb
> > # sam9x5
> > dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb
> > dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
> > diff --git a/arch/arm/boot/dts/at91sam9rlek.dts b/arch/arm/boot/dts/at91sam9rlek.dts
> > new file mode 100644
> > index 000000000000..5ec9589613a1
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/at91sam9rlek.dts
> > @@ -0,0 +1,151 @@
> > +/*
> > + * at91sam9rlek.dts - Device Tree file for Atmel at91sam9rl reference board
> > + *
> > + * Copyright (C) 2014 Alexandre Belloni <alexandre.belloni@free-electrons.com>
> > + *
> > + * Licensed under GPLv2 only
> > + */
> > +/dts-v1/;
> > +#include "at91sam9rl.dtsi"
> > +
> > +/ {
> > + model = "Atmel at91sam9rlek";
> > + compatible = "atmel,at91sam9rlek", "atmel,at91sam9rl", "atmel,at91sam9";
> > +
> > + chosen {
> > + bootargs = "console=ttyS0,115200 rootfstype=ubifs root=ubi0:rootfs ubi.mtd=7 rw";
>
> Isn't it ubi.mtd=5 according to the NAND layer below?
>
Sure, I forgot to change it after updating the nand layout.
> > + };
> > +
> > + memory {
> > + reg = <0x20000000 0x4000000>;
> > + };
> > +
> > + clocks {
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + ranges;
> > +
> > + main_clock: clock at 0 {
> > + compatible = "atmel,osc", "fixed-clock";
> > + clock-frequency = <12000000>;
> > + };
> > + };
> > +
> > + ahb {
> > + apb {
> > + mmc0: mmc at fffa4000 {
>
> Use address ascending order, even for the board, please.
>
Sure.
> > + pinctrl-0 = <
> > + &pinctrl_board_mmc0
> > + &pinctrl_mmc0_clk
> > + &pinctrl_mmc0_slot0_cmd_dat0
> > + &pinctrl_mmc0_slot0_dat1_3>;
> > + status = "okay";
> > + slot at 0 {
> > + reg = <0>;
> > + bus-width = <4>;
> > + cd-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
> > + };
> > + };
> > +
> > + dbgu: serial at fffff200 {
> > + status = "okay";
> > + };
> > +
> > + usart0: serial at fffb0000 {
> > + pinctrl-0 = <
> > + &pinctrl_usart0
> > + &pinctrl_usart0_rts
> > + &pinctrl_usart0_cts>;
> > + status = "okay";
> > + };
> > +
> > + pinctrl at fffff400 {
> > + mmc0 {
> > + pinctrl_board_mmc0: mmc0-board {
> > + atmel,pins =
> > + <AT91_PIOA 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
> > + };
> > + };
> > + };
> > +
> > + watchdog at fffffd40 {
> > + status = "okay";
> > + };
> > + };
> > +
> > + nand0: nand at 40000000 {
> > + nand-bus-width = <8>;
> > + nand-ecc-mode = "soft";
> > + nand-on-flash-bbt = <1>;
> > + status = "okay";
> > +
> > + at91bootstrap at 0 {
> > + label = "at91bootstrap";
> > + reg = <0x0 0x40000>;
> > + };
> > +
> > + bootloader at 40000 {
> > + label = "bootloader";
> > + reg = <0x40000 0x80000>;
> > + };
> > +
> > + bootloaderenv at c0000 {
> > + label = "bootloader env";
> > + reg = <0xc0000 0xc0000>;
> > + };
> > +
> > + dtb at 180000 {
> > + label = "device tree";
> > + reg = <0x180000 0x80000>;
> > + };
> > +
> > + kernel at 200000 {
> > + label = "kernel";
> > + reg = <0x200000 0x600000>;
> > + };
> > +
> > + rootfs at 800000 {
> > + label = "rootfs";
> > + reg = <0x800000 0x0f800000>;
> > + };
> > + };
> > + };
> > +
> > + leds {
> > + compatible = "gpio-leds";
> > +
> > + ds1 {
> > + label = "ds1";
> > + gpios = <&pioD 15 GPIO_ACTIVE_LOW>;
> > + };
> > +
> > + ds2 {
> > + label = "ds2";
> > + gpios = <&pioD 16 GPIO_ACTIVE_LOW>;
> > + };
> > +
> > + ds3 {
> > + label = "ds3";
> > + gpios = <&pioD 14 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "heartbeat";
> > + };
> > + };
> > +
> > + gpio_keys {
> > + compatible = "gpio-keys";
> > +
> > + right_click {
> > + label = "right_click";
> > + gpios = <&pioB 0 GPIO_ACTIVE_LOW>;
> > + linux,code = <273>;
> > + gpio-key,wakeup;
> > + };
> > +
> > + left_click {
> > + label = "left_click";
> > + gpios = <&pioB 1 GPIO_ACTIVE_LOW>;
> > + linux,code = <272>;
> > + gpio-key,wakeup;
> > + };
> > + };
> > +};
> >
>
> Otherwise, seems okay:
>
> when corrected, you can add my:
>
> Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
>
Will do.
--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support
2014-02-17 10:20 ` Thomas Petazzoni
@ 2014-02-17 10:54 ` Alexandre Belloni
2014-02-17 11:08 ` Nicolas Ferre
0 siblings, 1 reply; 10+ messages in thread
From: Alexandre Belloni @ 2014-02-17 10:54 UTC (permalink / raw)
To: linux-arm-kernel
On 17/02/2014 at 11:20:13 +0100, Thomas Petazzoni wrote :
> Dear Alexandre Belloni,
>
> On Sat, 15 Feb 2014 02:14:18 +0100, Alexandre Belloni wrote:
>
> > + model = "Atmel AT91SAM9RL family SoC";
> > + compatible = "atmel,at91sam9rl";
>
> Since you have it in your board .dts file, I guess you should add the
> atmel,at91sam9 compatible string here:
>
> compatible = "atmel,at91sam9rl", "atmel,at91sam9";
I agree that it would be better but that is not done on other at91sam9
socs. Nicolas, can you comment ?
--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support
2014-02-17 10:54 ` Alexandre Belloni
@ 2014-02-17 11:08 ` Nicolas Ferre
0 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2014-02-17 11:08 UTC (permalink / raw)
To: linux-arm-kernel
On 17/02/2014 11:54, Alexandre Belloni :
> On 17/02/2014 at 11:20:13 +0100, Thomas Petazzoni wrote :
>> Dear Alexandre Belloni,
>>
>> On Sat, 15 Feb 2014 02:14:18 +0100, Alexandre Belloni wrote:
>>
>>> + model = "Atmel AT91SAM9RL family SoC";
>>> + compatible = "atmel,at91sam9rl";
>>
>> Since you have it in your board .dts file, I guess you should add the
>> atmel,at91sam9 compatible string here:
>>
>> compatible = "atmel,at91sam9rl", "atmel,at91sam9";
>
>
> I agree that it would be better but that is not done on other at91sam9
> socs. Nicolas, can you comment ?
I do agree with Thomas. It is true that it is missing in other sam9 dtsi
files.
On the other hand, it is present in sama5d3.dtsi file. So we might have
figured it out at some point ;-)
Bye,
--
Nicolas Ferre
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-02-17 11:08 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-15 1:14 [PATCH 0/3] Device tree support for the at91sam9rlek Alexandre Belloni
2014-02-15 1:14 ` [PATCH 1/3] ARM: at91: Add at91sam9rl DT SoC support Alexandre Belloni
2014-02-17 10:20 ` Thomas Petazzoni
2014-02-17 10:54 ` Alexandre Belloni
2014-02-17 11:08 ` Nicolas Ferre
2014-02-17 10:40 ` Nicolas Ferre
2014-02-15 1:14 ` [PATCH 2/3] ARM: at91/defconfig: Add the sam9rl to the list of DT-enabled SOCs Alexandre Belloni
2014-02-15 1:14 ` [PATCH 3/3] ARM: at91: dt: sam9rl: Device Tree for the at91sam9rlek Alexandre Belloni
2014-02-17 10:30 ` Nicolas Ferre
2014-02-17 10:52 ` Alexandre Belloni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).