linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/15] Device Tree support for the at91sam9261ek
@ 2014-01-23 15:57 Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support Jean-Jacques Hiblot
                   ` (15 more replies)
  0 siblings, 16 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

This patch set aims at bringing a basic device tree support for the sam9261.
It's mostly based on the sam9263 and sam9x5 stuff.

Changes since V2:
* removed the smc driver from the serie. It'll be posted in an independent
  serie later.
* removed the DM9000 support (it'll come with the smc driver)
* the sam9261 now supports the Common Clock Framework (CCF). Note: to enable
  the CCF you must remove from the kernel config the platforms that don't
  support it.
* Added basic DT binding for the bus matrix
* Added support for USB host
* Added support for USB gadget
* in dts(i), replaced interrupt-parent with interrupts-extended
* changed the nand partition plan (same as for the sama5d3)
* removed 'mem' parameter in command line
* re-ordered dt-nodes in ascending address order.
* split the lcd support patch in 2 parts (SOC and board)


Change since V1:
* changed the DT representation to use address translation and separate the
  timings' configuration from the device properties by adding a "simple-bus"
  inetrmediate node.
* moved the smc driver from drivers/bus to drivers/memmory
* smc driver now accepts timings in nanoseconds as well as raw register values
* smc driver can clip the timings if they're out of bound and dump them to the
  console
* DM9000 timings are now described in nanosecs (for the virtue of example)

supported features:
* dbgu
* nand
* lcd
* leds
* user buttons
* usb host
* usb gadget

This serie relies on the 3 following patchs:
usb: ohci-at91: fix irq and iomem resource retrieval
usb: at91-udc: fix irq and iomem resource retrieval
ARM: at91: prepare sam9 dt boards transition to common

Jean-Jacques



Jean-Jacques Hiblot (15):
  at91: dt: Add at91sam9261 dt SoC support
  at91: dt: defconfig: Added the sam9261 to the list of supported SOCs
  at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
  ARM: at91: prepare common clk transition for sam9261 SoC
  ARM: at91: move sam9261 SoC to common clk
  at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks
    (CCF)
  at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF)
  at91: dt: sam9261: Added support for the LCD display
  at91: dt: at91sam9261ek: Added support for the LCD display
  at91: dt: Adds support for the bus matrix declaration in the device
    tree
  at91: dt: sam9261: adds description for the bus matrix
  at91: dt: sam9261: CCF: Added USB clocks
  at91: dt: at91sam9261ek: Enabled the USB host port (OHCI)
  at91: dt: at91sam9261ek: Enabled the USB device port

 arch/arm/boot/dts/Makefile          |   2 +
 arch/arm/boot/dts/at91sam9261.dtsi  | 724 ++++++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/at91sam9261ek.dts | 191 ++++++++++
 arch/arm/configs/at91_dt_defconfig  |   1 +
 arch/arm/mach-at91/Kconfig          |   1 -
 arch/arm/mach-at91/at91sam9261.c    |  24 +-
 arch/arm/mach-at91/setup.c          |  23 ++
 7 files changed, 963 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
 create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts

-- 
1.8.5.2

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:23   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-01-23 15:57 ` [PATCH v3 02/15] at91: dt: defconfig: Added the sam9261 to the list of supported SOCs Jean-Jacques Hiblot
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds the basics to support the Device Tree on a sam9261-based platform

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261.dtsi | 627 +++++++++++++++++++++++++++++++++++++
 arch/arm/mach-at91/at91sam9261.c   |  15 +
 2 files changed, 642 insertions(+)
 create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi

diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
new file mode 100644
index 0000000..2730611
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -0,0 +1,627 @@
+/*
+ * at91sam9261.dtsi - Device Tree Include file for AT91SAM9261 SoC
+ *
+ *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
+ *
+ * Licensed under GPLv2 only.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/pinctrl/at91.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clk/at91.h>
+
+/ {
+	model = "Atmel AT91SAM9261 family SoC";
+	compatible = "atmel,at91sam9261";
+	interrupt-parent = <&aic>;
+
+	aliases {
+		serial0 = &dbgu;
+		serial1 = &usart0;
+		serial2 = &usart1;
+		serial3 = &usart2;
+		gpio0 = &pioA;
+		gpio1 = &pioB;
+		gpio2 = &pioC;
+		tcb0 = &tcb0;
+		i2c0 = &i2c0;
+		ssc0 = &ssc0;
+		ssc1 = &ssc1;
+	};
+	cpus {
+		#address-cells = <0>;
+		#size-cells = <0>;
+
+		cpu {
+			compatible = "arm,arm926ej-s";
+			device_type = "cpu";
+		};
+	};
+
+	memory {
+		reg = <0x20000000 0x08000000>;
+	};
+
+	ahb {
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		usb0: ohci at 00500000 {
+			compatible = "atmel,at91rm9200-ohci", "usb-ohci";
+			reg = <0x00500000 0x100000>;
+			interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
+			status = "disabled";
+		};
+
+		nand0: nand at 40000000 {
+			compatible = "atmel,at91rm9200-nand";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg = <0x40000000 0x10000000>;
+			atmel,nand-addr-offset = <22>;
+			atmel,nand-cmd-offset = <21>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_nand>;
+
+			gpios = <&pioC 15 GPIO_ACTIVE_HIGH
+				&pioC 14 GPIO_ACTIVE_HIGH
+				0
+				>;
+			status = "disabled";
+		};
+
+		apb {
+			compatible = "simple-bus";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges;
+
+			tcb0: timer at fffa0000 {
+				compatible = "atmel,at91rm9200-tcb";
+				reg = <0xfffa0000 0x100>;
+				interrupts = < 17 IRQ_TYPE_LEVEL_HIGH 0
+					18 IRQ_TYPE_LEVEL_HIGH 0
+					19 IRQ_TYPE_LEVEL_HIGH 0
+					>;
+				clocks = <&tcb0_clk>;
+				clock-names = "t0_clk";
+				status = "disabled";
+			};
+
+			usb1: gadget at fffa4000 {
+				compatible = "atmel,at91rm9200-udc";
+				reg = <0xfffa4000 0x4000>;
+				interrupts = <10 IRQ_TYPE_LEVEL_HIGH 2>;
+				status = "disabled";
+			};
+
+			mmc0: mmc at fffa8000 {
+				compatible = "atmel,hsmci";
+				reg = <0xfffa8000 0x600>;
+				interrupts = <9 IRQ_TYPE_LEVEL_HIGH 0>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&mci0_clk>;
+				clock-names = "mci_clk";
+				status = "disabled";
+			};
+
+			i2c0: i2c at fffac000 {
+				compatible = "atmel,at91sam9261-i2c";
+				pinctrl-0 = <&pinctrl_i2c_twi>;
+				reg = <0xfffac000 0x100>;
+				interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				clocks = <&twi0_clk>;
+				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>;
+				clocks = <&usart0_clk>;
+				clock-names = "usart";
+				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>;
+				clocks = <&usart1_clk>;
+				clock-names = "usart";
+				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>;
+				clocks = <&usart2_clk>;
+				clock-names = "usart";
+				status = "disabled";
+			};
+
+			ssc0: ssc at fffbc000 {
+				compatible = "atmel,at91rm9200-ssc";
+				reg = <0xfffbc000 0x4000>;
+				interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+				status = "disabled";
+			};
+
+			ssc1: ssc at fffc0000 {
+				compatible = "atmel,at91rm9200-ssc";
+				reg = <0xfffc0000 0x4000>;
+				interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
+				status = "disabled";
+			};
+
+			spi0: spi at fffc8000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "atmel,at91rm9200-spi";
+				reg = <0xfffc8000 0x200>;
+				interrupts = <12 IRQ_TYPE_LEVEL_HIGH 3>;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_spi0>;
+				clocks = <&spi0_clk>;
+				clock-names = "spi_clk";
+				status = "disabled";
+			};
+
+			spi1: 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_spi1>;
+				clocks = <&spi1_clk>;
+				clock-names = "spi_clk";
+				status = "disabled";
+			};
+
+			ramc: 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 = <29 30 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>;
+				clocks = <&mck>;
+				clock-names = "usart";
+				status = "disabled";
+			};
+
+			pinctrl at fffff400 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
+				ranges = <0xfffff400 0xfffff400 0xa00>;
+
+				atmel,mux-mask = <
+				      /*    A         B     */
+				       0xffffffff 0xfffffff7  /* pioA */
+				       0xffffffff 0xfffffff4  /* pioB */
+				       0xffffffff 0xffffff07  /* pioC */
+				      >;
+
+				/* shared pinctrl settings */
+				dbgu {
+					pinctrl_dbgu: dbgu-0 {
+						atmel,pins =
+							<AT91_PIOA 9  AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
+					};
+				};
+
+				usart0 {
+					pinctrl_usart0: usart0-0 {
+						atmel,pins =
+							<AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+							 AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart0_rts: usart0_rts-0 {
+						atmel,pins =
+							<AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart0_cts: usart0_cts-0 {
+						atmel,pins =
+							<AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+				};
+
+				usart1 {
+					pinctrl_usart1: usart1-0 {
+						atmel,pins =
+							<AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+							 AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart1_rts: usart1_rts-0 {
+						atmel,pins =
+							<AT91_PIOA 12 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart1_cts: usart1_cts-0 {
+						atmel,pins =
+							<AT91_PIOA 13 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+				};
+
+				usart2 {
+					pinctrl_usart2: usart2-0 {
+						atmel,pins =
+							<AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
+							 AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart2_rts: usart2_rts-0 {
+						atmel,pins =
+							<AT91_PIOA 15 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_usart2_cts: usart2_cts-0 {
+						atmel,pins =
+							<AT91_PIOA 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+				};
+
+				nand {
+					pinctrl_nand: nand-0 {
+						atmel,pins =
+							<AT91_PIOC 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
+							 AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
+					};
+				};
+
+				mmc0 {
+					pinctrl_mmc0_clk: mmc0_clk-0 {
+						atmel,pins =
+							<AT91_PIOA 2 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
+						atmel,pins =
+							<AT91_PIOA 1 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
+							 AT91_PIOA 0 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
+					};
+
+					pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
+						atmel,pins =
+							<AT91_PIOA 4 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
+							 AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
+							 AT91_PIOA 6 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
+					};
+					};
+
+				ssc0 {
+					pinctrl_ssc0_tx: ssc0_tx-0 {
+						atmel,pins =
+							<AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_ssc0_rx: ssc0_rx-0 {
+						atmel,pins =
+							<AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 26 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+				};
+
+				ssc1 {
+					pinctrl_ssc1_tx: ssc1_tx-0 {
+						atmel,pins =
+							<AT91_PIOA 17 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_ssc1_rx: ssc1_rx-0 {
+						atmel,pins =
+							<AT91_PIOA 20 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOA 21 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOA 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+				};
+
+				spi0 {
+					pinctrl_spi0: spi0-0 {
+						atmel,pins =
+							<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+					};
+
+				spi1 {
+					pinctrl_spi1: spi1-0 {
+						atmel,pins =
+							<AT91_PIOB 30 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 31 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_NONE>;
+					};
+				};
+
+				tcb0 {
+					pinctrl_tcb0_tclk0: tcb0_tclk0-0 {
+						atmel,pins = <AT91_PIOC 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tclk1: tcb0_tclk1-0 {
+						atmel,pins = <AT91_PIOC 17 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tclk2: tcb0_tclk2-0 {
+						atmel,pins = <AT91_PIOC 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tioa0: tcb0_tioa0-0 {
+						atmel,pins = <AT91_PIOC 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tioa1: tcb0_tioa1-0 {
+						atmel,pins = <AT91_PIOC 21 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tioa2: tcb0_tioa2-0 {
+						atmel,pins = <AT91_PIOC 23 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tiob0: tcb0_tiob0-0 {
+						atmel,pins = <AT91_PIOC 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tiob1: tcb0_tiob1-0 {
+						atmel,pins = <AT91_PIOC 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_tcb0_tiob2: tcb0_tiob2-0 {
+						atmel,pins = <AT91_PIOC 24 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+				};
+
+				i2c0 {
+					pinctrl_i2c_bitbang: i2c-0-bitbang {
+						atmel,pins =
+							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+							AT91_PIOA 8 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+					pinctrl_i2c_twi: i2c-0-twi {
+						atmel,pins =
+							<AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_NONE
+							AT91_PIOA 8 AT91_PERIPH_A 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>;
+					clocks = <&pioA_clk>;
+				};
+
+				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>;
+					clocks = <&pioB_clk>;
+				};
+
+				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>;
+					clocks = <&pioC_clk>;
+				};
+			};
+
+			pmc: pmc at fffffc00 {
+				compatible = "atmel,at91rm9200-pmc";
+				reg = <0xfffffc00 0x100>;
+				interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+				interrupt-controller;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				#interrupt-cells = <1>;
+
+				clk32k: slck {
+					compatible = "fixed-clock";
+					#clock-cells = <0>;
+					clock-frequency = <32768>;
+				};
+
+				main: mainck {
+					compatible = "atmel,at91rm9200-clk-main";
+					#clock-cells = <0>;
+					interrupts-extended = <&pmc AT91_PMC_MOSCS>;
+					clocks = <&clk32k>;
+				};
+
+				plla: pllack {
+					compatible = "atmel,at91rm9200-clk-pll";
+					#clock-cells = <0>;
+					interrupts-extended = <&pmc AT91_PMC_LOCKA>;
+					clocks = <&main>;
+					reg = <0>;
+					atmel,clk-input-range = <1000000 32000000>;
+					#atmel,pll-clk-output-range-cells = <4>;
+					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
+				};
+
+				pllb: pllbck {
+					compatible = "atmel,at91rm9200-clk-pll";
+					#clock-cells = <0>;
+					interrupts-extended = <&pmc AT91_PMC_LOCKB>;
+					clocks = <&main>;
+					reg = <1>;
+					atmel,clk-input-range = <1000000 32000000>;
+					#atmel,pll-clk-output-range-cells = <4>;
+					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
+				};
+
+				mck: masterck {
+					compatible = "atmel,at91rm9200-clk-master";
+					#clock-cells = <0>;
+					interrupts-extended = <&pmc AT91_PMC_MCKRDY>;
+					clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
+					atmel,clk-output-range = <0 94000000>;
+					atmel,clk-divisors = <1 2 4 3>;
+				};
+				periphck {
+					compatible = "atmel,at91rm9200-clk-peripheral";
+					#address-cells = <1>;
+					#size-cells = <0>;
+					clocks = <&mck>;
+
+					pioA_clk: pioA_clk {
+						#clock-cells = <0>;
+						reg = <2>;
+					};
+
+					pioB_clk: pioB_clk {
+						#clock-cells = <0>;
+						reg = <3>;
+					};
+
+					pioC_clk: pioC_clk {
+						#clock-cells = <0>;
+						reg = <4>;
+					};
+
+					usart0_clk: usart0_clk {
+						#clock-cells = <0>;
+						reg = <6>;
+					};
+
+					usart1_clk: usart1_clk {
+						#clock-cells = <0>;
+						reg = <7>;
+					};
+
+					usart2_clk: usart2_clk {
+						#clock-cells = <0>;
+						reg = <8>;
+					};
+
+					mci0_clk: mci0_clk {
+						#clock-cells = <0>;
+						reg = <9>;
+					};
+
+					twi0_clk: twi0_clk {
+						reg = <11>;
+						#clock-cells = <0>;
+					};
+
+					spi0_clk: spi0_clk {
+						#clock-cells = <0>;
+						reg = <12>;
+					};
+
+					spi1_clk: spi1_clk {
+						#clock-cells = <0>;
+						reg = <13>;
+					};
+
+					tcb0_clk: tcb0_clk {
+						#clock-cells = <0>;
+						reg = <17>;
+					};
+
+					lcd_clk: lcd_clk {
+						#clock-cells = <0>;
+						reg = <21>;
+					};
+				};
+			};
+
+			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>;
+				clocks = <&mck>;
+			};
+
+			watchdog at fffffd40 {
+				compatible = "atmel,at91sam9260-wdt";
+				reg = <0xfffffd40 0x10>;
+				status = "disabled";
+			};
+		};
+	};
+
+	i2c at 0 {
+		compatible = "i2c-gpio";
+		pinctrl-0 = <&pinctrl_i2c_bitbang>;
+		gpios = <&pioA 7 GPIO_ACTIVE_HIGH /* sda */
+			 &pioA 8 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>;
+		status = "disabled";
+	};
+};
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
index 6276b4c..6a2c869 100644
--- a/arch/arm/mach-at91/at91sam9261.c
+++ b/arch/arm/mach-at91/at91sam9261.c
@@ -189,6 +189,21 @@ static struct clk_lookup periph_clocks_lookups[] = {
 	CLKDEV_CON_ID("pioA", &pioA_clk),
 	CLKDEV_CON_ID("pioB", &pioB_clk),
 	CLKDEV_CON_ID("pioC", &pioC_clk),
+	/* more usart 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", "fff94000.serial", &usart2_clk),
+	/* more tc lookup table for DT entries */
+	CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
+	CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &hck0),
+	CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk),
+	CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk),
+	CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk),
+	CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi_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),
 };
 
 static struct clk_lookup usart_clocks_lookups[] = {
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 02/15] at91: dt: defconfig: Added the sam9261 to the list of supported SOCs
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.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 690e892..3145e16 100644
--- a/arch/arm/configs/at91_dt_defconfig
+++ b/arch/arm/configs/at91_dt_defconfig
@@ -16,6 +16,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_ARCH_AT91=y
 CONFIG_SOC_AT91RM9200=y
 CONFIG_SOC_AT91SAM9260=y
+CONFIG_SOC_AT91SAM9261=y
 CONFIG_SOC_AT91SAM9263=y
 CONFIG_SOC_AT91SAM9G45=y
 CONFIG_SOC_AT91SAM9X5=y
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 02/15] at91: dt: defconfig: Added the sam9261 to the list of supported SOCs Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:30   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-01-23 15:57 ` [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC Jean-Jacques Hiblot
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

This patch implements a simple DTS to boot a at91sam9261ek with a dt-enabled
kernel (at91_dt_defconfig).
Only dbgu, nand and watchdog are described in the DT.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/Makefile          |   2 +
 arch/arm/boot/dts/at91sam9261ek.dts | 112 ++++++++++++++++++++++++++++++++++++
 2 files changed, 114 insertions(+)
 create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 772a30e..ece523d 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -11,6 +11,8 @@ dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
 dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
 dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb
 dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb
+# sam9261
+dtb-$(CONFIG_ARCH_AT91) += at91sam9261ek.dtb
 # sam9263
 dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb
 dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb
diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
new file mode 100644
index 0000000..8909217
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -0,0 +1,112 @@
+/*
+ * at91sam9261ek.dts - Device Tree file for Atmel at91sam9261 reference board
+ *
+ *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
+ *
+ * Licensed under GPLv2 only.
+ */
+/dts-v1/;
+#include "at91sam9261.dtsi"
+
+/ {
+	model = "Atmel at91sam9261ek";
+	compatible = "atmel,at91sam9261ek", "atmel,at91sam9261", "atmel,at91sam9";
+
+	chosen {
+		bootargs = "mem=64M console=ttyS0,115200";
+	};
+
+	memory {
+		reg = <0x20000000 0x4000000>;
+	};
+
+	clocks {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+
+		main_clock: clock at 0 {
+			compatible = "atmel,osc", "fixed-clock";
+			clock-frequency = <18432000>;
+		};
+	};
+
+	ahb {
+
+		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>;
+			};
+		};
+
+		apb {
+			dbgu: serial at fffff200 {
+				status = "okay";
+			};
+
+			pinctrl at fffff400 {
+				leds {
+					pinctrl_leds: leds-0 {
+						atmel,pins = <AT91_PIOA 13  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+						AT91_PIOA 14  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+						AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+				};
+			};
+
+			watchdog at fffffd40 {
+				status = "okay";
+			};
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		ds8 {
+			label = "ds8";
+			gpios = <&pioA 13 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "none";
+		};
+		ds7 {
+			label = "ds7";
+			gpios = <&pioA 14 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "nand-disk";
+		};
+		ds1 {
+			label = "ds1";
+			gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "heartbeat";
+		};
+	};
+};
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (2 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:25   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-01-23 15:57 ` [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk Jean-Jacques Hiblot
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

 This patch encloses sam9261 old clk registration in
"#if defined(CONFIG_OLD_CLK_AT91) #endif" sections.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/mach-at91/at91sam9261.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
index 6a2c869..2c0e940 100644
--- a/arch/arm/mach-at91/at91sam9261.c
+++ b/arch/arm/mach-at91/at91sam9261.c
@@ -25,10 +25,12 @@
 #include "at91_rstc.h"
 #include "soc.h"
 #include "generic.h"
-#include "clock.h"
 #include "sam9_smc.h"
 #include "pm.h"
 
+#if defined(CONFIG_OLD_CLK_AT91)
+#include "clock.h"
+
 /* --------------------------------------------------------------------
  *  Clocks
  * -------------------------------------------------------------------- */
@@ -262,7 +264,7 @@ static void __init at91sam9261_register_clocks(void)
 	clk_register(&hck0);
 	clk_register(&hck1);
 }
-
+#endif
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
@@ -362,6 +364,8 @@ AT91_SOC_START(at91sam9261)
 	.extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
 		    | (1 << AT91SAM9261_ID_IRQ2),
 	.ioremap_registers = at91sam9261_ioremap_registers,
+#if defined(CONFIG_OLD_CLK_AT91)
 	.register_clocks = at91sam9261_register_clocks,
+#endif
 	.init = at91sam9261_initialize,
 AT91_SOC_END
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (3 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:58   ` Boris BREZILLON
  2014-01-23 15:57 ` [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons Jean-Jacques Hiblot
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

This patch removes the selection of AT91_USE_OLD_CLK when selecting
sam9261 SoCs support. This will automatically enable COMMON_CLK_AT91 option
and add support for at91 common clk implementation.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/mach-at91/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index b4f7d6f..2214beb 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -120,7 +120,6 @@ config SOC_AT91SAM9261
 	select HAVE_AT91_DBGU0
 	select HAVE_FB_ATMEL
 	select SOC_AT91SAM9
-	select AT91_USE_OLD_CLK
 	select HAVE_AT91_USB_CLK
 	help
 	  Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (4 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:27   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-01-23 15:57 ` [PATCH v3 07/15] at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks (CCF) Jean-Jacques Hiblot
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261ek.dts | 39 +++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
index 8909217..5555e9f5 100644
--- a/arch/arm/boot/dts/at91sam9261ek.dts
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -83,6 +83,15 @@
 						AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
 					};
 				};
+
+				keys {
+					pinctrl_keys: keys-0 {
+						atmel,pins = <AT91_PIOA 27  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+						AT91_PIOA 26  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+						AT91_PIOA 25  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
+						AT91_PIOA 24  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+				};
 			};
 
 			watchdog at fffffd40 {
@@ -109,4 +118,34 @@
 			linux,default-trigger = "heartbeat";
 		};
 	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		pinctrl-0 = <&pinctrl_keys>;
+
+		button_0 {
+			label = "button_0";
+			gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
+			linux,code = <256>;
+			gpio-key,wakeup;
+		};
+		button_1 {
+			label = "button_1";
+			gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
+			linux,code = <257>;
+			gpio-key,wakeup;
+		};
+		button_2 {
+			label = "button_2";
+			gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
+			linux,code = <258>;
+			gpio-key,wakeup;
+		};
+		button_3 {
+			label = "button_3";
+			gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
+			linux,code = <259>;
+			gpio-key,wakeup;
+		};
+	};
 };
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 07/15] at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks (CCF)
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (5 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 08/15] at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF) Jean-Jacques Hiblot
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
index 2730611..97e6b62 100644
--- a/arch/arm/boot/dts/at91sam9261.dtsi
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -518,6 +518,26 @@
 					atmel,clk-output-range = <0 94000000>;
 					atmel,clk-divisors = <1 2 4 3>;
 				};
+
+				systemck {
+					compatible = "atmel,at91rm9200-clk-system";
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					hclk0: hclk0 {
+						#clock-cells = <0>;
+						reg = <16>;
+						clocks = <&mck>;
+					};
+
+					hclk1: hclk1 {
+						#clock-cells = <0>;
+						reg = <17>;
+						clocks = <&mck>;
+					};
+				};
+
+
 				periphck {
 					compatible = "atmel,at91rm9200-clk-peripheral";
 					#address-cells = <1>;
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 08/15] at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF)
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (6 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 07/15] at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks (CCF) Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 09/15] at91: dt: sam9261: Added support for the LCD display Jean-Jacques Hiblot
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

When CCF is not used the clocks are not described in the DTS. This patch adds
a clock required for the fb driver

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/mach-at91/at91sam9261.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
index 2c0e940..f17268f 100644
--- a/arch/arm/mach-at91/at91sam9261.c
+++ b/arch/arm/mach-at91/at91sam9261.c
@@ -199,6 +199,7 @@ static struct clk_lookup periph_clocks_lookups[] = {
 	/* more tc lookup table for DT entries */
 	CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
 	CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &hck0),
+	CLKDEV_CON_DEV_ID("hclk", "600000.fb", &hck1),
 	CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk),
 	CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk),
 	CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk),
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 09/15] at91: dt: sam9261: Added support for the LCD display
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (7 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 08/15] at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF) Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 10/15] at91: dt: at91sam9261ek: " Jean-Jacques Hiblot
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261.dtsi | 39 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
index 97e6b62..79d7554 100644
--- a/arch/arm/boot/dts/at91sam9261.dtsi
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -57,6 +57,17 @@
 			status = "disabled";
 		};
 
+		fb0: fb at 0x00600000 {
+			compatible = "atmel,at91sam9261-lcdc";
+			reg = <0x00600000 0x1000>;
+			interrupts = <21 IRQ_TYPE_LEVEL_HIGH 3>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_fb>;
+			clocks = <&lcd_clk>, <&hclk1>;
+			clock-names = "lcdc_clk", "hclk";
+			status = "disabled";
+		};
+
 		nand0: nand at 40000000 {
 			compatible = "atmel,at91rm9200-nand";
 			#address-cells = <1>;
@@ -432,6 +443,34 @@
 					};
 				};
 
+				fb {
+					pinctrl_fb: fb-0 {
+						atmel,pins =
+							<AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 7 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 8 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 9 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 11 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 12 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 15 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 16 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 17 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 18 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 19 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 20 AT91_PERIPH_A AT91_PINCTRL_NONE
+							 AT91_PIOB 23 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOB 24 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOB 25 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOB 26 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOB 27 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 AT91_PIOB 28 AT91_PERIPH_B AT91_PINCTRL_NONE
+							 >;
+					};
+				};
+
 				pioA: gpio at fffff400 {
 					compatible = "atmel,at91rm9200-gpio";
 					reg = <0xfffff400 0x200>;
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 10/15] at91: dt: at91sam9261ek: Added support for the LCD display
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (8 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 09/15] at91: dt: sam9261: Added support for the LCD display Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 11/15] at91: dt: Adds support for the bus matrix declaration in the device tree Jean-Jacques Hiblot
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261ek.dts | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
index 5555e9f5..287b283 100644
--- a/arch/arm/boot/dts/at91sam9261ek.dts
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -32,6 +32,37 @@
 	};
 
 	ahb {
+		fb0: fb at 0x00600000 {
+			display = <&display0>;
+			atmel,power-control-gpio = <&pioA 12 GPIO_ACTIVE_LOW>;
+			status = "okay";
+
+			display0: display {
+				bits-per-pixel = <16>;
+				atmel,lcdcon-backlight;
+				atmel,dmacon = <0x1>;
+				atmel,lcdcon2 = <0x80008002>;
+				atmel,guard-time = <1>;
+				atmel,lcd-wiring-mode = "BRG";
+
+				display-timings {
+					native-mode = <&timing0>;
+					timing0: timing0 {
+						clock-frequency = <4965000>;
+						hactive = <240>;
+						vactive = <320>;
+						hback-porch = <1>;
+						hfront-porch = <33>;
+						vback-porch = <1>;
+						vfront-porch = <0>;
+						hsync-len = <5>;
+						vsync-len = <1>;
+						hsync-active = <1>;
+						vsync-active = <1>;
+					};
+				};
+			};
+		};
 
 		nand0: nand at 40000000 {
 			nand-bus-width = <8>;
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 11/15] at91: dt: Adds support for the bus matrix declaration in the device tree
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (9 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 10/15] at91: dt: at91sam9261ek: " Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 12/15] at91: dt: sam9261: adds description for the bus matrix Jean-Jacques Hiblot
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/mach-at91/setup.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
index 7d3f7cc..f61638d 100644
--- a/arch/arm/mach-at91/setup.c
+++ b/arch/arm/mach-at91/setup.c
@@ -483,6 +483,28 @@ end:
 	of_node_put(np);
 }
 
+static struct of_device_id matrix_ids[] = {
+	{ .compatible = "atmel,at91sam9261-bus-matrix", },
+	{ /*sentinel*/ }
+};
+
+static void at91_dt_matrix(void)
+{
+	struct device_node *np;
+
+	np = of_find_matching_node(NULL, matrix_ids);
+	if (!np) {
+		pr_debug("AT91: unable to find compatible bus matrix controller node in dtb\n");
+		return;
+	}
+
+	at91_matrix_base = of_iomap(np, 0);
+	if (!at91_matrix_base)
+		panic("Impossible to ioremap at91_matrix_base\n");
+
+	of_node_put(np);
+}
+
 void __init at91rm9200_dt_initialize(void)
 {
 	at91_dt_ramc();
@@ -502,6 +524,7 @@ void __init at91_dt_initialize(void)
 	at91_dt_rstc();
 	at91_dt_ramc();
 	at91_dt_shdwc();
+	at91_dt_matrix();
 
 	/* Init clock subsystem */
 	at91_dt_clock_init();
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 12/15] at91: dt: sam9261: adds description for the bus matrix
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (10 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 11/15] at91: dt: Adds support for the bus matrix declaration in the device tree Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 13/15] at91: dt: sam9261: CCF: Added USB clocks Jean-Jacques Hiblot
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
index 79d7554..112e587 100644
--- a/arch/arm/boot/dts/at91sam9261.dtsi
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -220,6 +220,11 @@
 				reg = <0xffffea00 0x200>;
 			};
 
+			matrix: matrix at ffffee00 {
+				compatible = "atmel,at91sam9261-bus-matrix";
+				reg = <0xffffee00 0x200>;
+			};
+
 			aic: interrupt-controller at fffff000 {
 				#interrupt-cells = <3>;
 				compatible = "atmel,at91rm9200-aic";
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 13/15] at91: dt: sam9261: CCF: Added USB clocks
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (11 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 12/15] at91: dt: sam9261: adds description for the bus matrix Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 14/15] at91: dt: at91sam9261ek: Enabled the USB host port (OHCI) Jean-Jacques Hiblot
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261.dtsi | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
index 112e587..2a87c19 100644
--- a/arch/arm/boot/dts/at91sam9261.dtsi
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -54,6 +54,8 @@
 			compatible = "atmel,at91rm9200-ohci", "usb-ohci";
 			reg = <0x00500000 0x100000>;
 			interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
+			clocks = <&usb>, <&ohci_clk>, <&hclk0>, <&uhpck>;
+			clock-names = "usb_clk", "ohci_clk", "hclk", "uhpck";
 			status = "disabled";
 		};
 
@@ -107,6 +109,8 @@
 				compatible = "atmel,at91rm9200-udc";
 				reg = <0xfffa4000 0x4000>;
 				interrupts = <10 IRQ_TYPE_LEVEL_HIGH 2>;
+				clocks = <&usb>, <&udc_clk>, <&udpck>;
+				clock-names = "usb_clk", "udc_clk", "udpck";
 				status = "disabled";
 			};
 
@@ -563,11 +567,30 @@
 					atmel,clk-divisors = <1 2 4 3>;
 				};
 
+				usb: usbck {
+					compatible = "atmel,at91rm9200-clk-usb";
+					#clock-cells = <0>;
+					atmel,clk-divisors = <1 2 4 3>;
+					clocks = <&pllb>;
+				};
+
 				systemck {
 					compatible = "atmel,at91rm9200-clk-system";
 					#address-cells = <1>;
 					#size-cells = <0>;
 
+					uhpck: uhpck {
+						#clock-cells = <0>;
+						reg = <6>;
+						clocks = <&usb>;
+					};
+
+					udpck: udpck {
+						#clock-cells = <0>;
+						reg = <7>;
+						clocks = <&usb>;
+					};
+
 					hclk0: hclk0 {
 						#clock-cells = <0>;
 						reg = <16>;
@@ -623,6 +646,11 @@
 						reg = <9>;
 					};
 
+					udc_clk: udc_clk {
+						#clock-cells = <0>;
+						reg = <10>;
+					};
+
 					twi0_clk: twi0_clk {
 						reg = <11>;
 						#clock-cells = <0>;
@@ -643,6 +671,11 @@
 						reg = <17>;
 					};
 
+					ohci_clk: ohci_clk {
+						#clock-cells = <0>;
+						reg = <20>;
+					};
+
 					lcd_clk: lcd_clk {
 						#clock-cells = <0>;
 						reg = <21>;
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 14/15] at91: dt: at91sam9261ek: Enabled the USB host port (OHCI)
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (12 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 13/15] at91: dt: sam9261: CCF: Added USB clocks Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-01-23 15:57 ` [PATCH v3 15/15] at91: dt: at91sam9261ek: Enabled the USB device port Jean-Jacques Hiblot
  2014-02-07  8:33 ` [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Christophe PLAGNIOL-VILLARD
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261ek.dts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
index 287b283..8bdbed9 100644
--- a/arch/arm/boot/dts/at91sam9261ek.dts
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -32,6 +32,10 @@
 	};
 
 	ahb {
+		usb0: ohci at 00500000 {
+			status = "okay";
+		};
+
 		fb0: fb at 0x00600000 {
 			display = <&display0>;
 			atmel,power-control-gpio = <&pioA 12 GPIO_ACTIVE_LOW>;
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 15/15] at91: dt: at91sam9261ek: Enabled the USB device port
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (13 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 14/15] at91: dt: at91sam9261ek: Enabled the USB host port (OHCI) Jean-Jacques Hiblot
@ 2014-01-23 15:57 ` Jean-Jacques Hiblot
  2014-02-07  8:33 ` [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Christophe PLAGNIOL-VILLARD
  15 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-01-23 15:57 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
 arch/arm/boot/dts/at91sam9261ek.dts | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
index 8bdbed9..36cf677 100644
--- a/arch/arm/boot/dts/at91sam9261ek.dts
+++ b/arch/arm/boot/dts/at91sam9261ek.dts
@@ -106,6 +106,11 @@
 		};
 
 		apb {
+			usb1: gadget at fffa4000 {
+				atmel,vbus-gpio = <&pioB 29 GPIO_ACTIVE_HIGH>;
+				status = "okay";
+			};
+
 			dbgu: serial at fffff200 {
 				status = "okay";
 			};
-- 
1.8.5.2

^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support
  2014-01-23 15:57 ` [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support Jean-Jacques Hiblot
@ 2014-02-07  8:23   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-02-07  8:43     ` Boris BREZILLON
  0 siblings, 1 reply; 31+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-02-07  8:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
> This patch adds the basics to support the Device Tree on a sam9261-based platform
> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
>  arch/arm/boot/dts/at91sam9261.dtsi | 627 +++++++++++++++++++++++++++++++++++++
>  arch/arm/mach-at91/at91sam9261.c   |  15 +
>  2 files changed, 642 insertions(+)
>  create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
> 
> diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
> new file mode 100644
> index 0000000..2730611
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91sam9261.dtsi
> @@ -0,0 +1,627 @@
> +/*
> + * at91sam9261.dtsi - Device Tree Include file for AT91SAM9261 SoC
> + *
> + *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> + *
> + * Licensed under GPLv2 only.
> + */
> +
> +#include "skeleton.dtsi"
> +#include <dt-bindings/pinctrl/at91.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/clk/at91.h>
> +
> +/ {
> +	model = "Atmel AT91SAM9261 family SoC";
> +	compatible = "atmel,at91sam9261";
> +	interrupt-parent = <&aic>;
> +
> +	aliases {
> +		serial0 = &dbgu;
> +		serial1 = &usart0;
> +		serial2 = &usart1;
> +		serial3 = &usart2;
> +		gpio0 = &pioA;
> +		gpio1 = &pioB;
> +		gpio2 = &pioC;
> +		tcb0 = &tcb0;
> +		i2c0 = &i2c0;
> +		ssc0 = &ssc0;
> +		ssc1 = &ssc1;
> +	};
> +	cpus {
> +		#address-cells = <0>;
> +		#size-cells = <0>;
> +
> +		cpu {
> +			compatible = "arm,arm926ej-s";
> +			device_type = "cpu";
> +		};
> +	};
> +
> +	memory {
> +		reg = <0x20000000 0x08000000>;
> +	};
> +
> +	ahb {
> +		compatible = "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges;
> +
> +		usb0: ohci at 00500000 {
> +			compatible = "atmel,at91rm9200-ohci", "usb-ohci";
> +			reg = <0x00500000 0x100000>;
> +			interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
as requested before use the new interrupt property
interrupts-extended (mandatory)

there is missing 
			pinctrl-names = "default";

on mmc & co
> +			status = "disabled";
> +		};
> +
> +		nand0: nand at 40000000 {
> +			compatible = "atmel,at91rm9200-nand";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			reg = <0x40000000 0x10000000>;
> +			atmel,nand-addr-offset = <22>;
> +			atmel,nand-cmd-offset = <21>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_nand>;
> +
> +			gpios = <&pioC 15 GPIO_ACTIVE_HIGH
> +				&pioC 14 GPIO_ACTIVE_HIGH
> +				0
> +				>;
> +			status = "disabled";
> +		};
> +
> +		apb {
> +			compatible = "simple-bus";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges;
> +
> +			tcb0: timer at fffa0000 {
> +				compatible = "atmel,at91rm9200-tcb";
> +				reg = <0xfffa0000 0x100>;
> +				interrupts = < 17 IRQ_TYPE_LEVEL_HIGH 0
> +					18 IRQ_TYPE_LEVEL_HIGH 0
> +					19 IRQ_TYPE_LEVEL_HIGH 0
> +					>;
> +				clocks = <&tcb0_clk>;
> +				clock-names = "t0_clk";
> +				status = "disabled";
we use the tcb as shedule clock this should be on by default
> +			};
> +
> +			usb1: gadget at fffa4000 {
> +				compatible = "atmel,at91rm9200-udc";
> +				reg = <0xfffa4000 0x4000>;
> +				interrupts = <10 IRQ_TYPE_LEVEL_HIGH 2>;
> +				status = "disabled";
> +			};
> +
> +			mmc0: mmc at fffa8000 {
> +				compatible = "atmel,hsmci";
> +				reg = <0xfffa8000 0x600>;
> +				interrupts = <9 IRQ_TYPE_LEVEL_HIGH 0>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				clocks = <&mci0_clk>;
> +				clock-names = "mci_clk";
> +				status = "disabled";
> +			};
> +
> +			i2c0: i2c at fffac000 {
> +				compatible = "atmel,at91sam9261-i2c";
> +				pinctrl-0 = <&pinctrl_i2c_twi>;
> +				reg = <0xfffac000 0x100>;
> +				interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				clocks = <&twi0_clk>;
> +				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>;
> +				clocks = <&usart0_clk>;
> +				clock-names = "usart";
> +				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>;
> +				clocks = <&usart1_clk>;
> +				clock-names = "usart";
> +				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>;
> +				clocks = <&usart2_clk>;
> +				clock-names = "usart";
> +				status = "disabled";
> +			};
> +
> +			ssc0: ssc at fffbc000 {
> +				compatible = "atmel,at91rm9200-ssc";
> +				reg = <0xfffbc000 0x4000>;
> +				interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
> +				status = "disabled";
> +			};
> +
> +			ssc1: ssc at fffc0000 {
> +				compatible = "atmel,at91rm9200-ssc";
> +				reg = <0xfffc0000 0x4000>;
> +				interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
> +				status = "disabled";
> +			};
> +
> +			spi0: spi at fffc8000 {
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				compatible = "atmel,at91rm9200-spi";
> +				reg = <0xfffc8000 0x200>;
> +				interrupts = <12 IRQ_TYPE_LEVEL_HIGH 3>;
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_spi0>;
> +				clocks = <&spi0_clk>;
> +				clock-names = "spi_clk";
> +				status = "disabled";
> +			};
> +
> +			spi1: 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_spi1>;
> +				clocks = <&spi1_clk>;
> +				clock-names = "spi_clk";
> +				status = "disabled";
> +			};
as said for sama5d3 we need to have macro for the hw CS as GPIO to make it
more clear to use and read
> +
> +			ramc: 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 = <29 30 31>;
> +			};
one missing empty line
> +			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>;
> +				clocks = <&mck>;
> +				clock-names = "usart";
> +				status = "disabled";
> +			};
> +
> +			pinctrl at fffff400 {
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
> +				ranges = <0xfffff400 0xfffff400 0xa00>;
> +
> +				atmel,mux-mask = <
> +				      /*    A         B     */
> +				       0xffffffff 0xfffffff7  /* pioA */
> +				       0xffffffff 0xfffffff4  /* pioB */
> +				       0xffffffff 0xffffff07  /* pioC */
> +				      >;
> +
> +				/* shared pinctrl settings */
> +				dbgu {
> +					pinctrl_dbgu: dbgu-0 {
> +						atmel,pins =
> +							<AT91_PIOA 9  AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
> +					};
> +				};
> +
> +				usart0 {
> +					pinctrl_usart0: usart0-0 {
> +						atmel,pins =
> +							<AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> +							 AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart0_rts: usart0_rts-0 {
> +						atmel,pins =
> +							<AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart0_cts: usart0_cts-0 {
> +						atmel,pins =
> +							<AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				usart1 {
> +					pinctrl_usart1: usart1-0 {
> +						atmel,pins =
> +							<AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> +							 AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart1_rts: usart1_rts-0 {
> +						atmel,pins =
> +							<AT91_PIOA 12 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart1_cts: usart1_cts-0 {
> +						atmel,pins =
> +							<AT91_PIOA 13 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				usart2 {
> +					pinctrl_usart2: usart2-0 {
> +						atmel,pins =
> +							<AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
> +							 AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart2_rts: usart2_rts-0 {
> +						atmel,pins =
> +							<AT91_PIOA 15 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_usart2_cts: usart2_cts-0 {
> +						atmel,pins =
> +							<AT91_PIOA 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				nand {
> +					pinctrl_nand: nand-0 {
> +						atmel,pins =
> +							<AT91_PIOC 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
> +							 AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
> +					};
> +				};
> +
> +				mmc0 {
> +					pinctrl_mmc0_clk: mmc0_clk-0 {
> +						atmel,pins =
> +							<AT91_PIOA 2 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
> +						atmel,pins =
> +							<AT91_PIOA 1 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
> +							 AT91_PIOA 0 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
> +					};
> +
> +					pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
> +						atmel,pins =
> +							<AT91_PIOA 4 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
> +							 AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
> +							 AT91_PIOA 6 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
> +					};
> +					};
> +
> +				ssc0 {
> +					pinctrl_ssc0_tx: ssc0_tx-0 {
> +						atmel,pins =
> +							<AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_ssc0_rx: ssc0_rx-0 {
> +						atmel,pins =
> +							<AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 26 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				ssc1 {
> +					pinctrl_ssc1_tx: ssc1_tx-0 {
> +						atmel,pins =
> +							<AT91_PIOA 17 AT91_PERIPH_B AT91_PINCTRL_NONE
> +							 AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE
> +							 AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_ssc1_rx: ssc1_rx-0 {
> +						atmel,pins =
> +							<AT91_PIOA 20 AT91_PERIPH_B AT91_PINCTRL_NONE
> +							 AT91_PIOA 21 AT91_PERIPH_B AT91_PINCTRL_NONE
> +							 AT91_PIOA 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				spi0 {
> +					pinctrl_spi0: spi0-0 {
> +						atmel,pins =
> +							<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +					};
> +
> +				spi1 {
> +					pinctrl_spi1: spi1-0 {
> +						atmel,pins =
> +							<AT91_PIOB 30 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 31 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							 AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				tcb0 {
> +					pinctrl_tcb0_tclk0: tcb0_tclk0-0 {
> +						atmel,pins = <AT91_PIOC 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tclk1: tcb0_tclk1-0 {
> +						atmel,pins = <AT91_PIOC 17 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tclk2: tcb0_tclk2-0 {
> +						atmel,pins = <AT91_PIOC 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tioa0: tcb0_tioa0-0 {
> +						atmel,pins = <AT91_PIOC 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tioa1: tcb0_tioa1-0 {
> +						atmel,pins = <AT91_PIOC 21 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tioa2: tcb0_tioa2-0 {
> +						atmel,pins = <AT91_PIOC 23 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tiob0: tcb0_tiob0-0 {
> +						atmel,pins = <AT91_PIOC 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tiob1: tcb0_tiob1-0 {
> +						atmel,pins = <AT91_PIOC 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_tcb0_tiob2: tcb0_tiob2-0 {
> +						atmel,pins = <AT91_PIOC 24 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +				};
> +
> +				i2c0 {
> +					pinctrl_i2c_bitbang: i2c-0-bitbang {
> +						atmel,pins =
> +							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +							AT91_PIOA 8 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
> +					};
> +					pinctrl_i2c_twi: i2c-0-twi {
> +						atmel,pins =
> +							<AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_NONE
> +							AT91_PIOA 8 AT91_PERIPH_A 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>;
> +					clocks = <&pioA_clk>;
> +				};
> +
> +				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>;
> +					clocks = <&pioB_clk>;
> +				};
> +
> +				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>;
> +					clocks = <&pioC_clk>;
> +				};
> +			};
> +
> +			pmc: pmc at fffffc00 {
> +				compatible = "atmel,at91rm9200-pmc";
> +				reg = <0xfffffc00 0x100>;
> +				interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
> +				interrupt-controller;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				#interrupt-cells = <1>;
> +
> +				clk32k: slck {
> +					compatible = "fixed-clock";
> +					#clock-cells = <0>;
> +					clock-frequency = <32768>;
> +				};
> +
> +				main: mainck {
> +					compatible = "atmel,at91rm9200-clk-main";
> +					#clock-cells = <0>;
> +					interrupts-extended = <&pmc AT91_PMC_MOSCS>;
> +					clocks = <&clk32k>;
> +				};
> +
> +				plla: pllack {
> +					compatible = "atmel,at91rm9200-clk-pll";
> +					#clock-cells = <0>;
> +					interrupts-extended = <&pmc AT91_PMC_LOCKA>;
> +					clocks = <&main>;
> +					reg = <0>;
> +					atmel,clk-input-range = <1000000 32000000>;
> +					#atmel,pll-clk-output-range-cells = <4>;
> +					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
> +				};
> +
> +				pllb: pllbck {
> +					compatible = "atmel,at91rm9200-clk-pll";
> +					#clock-cells = <0>;
> +					interrupts-extended = <&pmc AT91_PMC_LOCKB>;
> +					clocks = <&main>;
> +					reg = <1>;
> +					atmel,clk-input-range = <1000000 32000000>;
> +					#atmel,pll-clk-output-range-cells = <4>;
> +					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
> +				};
> +
> +				mck: masterck {
> +					compatible = "atmel,at91rm9200-clk-master";
> +					#clock-cells = <0>;
> +					interrupts-extended = <&pmc AT91_PMC_MCKRDY>;
> +					clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
> +					atmel,clk-output-range = <0 94000000>;
> +					atmel,clk-divisors = <1 2 4 3>;
> +				};
> +				periphck {
> +					compatible = "atmel,at91rm9200-clk-peripheral";
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					clocks = <&mck>;
> +
> +					pioA_clk: pioA_clk {
> +						#clock-cells = <0>;
> +						reg = <2>;
> +					};
> +
> +					pioB_clk: pioB_clk {
> +						#clock-cells = <0>;
> +						reg = <3>;
> +					};
> +
> +					pioC_clk: pioC_clk {
> +						#clock-cells = <0>;
> +						reg = <4>;
> +					};
> +
> +					usart0_clk: usart0_clk {
> +						#clock-cells = <0>;
> +						reg = <6>;
> +					};
> +
> +					usart1_clk: usart1_clk {
> +						#clock-cells = <0>;
> +						reg = <7>;
> +					};
> +
> +					usart2_clk: usart2_clk {
> +						#clock-cells = <0>;
> +						reg = <8>;
> +					};
> +
> +					mci0_clk: mci0_clk {
> +						#clock-cells = <0>;
> +						reg = <9>;
> +					};
> +
> +					twi0_clk: twi0_clk {
> +						reg = <11>;
> +						#clock-cells = <0>;
> +					};
> +
> +					spi0_clk: spi0_clk {
> +						#clock-cells = <0>;
> +						reg = <12>;
> +					};
> +
> +					spi1_clk: spi1_clk {
> +						#clock-cells = <0>;
> +						reg = <13>;
> +					};
> +
> +					tcb0_clk: tcb0_clk {
> +						#clock-cells = <0>;
> +						reg = <17>;
> +					};
> +
> +					lcd_clk: lcd_clk {
> +						#clock-cells = <0>;
> +						reg = <21>;
> +					};
> +				};
> +			};
> +
> +			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>;
> +				clocks = <&mck>;
> +			};
> +
> +			watchdog at fffffd40 {
> +				compatible = "atmel,at91sam9260-wdt";
> +				reg = <0xfffffd40 0x10>;
> +				status = "disabled";
> +			};
> +		};
> +	};
> +
> +	i2c at 0 {
> +		compatible = "i2c-gpio";
> +		pinctrl-0 = <&pinctrl_i2c_bitbang>;
> +		gpios = <&pioA 7 GPIO_ACTIVE_HIGH /* sda */
> +			 &pioA 8 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>;
> +		status = "disabled";
> +	};
> +};
> diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
> index 6276b4c..6a2c869 100644
> --- a/arch/arm/mach-at91/at91sam9261.c
> +++ b/arch/arm/mach-at91/at91sam9261.c
> @@ -189,6 +189,21 @@ static struct clk_lookup periph_clocks_lookups[] = {
>  	CLKDEV_CON_ID("pioA", &pioA_clk),
>  	CLKDEV_CON_ID("pioB", &pioB_clk),
>  	CLKDEV_CON_ID("pioC", &pioC_clk),
> +	/* more usart 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", "fff94000.serial", &usart2_clk),
> +	/* more tc lookup table for DT entries */
> +	CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
> +	CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &hck0),
> +	CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk),
> +	CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk),
> +	CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk),
> +	CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi_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),

do we really need this with ccf?
>  };
>  
>  static struct clk_lookup usart_clocks_lookups[] = {
> -- 
> 1.8.5.2
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC
  2014-01-23 15:57 ` [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC Jean-Jacques Hiblot
@ 2014-02-07  8:25   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-02-07  8:35     ` Boris BREZILLON
  0 siblings, 1 reply; 31+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-02-07  8:25 UTC (permalink / raw)
  To: linux-arm-kernel

On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>  This patch encloses sam9261 old clk registration in
> "#if defined(CONFIG_OLD_CLK_AT91) #endif" sections.
> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
>  arch/arm/mach-at91/at91sam9261.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
> index 6a2c869..2c0e940 100644
> --- a/arch/arm/mach-at91/at91sam9261.c
> +++ b/arch/arm/mach-at91/at91sam9261.c
> @@ -25,10 +25,12 @@
>  #include "at91_rstc.h"
>  #include "soc.h"
>  #include "generic.h"
> -#include "clock.h"
>  #include "sam9_smc.h"
>  #include "pm.h"
>  
> +#if defined(CONFIG_OLD_CLK_AT91)
> +#include "clock.h"
> +
>  /* --------------------------------------------------------------------
>   *  Clocks
>   * -------------------------------------------------------------------- */
> @@ -262,7 +264,7 @@ static void __init at91sam9261_register_clocks(void)
>  	clk_register(&hck0);
>  	clk_register(&hck1);
>  }
> -
do this here

#else
#define at91sam9261_register_clocks NULL
> +#endif
>  /* --------------------------------------------------------------------
>   *  GPIO
>   * -------------------------------------------------------------------- */
> @@ -362,6 +364,8 @@ AT91_SOC_START(at91sam9261)
>  	.extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
>  		    | (1 << AT91SAM9261_ID_IRQ2),
>  	.ioremap_registers = at91sam9261_ioremap_registers,
> +#if defined(CONFIG_OLD_CLK_AT91)
>  	.register_clocks = at91sam9261_register_clocks,
> +#endif
so no ifdef here
>  	.init = at91sam9261_initialize,
>  AT91_SOC_END
> -- 
> 1.8.5.2
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  2014-01-23 15:57 ` [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons Jean-Jacques Hiblot
@ 2014-02-07  8:27   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-02-07  9:30     ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 31+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-02-07  8:27 UTC (permalink / raw)
  To: linux-arm-kernel

On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
>  arch/arm/boot/dts/at91sam9261ek.dts | 39 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)

do only one patch for the 9261ek support no nned to clean
> 
> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
> index 8909217..5555e9f5 100644
> --- a/arch/arm/boot/dts/at91sam9261ek.dts
> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
> @@ -83,6 +83,15 @@
>  						AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>  					};
>  				};
> +
> +				keys {
> +					pinctrl_keys: keys-0 {
> +						atmel,pins = <AT91_PIOA 27  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +						AT91_PIOA 26  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +						AT91_PIOA 25  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +						AT91_PIOA 24  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
> +					};
> +				};

no need this you can drop it

you just describe a gpio which we do not describe in pinctrl
>  			};
>  
>  			watchdog at fffffd40 {
> @@ -109,4 +118,34 @@
>  			linux,default-trigger = "heartbeat";
>  		};
>  	};
> +
> +	gpio_keys {
> +		compatible = "gpio-keys";
> +		pinctrl-0 = <&pinctrl_keys>;
> +
> +		button_0 {
> +			label = "button_0";
> +			gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
> +			linux,code = <256>;
> +			gpio-key,wakeup;
> +		};
> +		button_1 {
> +			label = "button_1";
> +			gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
> +			linux,code = <257>;
> +			gpio-key,wakeup;
> +		};
> +		button_2 {
> +			label = "button_2";
> +			gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
> +			linux,code = <258>;
> +			gpio-key,wakeup;
> +		};
> +		button_3 {
> +			label = "button_3";
> +			gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
> +			linux,code = <259>;
> +			gpio-key,wakeup;
> +		};
> +	};
>  };
> -- 
> 1.8.5.2
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
  2014-01-23 15:57 ` [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
@ 2014-02-07  8:30   ` Jean-Christophe PLAGNIOL-VILLARD
  2014-02-07  9:33     ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 31+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-02-07  8:30 UTC (permalink / raw)
  To: linux-arm-kernel

On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
> This patch implements a simple DTS to boot a at91sam9261ek with a dt-enabled
> kernel (at91_dt_defconfig).
> Only dbgu, nand and watchdog are described in the DT.
> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
>  arch/arm/boot/dts/Makefile          |   2 +
>  arch/arm/boot/dts/at91sam9261ek.dts | 112 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 114 insertions(+)
>  create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 772a30e..ece523d 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -11,6 +11,8 @@ dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
>  dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
>  dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb
>  dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb
> +# sam9261
> +dtb-$(CONFIG_ARCH_AT91) += at91sam9261ek.dtb
>  # sam9263
>  dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb
>  dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb
> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
> new file mode 100644
> index 0000000..8909217
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
> @@ -0,0 +1,112 @@
> +/*
> + * at91sam9261ek.dts - Device Tree file for Atmel at91sam9261 reference board
> + *
> + *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> + *
> + * Licensed under GPLv2 only.
> + */
> +/dts-v1/;
> +#include "at91sam9261.dtsi"
> +
> +/ {
> +	model = "Atmel at91sam9261ek";
> +	compatible = "atmel,at91sam9261ek", "atmel,at91sam9261", "atmel,at91sam9";
> +
> +	chosen {
> +		bootargs = "mem=64M console=ttyS0,115200";
drop the mem=64M

and use linux,stdout for the console
> +	};
> +
> +	memory {
> +		reg = <0x20000000 0x4000000>;
> +	};
> +
> +	clocks {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges;
> +
> +		main_clock: clock at 0 {
> +			compatible = "atmel,osc", "fixed-clock";
> +			clock-frequency = <18432000>;
> +		};
> +	};
> +
> +	ahb {
> +
> +		nand0: nand at 40000000 {
> +			nand-bus-width = <8>;
> +			nand-ecc-mode = "soft";
> +			nand-on-flash-bbt = <1>;
it's a boolean just
			nand-on-flash-bbt;
> +			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>;
> +			};

we really need to switch to UBI
> +		};
> +
> +		apb {
> +			dbgu: serial at fffff200 {
> +				status = "okay";
> +			};
> +
> +			pinctrl at fffff400 {
> +				leds {
> +					pinctrl_leds: leds-0 {
> +						atmel,pins = <AT91_PIOA 13  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +						AT91_PIOA 14  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
> +						AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
> +					};
> +				};
> +			};

no need this drop it

you need to only describe the GPIO if you have specific pinctrl property such
as pull up & co
> +
> +			watchdog at fffffd40 {
> +				status = "okay";
> +			};
> +		};
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +		ds8 {
> +			label = "ds8";
> +			gpios = <&pioA 13 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "none";
> +		};
> +		ds7 {
> +			label = "ds7";
> +			gpios = <&pioA 14 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "nand-disk";
> +		};
> +		ds1 {
> +			label = "ds1";
> +			gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "heartbeat";
> +		};
> +	};
> +};
> -- 
> 1.8.5.2
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 00/15] Device Tree support for the at91sam9261ek
  2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
                   ` (14 preceding siblings ...)
  2014-01-23 15:57 ` [PATCH v3 15/15] at91: dt: at91sam9261ek: Enabled the USB device port Jean-Jacques Hiblot
@ 2014-02-07  8:33 ` Jean-Christophe PLAGNIOL-VILLARD
  2014-02-07  9:36   ` Jean-Jacques Hiblot
  15 siblings, 1 reply; 31+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-02-07  8:33 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

	please re-organise your patch serie

	first SoC patch
	  - first CCF
	  - one patch for the SoC
	second add the board 1 patch

	no need 15 patches

Best Regards,
J.
On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
> This patch set aims at bringing a basic device tree support for the sam9261.
> It's mostly based on the sam9263 and sam9x5 stuff.
> 
> Changes since V2:
> * removed the smc driver from the serie. It'll be posted in an independent
>   serie later.
> * removed the DM9000 support (it'll come with the smc driver)
> * the sam9261 now supports the Common Clock Framework (CCF). Note: to enable
>   the CCF you must remove from the kernel config the platforms that don't
>   support it.
> * Added basic DT binding for the bus matrix
> * Added support for USB host
> * Added support for USB gadget
> * in dts(i), replaced interrupt-parent with interrupts-extended
> * changed the nand partition plan (same as for the sama5d3)
> * removed 'mem' parameter in command line
> * re-ordered dt-nodes in ascending address order.
> * split the lcd support patch in 2 parts (SOC and board)
> 
> 
> Change since V1:
> * changed the DT representation to use address translation and separate the
>   timings' configuration from the device properties by adding a "simple-bus"
>   inetrmediate node.
> * moved the smc driver from drivers/bus to drivers/memmory
> * smc driver now accepts timings in nanoseconds as well as raw register values
> * smc driver can clip the timings if they're out of bound and dump them to the
>   console
> * DM9000 timings are now described in nanosecs (for the virtue of example)
> 
> supported features:
> * dbgu
> * nand
> * lcd
> * leds
> * user buttons
> * usb host
> * usb gadget
> 
> This serie relies on the 3 following patchs:
> usb: ohci-at91: fix irq and iomem resource retrieval
> usb: at91-udc: fix irq and iomem resource retrieval
> ARM: at91: prepare sam9 dt boards transition to common
> 
> Jean-Jacques
> 
> 
> 
> Jean-Jacques Hiblot (15):
>   at91: dt: Add at91sam9261 dt SoC support
>   at91: dt: defconfig: Added the sam9261 to the list of supported SOCs
>   at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
>   ARM: at91: prepare common clk transition for sam9261 SoC
>   ARM: at91: move sam9261 SoC to common clk
>   at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
>   at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks
>     (CCF)
>   at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF)
>   at91: dt: sam9261: Added support for the LCD display
>   at91: dt: at91sam9261ek: Added support for the LCD display
>   at91: dt: Adds support for the bus matrix declaration in the device
>     tree
>   at91: dt: sam9261: adds description for the bus matrix
>   at91: dt: sam9261: CCF: Added USB clocks
>   at91: dt: at91sam9261ek: Enabled the USB host port (OHCI)
>   at91: dt: at91sam9261ek: Enabled the USB device port
> 
>  arch/arm/boot/dts/Makefile          |   2 +
>  arch/arm/boot/dts/at91sam9261.dtsi  | 724 ++++++++++++++++++++++++++++++++++++
>  arch/arm/boot/dts/at91sam9261ek.dts | 191 ++++++++++
>  arch/arm/configs/at91_dt_defconfig  |   1 +
>  arch/arm/mach-at91/Kconfig          |   1 -
>  arch/arm/mach-at91/at91sam9261.c    |  24 +-
>  arch/arm/mach-at91/setup.c          |  23 ++
>  7 files changed, 963 insertions(+), 3 deletions(-)
>  create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
>  create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts
> 
> -- 
> 1.8.5.2
> 

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC
  2014-02-07  8:25   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2014-02-07  8:35     ` Boris BREZILLON
  2014-02-07  9:38       ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 31+ messages in thread
From: Boris BREZILLON @ 2014-02-07  8:35 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Jean-Christophe,

On 07/02/2014 09:25, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>>   This patch encloses sam9261 old clk registration in
>> "#if defined(CONFIG_OLD_CLK_AT91) #endif" sections.
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> ---
>>   arch/arm/mach-at91/at91sam9261.c | 8 ++++++--
>>   1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
>> index 6a2c869..2c0e940 100644
>> --- a/arch/arm/mach-at91/at91sam9261.c
>> +++ b/arch/arm/mach-at91/at91sam9261.c
>> @@ -25,10 +25,12 @@
>>   #include "at91_rstc.h"
>>   #include "soc.h"
>>   #include "generic.h"
>> -#include "clock.h"
>>   #include "sam9_smc.h"
>>   #include "pm.h"
>>   
>> +#if defined(CONFIG_OLD_CLK_AT91)
>> +#include "clock.h"
>> +
>>   /* --------------------------------------------------------------------
>>    *  Clocks
>>    * -------------------------------------------------------------------- */
>> @@ -262,7 +264,7 @@ static void __init at91sam9261_register_clocks(void)
>>   	clk_register(&hck0);
>>   	clk_register(&hck1);
>>   }
>> -
> do this here
>
> #else
> #define at91sam9261_register_clocks NULL
>> +#endif
>>   /* --------------------------------------------------------------------
>>    *  GPIO
>>    * -------------------------------------------------------------------- */
>> @@ -362,6 +364,8 @@ AT91_SOC_START(at91sam9261)
>>   	.extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
>>   		    | (1 << AT91SAM9261_ID_IRQ2),
>>   	.ioremap_registers = at91sam9261_ioremap_registers,
>> +#if defined(CONFIG_OLD_CLK_AT91)
>>   	.register_clocks = at91sam9261_register_clocks,
>> +#endif
> so no ifdef here

I guess he did this based on what I did for the sama5 SoC, but you're right:
your proposal is cleaner.

Best Regards,

Boris

>>   	.init = at91sam9261_initialize,
>>   AT91_SOC_END
>> -- 
>> 1.8.5.2
>>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support
  2014-02-07  8:23   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2014-02-07  8:43     ` Boris BREZILLON
  2014-02-07  9:47       ` Jean-Jacques Hiblot
  0 siblings, 1 reply; 31+ messages in thread
From: Boris BREZILLON @ 2014-02-07  8:43 UTC (permalink / raw)
  To: linux-arm-kernel

Hello Jean-Christophe,

On 07/02/2014 09:23, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>> This patch adds the basics to support the Device Tree on a sam9261-based platform
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> ---
>>   arch/arm/boot/dts/at91sam9261.dtsi | 627 +++++++++++++++++++++++++++++++++++++
>>   arch/arm/mach-at91/at91sam9261.c   |  15 +
>>   2 files changed, 642 insertions(+)
>>   create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
>>
>> diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
>> new file mode 100644
>> index 0000000..2730611
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/at91sam9261.dtsi
>> @@ -0,0 +1,627 @@
>> +/*
>> + * at91sam9261.dtsi - Device Tree Include file for AT91SAM9261 SoC
>> + *
>> + *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> + *
>> + * Licensed under GPLv2 only.
>> + */
>> +
>> +#include "skeleton.dtsi"
>> +#include <dt-bindings/pinctrl/at91.h>
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/clk/at91.h>
>> +
>> +/ {
>> +	model = "Atmel AT91SAM9261 family SoC";
>> +	compatible = "atmel,at91sam9261";
>> +	interrupt-parent = <&aic>;
>> +
>> +	aliases {
>> +		serial0 = &dbgu;
>> +		serial1 = &usart0;
>> +		serial2 = &usart1;
>> +		serial3 = &usart2;
>> +		gpio0 = &pioA;
>> +		gpio1 = &pioB;
>> +		gpio2 = &pioC;
>> +		tcb0 = &tcb0;
>> +		i2c0 = &i2c0;
>> +		ssc0 = &ssc0;
>> +		ssc1 = &ssc1;
>> +	};
>> +	cpus {
>> +		#address-cells = <0>;
>> +		#size-cells = <0>;
>> +
>> +		cpu {
>> +			compatible = "arm,arm926ej-s";
>> +			device_type = "cpu";
>> +		};
>> +	};
>> +
>> +	memory {
>> +		reg = <0x20000000 0x08000000>;
>> +	};
>> +
>> +	ahb {
>> +		compatible = "simple-bus";
>> +		#address-cells = <1>;
>> +		#size-cells = <1>;
>> +		ranges;
>> +
>> +		usb0: ohci at 00500000 {
>> +			compatible = "atmel,at91rm9200-ohci", "usb-ohci";
>> +			reg = <0x00500000 0x100000>;
>> +			interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
> as requested before use the new interrupt property
> interrupts-extended (mandatory)
>
> there is missing
> 			pinctrl-names = "default";
>
> on mmc & co
>> +			status = "disabled";
>> +		};
>> +
>> +		nand0: nand at 40000000 {
>> +			compatible = "atmel,at91rm9200-nand";
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +			reg = <0x40000000 0x10000000>;
>> +			atmel,nand-addr-offset = <22>;
>> +			atmel,nand-cmd-offset = <21>;
>> +			pinctrl-names = "default";
>> +			pinctrl-0 = <&pinctrl_nand>;
>> +
>> +			gpios = <&pioC 15 GPIO_ACTIVE_HIGH
>> +				&pioC 14 GPIO_ACTIVE_HIGH
>> +				0
>> +				>;
>> +			status = "disabled";
>> +		};
>> +
>> +		apb {
>> +			compatible = "simple-bus";
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +			ranges;
>> +
>> +			tcb0: timer at fffa0000 {
>> +				compatible = "atmel,at91rm9200-tcb";
>> +				reg = <0xfffa0000 0x100>;
>> +				interrupts = < 17 IRQ_TYPE_LEVEL_HIGH 0
>> +					18 IRQ_TYPE_LEVEL_HIGH 0
>> +					19 IRQ_TYPE_LEVEL_HIGH 0
>> +					>;
>> +				clocks = <&tcb0_clk>;
>> +				clock-names = "t0_clk";
>> +				status = "disabled";
> we use the tcb as shedule clock this should be on by default
>> +			};
>> +
>> +			usb1: gadget at fffa4000 {
>> +				compatible = "atmel,at91rm9200-udc";
>> +				reg = <0xfffa4000 0x4000>;
>> +				interrupts = <10 IRQ_TYPE_LEVEL_HIGH 2>;
>> +				status = "disabled";
>> +			};
>> +
>> +			mmc0: mmc at fffa8000 {
>> +				compatible = "atmel,hsmci";
>> +				reg = <0xfffa8000 0x600>;
>> +				interrupts = <9 IRQ_TYPE_LEVEL_HIGH 0>;
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +				clocks = <&mci0_clk>;
>> +				clock-names = "mci_clk";
>> +				status = "disabled";
>> +			};
>> +
>> +			i2c0: i2c at fffac000 {
>> +				compatible = "atmel,at91sam9261-i2c";
>> +				pinctrl-0 = <&pinctrl_i2c_twi>;
>> +				reg = <0xfffac000 0x100>;
>> +				interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +				clocks = <&twi0_clk>;
>> +				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>;
>> +				clocks = <&usart0_clk>;
>> +				clock-names = "usart";
>> +				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>;
>> +				clocks = <&usart1_clk>;
>> +				clock-names = "usart";
>> +				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>;
>> +				clocks = <&usart2_clk>;
>> +				clock-names = "usart";
>> +				status = "disabled";
>> +			};
>> +
>> +			ssc0: ssc at fffbc000 {
>> +				compatible = "atmel,at91rm9200-ssc";
>> +				reg = <0xfffbc000 0x4000>;
>> +				interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
>> +				pinctrl-names = "default";
>> +				pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
>> +				status = "disabled";
>> +			};
>> +
>> +			ssc1: ssc at fffc0000 {
>> +				compatible = "atmel,at91rm9200-ssc";
>> +				reg = <0xfffc0000 0x4000>;
>> +				interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
>> +				pinctrl-names = "default";
>> +				pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
>> +				status = "disabled";
>> +			};
>> +
>> +			spi0: spi at fffc8000 {
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +				compatible = "atmel,at91rm9200-spi";
>> +				reg = <0xfffc8000 0x200>;
>> +				interrupts = <12 IRQ_TYPE_LEVEL_HIGH 3>;
>> +				pinctrl-names = "default";
>> +				pinctrl-0 = <&pinctrl_spi0>;
>> +				clocks = <&spi0_clk>;
>> +				clock-names = "spi_clk";
>> +				status = "disabled";
>> +			};
>> +
>> +			spi1: 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_spi1>;
>> +				clocks = <&spi1_clk>;
>> +				clock-names = "spi_clk";
>> +				status = "disabled";
>> +			};
> as said for sama5d3 we need to have macro for the hw CS as GPIO to make it
> more clear to use and read
>> +
>> +			ramc: 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 = <29 30 31>;
>> +			};
> one missing empty line
>> +			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>;
>> +				clocks = <&mck>;
>> +				clock-names = "usart";
>> +				status = "disabled";
>> +			};
>> +
>> +			pinctrl at fffff400 {
>> +				#address-cells = <1>;
>> +				#size-cells = <1>;
>> +				compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
>> +				ranges = <0xfffff400 0xfffff400 0xa00>;
>> +
>> +				atmel,mux-mask = <
>> +				      /*    A         B     */
>> +				       0xffffffff 0xfffffff7  /* pioA */
>> +				       0xffffffff 0xfffffff4  /* pioB */
>> +				       0xffffffff 0xffffff07  /* pioC */
>> +				      >;
>> +
>> +				/* shared pinctrl settings */
>> +				dbgu {
>> +					pinctrl_dbgu: dbgu-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 9  AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
>> +					};
>> +				};
>> +
>> +				usart0 {
>> +					pinctrl_usart0: usart0-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart0_rts: usart0_rts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart0_cts: usart0_cts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				usart1 {
>> +					pinctrl_usart1: usart1-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart1_rts: usart1_rts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 12 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart1_cts: usart1_cts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 13 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				usart2 {
>> +					pinctrl_usart2: usart2-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart2_rts: usart2_rts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 15 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_usart2_cts: usart2_cts-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				nand {
>> +					pinctrl_nand: nand-0 {
>> +						atmel,pins =
>> +							<AT91_PIOC 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
>> +					};
>> +				};
>> +
>> +				mmc0 {
>> +					pinctrl_mmc0_clk: mmc0_clk-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 2 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 1 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOA 0 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
>> +					};
>> +
>> +					pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 4 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>> +							 AT91_PIOA 6 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
>> +					};
>> +					};
>> +
>> +				ssc0 {
>> +					pinctrl_ssc0_tx: ssc0_tx-0 {
>> +						atmel,pins =
>> +							<AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_ssc0_rx: ssc0_rx-0 {
>> +						atmel,pins =
>> +							<AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 26 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				ssc1 {
>> +					pinctrl_ssc1_tx: ssc1_tx-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 17 AT91_PERIPH_B AT91_PINCTRL_NONE
>> +							 AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE
>> +							 AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_ssc1_rx: ssc1_rx-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 20 AT91_PERIPH_B AT91_PINCTRL_NONE
>> +							 AT91_PIOA 21 AT91_PERIPH_B AT91_PINCTRL_NONE
>> +							 AT91_PIOA 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				spi0 {
>> +					pinctrl_spi0: spi0-0 {
>> +						atmel,pins =
>> +							<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOA 2 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +					};
>> +
>> +				spi1 {
>> +					pinctrl_spi1: spi1-0 {
>> +						atmel,pins =
>> +							<AT91_PIOB 30 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 31 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							 AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				tcb0 {
>> +					pinctrl_tcb0_tclk0: tcb0_tclk0-0 {
>> +						atmel,pins = <AT91_PIOC 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tclk1: tcb0_tclk1-0 {
>> +						atmel,pins = <AT91_PIOC 17 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tclk2: tcb0_tclk2-0 {
>> +						atmel,pins = <AT91_PIOC 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tioa0: tcb0_tioa0-0 {
>> +						atmel,pins = <AT91_PIOC 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tioa1: tcb0_tioa1-0 {
>> +						atmel,pins = <AT91_PIOC 21 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tioa2: tcb0_tioa2-0 {
>> +						atmel,pins = <AT91_PIOC 23 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tiob0: tcb0_tiob0-0 {
>> +						atmel,pins = <AT91_PIOC 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tiob1: tcb0_tiob1-0 {
>> +						atmel,pins = <AT91_PIOC 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +
>> +					pinctrl_tcb0_tiob2: tcb0_tiob2-0 {
>> +						atmel,pins = <AT91_PIOC 24 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>> +					};
>> +				};
>> +
>> +				i2c0 {
>> +					pinctrl_i2c_bitbang: i2c-0-bitbang {
>> +						atmel,pins =
>> +							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +							AT91_PIOA 8 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> +					};
>> +					pinctrl_i2c_twi: i2c-0-twi {
>> +						atmel,pins =
>> +							<AT91_PIOA 7 AT91_PERIPH_A AT91_PINCTRL_NONE
>> +							AT91_PIOA 8 AT91_PERIPH_A 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>;
>> +					clocks = <&pioA_clk>;
>> +				};
>> +
>> +				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>;
>> +					clocks = <&pioB_clk>;
>> +				};
>> +
>> +				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>;
>> +					clocks = <&pioC_clk>;
>> +				};
>> +			};
>> +
>> +			pmc: pmc at fffffc00 {
>> +				compatible = "atmel,at91rm9200-pmc";
>> +				reg = <0xfffffc00 0x100>;
>> +				interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
>> +				interrupt-controller;
>> +				#address-cells = <1>;
>> +				#size-cells = <0>;
>> +				#interrupt-cells = <1>;
>> +
>> +				clk32k: slck {
>> +					compatible = "fixed-clock";
>> +					#clock-cells = <0>;
>> +					clock-frequency = <32768>;
>> +				};
>> +
>> +				main: mainck {
>> +					compatible = "atmel,at91rm9200-clk-main";
>> +					#clock-cells = <0>;
>> +					interrupts-extended = <&pmc AT91_PMC_MOSCS>;
>> +					clocks = <&clk32k>;
>> +				};
>> +
>> +				plla: pllack {
>> +					compatible = "atmel,at91rm9200-clk-pll";
>> +					#clock-cells = <0>;
>> +					interrupts-extended = <&pmc AT91_PMC_LOCKA>;
>> +					clocks = <&main>;
>> +					reg = <0>;
>> +					atmel,clk-input-range = <1000000 32000000>;
>> +					#atmel,pll-clk-output-range-cells = <4>;
>> +					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
>> +				};
>> +
>> +				pllb: pllbck {
>> +					compatible = "atmel,at91rm9200-clk-pll";
>> +					#clock-cells = <0>;
>> +					interrupts-extended = <&pmc AT91_PMC_LOCKB>;
>> +					clocks = <&main>;
>> +					reg = <1>;
>> +					atmel,clk-input-range = <1000000 32000000>;
>> +					#atmel,pll-clk-output-range-cells = <4>;
>> +					atmel,pll-clk-output-ranges = <80000000 200000000 190000000 240000000>;
>> +				};
>> +
>> +				mck: masterck {
>> +					compatible = "atmel,at91rm9200-clk-master";
>> +					#clock-cells = <0>;
>> +					interrupts-extended = <&pmc AT91_PMC_MCKRDY>;
>> +					clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
>> +					atmel,clk-output-range = <0 94000000>;
>> +					atmel,clk-divisors = <1 2 4 3>;
>> +				};
>> +				periphck {
>> +					compatible = "atmel,at91rm9200-clk-peripheral";
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					clocks = <&mck>;
>> +
>> +					pioA_clk: pioA_clk {
>> +						#clock-cells = <0>;
>> +						reg = <2>;
>> +					};
>> +
>> +					pioB_clk: pioB_clk {
>> +						#clock-cells = <0>;
>> +						reg = <3>;
>> +					};
>> +
>> +					pioC_clk: pioC_clk {
>> +						#clock-cells = <0>;
>> +						reg = <4>;
>> +					};
>> +
>> +					usart0_clk: usart0_clk {
>> +						#clock-cells = <0>;
>> +						reg = <6>;
>> +					};
>> +
>> +					usart1_clk: usart1_clk {
>> +						#clock-cells = <0>;
>> +						reg = <7>;
>> +					};
>> +
>> +					usart2_clk: usart2_clk {
>> +						#clock-cells = <0>;
>> +						reg = <8>;
>> +					};
>> +
>> +					mci0_clk: mci0_clk {
>> +						#clock-cells = <0>;
>> +						reg = <9>;
>> +					};
>> +
>> +					twi0_clk: twi0_clk {
>> +						reg = <11>;
>> +						#clock-cells = <0>;
>> +					};
>> +
>> +					spi0_clk: spi0_clk {
>> +						#clock-cells = <0>;
>> +						reg = <12>;
>> +					};
>> +
>> +					spi1_clk: spi1_clk {
>> +						#clock-cells = <0>;
>> +						reg = <13>;
>> +					};
>> +
>> +					tcb0_clk: tcb0_clk {
>> +						#clock-cells = <0>;
>> +						reg = <17>;
>> +					};
>> +
>> +					lcd_clk: lcd_clk {
>> +						#clock-cells = <0>;
>> +						reg = <21>;
>> +					};
>> +				};
>> +			};
>> +
>> +			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>;
>> +				clocks = <&mck>;
>> +			};
>> +
>> +			watchdog at fffffd40 {
>> +				compatible = "atmel,at91sam9260-wdt";
>> +				reg = <0xfffffd40 0x10>;
>> +				status = "disabled";
>> +			};
>> +		};
>> +	};
>> +
>> +	i2c at 0 {
>> +		compatible = "i2c-gpio";
>> +		pinctrl-0 = <&pinctrl_i2c_bitbang>;
>> +		gpios = <&pioA 7 GPIO_ACTIVE_HIGH /* sda */
>> +			 &pioA 8 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>;
>> +		status = "disabled";
>> +	};
>> +};
>> diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
>> index 6276b4c..6a2c869 100644
>> --- a/arch/arm/mach-at91/at91sam9261.c
>> +++ b/arch/arm/mach-at91/at91sam9261.c
>> @@ -189,6 +189,21 @@ static struct clk_lookup periph_clocks_lookups[] = {
>>   	CLKDEV_CON_ID("pioA", &pioA_clk),
>>   	CLKDEV_CON_ID("pioB", &pioB_clk),
>>   	CLKDEV_CON_ID("pioC", &pioC_clk),
>> +	/* more usart 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", "fff94000.serial", &usart2_clk),
>> +	/* more tc lookup table for DT entries */
>> +	CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
>> +	CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &hck0),
>> +	CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk),
>> +	CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk),
>> +	CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk),
>> +	CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi_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),
> do we really need this with ccf?

We need this in case we want to support multi-board kernel with some boards
that do not support CCF.

If you want to drop these clk lookup defintions you'll have to add the
"depends on COMMON_CLK" line in the "config SOC_AT91SAM9261" section.

Best Regards,

Boris
>>   };
>>   
>>   static struct clk_lookup usart_clocks_lookups[] = {
>> -- 
>> 1.8.5.2
>>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk
  2014-01-23 15:57 ` [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk Jean-Jacques Hiblot
@ 2014-02-07  8:58   ` Boris BREZILLON
  0 siblings, 0 replies; 31+ messages in thread
From: Boris BREZILLON @ 2014-02-07  8:58 UTC (permalink / raw)
  To: linux-arm-kernel

Hello JJ,

On 23/01/2014 16:57, Jean-Jacques Hiblot wrote:
> This patch removes the selection of AT91_USE_OLD_CLK when selecting
> sam9261 SoCs support. This will automatically enable COMMON_CLK_AT91 option
> and add support for at91 common clk implementation.
>
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
> ---
>   arch/arm/mach-at91/Kconfig | 1 -
>   1 file changed, 1 deletion(-)
>
> diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
> index b4f7d6f..2214beb 100644
> --- a/arch/arm/mach-at91/Kconfig
> +++ b/arch/arm/mach-at91/Kconfig
> @@ -120,7 +120,6 @@ config SOC_AT91SAM9261
>   	select HAVE_AT91_DBGU0
>   	select HAVE_FB_ATMEL
>   	select SOC_AT91SAM9
> -	select AT91_USE_OLD_CLK
>   	select HAVE_AT91_USB_CLK
add :
                depends on COMMON_CLK

if you want to get rid of DT related clk_lookup definitions.
You'll also have to remove all the AT91SAM9261 sections from Kconfig.non_dt,
because this will conflict with the "depends on COMMON_CLK" line (the
ARCH_AT91SAM9261 config selects AT91_USE_OLD_CLK which forbids the use
of CCF).

I'm not sure droping the clk_lookup definitions worth the trouble, but 
I'll let at91
maintainers decide.

Best Regards,

Boris

>   	help
>   	  Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  2014-02-07  8:27   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2014-02-07  9:30     ` Jean-Jacques Hiblot
  2014-02-07 10:22       ` Nicolas Ferre
  0 siblings, 1 reply; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-02-07  9:30 UTC (permalink / raw)
  To: linux-arm-kernel

2014-02-07 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>:
> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> ---
>>  arch/arm/boot/dts/at91sam9261ek.dts | 39 +++++++++++++++++++++++++++++++++++++
>>  1 file changed, 39 insertions(+)
>
> do only one patch for the 9261ek support no nned to clean
>>
>> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
>> index 8909217..5555e9f5 100644
>> --- a/arch/arm/boot/dts/at91sam9261ek.dts
>> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
>> @@ -83,6 +83,15 @@
>>                                               AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>                                       };
>>                               };
>> +
>> +                             keys {
>> +                                     pinctrl_keys: keys-0 {
>> +                                             atmel,pins = <AT91_PIOA 27  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +                                             AT91_PIOA 26  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +                                             AT91_PIOA 25  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +                                             AT91_PIOA 24  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> +                                     };
>> +                             };
>
> no need this you can drop it
ok. I thought that it would help the user to understand the GPIO usage.
I'll remove all pinmux for GPIO that don't require a special hardware
configuration
>
> you just describe a gpio which we do not describe in pinctrl
>>                       };
>>
>>                       watchdog at fffffd40 {
>> @@ -109,4 +118,34 @@
>>                       linux,default-trigger = "heartbeat";
>>               };
>>       };
>> +
>> +     gpio_keys {
>> +             compatible = "gpio-keys";
>> +             pinctrl-0 = <&pinctrl_keys>;
>> +
>> +             button_0 {
>> +                     label = "button_0";
>> +                     gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
>> +                     linux,code = <256>;
>> +                     gpio-key,wakeup;
>> +             };
>> +             button_1 {
>> +                     label = "button_1";
>> +                     gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
>> +                     linux,code = <257>;
>> +                     gpio-key,wakeup;
>> +             };
>> +             button_2 {
>> +                     label = "button_2";
>> +                     gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
>> +                     linux,code = <258>;
>> +                     gpio-key,wakeup;
>> +             };
>> +             button_3 {
>> +                     label = "button_3";
>> +                     gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
>> +                     linux,code = <259>;
>> +                     gpio-key,wakeup;
>> +             };
>> +     };
>>  };
>> --
>> 1.8.5.2
>>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
  2014-02-07  8:30   ` Jean-Christophe PLAGNIOL-VILLARD
@ 2014-02-07  9:33     ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-02-07  9:33 UTC (permalink / raw)
  To: linux-arm-kernel

2014-02-07 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>:
> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>> This patch implements a simple DTS to boot a at91sam9261ek with a dt-enabled
>> kernel (at91_dt_defconfig).
>> Only dbgu, nand and watchdog are described in the DT.
>>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> ---
>>  arch/arm/boot/dts/Makefile          |   2 +
>>  arch/arm/boot/dts/at91sam9261ek.dts | 112 ++++++++++++++++++++++++++++++++++++
>>  2 files changed, 114 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index 772a30e..ece523d 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -11,6 +11,8 @@ dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
>>  dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
>>  dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb
>>  dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb
>> +# sam9261
>> +dtb-$(CONFIG_ARCH_AT91) += at91sam9261ek.dtb
>>  # sam9263
>>  dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb
>>  dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb
>> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
>> new file mode 100644
>> index 0000000..8909217
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
>> @@ -0,0 +1,112 @@
>> +/*
>> + * at91sam9261ek.dts - Device Tree file for Atmel at91sam9261 reference board
>> + *
>> + *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>> + *
>> + * Licensed under GPLv2 only.
>> + */
>> +/dts-v1/;
>> +#include "at91sam9261.dtsi"
>> +
>> +/ {
>> +     model = "Atmel at91sam9261ek";
>> +     compatible = "atmel,at91sam9261ek", "atmel,at91sam9261", "atmel,at91sam9";
>> +
>> +     chosen {
>> +             bootargs = "mem=64M console=ttyS0,115200";
> drop the mem=64M
my bad. It should indeed have been removed already.
>
> and use linux,stdout for the console
>> +     };
>> +
>> +     memory {
>> +             reg = <0x20000000 0x4000000>;
>> +     };
>> +
>> +     clocks {
>> +             #address-cells = <1>;
>> +             #size-cells = <1>;
>> +             ranges;
>> +
>> +             main_clock: clock at 0 {
>> +                     compatible = "atmel,osc", "fixed-clock";
>> +                     clock-frequency = <18432000>;
>> +             };
>> +     };
>> +
>> +     ahb {
>> +
>> +             nand0: nand at 40000000 {
>> +                     nand-bus-width = <8>;
>> +                     nand-ecc-mode = "soft";
>> +                     nand-on-flash-bbt = <1>;
> it's a boolean just
copy paste from 9263ek DT.
I'll fix it there too.
>                         nand-on-flash-bbt;
>> +                     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>;
>> +                     };
>
> we really need to switch to UBI
This mapping is fine for UBI (in terms of alignment).
I could add UBI in the default bootargs
>> +             };
>> +
>> +             apb {
>> +                     dbgu: serial at fffff200 {
>> +                             status = "okay";
>> +                     };
>> +
>> +                     pinctrl at fffff400 {
>> +                             leds {
>> +                                     pinctrl_leds: leds-0 {
>> +                                             atmel,pins = <AT91_PIOA 13  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +                                             AT91_PIOA 14  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>> +                                             AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>> +                                     };
>> +                             };
>> +                     };
>
> no need this drop it
>
> you need to only describe the GPIO if you have specific pinctrl property such
> as pull up & co
>> +
>> +                     watchdog at fffffd40 {
>> +                             status = "okay";
>> +                     };
>> +             };
>> +     };
>> +
>> +     leds {
>> +             compatible = "gpio-leds";
>> +             ds8 {
>> +                     label = "ds8";
>> +                     gpios = <&pioA 13 GPIO_ACTIVE_LOW>;
>> +                     linux,default-trigger = "none";
>> +             };
>> +             ds7 {
>> +                     label = "ds7";
>> +                     gpios = <&pioA 14 GPIO_ACTIVE_LOW>;
>> +                     linux,default-trigger = "nand-disk";
>> +             };
>> +             ds1 {
>> +                     label = "ds1";
>> +                     gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
>> +                     linux,default-trigger = "heartbeat";
>> +             };
>> +     };
>> +};
>> --
>> 1.8.5.2
>>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 00/15] Device Tree support for the at91sam9261ek
  2014-02-07  8:33 ` [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Christophe PLAGNIOL-VILLARD
@ 2014-02-07  9:36   ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-02-07  9:36 UTC (permalink / raw)
  To: linux-arm-kernel

2014-02-07 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>:
> Hi,
>
>         please re-organise your patch serie
>
>         first SoC patch
>           - first CCF
>           - one patch for the SoC
>         second add the board 1 patch
>
>         no need 15 patches
>
> Best Regards,
> J.
I don't know about this. It's always easier for the review and bug
chasing to keep the patch separated. It would make my task easier
though.
I'll wait for the feedback of Nicolas on this.

> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>> This patch set aims at bringing a basic device tree support for the sam9261.
>> It's mostly based on the sam9263 and sam9x5 stuff.
>>
>> Changes since V2:
>> * removed the smc driver from the serie. It'll be posted in an independent
>>   serie later.
>> * removed the DM9000 support (it'll come with the smc driver)
>> * the sam9261 now supports the Common Clock Framework (CCF). Note: to enable
>>   the CCF you must remove from the kernel config the platforms that don't
>>   support it.
>> * Added basic DT binding for the bus matrix
>> * Added support for USB host
>> * Added support for USB gadget
>> * in dts(i), replaced interrupt-parent with interrupts-extended
>> * changed the nand partition plan (same as for the sama5d3)
>> * removed 'mem' parameter in command line
>> * re-ordered dt-nodes in ascending address order.
>> * split the lcd support patch in 2 parts (SOC and board)
>>
>>
>> Change since V1:
>> * changed the DT representation to use address translation and separate the
>>   timings' configuration from the device properties by adding a "simple-bus"
>>   inetrmediate node.
>> * moved the smc driver from drivers/bus to drivers/memmory
>> * smc driver now accepts timings in nanoseconds as well as raw register values
>> * smc driver can clip the timings if they're out of bound and dump them to the
>>   console
>> * DM9000 timings are now described in nanosecs (for the virtue of example)
>>
>> supported features:
>> * dbgu
>> * nand
>> * lcd
>> * leds
>> * user buttons
>> * usb host
>> * usb gadget
>>
>> This serie relies on the 3 following patchs:
>> usb: ohci-at91: fix irq and iomem resource retrieval
>> usb: at91-udc: fix irq and iomem resource retrieval
>> ARM: at91: prepare sam9 dt boards transition to common
>>
>> Jean-Jacques
>>
>>
>>
>> Jean-Jacques Hiblot (15):
>>   at91: dt: Add at91sam9261 dt SoC support
>>   at91: dt: defconfig: Added the sam9261 to the list of supported SOCs
>>   at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek
>>   ARM: at91: prepare common clk transition for sam9261 SoC
>>   ARM: at91: move sam9261 SoC to common clk
>>   at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
>>   at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks
>>     (CCF)
>>   at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF)
>>   at91: dt: sam9261: Added support for the LCD display
>>   at91: dt: at91sam9261ek: Added support for the LCD display
>>   at91: dt: Adds support for the bus matrix declaration in the device
>>     tree
>>   at91: dt: sam9261: adds description for the bus matrix
>>   at91: dt: sam9261: CCF: Added USB clocks
>>   at91: dt: at91sam9261ek: Enabled the USB host port (OHCI)
>>   at91: dt: at91sam9261ek: Enabled the USB device port
>>
>>  arch/arm/boot/dts/Makefile          |   2 +
>>  arch/arm/boot/dts/at91sam9261.dtsi  | 724 ++++++++++++++++++++++++++++++++++++
>>  arch/arm/boot/dts/at91sam9261ek.dts | 191 ++++++++++
>>  arch/arm/configs/at91_dt_defconfig  |   1 +
>>  arch/arm/mach-at91/Kconfig          |   1 -
>>  arch/arm/mach-at91/at91sam9261.c    |  24 +-
>>  arch/arm/mach-at91/setup.c          |  23 ++
>>  7 files changed, 963 insertions(+), 3 deletions(-)
>>  create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
>>  create mode 100644 arch/arm/boot/dts/at91sam9261ek.dts
>>
>> --
>> 1.8.5.2
>>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC
  2014-02-07  8:35     ` Boris BREZILLON
@ 2014-02-07  9:38       ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-02-07  9:38 UTC (permalink / raw)
  To: linux-arm-kernel

Boris is right, I shamelessly re-used his work with no thought for
modification. BTW thank you Boris for the neat job


2014-02-07 Boris BREZILLON <b.brezillon@overkiz.com>:
> Hello Jean-Christophe,
>
>
> On 07/02/2014 09:25, Jean-Christophe PLAGNIOL-VILLARD wrote:
>>
>> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>>>
>>>   This patch encloses sam9261 old clk registration in
>>> "#if defined(CONFIG_OLD_CLK_AT91) #endif" sections.
>>>
>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>>> ---
>>>   arch/arm/mach-at91/at91sam9261.c | 8 ++++++--
>>>   1 file changed, 6 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-at91/at91sam9261.c
>>> b/arch/arm/mach-at91/at91sam9261.c
>>> index 6a2c869..2c0e940 100644
>>> --- a/arch/arm/mach-at91/at91sam9261.c
>>> +++ b/arch/arm/mach-at91/at91sam9261.c
>>> @@ -25,10 +25,12 @@
>>>   #include "at91_rstc.h"
>>>   #include "soc.h"
>>>   #include "generic.h"
>>> -#include "clock.h"
>>>   #include "sam9_smc.h"
>>>   #include "pm.h"
>>>   +#if defined(CONFIG_OLD_CLK_AT91)
>>> +#include "clock.h"
>>> +
>>>   /* --------------------------------------------------------------------
>>>    *  Clocks
>>>    * --------------------------------------------------------------------
>>> */
>>> @@ -262,7 +264,7 @@ static void __init at91sam9261_register_clocks(void)
>>>         clk_register(&hck0);
>>>         clk_register(&hck1);
>>>   }
>>> -
>>
>> do this here
>>
>> #else
>> #define at91sam9261_register_clocks NULL
>>>
>>> +#endif
>>>   /* --------------------------------------------------------------------
>>>    *  GPIO
>>>    * --------------------------------------------------------------------
>>> */
>>> @@ -362,6 +364,8 @@ AT91_SOC_START(at91sam9261)
>>>         .extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 <<
>>> AT91SAM9261_ID_IRQ1)
>>>                     | (1 << AT91SAM9261_ID_IRQ2),
>>>         .ioremap_registers = at91sam9261_ioremap_registers,
>>> +#if defined(CONFIG_OLD_CLK_AT91)
>>>         .register_clocks = at91sam9261_register_clocks,
>>> +#endif
>>
>> so no ifdef here
>
>
> I guess he did this based on what I did for the sama5 SoC, but you're right:
> your proposal is cleaner.
>
> Best Regards,
>
> Boris
>
>
>>>         .init = at91sam9261_initialize,
>>>   AT91_SOC_END
>>> --
>>> 1.8.5.2
>>>
>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support
  2014-02-07  8:43     ` Boris BREZILLON
@ 2014-02-07  9:47       ` Jean-Jacques Hiblot
  0 siblings, 0 replies; 31+ messages in thread
From: Jean-Jacques Hiblot @ 2014-02-07  9:47 UTC (permalink / raw)
  To: linux-arm-kernel

2014-02-07 Boris BREZILLON <b.brezillon@overkiz.com>:
> Hello Jean-Christophe,
>
>
> On 07/02/2014 09:23, Jean-Christophe PLAGNIOL-VILLARD wrote:
>>
>> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>>>
>>> This patch adds the basics to support the Device Tree on a sam9261-based
>>> platform
>>>
>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>>> ---
>>>   arch/arm/boot/dts/at91sam9261.dtsi | 627
>>> +++++++++++++++++++++++++++++++++++++
>>>   arch/arm/mach-at91/at91sam9261.c   |  15 +
>>>   2 files changed, 642 insertions(+)
>>>   create mode 100644 arch/arm/boot/dts/at91sam9261.dtsi
>>>
>>> diff --git a/arch/arm/boot/dts/at91sam9261.dtsi
>>> b/arch/arm/boot/dts/at91sam9261.dtsi
>>> new file mode 100644
>>> index 0000000..2730611
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/at91sam9261.dtsi
>>> @@ -0,0 +1,627 @@
>>> +/*
>>> + * at91sam9261.dtsi - Device Tree Include file for AT91SAM9261 SoC
>>> + *
>>> + *  Copyright (C) 2013 Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>>> + *
>>> + * Licensed under GPLv2 only.
>>> + */
>>> +
>>> +#include "skeleton.dtsi"
>>> +#include <dt-bindings/pinctrl/at91.h>
>>> +#include <dt-bindings/interrupt-controller/irq.h>
>>> +#include <dt-bindings/gpio/gpio.h>
>>> +#include <dt-bindings/clk/at91.h>
>>> +
>>> +/ {
>>> +       model = "Atmel AT91SAM9261 family SoC";
>>> +       compatible = "atmel,at91sam9261";
>>> +       interrupt-parent = <&aic>;
>>> +
>>> +       aliases {
>>> +               serial0 = &dbgu;
>>> +               serial1 = &usart0;
>>> +               serial2 = &usart1;
>>> +               serial3 = &usart2;
>>> +               gpio0 = &pioA;
>>> +               gpio1 = &pioB;
>>> +               gpio2 = &pioC;
>>> +               tcb0 = &tcb0;
>>> +               i2c0 = &i2c0;
>>> +               ssc0 = &ssc0;
>>> +               ssc1 = &ssc1;
>>> +       };
>>> +       cpus {
>>> +               #address-cells = <0>;
>>> +               #size-cells = <0>;
>>> +
>>> +               cpu {
>>> +                       compatible = "arm,arm926ej-s";
>>> +                       device_type = "cpu";
>>> +               };
>>> +       };
>>> +
>>> +       memory {
>>> +               reg = <0x20000000 0x08000000>;
>>> +       };
>>> +
>>> +       ahb {
>>> +               compatible = "simple-bus";
>>> +               #address-cells = <1>;
>>> +               #size-cells = <1>;
>>> +               ranges;
>>> +
>>> +               usb0: ohci at 00500000 {
>>> +                       compatible = "atmel,at91rm9200-ohci", "usb-ohci";
>>> +                       reg = <0x00500000 0x100000>;
>>> +                       interrupts = <20 IRQ_TYPE_LEVEL_HIGH 2>;
>>
>> as requested before use the new interrupt property
>> interrupts-extended (mandatory)
>>
>> there is missing
>>                         pinctrl-names = "default";
>>
>> on mmc & co
>>>
>>> +                       status = "disabled";
>>> +               };
>>> +
>>> +               nand0: nand at 40000000 {
>>> +                       compatible = "atmel,at91rm9200-nand";
>>> +                       #address-cells = <1>;
>>> +                       #size-cells = <1>;
>>> +                       reg = <0x40000000 0x10000000>;
>>> +                       atmel,nand-addr-offset = <22>;
>>> +                       atmel,nand-cmd-offset = <21>;
>>> +                       pinctrl-names = "default";
>>> +                       pinctrl-0 = <&pinctrl_nand>;
>>> +
>>> +                       gpios = <&pioC 15 GPIO_ACTIVE_HIGH
>>> +                               &pioC 14 GPIO_ACTIVE_HIGH
>>> +                               0
>>> +                               >;
>>> +                       status = "disabled";
>>> +               };
>>> +
>>> +               apb {
>>> +                       compatible = "simple-bus";
>>> +                       #address-cells = <1>;
>>> +                       #size-cells = <1>;
>>> +                       ranges;
>>> +
>>> +                       tcb0: timer at fffa0000 {
>>> +                               compatible = "atmel,at91rm9200-tcb";
>>> +                               reg = <0xfffa0000 0x100>;
>>> +                               interrupts = < 17 IRQ_TYPE_LEVEL_HIGH 0
>>> +                                       18 IRQ_TYPE_LEVEL_HIGH 0
>>> +                                       19 IRQ_TYPE_LEVEL_HIGH 0
>>> +                                       >;
>>> +                               clocks = <&tcb0_clk>;
>>> +                               clock-names = "t0_clk";
>>> +                               status = "disabled";
>>
>> we use the tcb as shedule clock this should be on by default
>>>
>>> +                       };
>>> +
>>> +                       usb1: gadget at fffa4000 {
>>> +                               compatible = "atmel,at91rm9200-udc";
>>> +                               reg = <0xfffa4000 0x4000>;
>>> +                               interrupts = <10 IRQ_TYPE_LEVEL_HIGH 2>;
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       mmc0: mmc at fffa8000 {
>>> +                               compatible = "atmel,hsmci";
>>> +                               reg = <0xfffa8000 0x600>;
>>> +                               interrupts = <9 IRQ_TYPE_LEVEL_HIGH 0>;
>>> +                               #address-cells = <1>;
>>> +                               #size-cells = <0>;
>>> +                               clocks = <&mci0_clk>;
>>> +                               clock-names = "mci_clk";
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       i2c0: i2c at fffac000 {
>>> +                               compatible = "atmel,at91sam9261-i2c";
>>> +                               pinctrl-0 = <&pinctrl_i2c_twi>;
>>> +                               reg = <0xfffac000 0x100>;
>>> +                               interrupts = <11 IRQ_TYPE_LEVEL_HIGH 6>;
>>> +                               #address-cells = <1>;
>>> +                               #size-cells = <0>;
>>> +                               clocks = <&twi0_clk>;
>>> +                               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>;
>>> +                               clocks = <&usart0_clk>;
>>> +                               clock-names = "usart";
>>> +                               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>;
>>> +                               clocks = <&usart1_clk>;
>>> +                               clock-names = "usart";
>>> +                               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>;
>>> +                               clocks = <&usart2_clk>;
>>> +                               clock-names = "usart";
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       ssc0: ssc at fffbc000 {
>>> +                               compatible = "atmel,at91rm9200-ssc";
>>> +                               reg = <0xfffbc000 0x4000>;
>>> +                               interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
>>> +                               pinctrl-names = "default";
>>> +                               pinctrl-0 = <&pinctrl_ssc0_tx
>>> &pinctrl_ssc0_rx>;
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       ssc1: ssc at fffc0000 {
>>> +                               compatible = "atmel,at91rm9200-ssc";
>>> +                               reg = <0xfffc0000 0x4000>;
>>> +                               interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
>>> +                               pinctrl-names = "default";
>>> +                               pinctrl-0 = <&pinctrl_ssc1_tx
>>> &pinctrl_ssc1_rx>;
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       spi0: spi at fffc8000 {
>>> +                               #address-cells = <1>;
>>> +                               #size-cells = <0>;
>>> +                               compatible = "atmel,at91rm9200-spi";
>>> +                               reg = <0xfffc8000 0x200>;
>>> +                               interrupts = <12 IRQ_TYPE_LEVEL_HIGH 3>;
>>> +                               pinctrl-names = "default";
>>> +                               pinctrl-0 = <&pinctrl_spi0>;
>>> +                               clocks = <&spi0_clk>;
>>> +                               clock-names = "spi_clk";
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       spi1: 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_spi1>;
>>> +                               clocks = <&spi1_clk>;
>>> +                               clock-names = "spi_clk";
>>> +                               status = "disabled";
>>> +                       };
>>
>> as said for sama5d3 we need to have macro for the hw CS as GPIO to make it
>> more clear to use and read
>>>
>>> +
>>> +                       ramc: 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 = <29 30 31>;
>>> +                       };
>>
>> one missing empty line
>>>
>>> +                       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>;
>>> +                               clocks = <&mck>;
>>> +                               clock-names = "usart";
>>> +                               status = "disabled";
>>> +                       };
>>> +
>>> +                       pinctrl at fffff400 {
>>> +                               #address-cells = <1>;
>>> +                               #size-cells = <1>;
>>> +                               compatible = "atmel,at91rm9200-pinctrl",
>>> "simple-bus";
>>> +                               ranges = <0xfffff400 0xfffff400 0xa00>;
>>> +
>>> +                               atmel,mux-mask = <
>>> +                                     /*    A         B     */
>>> +                                      0xffffffff 0xfffffff7  /* pioA */
>>> +                                      0xffffffff 0xfffffff4  /* pioB */
>>> +                                      0xffffffff 0xffffff07  /* pioC */
>>> +                                     >;
>>> +
>>> +                               /* shared pinctrl settings */
>>> +                               dbgu {
>>> +                                       pinctrl_dbgu: dbgu-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 9
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 10
>>> AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               usart0 {
>>> +                                       pinctrl_usart0: usart0-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 8
>>> AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOC 9
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart0_rts: usart0_rts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 10
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart0_cts: usart0_cts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 11
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               usart1 {
>>> +                                       pinctrl_usart1: usart1-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 12
>>> AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOC 13
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart1_rts: usart1_rts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 12
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart1_cts: usart1_cts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 13
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               usart2 {
>>> +                                       pinctrl_usart2: usart2-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 14
>>> AT91_PERIPH_A AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOC 15
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart2_rts: usart2_rts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 15
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_usart2_cts: usart2_cts-0
>>> {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 16
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               nand {
>>> +                                       pinctrl_nand: nand-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOC 15
>>> AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOC 14
>>> AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               mmc0 {
>>> +                                       pinctrl_mmc0_clk: mmc0_clk-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 2
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_mmc0_slot0_cmd_dat0:
>>> mmc0_slot0_cmd_dat0-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 1
>>> AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOA 0
>>> AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_mmc0_slot0_dat1_3:
>>> mmc0_slot0_dat1_3-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 4
>>> AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOA 5
>>> AT91_PERIPH_B AT91_PINCTRL_PULL_UP
>>> +                                                        AT91_PIOA 6
>>> AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
>>> +                                       };
>>> +                                       };
>>> +
>>> +                               ssc0 {
>>> +                                       pinctrl_ssc0_tx: ssc0_tx-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOB 21
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 22
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 23
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_ssc0_rx: ssc0_rx-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOB 24
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 25
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 26
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               ssc1 {
>>> +                                       pinctrl_ssc1_tx: ssc1_tx-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 17
>>> AT91_PERIPH_B AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 18
>>> AT91_PERIPH_B AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 19
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_ssc1_rx: ssc1_rx-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 20
>>> AT91_PERIPH_B AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 21
>>> AT91_PERIPH_B AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 22
>>> AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               spi0 {
>>> +                                       pinctrl_spi0: spi0-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 0
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 1
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOA 2
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                                       };
>>> +
>>> +                               spi1 {
>>> +                                       pinctrl_spi1: spi1-0 {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOB 30
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 31
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                        AT91_PIOB 29
>>> AT91_PERIPH_A AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               tcb0 {
>>> +                                       pinctrl_tcb0_tclk0: tcb0_tclk0-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tclk1: tcb0_tclk1-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 17 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tclk2: tcb0_tclk2-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 18 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tioa0: tcb0_tioa0-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 19 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tioa1: tcb0_tioa1-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 21 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tioa2: tcb0_tioa2-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 23 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tiob0: tcb0_tiob0-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 20 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tiob1: tcb0_tiob1-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 22 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +
>>> +                                       pinctrl_tcb0_tiob2: tcb0_tiob2-0
>>> {
>>> +                                               atmel,pins = <AT91_PIOC
>>> 24 AT91_PERIPH_B AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                               };
>>> +
>>> +                               i2c0 {
>>> +                                       pinctrl_i2c_bitbang:
>>> i2c-0-bitbang {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 7
>>> AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>> +                                                       AT91_PIOA 8
>>> AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>> +                                       };
>>> +                                       pinctrl_i2c_twi: i2c-0-twi {
>>> +                                               atmel,pins =
>>> +                                                       <AT91_PIOA 7
>>> AT91_PERIPH_A AT91_PINCTRL_NONE
>>> +                                                       AT91_PIOA 8
>>> AT91_PERIPH_A 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>;
>>> +                                       clocks = <&pioA_clk>;
>>> +                               };
>>> +
>>> +                               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>;
>>> +                                       clocks = <&pioB_clk>;
>>> +                               };
>>> +
>>> +                               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>;
>>> +                                       clocks = <&pioC_clk>;
>>> +                               };
>>> +                       };
>>> +
>>> +                       pmc: pmc at fffffc00 {
>>> +                               compatible = "atmel,at91rm9200-pmc";
>>> +                               reg = <0xfffffc00 0x100>;
>>> +                               interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
>>> +                               interrupt-controller;
>>> +                               #address-cells = <1>;
>>> +                               #size-cells = <0>;
>>> +                               #interrupt-cells = <1>;
>>> +
>>> +                               clk32k: slck {
>>> +                                       compatible = "fixed-clock";
>>> +                                       #clock-cells = <0>;
>>> +                                       clock-frequency = <32768>;
>>> +                               };
>>> +
>>> +                               main: mainck {
>>> +                                       compatible =
>>> "atmel,at91rm9200-clk-main";
>>> +                                       #clock-cells = <0>;
>>> +                                       interrupts-extended = <&pmc
>>> AT91_PMC_MOSCS>;
>>> +                                       clocks = <&clk32k>;
>>> +                               };
>>> +
>>> +                               plla: pllack {
>>> +                                       compatible =
>>> "atmel,at91rm9200-clk-pll";
>>> +                                       #clock-cells = <0>;
>>> +                                       interrupts-extended = <&pmc
>>> AT91_PMC_LOCKA>;
>>> +                                       clocks = <&main>;
>>> +                                       reg = <0>;
>>> +                                       atmel,clk-input-range = <1000000
>>> 32000000>;
>>> +                                       #atmel,pll-clk-output-range-cells
>>> = <4>;
>>> +                                       atmel,pll-clk-output-ranges =
>>> <80000000 200000000 190000000 240000000>;
>>> +                               };
>>> +
>>> +                               pllb: pllbck {
>>> +                                       compatible =
>>> "atmel,at91rm9200-clk-pll";
>>> +                                       #clock-cells = <0>;
>>> +                                       interrupts-extended = <&pmc
>>> AT91_PMC_LOCKB>;
>>> +                                       clocks = <&main>;
>>> +                                       reg = <1>;
>>> +                                       atmel,clk-input-range = <1000000
>>> 32000000>;
>>> +                                       #atmel,pll-clk-output-range-cells
>>> = <4>;
>>> +                                       atmel,pll-clk-output-ranges =
>>> <80000000 200000000 190000000 240000000>;
>>> +                               };
>>> +
>>> +                               mck: masterck {
>>> +                                       compatible =
>>> "atmel,at91rm9200-clk-master";
>>> +                                       #clock-cells = <0>;
>>> +                                       interrupts-extended = <&pmc
>>> AT91_PMC_MCKRDY>;
>>> +                                       clocks = <&clk32k>, <&main>,
>>> <&plla>, <&pllb>;
>>> +                                       atmel,clk-output-range = <0
>>> 94000000>;
>>> +                                       atmel,clk-divisors = <1 2 4 3>;
>>> +                               };
>>> +                               periphck {
>>> +                                       compatible =
>>> "atmel,at91rm9200-clk-peripheral";
>>> +                                       #address-cells = <1>;
>>> +                                       #size-cells = <0>;
>>> +                                       clocks = <&mck>;
>>> +
>>> +                                       pioA_clk: pioA_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <2>;
>>> +                                       };
>>> +
>>> +                                       pioB_clk: pioB_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <3>;
>>> +                                       };
>>> +
>>> +                                       pioC_clk: pioC_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <4>;
>>> +                                       };
>>> +
>>> +                                       usart0_clk: usart0_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <6>;
>>> +                                       };
>>> +
>>> +                                       usart1_clk: usart1_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <7>;
>>> +                                       };
>>> +
>>> +                                       usart2_clk: usart2_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <8>;
>>> +                                       };
>>> +
>>> +                                       mci0_clk: mci0_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <9>;
>>> +                                       };
>>> +
>>> +                                       twi0_clk: twi0_clk {
>>> +                                               reg = <11>;
>>> +                                               #clock-cells = <0>;
>>> +                                       };
>>> +
>>> +                                       spi0_clk: spi0_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <12>;
>>> +                                       };
>>> +
>>> +                                       spi1_clk: spi1_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <13>;
>>> +                                       };
>>> +
>>> +                                       tcb0_clk: tcb0_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <17>;
>>> +                                       };
>>> +
>>> +                                       lcd_clk: lcd_clk {
>>> +                                               #clock-cells = <0>;
>>> +                                               reg = <21>;
>>> +                                       };
>>> +                               };
>>> +                       };
>>> +
>>> +                       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>;
>>> +                               clocks = <&mck>;
>>> +                       };
>>> +
>>> +                       watchdog at fffffd40 {
>>> +                               compatible = "atmel,at91sam9260-wdt";
>>> +                               reg = <0xfffffd40 0x10>;
>>> +                               status = "disabled";
>>> +                       };
>>> +               };
>>> +       };
>>> +
>>> +       i2c at 0 {
>>> +               compatible = "i2c-gpio";
>>> +               pinctrl-0 = <&pinctrl_i2c_bitbang>;
>>> +               gpios = <&pioA 7 GPIO_ACTIVE_HIGH /* sda */
>>> +                        &pioA 8 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>;
>>> +               status = "disabled";
>>> +       };
>>> +};
>>> diff --git a/arch/arm/mach-at91/at91sam9261.c
>>> b/arch/arm/mach-at91/at91sam9261.c
>>> index 6276b4c..6a2c869 100644
>>> --- a/arch/arm/mach-at91/at91sam9261.c
>>> +++ b/arch/arm/mach-at91/at91sam9261.c
>>> @@ -189,6 +189,21 @@ static struct clk_lookup periph_clocks_lookups[] = {
>>>         CLKDEV_CON_ID("pioA", &pioA_clk),
>>>         CLKDEV_CON_ID("pioB", &pioB_clk),
>>>         CLKDEV_CON_ID("pioC", &pioC_clk),
>>> +       /* more usart 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", "fff94000.serial", &usart2_clk),
>>> +       /* more tc lookup table for DT entries */
>>> +       CLKDEV_CON_DEV_ID("t0_clk", "fffa0000.timer", &tc0_clk),
>>> +       CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &hck0),
>>> +       CLKDEV_CON_DEV_ID("spi_clk", "fffc8000.spi", &spi0_clk),
>>> +       CLKDEV_CON_DEV_ID("spi_clk", "fffcc000.spi", &spi1_clk),
>>> +       CLKDEV_CON_DEV_ID("mci_clk", "fffa8000.mmc", &mmc_clk),
>>> +       CLKDEV_CON_DEV_ID(NULL, "fffac000.i2c", &twi_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),
>>
>> do we really need this with ccf?
>
>
> We need this in case we want to support multi-board kernel with some boards
> that do not support CCF.
>
> If you want to drop these clk lookup defintions you'll have to add the
> "depends on COMMON_CLK" line in the "config SOC_AT91SAM9261" section.
I don't think that non-CCF code can be dropped so fast. Let the
at91sam9261's users be able to use CCF and DT and also the platform
file for a few kernel versions.
Then the platform file and non-CCF support can be dropped after every
one has seen it coming.
>
> Best Regards,
>
> Boris
>
>>>   };
>>>     static struct clk_lookup usart_clocks_lookups[] = {
>>> --
>>> 1.8.5.2
>>>
>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  2014-02-07  9:30     ` Jean-Jacques Hiblot
@ 2014-02-07 10:22       ` Nicolas Ferre
  2014-02-10  9:51         ` Linus Walleij
  0 siblings, 1 reply; 31+ messages in thread
From: Nicolas Ferre @ 2014-02-07 10:22 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/02/2014 10:30, Jean-Jacques Hiblot :
> 2014-02-07 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>:
>> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>>> ---
>>>  arch/arm/boot/dts/at91sam9261ek.dts | 39 +++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 39 insertions(+)
>>
>> do only one patch for the 9261ek support no nned to clean
>>>
>>> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
>>> index 8909217..5555e9f5 100644
>>> --- a/arch/arm/boot/dts/at91sam9261ek.dts
>>> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
>>> @@ -83,6 +83,15 @@
>>>                                               AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>>                                       };
>>>                               };
>>> +
>>> +                             keys {
>>> +                                     pinctrl_keys: keys-0 {
>>> +                                             atmel,pins = <AT91_PIOA 27  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>> +                                             AT91_PIOA 26  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>> +                                             AT91_PIOA 25  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>> +                                             AT91_PIOA 24  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>> +                                     };
>>> +                             };
>>
>> no need this you can drop it
> ok. I thought that it would help the user to understand the GPIO usage.
> I'll remove all pinmux for GPIO that don't require a special hardware
> configuration

Well, me also, I like to see what the board requires for functioning
properly. It is convenient for:
- understanding clearly what is used and what is not
- doing a grep when searching where a particular GPIO is used
- describing completely the hardware (which is the purpose of DT)

So, I would like additional consideration by more AT91 users before
following this rule... And maybe a note by Linus W.

Bye,


>>
>> you just describe a gpio which we do not describe in pinctrl
>>>                       };
>>>
>>>                       watchdog at fffffd40 {
>>> @@ -109,4 +118,34 @@
>>>                       linux,default-trigger = "heartbeat";
>>>               };
>>>       };
>>> +
>>> +     gpio_keys {
>>> +             compatible = "gpio-keys";
>>> +             pinctrl-0 = <&pinctrl_keys>;
>>> +
>>> +             button_0 {
>>> +                     label = "button_0";
>>> +                     gpios = <&pioA 27 GPIO_ACTIVE_LOW>;
>>> +                     linux,code = <256>;
>>> +                     gpio-key,wakeup;
>>> +             };
>>> +             button_1 {
>>> +                     label = "button_1";
>>> +                     gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
>>> +                     linux,code = <257>;
>>> +                     gpio-key,wakeup;
>>> +             };
>>> +             button_2 {
>>> +                     label = "button_2";
>>> +                     gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
>>> +                     linux,code = <258>;
>>> +                     gpio-key,wakeup;
>>> +             };
>>> +             button_3 {
>>> +                     label = "button_3";
>>> +                     gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
>>> +                     linux,code = <259>;
>>> +                     gpio-key,wakeup;
>>> +             };
>>> +     };
>>>  };
>>> --
>>> 1.8.5.2
>>>
> 
> 


-- 
Nicolas Ferre

^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons
  2014-02-07 10:22       ` Nicolas Ferre
@ 2014-02-10  9:51         ` Linus Walleij
  0 siblings, 0 replies; 31+ messages in thread
From: Linus Walleij @ 2014-02-10  9:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Feb 7, 2014 at 11:22 AM, Nicolas Ferre <nicolas.ferre@atmel.com> wrote:
> On 07/02/2014 10:30, Jean-Jacques Hiblot :
>> 2014-02-07 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>:
>>> On 16:57 Thu 23 Jan     , Jean-Jacques Hiblot wrote:
>>>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
>>>> ---
>>>>  arch/arm/boot/dts/at91sam9261ek.dts | 39 +++++++++++++++++++++++++++++++++++++
>>>>  1 file changed, 39 insertions(+)
>>>
>>> do only one patch for the 9261ek support no nned to clean
>>>>
>>>> diff --git a/arch/arm/boot/dts/at91sam9261ek.dts b/arch/arm/boot/dts/at91sam9261ek.dts
>>>> index 8909217..5555e9f5 100644
>>>> --- a/arch/arm/boot/dts/at91sam9261ek.dts
>>>> +++ b/arch/arm/boot/dts/at91sam9261ek.dts
>>>> @@ -83,6 +83,15 @@
>>>>                                               AT91_PIOA 23  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>>>                                       };
>>>>                               };
>>>> +
>>>> +                             keys {
>>>> +                                     pinctrl_keys: keys-0 {
>>>> +                                             atmel,pins = <AT91_PIOA 27  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>>> +                                             AT91_PIOA 26  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>>> +                                             AT91_PIOA 25  AT91_PERIPH_GPIO AT91_PINCTRL_NONE
>>>> +                                             AT91_PIOA 24  AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
>>>> +                                     };
>>>> +                             };
>>>
>>> no need this you can drop it
>> ok. I thought that it would help the user to understand the GPIO usage.
>> I'll remove all pinmux for GPIO that don't require a special hardware
>> configuration
>
> Well, me also, I like to see what the board requires for functioning
> properly. It is convenient for:
> - understanding clearly what is used and what is not
> - doing a grep when searching where a particular GPIO is used
> - describing completely the hardware (which is the purpose of DT)
>
> So, I would like additional consideration by more AT91 users before
> following this rule... And maybe a note by Linus W.

So this is something like a grey area, it's not like there is a definitive
answer to it. It just reflects the fact that the pin control and GPIO
hardware is closely connected and we're cross-talking between
the subsystems to set up GPIOs when requested, i.e.
gpio_request_enable() is implemented.

If that function was *not* implemented, we'd have to do it like
this.

What happens in this case I guess, is that if &pinctrl_keys would
be tied to a default state, the GPIO pins would be muxed in
twice, which is not so horrible.

It becomes very interesting the day you want to add something
else than AT91_PINCTRL_NONE as the last flag, for example
pull-up or drive strength. Then you need both orthogonal interfaces
to be used, so then it's helpful to have this snippet there to fill
in the right biasing etc.

So I would say something lame like it depends on the suspected
use cases.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2014-02-10  9:51 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-23 15:57 [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 01/15] at91: dt: Add at91sam9261 dt SoC support Jean-Jacques Hiblot
2014-02-07  8:23   ` Jean-Christophe PLAGNIOL-VILLARD
2014-02-07  8:43     ` Boris BREZILLON
2014-02-07  9:47       ` Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 02/15] at91: dt: defconfig: Added the sam9261 to the list of supported SOCs Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 03/15] at91: dt: sam9261: Basic Device Tree support for the at91sam9261ek Jean-Jacques Hiblot
2014-02-07  8:30   ` Jean-Christophe PLAGNIOL-VILLARD
2014-02-07  9:33     ` Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 04/15] ARM: at91: prepare common clk transition for sam9261 SoC Jean-Jacques Hiblot
2014-02-07  8:25   ` Jean-Christophe PLAGNIOL-VILLARD
2014-02-07  8:35     ` Boris BREZILLON
2014-02-07  9:38       ` Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 05/15] ARM: at91: move sam9261 SoC to common clk Jean-Jacques Hiblot
2014-02-07  8:58   ` Boris BREZILLON
2014-01-23 15:57 ` [PATCH v3 06/15] at91: dt: at91sam9261ek: Adds DT entries for the 4 user buttons Jean-Jacques Hiblot
2014-02-07  8:27   ` Jean-Christophe PLAGNIOL-VILLARD
2014-02-07  9:30     ` Jean-Jacques Hiblot
2014-02-07 10:22       ` Nicolas Ferre
2014-02-10  9:51         ` Linus Walleij
2014-01-23 15:57 ` [PATCH v3 07/15] at91: dt: sam9261: Added the descriptions of hck0 and hck1 clocks (CCF) Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 08/15] at91: dt: sam9261: Added hclk declaration for the fb driver (non-CCF) Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 09/15] at91: dt: sam9261: Added support for the LCD display Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 10/15] at91: dt: at91sam9261ek: " Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 11/15] at91: dt: Adds support for the bus matrix declaration in the device tree Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 12/15] at91: dt: sam9261: adds description for the bus matrix Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 13/15] at91: dt: sam9261: CCF: Added USB clocks Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 14/15] at91: dt: at91sam9261ek: Enabled the USB host port (OHCI) Jean-Jacques Hiblot
2014-01-23 15:57 ` [PATCH v3 15/15] at91: dt: at91sam9261ek: Enabled the USB device port Jean-Jacques Hiblot
2014-02-07  8:33 ` [PATCH v3 00/15] Device Tree support for the at91sam9261ek Jean-Christophe PLAGNIOL-VILLARD
2014-02-07  9:36   ` Jean-Jacques Hiblot

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).