@@ -75,6 +75,106 @@
pmc: pmc@fffffc00 {
compatible = "atmel,at91rm9200-pmc";
reg = <0xfffffc00 0x100>;
+
+ clk32k: slck {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32768>;
+ };
+
+ main: mainck {
+ compatible = "atmel,at91rm9200-clk-main", "fixed-clock";
+ #clock-cells = <0>;
+ clocks = <&clk32k>;
+ };
+
+ plla: pllack {
+ compatible = "atmel,at91rm9200-clk-pll";
+ #clock-cells = <0>;
+ clocks = <&main>;
+ id = <0>;
+ input = <1000000 32000000>;
+ output = <80000000 160000000
+ 150000000 180000000>;
+ out = <0 2>;
+ };
+
+ pllb: pllbck {
+ compatible = "atmel,at91rm9200-clk-pll";
+ #clock-cells = <0>;
+ clocks = <&main>;
+ id = <1>;
+ input = <1000000 32000000>;
+ output = <80000000 160000000
+ 150000000 180000000>;
+ out = <0 2>;
+ };
+
+ mck: masterck {
+ compatible = "atmel,at91rm9200-clk-master";
+ #clock-cells = <0>;
+ clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
+ output = <0 80000000>;
+ divisors = <1 2 3 4>;
+ };
+
+ usb: usbck {
+ compatible = "atmel,at91rm9200-clk-usb";
+ #clock-cells = <0>;
+ clocks = <&pllb>;
+ divisors = <1 2 0 0>;
+ };
+
+ prog: progck {
+ compatible = "atmel,at91rm9200-clk-programmable";
+ #clock-cells = <1>;
+ ids = <0 1 2 3>;
+ clocks = <&clk32k>, <&main>, <&plla>, <&pllb>;
+ clock-output-names = "prog0", "prog1", "prog2", "prog3";
+ };
+
+ system: systemck {
+ compatible = "atmel,at91rm9200-clk-system";
+ #clock-cells = <1>;
+ ids = <1 4 8 9 10 11>;
+ clocks = <&usb>, <&usb>,
+ <&prog 0>, <&prog 1>,
+ <&prog 2>, <&prog 3>;
+ clock-output-names = "udpck", "uhpck",
+ "pck0", "pck1",
+ "pck2", "pck3";
+ };
+
+ periph: periphck {
+ compatible = "atmel,at91rm9200-clk-peripheral";
+ #clock-cells = <1>;
+ clocks = <&mck>;
+ ids = <2 3 4 5 6 7 8 9 10 11 12 13 14 17
+ 18 19 20 21 22 23 24 25 26 27 28>;
+ clock-output-names = "pioA_clk",
+ "pioB_clk",
+ "pioC_clk",
+ "pioD_clk",
+ "usart0_clk",
+ "usart1_clk",
+ "usart2_clk",
+ "usart3_clk",
+ "mci_clk",
+ "udc_clk",
+ "twi_clk",
+ "spi_clk",
+ "ssc0_clk",
+ "ssc1_clk",
+ "ssc2_clk",
+ "tc0_clk",
+ "tc1_clk",
+ "tc2_clk",
+ "tc3_clk",
+ "tc4_clk",
+ "tc5_clk",
+ "ohci_clk",
+ "pclk";
+ };
};
st: timer@fffffd00 {
@@ -89,6 +189,8 @@
interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0
18 IRQ_TYPE_LEVEL_HIGH 0
19 IRQ_TYPE_LEVEL_HIGH 0>;
+ clocks = <&periph 17>, <&periph 18>, <&periph 19>;
+ clock-names = "t0_clk", "t1_clk", "t2_clk";
};
tcb1: timer@fffa4000 {
@@ -97,6 +199,8 @@
interrupts = <20 IRQ_TYPE_LEVEL_HIGH 0
21 IRQ_TYPE_LEVEL_HIGH 0
22 IRQ_TYPE_LEVEL_HIGH 0>;
+ clocks = <&periph 20>, <&periph 21>, <&periph 22>;
+ clock-names = "t0_clk", "t1_clk", "t2_clk";
};
i2c0: i2c@fffb8000 {
@@ -107,6 +211,7 @@
pinctrl-0 = <&pinctrl_twi>;
#address-cells = <1>;
#size-cells = <0>;
+ clocks = <&periph 12>;
status = "disabled";
};
@@ -116,6 +221,8 @@
interrupts = <10 IRQ_TYPE_LEVEL_HIGH 0>;
#address-cells = <1>;
#size-cells = <0>;
+ clocks = <&periph 10>;
+ clock-names = "mci_clk";
status = "disabled";
};
@@ -125,6 +232,8 @@
interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
+ clocks = <&periph 14>;
+ clock-names = "pclk";
status = "disable";
};
@@ -134,6 +243,8 @@
interrupts = <15 IRQ_TYPE_LEVEL_HIGH 5>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ssc1_tx &pinctrl_ssc1_rx>;
+ clocks = <&periph 15>;
+ clock-names = "pclk";
status = "disable";
};
@@ -143,6 +254,8 @@
interrupts = <16 IRQ_TYPE_LEVEL_HIGH 5>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ssc2_tx &pinctrl_ssc2_rx>;
+ clocks = <&periph 16>;
+ clock-names = "pclk";
status = "disable";
};
@@ -153,6 +266,8 @@
phy-mode = "rmii";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_macb_rmii>;
+ clocks = <&periph 24>, <&periph 24>;
+ clock-names = "hclk", "pclk";
status = "disabled";
};
@@ -482,6 +597,7 @@
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&periph 2>;
};
pioB: gpio@fffff600 {
@@ -492,6 +608,7 @@
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&periph 3>;
};
pioC: gpio@fffff800 {
@@ -502,6 +619,7 @@
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&periph 4>;
};
pioD: gpio@fffffa00 {
@@ -512,6 +630,7 @@
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&periph 5>;
};
};
@@ -521,6 +640,8 @@
interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_dbgu>;
+ clocks = <&mck>;
+ clock-names = "usart";
status = "disabled";
};
@@ -532,6 +653,8 @@
atmel,use-dma-tx;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart0>;
+ clocks = <&periph 6>;
+ clock-names = "usart";
status = "disabled";
};
@@ -543,6 +666,8 @@
atmel,use-dma-tx;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart1>;
+ clocks = <&periph 7>;
+ clock-names = "usart";
status = "disabled";
};
@@ -554,6 +679,8 @@
atmel,use-dma-tx;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
+ clocks = <&periph 8>;
+ clock-names = "usart";
status = "disabled";
};
@@ -565,6 +692,8 @@
atmel,use-dma-tx;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart3>;
+ clocks = <&periph 9>;
+ clock-names = "usart";
status = "disabled";
};
@@ -572,6 +701,8 @@
compatible = "atmel,at91rm9200-udc";
reg = <0xfffb0000 0x4000>;
interrupts = <11 IRQ_TYPE_LEVEL_HIGH 2>;
+ clocks = <&periph 11>, <&system 1>;
+ clock-names = "udc_clk", "udpck";
status = "disabled";
};
};
@@ -597,6 +728,8 @@
compatible = "atmel,at91rm9200-ohci", "usb-ohci";
reg = <0x00300000 0x100000>;
interrupts = <23 IRQ_TYPE_LEVEL_HIGH 2>;
+ clocks = <&periph 23>, <&periph 23>, <&system 4>;
+ clock-names = "ohci_clk", "hclk", "uhpck";
status = "disabled";
};
};
Define at91rm9200 clocks in at91rm9200 device tree. Add references to the appropriate clocks in each peripheral. Signed-off-by: Boris BREZILLON <b.brezillon@overkiz.com> --- arch/arm/boot/dts/at91rm9200.dtsi | 133 +++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+)