aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2012-04-30 18:08:35 -0400
committerOlof Johansson <olof@lixom.net>2012-05-09 05:15:45 -0400
commit47fad7c6f8d9f64780793cc67d8280259538c31c (patch)
tree33c79cb7389ce309bc2d019512c16f12925c7f95
parente86bde3caea693b2e615e7b3664e6273160bf864 (diff)
parent26690863e2c1fa4fee5f6137b219f4b8a1a02287 (diff)
Merge tag 'at91-for-next-dt' of git://github.com/at91linux/linux-at91 into next/dt
"Jean-Christophe PLAGNIOL-VILLARD" <plagnioj@jcrosoft.com> writes: ARM: AT91 more DT material New SoC conversion and boards support SoC convertion to DT: - at91sam9260 - at91sam9263 boards: - Atmel at91sam9g20ek/9263ek - Calao TNY-A9260/A9263/A9G20 - Calao USB-A9260/A9263 - Ethernnut 5 - Kizbox * tag 'at91-for-next-dt' of git://github.com/at91linux/linux-at91: (32 commits) Ethernut 5 board support ARM: at91: add kizbox board dt support. ARM: at91: DT: add Calao TNY A9263 board support ARM: at91: DT: add Calao USB A9263 board support ARM: at91: add at91sam9263ek DT support ARM: at91: add at91sam9263 DT support ARM: at91: standard device init only if DT is not populated. ARM: at91: DT: add Calao USB A9260 DT support ARM: at91: Calao USB A926x factorize common binding in usb_a9260_common ARM: at91: USB A926x update nand partition ARM: at91: add at91sam9g20ek boards dt support arm: at91: add Calao TNY-A9260 and TNY-A9G20 board support ARM: at91: add at91sam9260 DT support ARM: at91: add defconfig for device tree ARM: at91/dt: do not specify the board any more ARN: at91: introduce SOC_AT91xxx define to allow to compile SoC core support ARM: at91: add SOC_AT91SAM9 kconfig option to factorise select ARM: at91: pm select memory controler at runtime ARM: at91: move at91_init_leds to board init ARM: at91: do not pin mux the UARTs in init_early ... Signed-off-by: Arnd Bergmann <arnd@arndb.de> [olof: rebuilt branch due to drop of an early merge] Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm/Kconfig4
-rw-r--r--arch/arm/boot/dts/at91sam9260.dtsi238
-rw-r--r--arch/arm/boot/dts/at91sam9263.dtsi220
-rw-r--r--arch/arm/boot/dts/at91sam9263ek.dts156
-rw-r--r--arch/arm/boot/dts/at91sam9g20.dtsi226
-rw-r--r--arch/arm/boot/dts/at91sam9g20ek.dts29
-rw-r--r--arch/arm/boot/dts/at91sam9g20ek_2mmc.dts29
-rw-r--r--arch/arm/boot/dts/at91sam9g20ek_common.dtsi142
-rw-r--r--arch/arm/boot/dts/ethernut5.dts84
-rw-r--r--arch/arm/boot/dts/kizbox.dts138
-rw-r--r--arch/arm/boot/dts/tny_a9260.dts15
-rw-r--r--arch/arm/boot/dts/tny_a9260_common.dtsi83
-rw-r--r--arch/arm/boot/dts/tny_a9263.dts97
-rw-r--r--arch/arm/boot/dts/tny_a9g20.dts15
-rw-r--r--arch/arm/boot/dts/usb_a9260.dts23
-rw-r--r--arch/arm/boot/dts/usb_a9260_common.dtsi117
-rw-r--r--arch/arm/boot/dts/usb_a9263.dts131
-rw-r--r--arch/arm/boot/dts/usb_a9g20.dts102
-rw-r--r--arch/arm/configs/at91_dt_defconfig196
-rw-r--r--arch/arm/configs/at91rm9200_defconfig1
-rw-r--r--arch/arm/mach-at91/Kconfig186
-rw-r--r--arch/arm/mach-at91/Makefile26
-rw-r--r--arch/arm/mach-at91/Makefile.boot12
-rw-r--r--arch/arm/mach-at91/at91rm9200.c12
-rw-r--r--arch/arm/mach-at91/at91rm9200_devices.c12
-rw-r--r--arch/arm/mach-at91/at91sam9260.c12
-rw-r--r--arch/arm/mach-at91/at91sam9260_devices.c32
-rw-r--r--arch/arm/mach-at91/at91sam9261.c12
-rw-r--r--arch/arm/mach-at91/at91sam9261_devices.c12
-rw-r--r--arch/arm/mach-at91/at91sam9263.c22
-rw-r--r--arch/arm/mach-at91/at91sam9263_devices.c32
-rw-r--r--arch/arm/mach-at91/at91sam9g45.c12
-rw-r--r--arch/arm/mach-at91/at91sam9g45_devices.c42
-rw-r--r--arch/arm/mach-at91/at91sam9rl.c12
-rw-r--r--arch/arm/mach-at91/at91sam9rl_devices.c12
-rw-r--r--arch/arm/mach-at91/board-1arm.c24
-rw-r--r--arch/arm/mach-at91/board-afeb-9260v1.c28
-rw-r--r--arch/arm/mach-at91/board-cam60.c8
-rw-r--r--arch/arm/mach-at91/board-carmeva.c18
-rw-r--r--arch/arm/mach-at91/board-cpu9krea.c52
-rw-r--r--arch/arm/mach-at91/board-cpuat91.c40
-rw-r--r--arch/arm/mach-at91/board-csb337.c13
-rw-r--r--arch/arm/mach-at91/board-csb637.c8
-rw-r--r--arch/arm/mach-at91/board-dt.c8
-rw-r--r--arch/arm/mach-at91/board-eb9200.c24
-rw-r--r--arch/arm/mach-at91/board-ecbat91.c20
-rw-r--r--arch/arm/mach-at91/board-eco920.c13
-rw-r--r--arch/arm/mach-at91/board-flexibity.c8
-rw-r--r--arch/arm/mach-at91/board-foxg20.c71
-rw-r--r--arch/arm/mach-at91/board-gsia18s.c63
-rw-r--r--arch/arm/mach-at91/board-kafa.c20
-rw-r--r--arch/arm/mach-at91/board-kb9202.c32
-rw-r--r--arch/arm/mach-at91/board-neocore926.c14
-rw-r--r--arch/arm/mach-at91/board-pcontrol-g20.c21
-rw-r--r--arch/arm/mach-at91/board-picotux200.c18
-rw-r--r--arch/arm/mach-at91/board-qil-a9260.c31
-rw-r--r--arch/arm/mach-at91/board-rm9200dk.c24
-rw-r--r--arch/arm/mach-at91/board-rm9200ek.c24
-rw-r--r--arch/arm/mach-at91/board-rsi-ews.c36
-rw-r--r--arch/arm/mach-at91/board-sam9-l9260.c30
-rw-r--r--arch/arm/mach-at91/board-sam9260ek.c24
-rw-r--r--arch/arm/mach-at91/board-sam9261ek.c14
-rw-r--r--arch/arm/mach-at91/board-sam9263ek.c14
-rw-r--r--arch/arm/mach-at91/board-sam9g20ek.c24
-rw-r--r--arch/arm/mach-at91/board-sam9m10g45ek.c16
-rw-r--r--arch/arm/mach-at91/board-sam9rlek.c14
-rw-r--r--arch/arm/mach-at91/board-snapper9260.c18
-rw-r--r--arch/arm/mach-at91/board-stamp9g20.c64
-rw-r--r--arch/arm/mach-at91/board-usb-a926x.c12
-rw-r--r--arch/arm/mach-at91/board-yl-9200.c36
-rw-r--r--arch/arm/mach-at91/cpuidle.c8
-rw-r--r--arch/arm/mach-at91/generic.h11
-rw-r--r--arch/arm/mach-at91/include/mach/at91rm9200.h5
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9260.h7
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9261.h4
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9263.h4
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9g45.h5
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9rl.h5
-rw-r--r--arch/arm/mach-at91/include/mach/at91sam9x5.h8
-rw-r--r--arch/arm/mach-at91/include/mach/board.h1
-rw-r--r--arch/arm/mach-at91/include/mach/cpu.h28
-rw-r--r--arch/arm/mach-at91/include/mach/hardware.h16
-rw-r--r--arch/arm/mach-at91/include/mach/uncompress.h178
-rw-r--r--arch/arm/mach-at91/pm.c12
-rw-r--r--arch/arm/mach-at91/pm.h15
-rw-r--r--arch/arm/mach-at91/pm_slowclock.S2
-rw-r--r--arch/arm/mach-at91/soc.h14
-rw-r--r--drivers/char/hw_random/Kconfig2
-rw-r--r--drivers/input/touchscreen/Kconfig4
-rw-r--r--drivers/rtc/Kconfig2
90 files changed, 2436 insertions, 1273 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 6e51ddde908a..3707ff06e50c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -340,8 +340,8 @@ config ARCH_AT91
340 select IRQ_DOMAIN 340 select IRQ_DOMAIN
341 select NEED_MACH_IO_H if PCCARD 341 select NEED_MACH_IO_H if PCCARD
342 help 342 help
343 This enables support for systems based on the Atmel AT91RM9200, 343 This enables support for systems based on Atmel
344 AT91SAM9 processors. 344 AT91RM9200 and AT91SAM9* processors.
345 345
346config ARCH_BCMRING 346config ARCH_BCMRING
347 bool "Broadcom BCMRING" 347 bool "Broadcom BCMRING"
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi
new file mode 100644
index 000000000000..f4605ff25fb8
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9260.dtsi
@@ -0,0 +1,238 @@
1/*
2 * at91sam9260.dtsi - Device Tree Include file for AT91SAM9260 family SoC
3 *
4 * Copyright (C) 2011 Atmel,
5 * 2011 Nicolas Ferre <nicolas.ferre@atmel.com>,
6 * 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
7 *
8 * Licensed under GPLv2 or later.
9 */
10
11/include/ "skeleton.dtsi"
12
13/ {
14 model = "Atmel AT91SAM9260 family SoC";
15 compatible = "atmel,at91sam9260";
16 interrupt-parent = <&aic>;
17
18 aliases {
19 serial0 = &dbgu;
20 serial1 = &usart0;
21 serial2 = &usart1;
22 serial3 = &usart2;
23 serial4 = &usart3;
24 serial5 = &usart4;
25 serial6 = &usart5;
26 gpio0 = &pioA;
27 gpio1 = &pioB;
28 gpio2 = &pioC;
29 tcb0 = &tcb0;
30 tcb1 = &tcb1;
31 };
32 cpus {
33 cpu@0 {
34 compatible = "arm,arm926ejs";
35 };
36 };
37
38 memory {
39 reg = <0x20000000 0x04000000>;
40 };
41
42 ahb {
43 compatible = "simple-bus";
44 #address-cells = <1>;
45 #size-cells = <1>;
46 ranges;
47
48 apb {
49 compatible = "simple-bus";
50 #address-cells = <1>;
51 #size-cells = <1>;
52 ranges;
53
54 aic: interrupt-controller@fffff000 {
55 #interrupt-cells = <2>;
56 compatible = "atmel,at91rm9200-aic";
57 interrupt-controller;
58 reg = <0xfffff000 0x200>;
59 };
60
61 ramc0: ramc@ffffea00 {
62 compatible = "atmel,at91sam9260-sdramc";
63 reg = <0xffffea00 0x200>;
64 };
65
66 pmc: pmc@fffffc00 {
67 compatible = "atmel,at91rm9200-pmc";
68 reg = <0xfffffc00 0x100>;
69 };
70
71 rstc@fffffd00 {
72 compatible = "atmel,at91sam9260-rstc";
73 reg = <0xfffffd00 0x10>;
74 };
75
76 shdwc@fffffd10 {
77 compatible = "atmel,at91sam9260-shdwc";
78 reg = <0xfffffd10 0x10>;
79 };
80
81 pit: timer@fffffd30 {
82 compatible = "atmel,at91sam9260-pit";
83 reg = <0xfffffd30 0xf>;
84 interrupts = <1 4>;
85 };
86
87 tcb0: timer@fffa0000 {
88 compatible = "atmel,at91rm9200-tcb";
89 reg = <0xfffa0000 0x100>;
90 interrupts = <17 4 18 4 19 4>;
91 };
92
93 tcb1: timer@fffdc000 {
94 compatible = "atmel,at91rm9200-tcb";
95 reg = <0xfffdc000 0x100>;
96 interrupts = <26 4 27 4 28 4>;
97 };
98
99 pioA: gpio@fffff400 {
100 compatible = "atmel,at91rm9200-gpio";
101 reg = <0xfffff400 0x100>;
102 interrupts = <2 4>;
103 #gpio-cells = <2>;
104 gpio-controller;
105 interrupt-controller;
106 };
107
108 pioB: gpio@fffff600 {
109 compatible = "atmel,at91rm9200-gpio";
110 reg = <0xfffff600 0x100>;
111 interrupts = <3 4>;
112 #gpio-cells = <2>;
113 gpio-controller;
114 interrupt-controller;
115 };
116
117 pioC: gpio@fffff800 {
118 compatible = "atmel,at91rm9200-gpio";
119 reg = <0xfffff800 0x100>;
120 interrupts = <4 4>;
121 #gpio-cells = <2>;
122 gpio-controller;
123 interrupt-controller;
124 };
125
126 dbgu: serial@fffff200 {
127 compatible = "atmel,at91sam9260-usart";
128 reg = <0xfffff200 0x200>;
129 interrupts = <1 4>;
130 status = "disabled";
131 };
132
133 usart0: serial@fffb0000 {
134 compatible = "atmel,at91sam9260-usart";
135 reg = <0xfffb0000 0x200>;
136 interrupts = <6 4>;
137 atmel,use-dma-rx;
138 atmel,use-dma-tx;
139 status = "disabled";
140 };
141
142 usart1: serial@fffb4000 {
143 compatible = "atmel,at91sam9260-usart";
144 reg = <0xfffb4000 0x200>;
145 interrupts = <7 4>;
146 atmel,use-dma-rx;
147 atmel,use-dma-tx;
148 status = "disabled";
149 };
150
151 usart2: serial@fffb8000 {
152 compatible = "atmel,at91sam9260-usart";
153 reg = <0xfffb8000 0x200>;
154 interrupts = <8 4>;
155 atmel,use-dma-rx;
156 atmel,use-dma-tx;
157 status = "disabled";
158 };
159
160 usart3: serial@fffd0000 {
161 compatible = "atmel,at91sam9260-usart";
162 reg = <0xfffd0000 0x200>;
163 interrupts = <23 4>;
164 atmel,use-dma-rx;
165 atmel,use-dma-tx;
166 status = "disabled";
167 };
168
169 usart4: serial@fffd4000 {
170 compatible = "atmel,at91sam9260-usart";
171 reg = <0xfffd4000 0x200>;
172 interrupts = <24 4>;
173 atmel,use-dma-rx;
174 atmel,use-dma-tx;
175 status = "disabled";
176 };
177
178 usart5: serial@fffd8000 {
179 compatible = "atmel,at91sam9260-usart";
180 reg = <0xfffd8000 0x200>;
181 interrupts = <25 4>;
182 atmel,use-dma-rx;
183 atmel,use-dma-tx;
184 status = "disabled";
185 };
186
187 macb0: ethernet@fffc4000 {
188 compatible = "cdns,at32ap7000-macb", "cdns,macb";
189 reg = <0xfffc4000 0x100>;
190 interrupts = <21 4>;
191 status = "disabled";
192 };
193
194 usb1: gadget@fffa4000 {
195 compatible = "atmel,at91rm9200-udc";
196 reg = <0xfffa4000 0x4000>;
197 interrupts = <10 4>;
198 status = "disabled";
199 };
200 };
201
202 nand0: nand@40000000 {
203 compatible = "atmel,at91rm9200-nand";
204 #address-cells = <1>;
205 #size-cells = <1>;
206 reg = <0x40000000 0x10000000
207 0xffffe800 0x200
208 >;
209 atmel,nand-addr-offset = <21>;
210 atmel,nand-cmd-offset = <22>;
211 gpios = <&pioC 13 0
212 &pioC 14 0
213 0
214 >;
215 status = "disabled";
216 };
217
218 usb0: ohci@00500000 {
219 compatible = "atmel,at91rm9200-ohci", "usb-ohci";
220 reg = <0x00500000 0x100000>;
221 interrupts = <20 4>;
222 status = "disabled";
223 };
224 };
225
226 i2c@0 {
227 compatible = "i2c-gpio";
228 gpios = <&pioA 23 0 /* sda */
229 &pioA 24 0 /* scl */
230 >;
231 i2c-gpio,sda-open-drain;
232 i2c-gpio,scl-open-drain;
233 i2c-gpio,delay-us = <2>; /* ~100 kHz */
234 #address-cells = <1>;
235 #size-cells = <0>;
236 status = "disabled";
237 };
238};
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi
new file mode 100644
index 000000000000..0209913a65a2
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9263.dtsi
@@ -0,0 +1,220 @@
1/*
2 * at91sam9263.dtsi - Device Tree Include file for AT91SAM9263 family SoC
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 only.
7 */
8
9/include/ "skeleton.dtsi"
10
11/ {
12 model = "Atmel AT91SAM9263 family SoC";
13 compatible = "atmel,at91sam9263";
14 interrupt-parent = <&aic>;
15
16 aliases {
17 serial0 = &dbgu;
18 serial1 = &usart0;
19 serial2 = &usart1;
20 serial3 = &usart2;
21 gpio0 = &pioA;
22 gpio1 = &pioB;
23 gpio2 = &pioC;
24 gpio3 = &pioD;
25 gpio4 = &pioE;
26 tcb0 = &tcb0;
27 };
28 cpus {
29 cpu@0 {
30 compatible = "arm,arm926ejs";
31 };
32 };
33
34 memory {
35 reg = <0x20000000 0x08000000>;
36 };
37
38 ahb {
39 compatible = "simple-bus";
40 #address-cells = <1>;
41 #size-cells = <1>;
42 ranges;
43
44 apb {
45 compatible = "simple-bus";
46 #address-cells = <1>;
47 #size-cells = <1>;
48 ranges;
49
50 aic: interrupt-controller@fffff000 {
51 #interrupt-cells = <2>;
52 compatible = "atmel,at91rm9200-aic";
53 interrupt-controller;
54 reg = <0xfffff000 0x200>;
55 };
56
57 pmc: pmc@fffffc00 {
58 compatible = "atmel,at91rm9200-pmc";
59 reg = <0xfffffc00 0x100>;
60 };
61
62 ramc: ramc@ffffe200 {
63 compatible = "atmel,at91sam9260-sdramc";
64 reg = <0xffffe200 0x200
65 0xffffe800 0x200>;
66 };
67
68 pit: timer@fffffd30 {
69 compatible = "atmel,at91sam9260-pit";
70 reg = <0xfffffd30 0xf>;
71 interrupts = <1 4>;
72 };
73
74 tcb0: timer@fff7c000 {
75 compatible = "atmel,at91rm9200-tcb";
76 reg = <0xfff7c000 0x100>;
77 interrupts = <19 4>;
78 };
79
80 rstc@fffffd00 {
81 compatible = "atmel,at91sam9260-rstc";
82 reg = <0xfffffd00 0x10>;
83 };
84
85 shdwc@fffffd10 {
86 compatible = "atmel,at91sam9260-shdwc";
87 reg = <0xfffffd10 0x10>;
88 };
89
90 pioA: gpio@fffff200 {
91 compatible = "atmel,at91rm9200-gpio";
92 reg = <0xfffff200 0x100>;
93 interrupts = <2 4>;
94 #gpio-cells = <2>;
95 gpio-controller;
96 interrupt-controller;
97 };
98
99 pioB: gpio@fffff400 {
100 compatible = "atmel,at91rm9200-gpio";
101 reg = <0xfffff400 0x100>;
102 interrupts = <3 4>;
103 #gpio-cells = <2>;
104 gpio-controller;
105 interrupt-controller;
106 };
107
108 pioC: gpio@fffff600 {
109 compatible = "atmel,at91rm9200-gpio";
110 reg = <0xfffff600 0x100>;
111 interrupts = <4 4>;
112 #gpio-cells = <2>;
113 gpio-controller;
114 interrupt-controller;
115 };
116
117 pioD: gpio@fffff800 {
118 compatible = "atmel,at91rm9200-gpio";
119 reg = <0xfffff800 0x100>;
120 interrupts = <4 4>;
121 #gpio-cells = <2>;
122 gpio-controller;
123 interrupt-controller;
124 };
125
126 pioE: gpio@fffffa00 {
127 compatible = "atmel,at91rm9200-gpio";
128 reg = <0xfffffa00 0x100>;
129 interrupts = <4 4>;
130 #gpio-cells = <2>;
131 gpio-controller;
132 interrupt-controller;
133 };
134
135 dbgu: serial@ffffee00 {
136 compatible = "atmel,at91sam9260-usart";
137 reg = <0xffffee00 0x200>;
138 interrupts = <1 4>;
139 status = "disabled";
140 };
141
142 usart0: serial@fff8c000 {
143 compatible = "atmel,at91sam9260-usart";
144 reg = <0xfff8c000 0x200>;
145 interrupts = <7 4>;
146 atmel,use-dma-rx;
147 atmel,use-dma-tx;
148 status = "disabled";
149 };
150
151 usart1: serial@fff90000 {
152 compatible = "atmel,at91sam9260-usart";
153 reg = <0xfff90000 0x200>;
154 interrupts = <8 4>;
155 atmel,use-dma-rx;
156 atmel,use-dma-tx;
157 status = "disabled";
158 };
159
160 usart2: serial@fff94000 {
161 compatible = "atmel,at91sam9260-usart";
162 reg = <0xfff94000 0x200>;
163 interrupts = <9 4>;
164 atmel,use-dma-rx;
165 atmel,use-dma-tx;
166 status = "disabled";
167 };
168
169 macb0: ethernet@fffbc000 {
170 compatible = "cdns,at32ap7000-macb", "cdns,macb";
171 reg = <0xfffbc000 0x100>;
172 interrupts = <21 4>;
173 status = "disabled";
174 };
175
176 usb1: gadget@fff78000 {
177 compatible = "atmel,at91rm9200-udc";
178 reg = <0xfff78000 0x4000>;
179 interrupts = <24 4>;
180 status = "disabled";
181 };
182 };
183
184 nand0: nand@40000000 {
185 compatible = "atmel,at91rm9200-nand";
186 #address-cells = <1>;
187 #size-cells = <1>;
188 reg = <0x40000000 0x10000000
189 0xffffe000 0x200
190 >;
191 atmel,nand-addr-offset = <21>;
192 atmel,nand-cmd-offset = <22>;
193 gpios = <&pioA 22 0
194 &pioD 15 0
195 0
196 >;
197 status = "disabled";
198 };
199
200 usb0: ohci@00a00000 {
201 compatible = "atmel,at91rm9200-ohci", "usb-ohci";
202 reg = <0x00a00000 0x100000>;
203 interrupts = <29 4>;
204 status = "disabled";
205 };
206 };
207
208 i2c@0 {
209 compatible = "i2c-gpio";
210 gpios = <&pioB 4 0 /* sda */
211 &pioB 5 0 /* scl */
212 >;
213 i2c-gpio,sda-open-drain;
214 i2c-gpio,scl-open-drain;
215 i2c-gpio,delay-us = <2>; /* ~100 kHz */
216 #address-cells = <1>;
217 #size-cells = <0>;
218 status = "disabled";
219 };
220};
diff --git a/arch/arm/boot/dts/at91sam9263ek.dts b/arch/arm/boot/dts/at91sam9263ek.dts
new file mode 100644
index 000000000000..f86ac4b609fc
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9263ek.dts
@@ -0,0 +1,156 @@
1/*
2 * at91sam9263ek.dts - Device Tree file for Atmel at91sam9263 reference board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 only
7 */
8/dts-v1/;
9/include/ "at91sam9263.dtsi"
10
11/ {
12 model = "Atmel at91sam9263ek";
13 compatible = "atmel,at91sam9263ek", "atmel,at91sam9263", "atmel,at91sam9";
14
15 chosen {
16 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
17 };
18
19 memory {
20 reg = <0x20000000 0x4000000>;
21 };
22
23 clocks {
24 #address-cells = <1>;
25 #size-cells = <1>;
26 ranges;
27
28 main_clock: clock@0 {
29 compatible = "atmel,osc", "fixed-clock";
30 clock-frequency = <16367660>;
31 };
32 };
33
34 ahb {
35 apb {
36 dbgu: serial@ffffee00 {
37 status = "okay";
38 };
39
40 usart0: serial@fff8c000 {
41 status = "okay";
42 };
43
44 macb0: ethernet@fffbc000 {
45 phy-mode = "rmii";
46 status = "okay";
47 };
48
49 usb1: gadget@fff78000 {
50 atmel,vbus-gpio = <&pioA 25 0>;
51 status = "okay";
52 };
53 };
54
55 nand0: nand@40000000 {
56 nand-bus-width = <8>;
57 nand-ecc-mode = "soft";
58 nand-on-flash-bbt = <1>;
59 status = "okay";
60
61 at91bootstrap@0 {
62 label = "at91bootstrap";
63 reg = <0x0 0x20000>;
64 };
65
66 barebox@20000 {
67 label = "barebox";
68 reg = <0x20000 0x40000>;
69 };
70
71 bareboxenv@60000 {
72 label = "bareboxenv";
73 reg = <0x60000 0x20000>;
74 };
75
76 bareboxenv2@80000 {
77 label = "bareboxenv2";
78 reg = <0x80000 0x20000>;
79 };
80
81 oftree@80000 {
82 label = "oftree";
83 reg = <0xa0000 0x20000>;
84 };
85
86 kernel@a0000 {
87 label = "kernel";
88 reg = <0xc0000 0x400000>;
89 };
90
91 rootfs@4a0000 {
92 label = "rootfs";
93 reg = <0x4c0000 0x7800000>;
94 };
95
96 data@7ca0000 {
97 label = "data";
98 reg = <0x7cc0000 0x8340000>;
99 };
100 };
101
102 usb0: ohci@00a00000 {
103 num-ports = <2>;
104 status = "okay";
105 atmel,vbus-gpio = <&pioA 24 0
106 &pioA 21 0
107 >;
108 };
109 };
110
111 leds {
112 compatible = "gpio-leds";
113
114 d3 {
115 label = "d3";
116 gpios = <&pioB 7 0>;
117 linux,default-trigger = "heartbeat";
118 };
119
120 d2 {
121 label = "d2";
122 gpios = <&pioC 29 1>;
123 linux,default-trigger = "nand-disk";
124 };
125 };
126
127 gpio_keys {
128 compatible = "gpio-keys";
129 #address-cells = <1>;
130 #size-cells = <0>;
131
132 left_click {
133 label = "left_click";
134 gpios = <&pioC 5 1>;
135 linux,code = <272>;
136 gpio-key,wakeup;
137 };
138
139 right_click {
140 label = "right_click";
141 gpios = <&pioC 4 1>;
142 linux,code = <273>;
143 gpio-key,wakeup;
144 };
145 };
146
147 i2c@0 {
148 status = "okay";
149
150 24c512@50 {
151 compatible = "24c512";
152 reg = <0x50>;
153 pagesize = <128>;
154 };
155 };
156};
diff --git a/arch/arm/boot/dts/at91sam9g20.dtsi b/arch/arm/boot/dts/at91sam9g20.dtsi
index 773ef484037a..0eb1a753f796 100644
--- a/arch/arm/boot/dts/at91sam9g20.dtsi
+++ b/arch/arm/boot/dts/at91sam9g20.dtsi
@@ -1,238 +1,18 @@
1/* 1/*
2 * at91sam9g20.dtsi - Device Tree Include file for AT91SAM9G20 family SoC 2 * at91sam9g20.dtsi - Device Tree Include file for AT91SAM9G20 family SoC
3 * 3 *
4 * Copyright (C) 2011 Atmel, 4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 * 2011 Nicolas Ferre <nicolas.ferre@atmel.com>,
6 * 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
7 * 5 *
8 * Licensed under GPLv2 or later. 6 * Licensed under GPLv2.
9 */ 7 */
10 8
11/include/ "skeleton.dtsi" 9/include/ "at91sam9260.dtsi"
12 10
13/ { 11/ {
14 model = "Atmel AT91SAM9G20 family SoC"; 12 model = "Atmel AT91SAM9G20 family SoC";
15 compatible = "atmel,at91sam9g20"; 13 compatible = "atmel,at91sam9g20";
16 interrupt-parent = <&aic>;
17
18 aliases {
19 serial0 = &dbgu;
20 serial1 = &usart0;
21 serial2 = &usart1;
22 serial3 = &usart2;
23 serial4 = &usart3;
24 serial5 = &usart4;
25 serial6 = &usart5;
26 gpio0 = &pioA;
27 gpio1 = &pioB;
28 gpio2 = &pioC;
29 tcb0 = &tcb0;
30 tcb1 = &tcb1;
31 };
32 cpus {
33 cpu@0 {
34 compatible = "arm,arm926ejs";
35 };
36 };
37 14
38 memory { 15 memory {
39 reg = <0x20000000 0x08000000>; 16 reg = <0x20000000 0x08000000>;
40 }; 17 };
41
42 ahb {
43 compatible = "simple-bus";
44 #address-cells = <1>;
45 #size-cells = <1>;
46 ranges;
47
48 apb {
49 compatible = "simple-bus";
50 #address-cells = <1>;
51 #size-cells = <1>;
52 ranges;
53
54 aic: interrupt-controller@fffff000 {
55 #interrupt-cells = <2>;
56 compatible = "atmel,at91rm9200-aic";
57 interrupt-controller;
58 reg = <0xfffff000 0x200>;
59 };
60
61 ramc0: ramc@ffffea00 {
62 compatible = "atmel,at91sam9260-sdramc";
63 reg = <0xffffea00 0x200>;
64 };
65
66 pmc: pmc@fffffc00 {
67 compatible = "atmel,at91rm9200-pmc";
68 reg = <0xfffffc00 0x100>;
69 };
70
71 rstc@fffffd00 {
72 compatible = "atmel,at91sam9260-rstc";
73 reg = <0xfffffd00 0x10>;
74 };
75
76 shdwc@fffffd10 {
77 compatible = "atmel,at91sam9260-shdwc";
78 reg = <0xfffffd10 0x10>;
79 };
80
81 pit: timer@fffffd30 {
82 compatible = "atmel,at91sam9260-pit";
83 reg = <0xfffffd30 0xf>;
84 interrupts = <1 4>;
85 };
86
87 tcb0: timer@fffa0000 {
88 compatible = "atmel,at91rm9200-tcb";
89 reg = <0xfffa0000 0x100>;
90 interrupts = <17 4 18 4 19 4>;
91 };
92
93 tcb1: timer@fffdc000 {
94 compatible = "atmel,at91rm9200-tcb";
95 reg = <0xfffdc000 0x100>;
96 interrupts = <26 4 27 4 28 4>;
97 };
98
99 pioA: gpio@fffff400 {
100 compatible = "atmel,at91rm9200-gpio";
101 reg = <0xfffff400 0x100>;
102 interrupts = <2 4>;
103 #gpio-cells = <2>;
104 gpio-controller;
105 interrupt-controller;
106 };
107
108 pioB: gpio@fffff600 {
109 compatible = "atmel,at91rm9200-gpio";
110 reg = <0xfffff600 0x100>;
111 interrupts = <3 4>;
112 #gpio-cells = <2>;
113 gpio-controller;
114 interrupt-controller;
115 };
116
117 pioC: gpio@fffff800 {
118 compatible = "atmel,at91rm9200-gpio";
119 reg = <0xfffff800 0x100>;
120 interrupts = <4 4>;
121 #gpio-cells = <2>;
122 gpio-controller;
123 interrupt-controller;
124 };
125
126 dbgu: serial@fffff200 {
127 compatible = "atmel,at91sam9260-usart";
128 reg = <0xfffff200 0x200>;
129 interrupts = <1 4>;
130 status = "disabled";
131 };
132
133 usart0: serial@fffb0000 {
134 compatible = "atmel,at91sam9260-usart";
135 reg = <0xfffb0000 0x200>;
136 interrupts = <6 4>;
137 atmel,use-dma-rx;
138 atmel,use-dma-tx;
139 status = "disabled";
140 };
141
142 usart1: serial@fffb4000 {
143 compatible = "atmel,at91sam9260-usart";
144 reg = <0xfffb4000 0x200>;
145 interrupts = <7 4>;
146 atmel,use-dma-rx;
147 atmel,use-dma-tx;
148 status = "disabled";
149 };
150
151 usart2: serial@fffb8000 {
152 compatible = "atmel,at91sam9260-usart";
153 reg = <0xfffb8000 0x200>;
154 interrupts = <8 4>;
155 atmel,use-dma-rx;
156 atmel,use-dma-tx;
157 status = "disabled";
158 };
159
160 usart3: serial@fffd0000 {
161 compatible = "atmel,at91sam9260-usart";
162 reg = <0xfffd0000 0x200>;
163 interrupts = <23 4>;
164 atmel,use-dma-rx;
165 atmel,use-dma-tx;
166 status = "disabled";
167 };
168
169 usart4: serial@fffd4000 {
170 compatible = "atmel,at91sam9260-usart";
171 reg = <0xfffd4000 0x200>;
172 interrupts = <24 4>;
173 atmel,use-dma-rx;
174 atmel,use-dma-tx;
175 status = "disabled";
176 };
177
178 usart5: serial@fffd8000 {
179 compatible = "atmel,at91sam9260-usart";
180 reg = <0xfffd8000 0x200>;
181 interrupts = <25 4>;
182 atmel,use-dma-rx;
183 atmel,use-dma-tx;
184 status = "disabled";
185 };
186
187 macb0: ethernet@fffc4000 {
188 compatible = "cdns,at32ap7000-macb", "cdns,macb";
189 reg = <0xfffc4000 0x100>;
190 interrupts = <21 4>;
191 status = "disabled";
192 };
193
194 usb1: gadget@fffa4000 {
195 compatible = "atmel,at91rm9200-udc";
196 reg = <0xfffa4000 0x4000>;
197 interrupts = <10 4>;
198 status = "disabled";
199 };
200 };
201
202 nand0: nand@40000000 {
203 compatible = "atmel,at91rm9200-nand";
204 #address-cells = <1>;
205 #size-cells = <1>;
206 reg = <0x40000000 0x10000000
207 0xffffe800 0x200
208 >;
209 atmel,nand-addr-offset = <21>;
210 atmel,nand-cmd-offset = <22>;
211 gpios = <&pioC 13 0
212 &pioC 14 0
213 0
214 >;
215 status = "disabled";
216 };
217
218 usb0: ohci@00500000 {
219 compatible = "atmel,at91rm9200-ohci", "usb-ohci";
220 reg = <0x00500000 0x100000>;
221 interrupts = <20 4>;
222 status = "disabled";
223 };
224 };
225
226 i2c@0 {
227 compatible = "i2c-gpio";
228 gpios = <&pioA 23 0 /* sda */
229 &pioA 24 0 /* scl */
230 >;
231 i2c-gpio,sda-open-drain;
232 i2c-gpio,scl-open-drain;
233 i2c-gpio,delay-us = <2>; /* ~100 kHz */
234 #address-cells = <1>;
235 #size-cells = <0>;
236 status = "disabled";
237 };
238}; 18};
diff --git a/arch/arm/boot/dts/at91sam9g20ek.dts b/arch/arm/boot/dts/at91sam9g20ek.dts
new file mode 100644
index 000000000000..e5324bf9d529
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g20ek.dts
@@ -0,0 +1,29 @@
1/*
2 * at91sam9g20ek.dts - Device Tree file for Atmel at91sam9g20ek board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9g20ek_common.dtsi"
10
11/ {
12 model = "Atmel at91sam9g20ek";
13 compatible = "atmel,at91sam9g20ek", "atmel,at91sam9g20", "atmel,at91sam9";
14
15 leds {
16 compatible = "gpio-leds";
17
18 ds1 {
19 label = "ds1";
20 gpios = <&pioA 9 0>;
21 linux,default-trigger = "heartbeat";
22 };
23
24 ds5 {
25 label = "ds5";
26 gpios = <&pioA 6 1>;
27 };
28 };
29};
diff --git a/arch/arm/boot/dts/at91sam9g20ek_2mmc.dts b/arch/arm/boot/dts/at91sam9g20ek_2mmc.dts
new file mode 100644
index 000000000000..f1b2e148ac8c
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g20ek_2mmc.dts
@@ -0,0 +1,29 @@
1/*
2 * at91sam9g20ek_2mmc.dts - Device Tree file for Atmel at91sam9g20ek 2 MMC board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9g20ek_common.dtsi"
10
11/ {
12 model = "Atmel at91sam9g20ek 2 mmc";
13 compatible = "atmel,at91sam9g20ek_2mmc", "atmel,at91sam9g20", "atmel,at91sam9";
14
15 leds {
16 compatible = "gpio-leds";
17
18 ds1 {
19 label = "ds1";
20 gpios = <&pioB 9 0>;
21 linux,default-trigger = "heartbeat";
22 };
23
24 ds5 {
25 label = "ds5";
26 gpios = <&pioB 8 1>;
27 };
28 };
29};
diff --git a/arch/arm/boot/dts/at91sam9g20ek_common.dtsi b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
new file mode 100644
index 000000000000..b06c0db273b1
--- /dev/null
+++ b/arch/arm/boot/dts/at91sam9g20ek_common.dtsi
@@ -0,0 +1,142 @@
1/*
2 * at91sam9g20ek_common.dtsi - Device Tree file for Atmel at91sam9g20ek board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8/include/ "at91sam9g20.dtsi"
9
10/ {
11
12 chosen {
13 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
14 };
15
16 memory {
17 reg = <0x20000000 0x4000000>;
18 };
19
20 clocks {
21 #address-cells = <1>;
22 #size-cells = <1>;
23 ranges;
24
25 main_clock: clock@0 {
26 compatible = "atmel,osc", "fixed-clock";
27 clock-frequency = <18432000>;
28 };
29 };
30
31 ahb {
32 apb {
33 dbgu: serial@fffff200 {
34 status = "okay";
35 };
36
37 usart0: serial@fffb0000 {
38 status = "okay";
39 };
40
41 usart1: serial@fffb4000 {
42 status = "okay";
43 };
44
45 macb0: ethernet@fffc4000 {
46 phy-mode = "rmii";
47 status = "okay";
48 };
49
50 usb1: gadget@fffa4000 {
51 atmel,vbus-gpio = <&pioC 5 0>;
52 status = "okay";
53 };
54 };
55
56 nand0: nand@40000000 {
57 nand-bus-width = <8>;
58 nand-ecc-mode = "soft";
59 nand-on-flash-bbt;
60 status = "okay";
61
62 at91bootstrap@0 {
63 label = "at91bootstrap";
64 reg = <0x0 0x20000>;
65 };
66
67 barebox@20000 {
68 label = "barebox";
69 reg = <0x20000 0x40000>;
70 };
71
72 bareboxenv@60000 {
73 label = "bareboxenv";
74 reg = <0x60000 0x20000>;
75 };
76
77 bareboxenv2@80000 {
78 label = "bareboxenv2";
79 reg = <0x80000 0x20000>;
80 };
81
82 oftree@80000 {
83 label = "oftree";
84 reg = <0xa0000 0x20000>;
85 };
86
87 kernel@a0000 {
88 label = "kernel";
89 reg = <0xc0000 0x400000>;
90 };
91
92 rootfs@4a0000 {
93 label = "rootfs";
94 reg = <0x4c0000 0x7800000>;
95 };
96
97 data@7ca0000 {
98 label = "data";
99 reg = <0x7cc0000 0x8340000>;
100 };
101 };
102
103 usb0: ohci@00500000 {
104 num-ports = <2>;
105 status = "okay";
106 };
107 };
108
109 i2c@0 {
110 status = "okay";
111
112 24c512@50 {
113 compatible = "24c512";
114 reg = <0x50>;
115 };
116
117 wm8731@1b {
118 compatible = "wm8731";
119 reg = <0x1b>;
120 };
121 };
122
123 gpio_keys {
124 compatible = "gpio-keys";
125 #address-cells = <1>;
126 #size-cells = <0>;
127
128 btn3 {
129 label = "Buttin 3";
130 gpios = <&pioA 30 1>;
131 linux,code = <0x103>;
132 gpio-key,wakeup;
133 };
134
135 btn4 {
136 label = "Buttin 4";
137 gpios = <&pioA 31 1>;
138 linux,code = <0x104>;
139 gpio-key,wakeup;
140 };
141 };
142};
diff --git a/arch/arm/boot/dts/ethernut5.dts b/arch/arm/boot/dts/ethernut5.dts
new file mode 100644
index 000000000000..1ea9d34460a4
--- /dev/null
+++ b/arch/arm/boot/dts/ethernut5.dts
@@ -0,0 +1,84 @@
1/*
2 * ethernut5.dts - Device Tree file for Ethernut 5 board
3 *
4 * Copyright (C) 2012 egnite GmbH <info@egnite.de>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9260.dtsi"
10
11/ {
12 model = "Ethernut 5";
13 compatible = "egnite,ethernut5", "atmel,at91sam9260", "atmel,at91sam9";
14
15 chosen {
16 bootargs = "console=ttyS0,115200 root=/dev/mtdblock0 rw rootfstype=jffs2";
17 };
18
19 memory {
20 reg = <0x20000000 0x08000000>;
21 };
22
23 ahb {
24 apb {
25 dbgu: serial@fffff200 {
26 status = "okay";
27 };
28
29 usart0: serial@fffb0000 {
30 status = "okay";
31 };
32
33 usart1: serial@fffb4000 {
34 status = "okay";
35 };
36
37 macb0: ethernet@fffc4000 {
38 phy-mode = "rmii";
39 status = "okay";
40 };
41
42 usb1: gadget@fffa4000 {
43 atmel,vbus-gpio = <&pioC 5 0>;
44 status = "okay";
45 };
46 };
47
48 nand0: nand@40000000 {
49 nand-bus-width = <8>;
50 nand-ecc-mode = "soft";
51 nand-on-flash-bbt;
52 status = "okay";
53
54 gpios = <0
55 &pioC 14 0
56 0
57 >;
58
59 root@0 {
60 label = "root";
61 reg = <0x0 0x08000000>;
62 };
63
64 data@20000 {
65 label = "data";
66 reg = <0x08000000 0x38000000>;
67 };
68 };
69
70 usb0: ohci@00500000 {
71 num-ports = <2>;
72 status = "okay";
73 };
74 };
75
76 i2c@0 {
77 status = "okay";
78
79 pcf8563@50 {
80 compatible = "nxp,pcf8563";
81 reg = <0x51>;
82 };
83 };
84};
diff --git a/arch/arm/boot/dts/kizbox.dts b/arch/arm/boot/dts/kizbox.dts
new file mode 100644
index 000000000000..e8814fe0e277
--- /dev/null
+++ b/arch/arm/boot/dts/kizbox.dts
@@ -0,0 +1,138 @@
1/*
2 * kizbox.dts - Device Tree file for Overkiz Kizbox board
3 *
4 * Copyright (C) 2012 Boris BREZILLON <linux-arm@overkiz.com>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9g20.dtsi"
10
11/ {
12
13 model = "Overkiz kizbox";
14 compatible = "overkiz,kizbox", "atmel,at91sam9g20", "atmel,at91sam9";
15
16 chosen {
17 bootargs = "panic=5 ubi.mtd=1 rootfstype=ubifs root=ubi0:root";
18 };
19
20 memory {
21 reg = <0x20000000 0x2000000>;
22 };
23
24 clocks {
25 #address-cells = <1>;
26 #size-cells = <1>;
27 ranges;
28
29 main_clock: clock@0 {
30 compatible = "atmel,osc", "fixed-clock";
31 clock-frequency = <18432000>;
32 };
33 };
34
35 ahb {
36 apb {
37 dbgu: serial@fffff200 {
38 status = "okay";
39 };
40
41 usart0: serial@fffb0000 {
42 status = "okay";
43 };
44
45 usart1: serial@fffb4000 {
46 status = "okay";
47 };
48
49 macb0: ethernet@fffc4000 {
50 phy-mode = "mii";
51 status = "okay";
52 };
53
54 };
55
56 nand0: nand@40000000 {
57 nand-bus-width = <8>;
58 nand-ecc-mode = "soft";
59 status = "okay";
60
61 bootloaderkernel@0 {
62 label = "bootloader-kernel";
63 reg = <0x0 0xc0000>;
64 };
65
66 ubi@c0000 {
67 label = "ubi";
68 reg = <0xc0000 0x7f40000>;
69 };
70
71 };
72
73 usb0: ohci@00500000 {
74 num-ports = <1>;
75 status = "okay";
76 };
77 };
78
79 i2c@0 {
80 status = "okay";
81
82 pcf8563@51 {
83 /* nxp pcf8563 rtc */
84 compatible = "nxp,pcf8563";
85 reg = <0x51>;
86 };
87
88 };
89
90 leds {
91 compatible = "gpio-leds";
92
93 led1g {
94 label = "led1:green";
95 gpios = <&pioB 0 1>;
96 linux,default-trigger = "none";
97 };
98
99 led1r {
100 label = "led1:red";
101 gpios = <&pioB 1 1>;
102 linux,default-trigger = "none";
103 };
104
105 led2g {
106 label = "led2:green";
107 gpios = <&pioB 2 1>;
108 linux,default-trigger = "none";
109 default-state = "on";
110 };
111
112 led2r {
113 label = "led2:red";
114 gpios = <&pioB 3 1>;
115 linux,default-trigger = "none";
116 };
117 };
118
119 gpio_keys {
120 compatible = "gpio-keys";
121 #address-cells = <1>;
122 #size-cells = <0>;
123
124 reset {
125 label = "reset";
126 gpios = <&pioB 30 1>;
127 linux,code = <0x100>;
128 gpio-key,wakeup;
129 };
130
131 mode {
132 label = "mode";
133 gpios = <&pioB 31 1>;
134 linux,code = <0x101>;
135 gpio-key,wakeup;
136 };
137 };
138}; \ No newline at end of file
diff --git a/arch/arm/boot/dts/tny_a9260.dts b/arch/arm/boot/dts/tny_a9260.dts
new file mode 100644
index 000000000000..367a16dcd5ef
--- /dev/null
+++ b/arch/arm/boot/dts/tny_a9260.dts
@@ -0,0 +1,15 @@
1/*
2 * tny_a9260.dts - Device Tree file for Caloa TNY A9260 board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9260.dtsi"
10/include/ "tny_a9260_common.dtsi"
11
12/ {
13 model = "Calao TNY A9260";
14 compatible = "calao,tny-a9260", "atmel,at91sam9260", "atmel,at91sam9";
15};
diff --git a/arch/arm/boot/dts/tny_a9260_common.dtsi b/arch/arm/boot/dts/tny_a9260_common.dtsi
new file mode 100644
index 000000000000..0e6d3de2e09e
--- /dev/null
+++ b/arch/arm/boot/dts/tny_a9260_common.dtsi
@@ -0,0 +1,83 @@
1/*
2 * tny_a9260_common.dtsi - Device Tree file for Caloa TNY A926x board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8
9/ {
10 chosen {
11 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock6 rw rootfstype=ubifs";
12 };
13
14 memory {
15 reg = <0x20000000 0x4000000>;
16 };
17
18 clocks {
19 #address-cells = <1>;
20 #size-cells = <1>;
21 ranges;
22
23 main_clock: clock@0 {
24 compatible = "atmel,osc", "fixed-clock";
25 clock-frequency = <12000000>;
26 };
27 };
28
29 ahb {
30 apb {
31 dbgu: serial@fffff200 {
32 status = "okay";
33 };
34 };
35
36 nand0: nand@40000000 {
37 nand-bus-width = <8>;
38 nand-ecc-mode = "soft";
39 nand-on-flash-bbt;
40 status = "okay";
41
42 at91bootstrap@0 {
43 label = "at91bootstrap";
44 reg = <0x0 0x20000>;
45 };
46
47 barebox@20000 {
48 label = "barebox";
49 reg = <0x20000 0x40000>;
50 };
51
52 bareboxenv@60000 {
53 label = "bareboxenv";
54 reg = <0x60000 0x20000>;
55 };
56
57 bareboxenv2@80000 {
58 label = "bareboxenv2";
59 reg = <0x80000 0x20000>;
60 };
61
62 oftree@80000 {
63 label = "oftree";
64 reg = <0xa0000 0x20000>;
65 };
66
67 kernel@a0000 {
68 label = "kernel";
69 reg = <0xc0000 0x400000>;
70 };
71
72 rootfs@4a0000 {
73 label = "rootfs";
74 reg = <0x4c0000 0x7800000>;
75 };
76
77 data@7ca0000 {
78 label = "data";
79 reg = <0x7cc0000 0x8340000>;
80 };
81 };
82 };
83};
diff --git a/arch/arm/boot/dts/tny_a9263.dts b/arch/arm/boot/dts/tny_a9263.dts
new file mode 100644
index 000000000000..dee9c571306b
--- /dev/null
+++ b/arch/arm/boot/dts/tny_a9263.dts
@@ -0,0 +1,97 @@
1/*
2 * usb_a9263.dts - Device Tree file for Caloa USB A9293 board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 only
7 */
8/dts-v1/;
9/include/ "at91sam9263.dtsi"
10
11/ {
12 model = "Calao TNY A9263";
13 compatible = "atmel,tny-a9263", "atmel,at91sam9263", "atmel,at91sam9";
14
15 chosen {
16 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
17 };
18
19 memory {
20 reg = <0x20000000 0x4000000>;
21 };
22
23 clocks {
24 #address-cells = <1>;
25 #size-cells = <1>;
26 ranges;
27
28 main_clock: clock@0 {
29 compatible = "atmel,osc", "fixed-clock";
30 clock-frequency = <12000000>;
31 };
32 };
33
34 ahb {
35 apb {
36 dbgu: serial@ffffee00 {
37 status = "okay";
38 };
39
40 usb1: gadget@fff78000 {
41 atmel,vbus-gpio = <&pioB 11 0>;
42 status = "okay";
43 };
44 };
45
46 nand0: nand@40000000 {
47 nand-bus-width = <8>;
48 nand-ecc-mode = "soft";
49 nand-on-flash-bbt;
50 status = "okay";
51
52 at91bootstrap@0 {
53 label = "at91bootstrap";
54 reg = <0x0 0x20000>;
55 };
56
57 barebox@20000 {
58 label = "barebox";
59 reg = <0x20000 0x40000>;
60 };
61
62 bareboxenv@60000 {
63 label = "bareboxenv";
64 reg = <0x60000 0x20000>;
65 };
66
67 bareboxenv2@80000 {
68 label = "bareboxenv2";
69 reg = <0x80000 0x20000>;
70 };
71
72 oftree@80000 {
73 label = "oftree";
74 reg = <0xa0000 0x20000>;
75 };
76
77 kernel@a0000 {
78 label = "kernel";
79 reg = <0xc0000 0x400000>;
80 };
81
82 rootfs@4a0000 {
83 label = "rootfs";
84 reg = <0x4c0000 0x7800000>;
85 };
86
87 data@7ca0000 {
88 label = "data";
89 reg = <0x7cc0000 0x8340000>;
90 };
91 };
92 };
93
94 i2c@0 {
95 status = "okay";
96 };
97};
diff --git a/arch/arm/boot/dts/tny_a9g20.dts b/arch/arm/boot/dts/tny_a9g20.dts
new file mode 100644
index 000000000000..e1ab64c72dba
--- /dev/null
+++ b/arch/arm/boot/dts/tny_a9g20.dts
@@ -0,0 +1,15 @@
1/*
2 * tny_a9g20.dts - Device Tree file for Caloa TNY A9G20 board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2.
7 */
8/dts-v1/;
9/include/ "at91sam9g20.dtsi"
10/include/ "tny_a9260_common.dtsi"
11
12/ {
13 model = "Calao TNY A9G20";
14 compatible = "calao,tny-a9g20", "atmel,at91sam9g20", "atmel,at91sam9";
15};
diff --git a/arch/arm/boot/dts/usb_a9260.dts b/arch/arm/boot/dts/usb_a9260.dts
new file mode 100644
index 000000000000..296216058c11
--- /dev/null
+++ b/arch/arm/boot/dts/usb_a9260.dts
@@ -0,0 +1,23 @@
1/*
2 * usb_a9260.dts - Device Tree file for Caloa USB A9260 board
3 *
4 * Copyright (C) 2011-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 or later.
7 */
8/dts-v1/;
9/include/ "at91sam9260.dtsi"
10/include/ "usb_a9260_common.dtsi"
11
12/ {
13 model = "Calao USB A9260";
14 compatible = "calao,usb-a9260", "atmel,at91sam9260", "atmel,at91sam9";
15
16 chosen {
17 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
18 };
19
20 memory {
21 reg = <0x20000000 0x4000000>;
22 };
23};
diff --git a/arch/arm/boot/dts/usb_a9260_common.dtsi b/arch/arm/boot/dts/usb_a9260_common.dtsi
new file mode 100644
index 000000000000..e70d229baef5
--- /dev/null
+++ b/arch/arm/boot/dts/usb_a9260_common.dtsi
@@ -0,0 +1,117 @@
1/*
2 * usb_a926x.dts - Device Tree file for Caloa USB A926x board
3 *
4 * Copyright (C) 2011-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 or later.
7 */
8
9/ {
10 clocks {
11 #address-cells = <1>;
12 #size-cells = <1>;
13 ranges;
14
15 main_clock: clock@0 {
16 compatible = "atmel,osc", "fixed-clock";
17 clock-frequency = <12000000>;
18 };
19 };
20
21 ahb {
22 apb {
23 dbgu: serial@fffff200 {
24 status = "okay";
25 };
26
27 macb0: ethernet@fffc4000 {
28 phy-mode = "rmii";
29 status = "okay";
30 };
31
32 usb1: gadget@fffa4000 {
33 atmel,vbus-gpio = <&pioC 5 0>;
34 status = "okay";
35 };
36 };
37
38 nand0: nand@40000000 {
39 nand-bus-width = <8>;
40 nand-ecc-mode = "soft";
41 nand-on-flash-bbt;
42 status = "okay";
43
44 at91bootstrap@0 {
45 label = "at91bootstrap";
46 reg = <0x0 0x20000>;
47 };
48
49 barebox@20000 {
50 label = "barebox";
51 reg = <0x20000 0x40000>;
52 };
53
54 bareboxenv@60000 {
55 label = "bareboxenv";
56 reg = <0x60000 0x20000>;
57 };
58
59 bareboxenv2@80000 {
60 label = "bareboxenv2";
61 reg = <0x80000 0x20000>;
62 };
63
64 oftree@80000 {
65 label = "oftree";
66 reg = <0xa0000 0x20000>;
67 };
68
69 kernel@a0000 {
70 label = "kernel";
71 reg = <0xc0000 0x400000>;
72 };
73
74 rootfs@4a0000 {
75 label = "rootfs";
76 reg = <0x4c0000 0x7800000>;
77 };
78
79 data@7ca0000 {
80 label = "data";
81 reg = <0x7cc0000 0x8340000>;
82 };
83 };
84
85 usb0: ohci@00500000 {
86 num-ports = <2>;
87 status = "okay";
88 };
89 };
90
91 leds {
92 compatible = "gpio-leds";
93
94 user_led {
95 label = "user_led";
96 gpios = <&pioB 21 1>;
97 linux,default-trigger = "heartbeat";
98 };
99 };
100
101 gpio_keys {
102 compatible = "gpio-keys";
103 #address-cells = <1>;
104 #size-cells = <0>;
105
106 user_pb {
107 label = "user_pb";
108 gpios = <&pioB 10 1>;
109 linux,code = <28>;
110 gpio-key,wakeup;
111 };
112 };
113
114 i2c@0 {
115 status = "okay";
116 };
117};
diff --git a/arch/arm/boot/dts/usb_a9263.dts b/arch/arm/boot/dts/usb_a9263.dts
new file mode 100644
index 000000000000..6fe05ccb6203
--- /dev/null
+++ b/arch/arm/boot/dts/usb_a9263.dts
@@ -0,0 +1,131 @@
1/*
2 * usb_a9263.dts - Device Tree file for Caloa USB A9293 board
3 *
4 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 *
6 * Licensed under GPLv2 only
7 */
8/dts-v1/;
9/include/ "at91sam9263.dtsi"
10
11/ {
12 model = "Calao USB A9263";
13 compatible = "atmel,usb-a9263", "atmel,at91sam9263", "atmel,at91sam9";
14
15 chosen {
16 bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
17 };
18
19 memory {
20 reg = <0x20000000 0x4000000>;
21 };
22
23 clocks {
24 #address-cells = <1>;
25 #size-cells = <1>;
26 ranges;
27
28 main_clock: clock@0 {
29 compatible = "atmel,osc", "fixed-clock";
30 clock-frequency = <12000000>;
31 };
32 };
33
34 ahb {
35 apb {
36 dbgu: serial@ffffee00 {
37 status = "okay";
38 };
39
40 macb0: ethernet@fffbc000 {
41 phy-mode = "rmii";
42 status = "okay";
43 };
44
45 usb1: gadget@fff78000 {
46 atmel,vbus-gpio = <&pioB 11 0>;
47 status = "okay";
48 };
49
50 };
51
52 nand0: nand@40000000 {
53 nand-bus-width = <8>;
54 nand-ecc-mode = "soft";
55 nand-on-flash-bbt;
56 status = "okay";
57
58 at91bootstrap@0 {
59 label = "at91bootstrap";
60 reg = <0x0 0x20000>;
61 };
62
63 barebox@20000 {
64 label = "barebox";
65 reg = <0x20000 0x40000>;
66 };
67
68 bareboxenv@60000 {
69 label = "bareboxenv";
70 reg = <0x60000 0x20000>;
71 };
72
73 bareboxenv2@80000 {
74 label = "bareboxenv2";
75 reg = <0x80000 0x20000>;
76 };
77
78 oftree@80000 {
79 label = "oftree";
80 reg = <0xa0000 0x20000>;
81 };
82
83 kernel@a0000 {
84 label = "kernel";
85 reg = <0xc0000 0x400000>;
86 };
87
88 rootfs@4a0000 {
89 label = "rootfs";
90 reg = <0x4c0000 0x7800000>;
91 };
92
93 data@7ca0000 {
94 label = "data";
95 reg = <0x7cc0000 0x8340000>;
96 };
97 };
98
99 usb0: ohci@00a00000 {
100 num-ports = <2>;
101 status = "okay";
102 };
103 };
104
105 leds {
106 compatible = "gpio-leds";
107
108 user_led {
109 label = "user_led";
110 gpios = <&pioB 21 0>;
111 linux,default-trigger = "heartbeat";
112 };
113 };
114
115 gpio_keys {
116 compatible = "gpio-keys";
117 #address-cells = <1>;
118 #size-cells = <0>;
119
120 user_pb {
121 label = "user_pb";
122 gpios = <&pioB 10 1>;
123 linux,code = <28>;
124 gpio-key,wakeup;
125 };
126 };
127
128 i2c@0 {
129 status = "okay";
130 };
131};
diff --git a/arch/arm/boot/dts/usb_a9g20.dts b/arch/arm/boot/dts/usb_a9g20.dts
index 7c2399c532e5..2dacb16ce4ae 100644
--- a/arch/arm/boot/dts/usb_a9g20.dts
+++ b/arch/arm/boot/dts/usb_a9g20.dts
@@ -7,6 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9/include/ "at91sam9g20.dtsi" 9/include/ "at91sam9g20.dtsi"
10/include/ "usb_a9260_common.dtsi"
10 11
11/ { 12/ {
12 model = "Calao USB A9G20"; 13 model = "Calao USB A9G20";
@@ -20,108 +21,7 @@
20 reg = <0x20000000 0x4000000>; 21 reg = <0x20000000 0x4000000>;
21 }; 22 };
22 23
23 clocks {
24 #address-cells = <1>;
25 #size-cells = <1>;
26 ranges;
27
28 main_clock: clock@0 {
29 compatible = "atmel,osc", "fixed-clock";
30 clock-frequency = <12000000>;
31 };
32 };
33
34 ahb {
35 apb {
36 dbgu: serial@fffff200 {
37 status = "okay";
38 };
39
40 macb0: ethernet@fffc4000 {
41 phy-mode = "rmii";
42 status = "okay";
43 };
44
45 usb1: gadget@fffa4000 {
46 atmel,vbus-gpio = <&pioC 5 0>;
47 status = "okay";
48 };
49 };
50
51 nand0: nand@40000000 {
52 nand-bus-width = <8>;
53 nand-ecc-mode = "soft";
54 nand-on-flash-bbt;
55 status = "okay";
56
57 at91bootstrap@0 {
58 label = "at91bootstrap";
59 reg = <0x0 0x20000>;
60 };
61
62 barebox@20000 {
63 label = "barebox";
64 reg = <0x20000 0x40000>;
65 };
66
67 bareboxenv@60000 {
68 label = "bareboxenv";
69 reg = <0x60000 0x20000>;
70 };
71
72 bareboxenv2@80000 {
73 label = "bareboxenv2";
74 reg = <0x80000 0x20000>;
75 };
76
77 kernel@a0000 {
78 label = "kernel";
79 reg = <0xa0000 0x400000>;
80 };
81
82 rootfs@4a0000 {
83 label = "rootfs";
84 reg = <0x4a0000 0x7800000>;
85 };
86
87 data@7ca0000 {
88 label = "data";
89 reg = <0x7ca0000 0x8360000>;
90 };
91 };
92
93 usb0: ohci@00500000 {
94 num-ports = <2>;
95 status = "okay";
96 };
97 };
98
99 leds {
100 compatible = "gpio-leds";
101
102 user_led {
103 label = "user_led";
104 gpios = <&pioB 21 1>;
105 linux,default-trigger = "heartbeat";
106 };
107 };
108
109 gpio_keys {
110 compatible = "gpio-keys";
111 #address-cells = <1>;
112 #size-cells = <0>;
113
114 user_pb {
115 label = "user_pb";
116 gpios = <&pioB 10 1>;
117 linux,code = <28>;
118 gpio-key,wakeup;
119 };
120 };
121
122 i2c@0 { 24 i2c@0 {
123 status = "okay";
124
125 rv3029c2@56 { 25 rv3029c2@56 {
126 compatible = "rv3029c2"; 26 compatible = "rv3029c2";
127 reg = <0x56>; 27 reg = <0x56>;
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig
new file mode 100644
index 000000000000..67bc571ed0c3
--- /dev/null
+++ b/arch/arm/configs/at91_dt_defconfig
@@ -0,0 +1,196 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set
3# CONFIG_SWAP is not set
4CONFIG_SYSVIPC=y
5CONFIG_LOG_BUF_SHIFT=14
6CONFIG_BLK_DEV_INITRD=y
7CONFIG_CC_OPTIMIZE_FOR_SIZE=y
8CONFIG_KALLSYMS_ALL=y
9CONFIG_EMBEDDED=y
10CONFIG_SLAB=y
11CONFIG_MODULES=y
12CONFIG_MODULE_UNLOAD=y
13# CONFIG_LBDAF is not set
14# CONFIG_BLK_DEV_BSG is not set
15# CONFIG_IOSCHED_DEADLINE is not set
16# CONFIG_IOSCHED_CFQ is not set
17CONFIG_ARCH_AT91=y
18CONFIG_SOC_AT91SAM9260=y
19CONFIG_SOC_AT91SAM9263=y
20CONFIG_SOC_AT91SAM9G45=y
21CONFIG_SOC_AT91SAM9X5=y
22CONFIG_MACH_AT91SAM_DT=y
23CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
24CONFIG_AT91_TIMER_HZ=128
25CONFIG_AEABI=y
26# CONFIG_OABI_COMPAT is not set
27CONFIG_LEDS=y
28CONFIG_LEDS_CPU=y
29CONFIG_UACCESS_WITH_MEMCPY=y
30CONFIG_ZBOOT_ROM_TEXT=0x0
31CONFIG_ZBOOT_ROM_BSS=0x0
32CONFIG_ARM_APPENDED_DTB=y
33CONFIG_ARM_ATAG_DTB_COMPAT=y
34CONFIG_CMDLINE="mem=128M console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw"
35CONFIG_KEXEC=y
36CONFIG_AUTO_ZRELADDR=y
37# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
38CONFIG_NET=y
39CONFIG_PACKET=y
40CONFIG_UNIX=y
41CONFIG_INET=y
42CONFIG_IP_MULTICAST=y
43CONFIG_IP_PNP=y
44# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
45# CONFIG_INET_XFRM_MODE_TUNNEL is not set
46# CONFIG_INET_XFRM_MODE_BEET is not set
47# CONFIG_INET_DIAG is not set
48CONFIG_IPV6=y
49# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
50# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
51# CONFIG_INET6_XFRM_MODE_BEET is not set
52CONFIG_IPV6_SIT_6RD=y
53# CONFIG_WIRELESS is not set
54CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
55CONFIG_DEVTMPFS=y
56CONFIG_DEVTMPFS_MOUNT=y
57# CONFIG_STANDALONE is not set
58# CONFIG_PREVENT_FIRMWARE_BUILD is not set
59CONFIG_MTD=y
60CONFIG_MTD_CMDLINE_PARTS=y
61CONFIG_MTD_CHAR=y
62CONFIG_MTD_BLOCK=y
63CONFIG_MTD_NAND=y
64CONFIG_MTD_NAND_ATMEL=y
65CONFIG_MTD_UBI=y
66CONFIG_MTD_UBI_GLUEBI=y
67CONFIG_PROC_DEVICETREE=y
68CONFIG_BLK_DEV_LOOP=y
69CONFIG_BLK_DEV_RAM=y
70CONFIG_BLK_DEV_RAM_COUNT=4
71CONFIG_BLK_DEV_RAM_SIZE=8192
72CONFIG_ATMEL_PWM=y
73CONFIG_ATMEL_TCLIB=y
74CONFIG_EEPROM_93CX6=m
75CONFIG_SCSI=y
76CONFIG_BLK_DEV_SD=y
77CONFIG_SCSI_MULTI_LUN=y
78# CONFIG_SCSI_LOWLEVEL is not set
79CONFIG_NETDEVICES=y
80CONFIG_MII=y
81CONFIG_MACB=y
82# CONFIG_NET_VENDOR_BROADCOM is not set
83# CONFIG_NET_VENDOR_CHELSIO is not set
84# CONFIG_NET_VENDOR_FARADAY is not set
85# CONFIG_NET_VENDOR_INTEL is not set
86# CONFIG_NET_VENDOR_MARVELL is not set
87# CONFIG_NET_VENDOR_MICREL is not set
88# CONFIG_NET_VENDOR_NATSEMI is not set
89# CONFIG_NET_VENDOR_SEEQ is not set
90# CONFIG_NET_VENDOR_SMSC is not set
91# CONFIG_NET_VENDOR_STMICRO is not set
92CONFIG_DAVICOM_PHY=y
93CONFIG_MICREL_PHY=y
94# CONFIG_WLAN is not set
95CONFIG_INPUT_POLLDEV=y
96# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
97CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
98CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
99CONFIG_INPUT_JOYDEV=y
100CONFIG_INPUT_EVDEV=y
101# CONFIG_KEYBOARD_ATKBD is not set
102CONFIG_KEYBOARD_GPIO=y
103# CONFIG_INPUT_MOUSE is not set
104CONFIG_INPUT_TOUCHSCREEN=y
105# CONFIG_SERIO is not set
106CONFIG_LEGACY_PTY_COUNT=4
107CONFIG_SERIAL_ATMEL=y
108CONFIG_SERIAL_ATMEL_CONSOLE=y
109CONFIG_HW_RANDOM=y
110CONFIG_I2C=y
111CONFIG_I2C_GPIO=y
112CONFIG_SPI=y
113CONFIG_SPI_ATMEL=y
114# CONFIG_HWMON is not set
115CONFIG_WATCHDOG=y
116CONFIG_AT91SAM9X_WATCHDOG=y
117CONFIG_SSB=m
118CONFIG_FB=y
119CONFIG_FB_MODE_HELPERS=y
120CONFIG_FB_ATMEL=y
121CONFIG_BACKLIGHT_LCD_SUPPORT=y
122# CONFIG_LCD_CLASS_DEVICE is not set
123CONFIG_BACKLIGHT_CLASS_DEVICE=y
124CONFIG_BACKLIGHT_ATMEL_LCDC=y
125# CONFIG_BACKLIGHT_GENERIC is not set
126CONFIG_FRAMEBUFFER_CONSOLE=y
127CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
128CONFIG_FONTS=y
129CONFIG_FONT_8x8=y
130CONFIG_FONT_ACORN_8x8=y
131CONFIG_FONT_MINI_4x6=y
132CONFIG_LOGO=y
133# CONFIG_HID_SUPPORT is not set
134CONFIG_USB=y
135CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
136CONFIG_USB_DEVICEFS=y
137# CONFIG_USB_DEVICE_CLASS is not set
138CONFIG_USB_EHCI_HCD=y
139CONFIG_USB_OHCI_HCD=y
140CONFIG_USB_ACM=y
141CONFIG_USB_STORAGE=y
142CONFIG_USB_SERIAL=y
143CONFIG_USB_SERIAL_GENERIC=y
144CONFIG_USB_SERIAL_FTDI_SIO=y
145CONFIG_USB_SERIAL_PL2303=y
146CONFIG_USB_GADGET=y
147CONFIG_USB_AT91=m
148CONFIG_USB_ATMEL_USBA=m
149CONFIG_USB_ETH=m
150CONFIG_USB_GADGETFS=m
151CONFIG_USB_CDC_COMPOSITE=m
152CONFIG_USB_G_ACM_MS=m
153CONFIG_USB_G_MULTI=m
154CONFIG_USB_G_MULTI_CDC=y
155CONFIG_MMC=y
156CONFIG_MMC_ATMELMCI=y
157CONFIG_NEW_LEDS=y
158CONFIG_LEDS_CLASS=y
159CONFIG_LEDS_GPIO=y
160CONFIG_LEDS_TRIGGERS=y
161CONFIG_LEDS_TRIGGER_TIMER=y
162CONFIG_LEDS_TRIGGER_HEARTBEAT=y
163CONFIG_LEDS_TRIGGER_GPIO=y
164CONFIG_RTC_CLASS=y
165CONFIG_RTC_DRV_AT91RM9200=y
166CONFIG_RTC_DRV_AT91SAM9=y
167CONFIG_DMADEVICES=y
168# CONFIG_IOMMU_SUPPORT is not set
169CONFIG_EXT2_FS=y
170CONFIG_FANOTIFY=y
171CONFIG_VFAT_FS=y
172CONFIG_TMPFS=y
173CONFIG_NFS_FS=y
174CONFIG_NFS_V3=y
175CONFIG_ROOT_NFS=y
176CONFIG_NLS_CODEPAGE_437=y
177CONFIG_NLS_CODEPAGE_850=y
178CONFIG_NLS_ISO8859_1=y
179CONFIG_STRIP_ASM_SYMS=y
180CONFIG_DEBUG_FS=y
181# CONFIG_SCHED_DEBUG is not set
182# CONFIG_DEBUG_BUGVERBOSE is not set
183# CONFIG_FTRACE is not set
184CONFIG_DEBUG_USER=y
185CONFIG_CRYPTO=y
186CONFIG_CRYPTO_ECB=y
187CONFIG_CRYPTO_AES=y
188CONFIG_CRYPTO_ARC4=y
189# CONFIG_CRYPTO_ANSI_CPRNG is not set
190CONFIG_CRYPTO_USER_API_HASH=m
191CONFIG_CRYPTO_USER_API_SKCIPHER=m
192# CONFIG_CRYPTO_HW is not set
193CONFIG_CRC_CCITT=m
194CONFIG_CRC_ITU_T=m
195CONFIG_CRC7=m
196CONFIG_AVERAGE=y
diff --git a/arch/arm/configs/at91rm9200_defconfig b/arch/arm/configs/at91rm9200_defconfig
index bbe4e1a1f5d8..d54e2acd3ab1 100644
--- a/arch/arm/configs/at91rm9200_defconfig
+++ b/arch/arm/configs/at91rm9200_defconfig
@@ -14,6 +14,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y
14# CONFIG_BLK_DEV_BSG is not set 14# CONFIG_BLK_DEV_BSG is not set
15# CONFIG_IOSCHED_CFQ is not set 15# CONFIG_IOSCHED_CFQ is not set
16CONFIG_ARCH_AT91=y 16CONFIG_ARCH_AT91=y
17CONFIG_ARCH_AT91RM9200=y
17CONFIG_MACH_ONEARM=y 18CONFIG_MACH_ONEARM=y
18CONFIG_ARCH_AT91RM9200DK=y 19CONFIG_ARCH_AT91RM9200DK=y
19CONFIG_MACH_AT91RM9200EK=y 20CONFIG_MACH_AT91RM9200EK=y
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 45db05d8d94c..98a42f3472d5 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -9,15 +9,6 @@ config HAVE_AT91_DBGU0
9config HAVE_AT91_DBGU1 9config HAVE_AT91_DBGU1
10 bool 10 bool
11 11
12config HAVE_AT91_USART3
13 bool
14
15config HAVE_AT91_USART4
16 bool
17
18config HAVE_AT91_USART5
19 bool
20
21config AT91_SAM9_ALT_RESET 12config AT91_SAM9_ALT_RESET
22 bool 13 bool
23 default !ARCH_AT91X40 14 default !ARCH_AT91X40
@@ -26,87 +17,121 @@ config AT91_SAM9G45_RESET
26 bool 17 bool
27 default !ARCH_AT91X40 18 default !ARCH_AT91X40
28 19
20config SOC_AT91SAM9
21 bool
22 select GENERIC_CLOCKEVENTS
23 select CPU_ARM926T
24
29menu "Atmel AT91 System-on-Chip" 25menu "Atmel AT91 System-on-Chip"
30 26
31choice 27comment "Atmel AT91 Processor"
32 prompt "Atmel AT91 Processor"
33 28
34config ARCH_AT91RM9200 29config SOC_AT91SAM9
30 bool
31 select CPU_ARM926T
32 select AT91_SAM9_TIME
33 select AT91_SAM9_SMC
34
35config SOC_AT91RM9200
35 bool "AT91RM9200" 36 bool "AT91RM9200"
36 select CPU_ARM920T 37 select CPU_ARM920T
37 select GENERIC_CLOCKEVENTS 38 select GENERIC_CLOCKEVENTS
38 select HAVE_AT91_DBGU0 39 select HAVE_AT91_DBGU0
39 select HAVE_AT91_USART3
40 40
41config ARCH_AT91SAM9260 41config SOC_AT91SAM9260
42 bool "AT91SAM9260 or AT91SAM9XE" 42 bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
43 select CPU_ARM926T 43 select SOC_AT91SAM9
44 select GENERIC_CLOCKEVENTS
45 select HAVE_AT91_DBGU0 44 select HAVE_AT91_DBGU0
46 select HAVE_AT91_USART3
47 select HAVE_AT91_USART4
48 select HAVE_AT91_USART5
49 select HAVE_NET_MACB 45 select HAVE_NET_MACB
46 help
47 Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
48 or AT91SAM9G20 SoC.
50 49
51config ARCH_AT91SAM9261 50config SOC_AT91SAM9261
52 bool "AT91SAM9261" 51 bool "AT91SAM9261 or AT91SAM9G10"
53 select CPU_ARM926T 52 select SOC_AT91SAM9
54 select GENERIC_CLOCKEVENTS 53 select HAVE_AT91_DBGU0
55 select HAVE_FB_ATMEL 54 select HAVE_FB_ATMEL
55 help
56 Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
57
58config SOC_AT91SAM9263
59 bool "AT91SAM9263"
60 select SOC_AT91SAM9
61 select HAVE_AT91_DBGU1
62 select HAVE_FB_ATMEL
63 select HAVE_NET_MACB
64
65config SOC_AT91SAM9RL
66 bool "AT91SAM9RL"
67 select SOC_AT91SAM9
56 select HAVE_AT91_DBGU0 68 select HAVE_AT91_DBGU0
69 select HAVE_FB_ATMEL
57 70
58config ARCH_AT91SAM9G10 71config SOC_AT91SAM9G45
59 bool "AT91SAM9G10" 72 bool "AT91SAM9G45 or AT91SAM9M10 families"
60 select CPU_ARM926T 73 select SOC_AT91SAM9
61 select GENERIC_CLOCKEVENTS 74 select HAVE_AT91_DBGU1
75 select HAVE_FB_ATMEL
76 select HAVE_NET_MACB
77 help
78 Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
79 This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
80
81config SOC_AT91SAM9X5
82 bool "AT91SAM9x5 family"
83 select SOC_AT91SAM9
62 select HAVE_AT91_DBGU0 84 select HAVE_AT91_DBGU0
63 select HAVE_FB_ATMEL 85 select HAVE_FB_ATMEL
86 select HAVE_NET_MACB
87 help
88 Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
89 This means that your SAM9 name finishes with a '5' (except if it is
90 AT91SAM9G45!).
91 This support covers AT91SAM9G15, AT91SAM9G25, AT91SAM9X25, AT91SAM9G35
92 and AT91SAM9X35.
93
94choice
95 prompt "Atmel AT91 Processor Devices for non DT boards"
96
97config ARCH_AT91_NONE
98 bool "None"
99
100config ARCH_AT91RM9200
101 bool "AT91RM9200"
102 select SOC_AT91RM9200
103
104config ARCH_AT91SAM9260
105 bool "AT91SAM9260 or AT91SAM9XE"
106 select SOC_AT91SAM9260
107
108config ARCH_AT91SAM9261
109 bool "AT91SAM9261"
110 select SOC_AT91SAM9261
111
112config ARCH_AT91SAM9G10
113 bool "AT91SAM9G10"
114 select SOC_AT91SAM9261
64 115
65config ARCH_AT91SAM9263 116config ARCH_AT91SAM9263
66 bool "AT91SAM9263" 117 bool "AT91SAM9263"
67 select CPU_ARM926T 118 select SOC_AT91SAM9263
68 select GENERIC_CLOCKEVENTS
69 select HAVE_FB_ATMEL
70 select HAVE_NET_MACB
71 select HAVE_AT91_DBGU1
72 119
73config ARCH_AT91SAM9RL 120config ARCH_AT91SAM9RL
74 bool "AT91SAM9RL" 121 bool "AT91SAM9RL"
75 select CPU_ARM926T 122 select SOC_AT91SAM9RL
76 select GENERIC_CLOCKEVENTS
77 select HAVE_AT91_USART3
78 select HAVE_FB_ATMEL
79 select HAVE_AT91_DBGU0
80 123
81config ARCH_AT91SAM9G20 124config ARCH_AT91SAM9G20
82 bool "AT91SAM9G20" 125 bool "AT91SAM9G20"
83 select CPU_ARM926T 126 select SOC_AT91SAM9260
84 select GENERIC_CLOCKEVENTS
85 select HAVE_AT91_DBGU0
86 select HAVE_AT91_USART3
87 select HAVE_AT91_USART4
88 select HAVE_AT91_USART5
89 select HAVE_NET_MACB
90 127
91config ARCH_AT91SAM9G45 128config ARCH_AT91SAM9G45
92 bool "AT91SAM9G45" 129 bool "AT91SAM9G45"
93 select CPU_ARM926T 130 select SOC_AT91SAM9G45
94 select GENERIC_CLOCKEVENTS
95 select HAVE_AT91_USART3
96 select HAVE_FB_ATMEL
97 select HAVE_NET_MACB
98 select HAVE_AT91_DBGU1
99
100config ARCH_AT91SAM9X5
101 bool "AT91SAM9x5 family"
102 select CPU_ARM926T
103 select GENERIC_CLOCKEVENTS
104 select HAVE_FB_ATMEL
105 select HAVE_NET_MACB
106 select HAVE_AT91_DBGU0
107 131
108config ARCH_AT91X40 132config ARCH_AT91X40
109 bool "AT91x40" 133 bool "AT91x40"
134 depends on !MMU
110 select ARCH_USES_GETTIMEOFFSET 135 select ARCH_USES_GETTIMEOFFSET
111 136
112endchoice 137endchoice
@@ -364,6 +389,7 @@ config MACH_AT91SAM9G20EK_2MMC
364 Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit 389 Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
365 with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and 390 with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
366 onwards. 391 onwards.
392 <http://www.atmel.com/tools/SAM9G20-EK.aspx>
367 393
368config MACH_CPU9G20 394config MACH_CPU9G20
369 bool "Eukrea CPU9G20 board" 395 bool "Eukrea CPU9G20 board"
@@ -433,9 +459,10 @@ comment "AT91SAM9G45 Board Type"
433config MACH_AT91SAM9M10G45EK 459config MACH_AT91SAM9M10G45EK
434 bool "Atmel AT91SAM9M10G45-EK Evaluation Kits" 460 bool "Atmel AT91SAM9M10G45-EK Evaluation Kits"
435 help 461 help
436 Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit. 462 Select this if you are using Atmel's AT91SAM9M10G45-EK Evaluation Kit.
437 "ES" at the end of the name means that this board is an 463 Those boards can be populated with any SoC of AT91SAM9G45 or AT91SAM9M10
438 Engineering Sample. 464 families: AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
465 <http://www.atmel.com/tools/SAM9M10-G45-EK.aspx>
439 466
440endif 467endif
441 468
@@ -515,41 +542,6 @@ config AT91_TIMER_HZ
515 system clock (of at least several MHz), rounding is less of a 542 system clock (of at least several MHz), rounding is less of a
516 problem so it can be safer to use a decimal values like 100. 543 problem so it can be safer to use a decimal values like 100.
517 544
518choice
519 prompt "Select a UART for early kernel messages"
520
521config AT91_EARLY_DBGU0
522 bool "DBGU on rm9200, 9260/9g20, 9261/9g10 and 9rl"
523 depends on HAVE_AT91_DBGU0
524
525config AT91_EARLY_DBGU1
526 bool "DBGU on 9263 and 9g45"
527 depends on HAVE_AT91_DBGU1
528
529config AT91_EARLY_USART0
530 bool "USART0"
531
532config AT91_EARLY_USART1
533 bool "USART1"
534
535config AT91_EARLY_USART2
536 bool "USART2"
537 depends on ! ARCH_AT91X40
538
539config AT91_EARLY_USART3
540 bool "USART3"
541 depends on HAVE_AT91_USART3
542
543config AT91_EARLY_USART4
544 bool "USART4"
545 depends on HAVE_AT91_USART4
546
547config AT91_EARLY_USART5
548 bool "USART5"
549 depends on HAVE_AT91_USART5
550
551endchoice
552
553endmenu 545endmenu
554 546
555endif 547endif
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 8512e53bed93..79d0f60af0b2 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -10,17 +10,25 @@ obj- :=
10obj-$(CONFIG_AT91_PMC_UNIT) += clock.o 10obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
11obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o 11obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
12obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o 12obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
13obj-$(CONFIG_SOC_AT91SAM9) += at91sam926x_time.o sam9_smc.o
13 14
14# CPU-specific support 15# CPU-specific support
15obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o 16obj-$(CONFIG_SOC_AT91RM9200) += at91rm9200.o at91rm9200_time.o
16obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o 17obj-$(CONFIG_SOC_AT91SAM9260) += at91sam9260.o
17obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o 18obj-$(CONFIG_SOC_AT91SAM9261) += at91sam9261.o
18obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o 19obj-$(CONFIG_SOC_AT91SAM9263) += at91sam9263.o
19obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o 20obj-$(CONFIG_SOC_AT91SAM9G45) += at91sam9g45.o
20obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o 21obj-$(CONFIG_SOC_AT91SAM9X5) += at91sam9x5.o
21obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o 22obj-$(CONFIG_SOC_AT91SAM9RL) += at91sam9rl.o
22obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o 23
23obj-$(CONFIG_ARCH_AT91SAM9X5) += at91sam9x5.o at91sam926x_time.o sam9_smc.o 24obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200_devices.o
25obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260_devices.o
26obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261_devices.o
27obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261_devices.o
28obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263_devices.o
29obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl_devices.o
30obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260_devices.o
31obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45_devices.o
24obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o 32obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
25 33
26# AT91RM9200 board-specific support 34# AT91RM9200 board-specific support
diff --git a/arch/arm/mach-at91/Makefile.boot b/arch/arm/mach-at91/Makefile.boot
index 0da66ca4a4f8..c03417ddbf0c 100644
--- a/arch/arm/mach-at91/Makefile.boot
+++ b/arch/arm/mach-at91/Makefile.boot
@@ -14,7 +14,19 @@ initrd_phys-y := 0x20410000
14endif 14endif
15 15
16# Keep dtb files sorted alphabetically for each SoC 16# Keep dtb files sorted alphabetically for each SoC
17# sam9260
18dtb-$(CONFIG_MACH_AT91SAM_DT) += ethernut5.dtb
19dtb-$(CONFIG_MACH_AT91SAM_DT) += tny_a9260.dtb
20dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9260.dtb
21# sam9263
22dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9263ek.dtb
23dtb-$(CONFIG_MACH_AT91SAM_DT) += tny_a9263.dtb
24dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9263.dtb
17# sam9g20 25# sam9g20
26dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9g20ek.dtb
27dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9g20ek_2mmc.dtb
28dtb-$(CONFIG_MACH_AT91SAM_DT) += kizbox.dtb
29dtb-$(CONFIG_MACH_AT91SAM_DT) += tny_a9g20.dtb
18dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9g20.dtb 30dtb-$(CONFIG_MACH_AT91SAM_DT) += usb_a9g20.dtb
19# sam9g45 31# sam9g45
20dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb 32dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c
index 364c19357e60..d50da1a9d0bf 100644
--- a/arch/arm/mach-at91/at91rm9200.c
+++ b/arch/arm/mach-at91/at91rm9200.c
@@ -258,18 +258,6 @@ static void __init at91rm9200_register_clocks(void)
258 clk_register(&pck3); 258 clk_register(&pck3);
259} 259}
260 260
261static struct clk_lookup console_clock_lookup;
262
263void __init at91rm9200_set_console_clock(int id)
264{
265 if (id >= ARRAY_SIZE(usart_clocks_lookups))
266 return;
267
268 console_clock_lookup.con_id = "usart";
269 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
270 clkdev_add(&console_clock_lookup);
271}
272
273/* -------------------------------------------------------------------- 261/* --------------------------------------------------------------------
274 * GPIO 262 * GPIO
275 * -------------------------------------------------------------------- */ 263 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
index 05774e5b1cba..99affb5d0563 100644
--- a/arch/arm/mach-at91/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/at91rm9200_devices.c
@@ -1152,14 +1152,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1152 at91_uarts[portnr] = pdev; 1152 at91_uarts[portnr] = pdev;
1153} 1153}
1154 1154
1155void __init at91_set_serial_console(unsigned portnr)
1156{
1157 if (portnr < ATMEL_MAX_UART) {
1158 atmel_default_console_device = at91_uarts[portnr];
1159 at91rm9200_set_console_clock(at91_uarts[portnr]->id);
1160 }
1161}
1162
1163void __init at91_add_device_serial(void) 1155void __init at91_add_device_serial(void)
1164{ 1156{
1165 int i; 1157 int i;
@@ -1168,13 +1160,9 @@ void __init at91_add_device_serial(void)
1168 if (at91_uarts[i]) 1160 if (at91_uarts[i])
1169 platform_device_register(at91_uarts[i]); 1161 platform_device_register(at91_uarts[i]);
1170 } 1162 }
1171
1172 if (!atmel_default_console_device)
1173 printk(KERN_INFO "AT91: No default serial console defined.\n");
1174} 1163}
1175#else 1164#else
1176void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1165void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1177void __init at91_set_serial_console(unsigned portnr) {}
1178void __init at91_add_device_serial(void) {} 1166void __init at91_add_device_serial(void) {}
1179#endif 1167#endif
1180 1168
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c
index 46f774233298..a27bbec50ca3 100644
--- a/arch/arm/mach-at91/at91sam9260.c
+++ b/arch/arm/mach-at91/at91sam9260.c
@@ -268,18 +268,6 @@ static void __init at91sam9260_register_clocks(void)
268 clk_register(&pck1); 268 clk_register(&pck1);
269} 269}
270 270
271static struct clk_lookup console_clock_lookup;
272
273void __init at91sam9260_set_console_clock(int id)
274{
275 if (id >= ARRAY_SIZE(usart_clocks_lookups))
276 return;
277
278 console_clock_lookup.con_id = "usart";
279 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
280 clkdev_add(&console_clock_lookup);
281}
282
283/* -------------------------------------------------------------------- 271/* --------------------------------------------------------------------
284 * GPIO 272 * GPIO
285 * -------------------------------------------------------------------- */ 273 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index 5652dde4bbe2..d556de141114 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -702,25 +702,8 @@ static struct platform_device at91sam9260_tcb1_device = {
702 .num_resources = ARRAY_SIZE(tcb1_resources), 702 .num_resources = ARRAY_SIZE(tcb1_resources),
703}; 703};
704 704
705#if defined(CONFIG_OF)
706static struct of_device_id tcb_ids[] = {
707 { .compatible = "atmel,at91rm9200-tcb" },
708 { /*sentinel*/ }
709};
710#endif
711
712static void __init at91_add_device_tc(void) 705static void __init at91_add_device_tc(void)
713{ 706{
714#if defined(CONFIG_OF)
715 struct device_node *np;
716
717 np = of_find_matching_node(NULL, tcb_ids);
718 if (np) {
719 of_node_put(np);
720 return;
721 }
722#endif
723
724 platform_device_register(&at91sam9260_tcb0_device); 707 platform_device_register(&at91sam9260_tcb0_device);
725 platform_device_register(&at91sam9260_tcb1_device); 708 platform_device_register(&at91sam9260_tcb1_device);
726} 709}
@@ -1229,14 +1212,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1229 at91_uarts[portnr] = pdev; 1212 at91_uarts[portnr] = pdev;
1230} 1213}
1231 1214
1232void __init at91_set_serial_console(unsigned portnr)
1233{
1234 if (portnr < ATMEL_MAX_UART) {
1235 atmel_default_console_device = at91_uarts[portnr];
1236 at91sam9260_set_console_clock(at91_uarts[portnr]->id);
1237 }
1238}
1239
1240void __init at91_add_device_serial(void) 1215void __init at91_add_device_serial(void)
1241{ 1216{
1242 int i; 1217 int i;
@@ -1245,13 +1220,9 @@ void __init at91_add_device_serial(void)
1245 if (at91_uarts[i]) 1220 if (at91_uarts[i])
1246 platform_device_register(at91_uarts[i]); 1221 platform_device_register(at91_uarts[i]);
1247 } 1222 }
1248
1249 if (!atmel_default_console_device)
1250 printk(KERN_INFO "AT91: No default serial console defined.\n");
1251} 1223}
1252#else 1224#else
1253void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1225void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1254void __init at91_set_serial_console(unsigned portnr) {}
1255void __init at91_add_device_serial(void) {} 1226void __init at91_add_device_serial(void) {}
1256#endif 1227#endif
1257 1228
@@ -1376,6 +1347,9 @@ void __init at91_add_device_cf(struct at91_cf_data * data) {}
1376 */ 1347 */
1377static int __init at91_add_standard_devices(void) 1348static int __init at91_add_standard_devices(void)
1378{ 1349{
1350 if (of_have_populated_dt())
1351 return 0;
1352
1379 at91_add_device_rtt(); 1353 at91_add_device_rtt();
1380 at91_add_device_watchdog(); 1354 at91_add_device_watchdog();
1381 at91_add_device_tc(); 1355 at91_add_device_tc();
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c
index 7de81e6222f1..c77d503d09d1 100644
--- a/arch/arm/mach-at91/at91sam9261.c
+++ b/arch/arm/mach-at91/at91sam9261.c
@@ -239,18 +239,6 @@ static void __init at91sam9261_register_clocks(void)
239 clk_register(&hck1); 239 clk_register(&hck1);
240} 240}
241 241
242static struct clk_lookup console_clock_lookup;
243
244void __init at91sam9261_set_console_clock(int id)
245{
246 if (id >= ARRAY_SIZE(usart_clocks_lookups))
247 return;
248
249 console_clock_lookup.con_id = "usart";
250 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
251 clkdev_add(&console_clock_lookup);
252}
253
254/* -------------------------------------------------------------------- 242/* --------------------------------------------------------------------
255 * GPIO 243 * GPIO
256 * -------------------------------------------------------------------- */ 244 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c
index 4db961a93085..9295e90b08ff 100644
--- a/arch/arm/mach-at91/at91sam9261_devices.c
+++ b/arch/arm/mach-at91/at91sam9261_devices.c
@@ -1051,14 +1051,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1051 at91_uarts[portnr] = pdev; 1051 at91_uarts[portnr] = pdev;
1052} 1052}
1053 1053
1054void __init at91_set_serial_console(unsigned portnr)
1055{
1056 if (portnr < ATMEL_MAX_UART) {
1057 atmel_default_console_device = at91_uarts[portnr];
1058 at91sam9261_set_console_clock(at91_uarts[portnr]->id);
1059 }
1060}
1061
1062void __init at91_add_device_serial(void) 1054void __init at91_add_device_serial(void)
1063{ 1055{
1064 int i; 1056 int i;
@@ -1067,13 +1059,9 @@ void __init at91_add_device_serial(void)
1067 if (at91_uarts[i]) 1059 if (at91_uarts[i])
1068 platform_device_register(at91_uarts[i]); 1060 platform_device_register(at91_uarts[i]);
1069 } 1061 }
1070
1071 if (!atmel_default_console_device)
1072 printk(KERN_INFO "AT91: No default serial console defined.\n");
1073} 1062}
1074#else 1063#else
1075void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1064void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1076void __init at91_set_serial_console(unsigned portnr) {}
1077void __init at91_add_device_serial(void) {} 1065void __init at91_add_device_serial(void) {}
1078#endif 1066#endif
1079 1067
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c
index ef301be66575..ed91c7e9f7c2 100644
--- a/arch/arm/mach-at91/at91sam9263.c
+++ b/arch/arm/mach-at91/at91sam9263.c
@@ -199,6 +199,16 @@ static struct clk_lookup periph_clocks_lookups[] = {
199 CLKDEV_CON_ID("pioC", &pioCDE_clk), 199 CLKDEV_CON_ID("pioC", &pioCDE_clk),
200 CLKDEV_CON_ID("pioD", &pioCDE_clk), 200 CLKDEV_CON_ID("pioD", &pioCDE_clk),
201 CLKDEV_CON_ID("pioE", &pioCDE_clk), 201 CLKDEV_CON_ID("pioE", &pioCDE_clk),
202 /* more usart lookup table for DT entries */
203 CLKDEV_CON_DEV_ID("usart", "ffffee00.serial", &mck),
204 CLKDEV_CON_DEV_ID("usart", "fff8c000.serial", &usart0_clk),
205 CLKDEV_CON_DEV_ID("usart", "fff90000.serial", &usart1_clk),
206 CLKDEV_CON_DEV_ID("usart", "fff94000.serial", &usart2_clk),
207 /* more tc lookup table for DT entries */
208 CLKDEV_CON_DEV_ID("t0_clk", "fff7c000.timer", &tcb_clk),
209 CLKDEV_CON_DEV_ID("hclk", "a00000.ohci", &ohci_clk),
210 CLKDEV_CON_DEV_ID("spi_clk", "fffa4000.spi", &spi0_clk),
211 CLKDEV_CON_DEV_ID("spi_clk", "fffa8000.spi", &spi1_clk),
202}; 212};
203 213
204static struct clk_lookup usart_clocks_lookups[] = { 214static struct clk_lookup usart_clocks_lookups[] = {
@@ -255,18 +265,6 @@ static void __init at91sam9263_register_clocks(void)
255 clk_register(&pck3); 265 clk_register(&pck3);
256} 266}
257 267
258static struct clk_lookup console_clock_lookup;
259
260void __init at91sam9263_set_console_clock(int id)
261{
262 if (id >= ARRAY_SIZE(usart_clocks_lookups))
263 return;
264
265 console_clock_lookup.con_id = "usart";
266 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
267 clkdev_add(&console_clock_lookup);
268}
269
270/* -------------------------------------------------------------------- 268/* --------------------------------------------------------------------
271 * GPIO 269 * GPIO
272 * -------------------------------------------------------------------- */ 270 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
index fe99206de880..175e0009eaa9 100644
--- a/arch/arm/mach-at91/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/at91sam9263_devices.c
@@ -953,8 +953,25 @@ static struct platform_device at91sam9263_tcb_device = {
953 .num_resources = ARRAY_SIZE(tcb_resources), 953 .num_resources = ARRAY_SIZE(tcb_resources),
954}; 954};
955 955
956#if defined(CONFIG_OF)
957static struct of_device_id tcb_ids[] = {
958 { .compatible = "atmel,at91rm9200-tcb" },
959 { /*sentinel*/ }
960};
961#endif
962
956static void __init at91_add_device_tc(void) 963static void __init at91_add_device_tc(void)
957{ 964{
965#if defined(CONFIG_OF)
966 struct device_node *np;
967
968 np = of_find_matching_node(NULL, tcb_ids);
969 if (np) {
970 of_node_put(np);
971 return;
972 }
973#endif
974
958 platform_device_register(&at91sam9263_tcb_device); 975 platform_device_register(&at91sam9263_tcb_device);
959} 976}
960#else 977#else
@@ -1461,14 +1478,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1461 at91_uarts[portnr] = pdev; 1478 at91_uarts[portnr] = pdev;
1462} 1479}
1463 1480
1464void __init at91_set_serial_console(unsigned portnr)
1465{
1466 if (portnr < ATMEL_MAX_UART) {
1467 atmel_default_console_device = at91_uarts[portnr];
1468 at91sam9263_set_console_clock(at91_uarts[portnr]->id);
1469 }
1470}
1471
1472void __init at91_add_device_serial(void) 1481void __init at91_add_device_serial(void)
1473{ 1482{
1474 int i; 1483 int i;
@@ -1477,13 +1486,9 @@ void __init at91_add_device_serial(void)
1477 if (at91_uarts[i]) 1486 if (at91_uarts[i])
1478 platform_device_register(at91_uarts[i]); 1487 platform_device_register(at91_uarts[i]);
1479 } 1488 }
1480
1481 if (!atmel_default_console_device)
1482 printk(KERN_INFO "AT91: No default serial console defined.\n");
1483} 1489}
1484#else 1490#else
1485void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1491void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1486void __init at91_set_serial_console(unsigned portnr) {}
1487void __init at91_add_device_serial(void) {} 1492void __init at91_add_device_serial(void) {}
1488#endif 1493#endif
1489 1494
@@ -1495,6 +1500,9 @@ void __init at91_add_device_serial(void) {}
1495 */ 1500 */
1496static int __init at91_add_standard_devices(void) 1501static int __init at91_add_standard_devices(void)
1497{ 1502{
1503 if (of_have_populated_dt())
1504 return 0;
1505
1498 at91_add_device_rtt(); 1506 at91_add_device_rtt();
1499 at91_add_device_watchdog(); 1507 at91_add_device_watchdog();
1500 at91_add_device_tc(); 1508 at91_add_device_tc();
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c
index d222f8333dab..f2054495a655 100644
--- a/arch/arm/mach-at91/at91sam9g45.c
+++ b/arch/arm/mach-at91/at91sam9g45.c
@@ -288,18 +288,6 @@ static void __init at91sam9g45_register_clocks(void)
288 clk_register(&pck1); 288 clk_register(&pck1);
289} 289}
290 290
291static struct clk_lookup console_clock_lookup;
292
293void __init at91sam9g45_set_console_clock(int id)
294{
295 if (id >= ARRAY_SIZE(usart_clocks_lookups))
296 return;
297
298 console_clock_lookup.con_id = "usart";
299 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
300 clkdev_add(&console_clock_lookup);
301}
302
303/* -------------------------------------------------------------------- 291/* --------------------------------------------------------------------
304 * GPIO 292 * GPIO
305 * -------------------------------------------------------------------- */ 293 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 6b008aee1dff..35bd42d02195 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -69,15 +69,7 @@ static struct platform_device at_hdmac_device = {
69 69
70void __init at91_add_device_hdmac(void) 70void __init at91_add_device_hdmac(void)
71{ 71{
72#if defined(CONFIG_OF) 72 platform_device_register(&at_hdmac_device);
73 struct device_node *of_node =
74 of_find_node_by_name(NULL, "dma-controller");
75
76 if (of_node)
77 of_node_put(of_node);
78 else
79#endif
80 platform_device_register(&at_hdmac_device);
81} 73}
82#else 74#else
83void __init at91_add_device_hdmac(void) {} 75void __init at91_add_device_hdmac(void) {}
@@ -1094,25 +1086,8 @@ static struct platform_device at91sam9g45_tcb1_device = {
1094 .num_resources = ARRAY_SIZE(tcb1_resources), 1086 .num_resources = ARRAY_SIZE(tcb1_resources),
1095}; 1087};
1096 1088
1097#if defined(CONFIG_OF)
1098static struct of_device_id tcb_ids[] = {
1099 { .compatible = "atmel,at91rm9200-tcb" },
1100 { /*sentinel*/ }
1101};
1102#endif
1103
1104static void __init at91_add_device_tc(void) 1089static void __init at91_add_device_tc(void)
1105{ 1090{
1106#if defined(CONFIG_OF)
1107 struct device_node *np;
1108
1109 np = of_find_matching_node(NULL, tcb_ids);
1110 if (np) {
1111 of_node_put(np);
1112 return;
1113 }
1114#endif
1115
1116 platform_device_register(&at91sam9g45_tcb0_device); 1091 platform_device_register(&at91sam9g45_tcb0_device);
1117 platform_device_register(&at91sam9g45_tcb1_device); 1092 platform_device_register(&at91sam9g45_tcb1_device);
1118} 1093}
@@ -1741,14 +1716,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1741 at91_uarts[portnr] = pdev; 1716 at91_uarts[portnr] = pdev;
1742} 1717}
1743 1718
1744void __init at91_set_serial_console(unsigned portnr)
1745{
1746 if (portnr < ATMEL_MAX_UART) {
1747 atmel_default_console_device = at91_uarts[portnr];
1748 at91sam9g45_set_console_clock(at91_uarts[portnr]->id);
1749 }
1750}
1751
1752void __init at91_add_device_serial(void) 1719void __init at91_add_device_serial(void)
1753{ 1720{
1754 int i; 1721 int i;
@@ -1757,13 +1724,9 @@ void __init at91_add_device_serial(void)
1757 if (at91_uarts[i]) 1724 if (at91_uarts[i])
1758 platform_device_register(at91_uarts[i]); 1725 platform_device_register(at91_uarts[i]);
1759 } 1726 }
1760
1761 if (!atmel_default_console_device)
1762 printk(KERN_INFO "AT91: No default serial console defined.\n");
1763} 1727}
1764#else 1728#else
1765void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1729void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1766void __init at91_set_serial_console(unsigned portnr) {}
1767void __init at91_add_device_serial(void) {} 1730void __init at91_add_device_serial(void) {}
1768#endif 1731#endif
1769 1732
@@ -1775,6 +1738,9 @@ void __init at91_add_device_serial(void) {}
1775 */ 1738 */
1776static int __init at91_add_standard_devices(void) 1739static int __init at91_add_standard_devices(void)
1777{ 1740{
1741 if (of_have_populated_dt())
1742 return 0;
1743
1778 at91_add_device_hdmac(); 1744 at91_add_device_hdmac();
1779 at91_add_device_rtc(); 1745 at91_add_device_rtc();
1780 at91_add_device_rtt(); 1746 at91_add_device_rtt();
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c
index d9f2774f385e..e420085a57ef 100644
--- a/arch/arm/mach-at91/at91sam9rl.c
+++ b/arch/arm/mach-at91/at91sam9rl.c
@@ -232,18 +232,6 @@ static void __init at91sam9rl_register_clocks(void)
232 clk_register(&pck1); 232 clk_register(&pck1);
233} 233}
234 234
235static struct clk_lookup console_clock_lookup;
236
237void __init at91sam9rl_set_console_clock(int id)
238{
239 if (id >= ARRAY_SIZE(usart_clocks_lookups))
240 return;
241
242 console_clock_lookup.con_id = "usart";
243 console_clock_lookup.clk = usart_clocks_lookups[id].clk;
244 clkdev_add(&console_clock_lookup);
245}
246
247/* -------------------------------------------------------------------- 235/* --------------------------------------------------------------------
248 * GPIO 236 * GPIO
249 * -------------------------------------------------------------------- */ 237 * -------------------------------------------------------------------- */
diff --git a/arch/arm/mach-at91/at91sam9rl_devices.c b/arch/arm/mach-at91/at91sam9rl_devices.c
index fe4ae22e8561..9c0b1481a9a7 100644
--- a/arch/arm/mach-at91/at91sam9rl_devices.c
+++ b/arch/arm/mach-at91/at91sam9rl_devices.c
@@ -1192,14 +1192,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
1192 at91_uarts[portnr] = pdev; 1192 at91_uarts[portnr] = pdev;
1193} 1193}
1194 1194
1195void __init at91_set_serial_console(unsigned portnr)
1196{
1197 if (portnr < ATMEL_MAX_UART) {
1198 atmel_default_console_device = at91_uarts[portnr];
1199 at91sam9rl_set_console_clock(at91_uarts[portnr]->id);
1200 }
1201}
1202
1203void __init at91_add_device_serial(void) 1195void __init at91_add_device_serial(void)
1204{ 1196{
1205 int i; 1197 int i;
@@ -1208,13 +1200,9 @@ void __init at91_add_device_serial(void)
1208 if (at91_uarts[i]) 1200 if (at91_uarts[i])
1209 platform_device_register(at91_uarts[i]); 1201 platform_device_register(at91_uarts[i]);
1210 } 1202 }
1211
1212 if (!atmel_default_console_device)
1213 printk(KERN_INFO "AT91: No default serial console defined.\n");
1214} 1203}
1215#else 1204#else
1216void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {} 1205void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
1217void __init at91_set_serial_console(unsigned portnr) {}
1218void __init at91_add_device_serial(void) {} 1206void __init at91_add_device_serial(void) {}
1219#endif 1207#endif
1220 1208
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c
index 2628384aaae1..271f994314a4 100644
--- a/arch/arm/mach-at91/board-1arm.c
+++ b/arch/arm/mach-at91/board-1arm.c
@@ -47,20 +47,6 @@ static void __init onearm_init_early(void)
47 47
48 /* Initialize processor: 18.432 MHz crystal */ 48 /* Initialize processor: 18.432 MHz crystal */
49 at91_initialize(18432000); 49 at91_initialize(18432000);
50
51 /* DBGU on ttyS0. (Rx & Tx only) */
52 at91_register_uart(0, 0, 0);
53
54 /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
55 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
56
57 /* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
58 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
59 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
60 | ATMEL_UART_RI);
61
62 /* set serial console to ttyS0 (ie, DBGU) */
63 at91_set_serial_console(0);
64} 50}
65 51
66static struct macb_platform_data __initdata onearm_eth_data = { 52static struct macb_platform_data __initdata onearm_eth_data = {
@@ -82,6 +68,16 @@ static struct at91_udc_data __initdata onearm_udc_data = {
82static void __init onearm_board_init(void) 68static void __init onearm_board_init(void)
83{ 69{
84 /* Serial */ 70 /* Serial */
71 /* DBGU on ttyS0. (Rx & Tx only) */
72 at91_register_uart(0, 0, 0);
73
74 /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
75 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
76
77 /* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
78 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
79 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
80 | ATMEL_UART_RI);
85 at91_add_device_serial(); 81 at91_add_device_serial();
86 /* Ethernet */ 82 /* Ethernet */
87 at91_add_device_eth(&onearm_eth_data); 83 at91_add_device_eth(&onearm_eth_data);
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c
index 161efbaa1029..b7d8aa7b81e6 100644
--- a/arch/arm/mach-at91/board-afeb-9260v1.c
+++ b/arch/arm/mach-at91/board-afeb-9260v1.c
@@ -52,22 +52,6 @@ static void __init afeb9260_init_early(void)
52{ 52{
53 /* Initialize processor: 18.432 MHz crystal */ 53 /* Initialize processor: 18.432 MHz crystal */
54 at91_initialize(18432000); 54 at91_initialize(18432000);
55
56 /* DBGU on ttyS0. (Rx & Tx only) */
57 at91_register_uart(0, 0, 0);
58
59 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
60 at91_register_uart(AT91SAM9260_ID_US0, 1,
61 ATMEL_UART_CTS | ATMEL_UART_RTS
62 | ATMEL_UART_DTR | ATMEL_UART_DSR
63 | ATMEL_UART_DCD | ATMEL_UART_RI);
64
65 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
66 at91_register_uart(AT91SAM9260_ID_US1, 2,
67 ATMEL_UART_CTS | ATMEL_UART_RTS);
68
69 /* set serial console to ttyS0 (ie, DBGU) */
70 at91_set_serial_console(0);
71} 55}
72 56
73/* 57/*
@@ -183,6 +167,18 @@ static struct at91_cf_data afeb9260_cf_data = {
183static void __init afeb9260_board_init(void) 167static void __init afeb9260_board_init(void)
184{ 168{
185 /* Serial */ 169 /* Serial */
170 /* DBGU on ttyS0. (Rx & Tx only) */
171 at91_register_uart(0, 0, 0);
172
173 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
174 at91_register_uart(AT91SAM9260_ID_US0, 1,
175 ATMEL_UART_CTS | ATMEL_UART_RTS
176 | ATMEL_UART_DTR | ATMEL_UART_DSR
177 | ATMEL_UART_DCD | ATMEL_UART_RI);
178
179 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
180 at91_register_uart(AT91SAM9260_ID_US1, 2,
181 ATMEL_UART_CTS | ATMEL_UART_RTS);
186 at91_add_device_serial(); 182 at91_add_device_serial();
187 /* USB Host */ 183 /* USB Host */
188 at91_add_device_usbh(&afeb9260_usbh_data); 184 at91_add_device_usbh(&afeb9260_usbh_data);
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c
index c6d44ee0c77e..29d3ef0a50fb 100644
--- a/arch/arm/mach-at91/board-cam60.c
+++ b/arch/arm/mach-at91/board-cam60.c
@@ -49,12 +49,6 @@ static void __init cam60_init_early(void)
49{ 49{
50 /* Initialize processor: 10 MHz crystal */ 50 /* Initialize processor: 10 MHz crystal */
51 at91_initialize(10000000); 51 at91_initialize(10000000);
52
53 /* DBGU on ttyS0. (Rx & Tx only) */
54 at91_register_uart(0, 0, 0);
55
56 /* set serial console to ttyS0 (ie, DBGU) */
57 at91_set_serial_console(0);
58} 52}
59 53
60/* 54/*
@@ -175,6 +169,8 @@ static void __init cam60_add_device_nand(void)
175static void __init cam60_board_init(void) 169static void __init cam60_board_init(void)
176{ 170{
177 /* Serial */ 171 /* Serial */
172 /* DBGU on ttyS0. (Rx & Tx only) */
173 at91_register_uart(0, 0, 0);
178 at91_add_device_serial(); 174 at91_add_device_serial();
179 /* SPI */ 175 /* SPI */
180 at91_add_device_spi(cam60_spi_devices, ARRAY_SIZE(cam60_spi_devices)); 176 at91_add_device_spi(cam60_spi_devices, ARRAY_SIZE(cam60_spi_devices));
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c
index 59d9cf997537..44328a6d4609 100644
--- a/arch/arm/mach-at91/board-carmeva.c
+++ b/arch/arm/mach-at91/board-carmeva.c
@@ -44,17 +44,6 @@ static void __init carmeva_init_early(void)
44{ 44{
45 /* Initialize processor: 20.000 MHz crystal */ 45 /* Initialize processor: 20.000 MHz crystal */
46 at91_initialize(20000000); 46 at91_initialize(20000000);
47
48 /* DBGU on ttyS0. (Rx & Tx only) */
49 at91_register_uart(0, 0, 0);
50
51 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
52 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
53 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
54 | ATMEL_UART_RI);
55
56 /* set serial console to ttyS0 (ie, DBGU) */
57 at91_set_serial_console(0);
58} 47}
59 48
60static struct macb_platform_data __initdata carmeva_eth_data = { 49static struct macb_platform_data __initdata carmeva_eth_data = {
@@ -139,6 +128,13 @@ static struct gpio_led carmeva_leds[] = {
139static void __init carmeva_board_init(void) 128static void __init carmeva_board_init(void)
140{ 129{
141 /* Serial */ 130 /* Serial */
131 /* DBGU on ttyS0. (Rx & Tx only) */
132 at91_register_uart(0, 0, 0);
133
134 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
135 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
136 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
137 | ATMEL_UART_RI);
142 at91_add_device_serial(); 138 at91_add_device_serial();
143 /* Ethernet */ 139 /* Ethernet */
144 at91_add_device_eth(&carmeva_eth_data); 140 at91_add_device_eth(&carmeva_eth_data);
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c
index 5f3680e7c883..69951ec7dbf3 100644
--- a/arch/arm/mach-at91/board-cpu9krea.c
+++ b/arch/arm/mach-at91/board-cpu9krea.c
@@ -52,34 +52,6 @@ static void __init cpu9krea_init_early(void)
52{ 52{
53 /* Initialize processor: 18.432 MHz crystal */ 53 /* Initialize processor: 18.432 MHz crystal */
54 at91_initialize(18432000); 54 at91_initialize(18432000);
55
56 /* DGBU on ttyS0. (Rx & Tx only) */
57 at91_register_uart(0, 0, 0);
58
59 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
60 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS |
61 ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
62 ATMEL_UART_DCD | ATMEL_UART_RI);
63
64 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
65 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS |
66 ATMEL_UART_RTS);
67
68 /* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */
69 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS |
70 ATMEL_UART_RTS);
71
72 /* USART3 on ttyS4. (Rx, Tx) */
73 at91_register_uart(AT91SAM9260_ID_US3, 4, 0);
74
75 /* USART4 on ttyS5. (Rx, Tx) */
76 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
77
78 /* USART5 on ttyS6. (Rx, Tx) */
79 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
80
81 /* set serial console to ttyS0 (ie, DBGU) */
82 at91_set_serial_console(0);
83} 55}
84 56
85/* 57/*
@@ -352,6 +324,30 @@ static void __init cpu9krea_board_init(void)
352 /* NOR */ 324 /* NOR */
353 cpu9krea_add_device_nor(); 325 cpu9krea_add_device_nor();
354 /* Serial */ 326 /* Serial */
327 /* DGBU on ttyS0. (Rx & Tx only) */
328 at91_register_uart(0, 0, 0);
329
330 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
331 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS |
332 ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
333 ATMEL_UART_DCD | ATMEL_UART_RI);
334
335 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
336 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS |
337 ATMEL_UART_RTS);
338
339 /* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */
340 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS |
341 ATMEL_UART_RTS);
342
343 /* USART3 on ttyS4. (Rx, Tx) */
344 at91_register_uart(AT91SAM9260_ID_US3, 4, 0);
345
346 /* USART4 on ttyS5. (Rx, Tx) */
347 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
348
349 /* USART5 on ttyS6. (Rx, Tx) */
350 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
355 at91_add_device_serial(); 351 at91_add_device_serial();
356 /* USB Host */ 352 /* USB Host */
357 at91_add_device_usbh(&cpu9krea_usbh_data); 353 at91_add_device_usbh(&cpu9krea_usbh_data);
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c
index e094cc81fe25..895cf2dba612 100644
--- a/arch/arm/mach-at91/board-cpuat91.c
+++ b/arch/arm/mach-at91/board-cpuat91.c
@@ -59,28 +59,6 @@ static void __init cpuat91_init_early(void)
59 59
60 /* Initialize processor: 18.432 MHz crystal */ 60 /* Initialize processor: 18.432 MHz crystal */
61 at91_initialize(18432000); 61 at91_initialize(18432000);
62
63 /* DBGU on ttyS0. (Rx & Tx only) */
64 at91_register_uart(0, 0, 0);
65
66 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
67 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS |
68 ATMEL_UART_RTS);
69
70 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
71 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS |
72 ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
73 ATMEL_UART_DCD | ATMEL_UART_RI);
74
75 /* USART2 on ttyS3 (Rx, Tx) */
76 at91_register_uart(AT91RM9200_ID_US2, 3, 0);
77
78 /* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */
79 at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS |
80 ATMEL_UART_RTS);
81
82 /* set serial console to ttyS0 (ie, DBGU) */
83 at91_set_serial_console(0);
84} 62}
85 63
86static struct macb_platform_data __initdata cpuat91_eth_data = { 64static struct macb_platform_data __initdata cpuat91_eth_data = {
@@ -161,6 +139,24 @@ static struct platform_device *platform_devices[] __initdata = {
161static void __init cpuat91_board_init(void) 139static void __init cpuat91_board_init(void)
162{ 140{
163 /* Serial */ 141 /* Serial */
142 /* DBGU on ttyS0. (Rx & Tx only) */
143 at91_register_uart(0, 0, 0);
144
145 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
146 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS |
147 ATMEL_UART_RTS);
148
149 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
150 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS |
151 ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
152 ATMEL_UART_DCD | ATMEL_UART_RI);
153
154 /* USART2 on ttyS3 (Rx, Tx) */
155 at91_register_uart(AT91RM9200_ID_US2, 3, 0);
156
157 /* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */
158 at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS |
159 ATMEL_UART_RTS);
164 at91_add_device_serial(); 160 at91_add_device_serial();
165 /* LEDs. */ 161 /* LEDs. */
166 at91_gpio_leds(cpuat91_leds, ARRAY_SIZE(cpuat91_leds)); 162 at91_gpio_leds(cpuat91_leds, ARRAY_SIZE(cpuat91_leds));
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c
index 1a1547b1ce4e..cd813361cd26 100644
--- a/arch/arm/mach-at91/board-csb337.c
+++ b/arch/arm/mach-at91/board-csb337.c
@@ -47,15 +47,6 @@ static void __init csb337_init_early(void)
47{ 47{
48 /* Initialize processor: 3.6864 MHz crystal */ 48 /* Initialize processor: 3.6864 MHz crystal */
49 at91_initialize(3686400); 49 at91_initialize(3686400);
50
51 /* Setup the LEDs */
52 at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
53
54 /* DBGU on ttyS0 */
55 at91_register_uart(0, 0, 0);
56
57 /* make console=ttyS0 the default */
58 at91_set_serial_console(0);
59} 50}
60 51
61static struct macb_platform_data __initdata csb337_eth_data = { 52static struct macb_platform_data __initdata csb337_eth_data = {
@@ -228,7 +219,11 @@ static struct gpio_led csb_leds[] = {
228 219
229static void __init csb337_board_init(void) 220static void __init csb337_board_init(void)
230{ 221{
222 /* Setup the LEDs */
223 at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
231 /* Serial */ 224 /* Serial */
225 /* DBGU on ttyS0 */
226 at91_register_uart(0, 0, 0);
232 at91_add_device_serial(); 227 at91_add_device_serial();
233 /* Ethernet */ 228 /* Ethernet */
234 at91_add_device_eth(&csb337_eth_data); 229 at91_add_device_eth(&csb337_eth_data);
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c
index f650bf39455d..7c8b05a57d7f 100644
--- a/arch/arm/mach-at91/board-csb637.c
+++ b/arch/arm/mach-at91/board-csb637.c
@@ -44,12 +44,6 @@ static void __init csb637_init_early(void)
44{ 44{
45 /* Initialize processor: 3.6864 MHz crystal */ 45 /* Initialize processor: 3.6864 MHz crystal */
46 at91_initialize(3686400); 46 at91_initialize(3686400);
47
48 /* DBGU on ttyS0. (Rx & Tx only) */
49 at91_register_uart(0, 0, 0);
50
51 /* make console=ttyS0 (ie, DBGU) the default */
52 at91_set_serial_console(0);
53} 47}
54 48
55static struct macb_platform_data __initdata csb637_eth_data = { 49static struct macb_platform_data __initdata csb637_eth_data = {
@@ -118,6 +112,8 @@ static void __init csb637_board_init(void)
118 /* LED(s) */ 112 /* LED(s) */
119 at91_gpio_leds(csb_leds, ARRAY_SIZE(csb_leds)); 113 at91_gpio_leds(csb_leds, ARRAY_SIZE(csb_leds));
120 /* Serial */ 114 /* Serial */
115 /* DBGU on ttyS0. (Rx & Tx only) */
116 at91_register_uart(0, 0, 0);
121 at91_add_device_serial(); 117 at91_add_device_serial();
122 /* Ethernet */ 118 /* Ethernet */
123 at91_add_device_eth(&csb637_eth_data); 119 at91_add_device_eth(&csb637_eth_data);
diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
index c18d4d307801..a1fce05aa7a5 100644
--- a/arch/arm/mach-at91/board-dt.c
+++ b/arch/arm/mach-at91/board-dt.c
@@ -1,10 +1,6 @@
1/* 1/*
2 * Setup code for AT91SAM Evaluation Kits with Device Tree support 2 * Setup code for AT91SAM Evaluation Kits with Device Tree support
3 * 3 *
4 * Covers: * AT91SAM9G45-EKES board
5 * * AT91SAM9M10-EKES board
6 * * AT91SAM9M10G45-EK board
7 *
8 * Copyright (C) 2011 Atmel, 4 * Copyright (C) 2011 Atmel,
9 * 2011 Nicolas Ferre <nicolas.ferre@atmel.com> 5 * 2011 Nicolas Ferre <nicolas.ferre@atmel.com>
10 * 6 *
@@ -49,9 +45,7 @@ static void __init at91_dt_device_init(void)
49} 45}
50 46
51static const char *at91_dt_board_compat[] __initdata = { 47static const char *at91_dt_board_compat[] __initdata = {
52 "atmel,at91sam9m10g45ek", 48 "atmel,at91sam9",
53 "atmel,at91sam9x5ek",
54 "calao,usb-a9g20",
55 NULL 49 NULL
56}; 50};
57 51
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c
index d302ca3eeb64..bd1017297989 100644
--- a/arch/arm/mach-at91/board-eb9200.c
+++ b/arch/arm/mach-at91/board-eb9200.c
@@ -44,20 +44,6 @@ static void __init eb9200_init_early(void)
44{ 44{
45 /* Initialize processor: 18.432 MHz crystal */ 45 /* Initialize processor: 18.432 MHz crystal */
46 at91_initialize(18432000); 46 at91_initialize(18432000);
47
48 /* DBGU on ttyS0. (Rx & Tx only) */
49 at91_register_uart(0, 0, 0);
50
51 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
52 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
53 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
54 | ATMEL_UART_RI);
55
56 /* USART2 on ttyS2. (Rx, Tx) - IRDA */
57 at91_register_uart(AT91RM9200_ID_US2, 2, 0);
58
59 /* set serial console to ttyS0 (ie, DBGU) */
60 at91_set_serial_console(0);
61} 47}
62 48
63static struct macb_platform_data __initdata eb9200_eth_data = { 49static struct macb_platform_data __initdata eb9200_eth_data = {
@@ -101,6 +87,16 @@ static struct i2c_board_info __initdata eb9200_i2c_devices[] = {
101static void __init eb9200_board_init(void) 87static void __init eb9200_board_init(void)
102{ 88{
103 /* Serial */ 89 /* Serial */
90 /* DBGU on ttyS0. (Rx & Tx only) */
91 at91_register_uart(0, 0, 0);
92
93 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
94 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
95 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
96 | ATMEL_UART_RI);
97
98 /* USART2 on ttyS2. (Rx, Tx) - IRDA */
99 at91_register_uart(AT91RM9200_ID_US2, 2, 0);
104 at91_add_device_serial(); 100 at91_add_device_serial();
105 /* Ethernet */ 101 /* Ethernet */
106 at91_add_device_eth(&eb9200_eth_data); 102 at91_add_device_eth(&eb9200_eth_data);
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c
index 69966ce4d776..89cc3726a9ce 100644
--- a/arch/arm/mach-at91/board-ecbat91.c
+++ b/arch/arm/mach-at91/board-ecbat91.c
@@ -50,18 +50,6 @@ static void __init ecb_at91init_early(void)
50 50
51 /* Initialize processor: 18.432 MHz crystal */ 51 /* Initialize processor: 18.432 MHz crystal */
52 at91_initialize(18432000); 52 at91_initialize(18432000);
53
54 /* Setup the LEDs */
55 at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7);
56
57 /* DBGU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* USART0 on ttyS1. (Rx & Tx only) */
61 at91_register_uart(AT91RM9200_ID_US0, 1, 0);
62
63 /* set serial console to ttyS0 (ie, DBGU) */
64 at91_set_serial_console(0);
65} 53}
66 54
67static struct macb_platform_data __initdata ecb_at91eth_data = { 55static struct macb_platform_data __initdata ecb_at91eth_data = {
@@ -151,7 +139,15 @@ static struct spi_board_info __initdata ecb_at91spi_devices[] = {
151 139
152static void __init ecb_at91board_init(void) 140static void __init ecb_at91board_init(void)
153{ 141{
142 /* Setup the LEDs */
143 at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7);
144
154 /* Serial */ 145 /* Serial */
146 /* DBGU on ttyS0. (Rx & Tx only) */
147 at91_register_uart(0, 0, 0);
148
149 /* USART0 on ttyS1. (Rx & Tx only) */
150 at91_register_uart(AT91RM9200_ID_US0, 1, 0);
155 at91_add_device_serial(); 151 at91_add_device_serial();
156 152
157 /* Ethernet */ 153 /* Ethernet */
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c
index f23aabef8551..558546cf63f4 100644
--- a/arch/arm/mach-at91/board-eco920.c
+++ b/arch/arm/mach-at91/board-eco920.c
@@ -37,15 +37,6 @@ static void __init eco920_init_early(void)
37 at91rm9200_set_type(ARCH_REVISON_9200_PQFP); 37 at91rm9200_set_type(ARCH_REVISON_9200_PQFP);
38 38
39 at91_initialize(18432000); 39 at91_initialize(18432000);
40
41 /* Setup the LEDs */
42 at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
43
44 /* DBGU on ttyS0. (Rx & Tx only */
45 at91_register_uart(0, 0, 0);
46
47 /* set serial console to ttyS0 (ie, DBGU) */
48 at91_set_serial_console(0);
49} 40}
50 41
51static struct macb_platform_data __initdata eco920_eth_data = { 42static struct macb_platform_data __initdata eco920_eth_data = {
@@ -103,6 +94,10 @@ static struct spi_board_info eco920_spi_devices[] = {
103 94
104static void __init eco920_board_init(void) 95static void __init eco920_board_init(void)
105{ 96{
97 /* Setup the LEDs */
98 at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
99 /* DBGU on ttyS0. (Rx & Tx only */
100 at91_register_uart(0, 0, 0);
106 at91_add_device_serial(); 101 at91_add_device_serial();
107 at91_add_device_eth(&eco920_eth_data); 102 at91_add_device_eth(&eco920_eth_data);
108 at91_add_device_usbh(&eco920_usbh_data); 103 at91_add_device_usbh(&eco920_usbh_data);
diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c
index 1815152001f7..47658f78105d 100644
--- a/arch/arm/mach-at91/board-flexibity.c
+++ b/arch/arm/mach-at91/board-flexibity.c
@@ -41,12 +41,6 @@ static void __init flexibity_init_early(void)
41{ 41{
42 /* Initialize processor: 18.432 MHz crystal */ 42 /* Initialize processor: 18.432 MHz crystal */
43 at91_initialize(18432000); 43 at91_initialize(18432000);
44
45 /* DBGU on ttyS0. (Rx & Tx only) */
46 at91_register_uart(0, 0, 0);
47
48 /* set serial console to ttyS0 (ie, DBGU) */
49 at91_set_serial_console(0);
50} 44}
51 45
52/* USB Host port */ 46/* USB Host port */
@@ -143,6 +137,8 @@ static struct gpio_led flexibity_leds[] = {
143static void __init flexibity_board_init(void) 137static void __init flexibity_board_init(void)
144{ 138{
145 /* Serial */ 139 /* Serial */
140 /* DBGU on ttyS0. (Rx & Tx only) */
141 at91_register_uart(0, 0, 0);
146 at91_add_device_serial(); 142 at91_add_device_serial();
147 /* USB Host */ 143 /* USB Host */
148 at91_add_device_usbh(&flexibity_usbh_data); 144 at91_add_device_usbh(&flexibity_usbh_data);
diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c
index caf017f0f4ee..33411e6ecb1f 100644
--- a/arch/arm/mach-at91/board-foxg20.c
+++ b/arch/arm/mach-at91/board-foxg20.c
@@ -61,44 +61,6 @@ static void __init foxg20_init_early(void)
61{ 61{
62 /* Initialize processor: 18.432 MHz crystal */ 62 /* Initialize processor: 18.432 MHz crystal */
63 at91_initialize(18432000); 63 at91_initialize(18432000);
64
65 /* DBGU on ttyS0. (Rx & Tx only) */
66 at91_register_uart(0, 0, 0);
67
68 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
69 at91_register_uart(AT91SAM9260_ID_US0, 1,
70 ATMEL_UART_CTS
71 | ATMEL_UART_RTS
72 | ATMEL_UART_DTR
73 | ATMEL_UART_DSR
74 | ATMEL_UART_DCD
75 | ATMEL_UART_RI);
76
77 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
78 at91_register_uart(AT91SAM9260_ID_US1, 2,
79 ATMEL_UART_CTS
80 | ATMEL_UART_RTS);
81
82 /* USART2 on ttyS3. (Rx & Tx only) */
83 at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
84
85 /* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
86 at91_register_uart(AT91SAM9260_ID_US3, 4,
87 ATMEL_UART_CTS
88 | ATMEL_UART_RTS);
89
90 /* USART4 on ttyS5. (Rx & Tx only) */
91 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
92
93 /* USART5 on ttyS6. (Rx & Tx only) */
94 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
95
96 /* set serial console to ttyS0 (ie, DBGU) */
97 at91_set_serial_console(0);
98
99 /* Set the internal pull-up resistor on DRXD */
100 at91_set_A_periph(AT91_PIN_PB14, 1);
101
102} 64}
103 65
104/* 66/*
@@ -241,6 +203,39 @@ static struct i2c_board_info __initdata foxg20_i2c_devices[] = {
241static void __init foxg20_board_init(void) 203static void __init foxg20_board_init(void)
242{ 204{
243 /* Serial */ 205 /* Serial */
206 /* DBGU on ttyS0. (Rx & Tx only) */
207 at91_register_uart(0, 0, 0);
208
209 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
210 at91_register_uart(AT91SAM9260_ID_US0, 1,
211 ATMEL_UART_CTS
212 | ATMEL_UART_RTS
213 | ATMEL_UART_DTR
214 | ATMEL_UART_DSR
215 | ATMEL_UART_DCD
216 | ATMEL_UART_RI);
217
218 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
219 at91_register_uart(AT91SAM9260_ID_US1, 2,
220 ATMEL_UART_CTS
221 | ATMEL_UART_RTS);
222
223 /* USART2 on ttyS3. (Rx & Tx only) */
224 at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
225
226 /* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
227 at91_register_uart(AT91SAM9260_ID_US3, 4,
228 ATMEL_UART_CTS
229 | ATMEL_UART_RTS);
230
231 /* USART4 on ttyS5. (Rx & Tx only) */
232 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
233
234 /* USART5 on ttyS6. (Rx & Tx only) */
235 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
236
237 /* Set the internal pull-up resistor on DRXD */
238 at91_set_A_periph(AT91_PIN_PB14, 1);
244 at91_add_device_serial(); 239 at91_add_device_serial();
245 /* USB Host */ 240 /* USB Host */
246 at91_add_device_usbh(&foxg20_usbh_data); 241 at91_add_device_usbh(&foxg20_usbh_data);
diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c
index 230e71969fb7..3e0dfa643a86 100644
--- a/arch/arm/mach-at91/board-gsia18s.c
+++ b/arch/arm/mach-at91/board-gsia18s.c
@@ -41,38 +41,6 @@
41static void __init gsia18s_init_early(void) 41static void __init gsia18s_init_early(void)
42{ 42{
43 stamp9g20_init_early(); 43 stamp9g20_init_early();
44
45 /*
46 * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI).
47 * Used for Internal Analog Modem.
48 */
49 at91_register_uart(AT91SAM9260_ID_US0, 1,
50 ATMEL_UART_CTS | ATMEL_UART_RTS |
51 ATMEL_UART_DTR | ATMEL_UART_DSR |
52 ATMEL_UART_DCD | ATMEL_UART_RI);
53 /*
54 * USART1 on ttyS2 (Rx, Tx, CTS, RTS).
55 * Used for GPS or WiFi or Data stream.
56 */
57 at91_register_uart(AT91SAM9260_ID_US1, 2,
58 ATMEL_UART_CTS | ATMEL_UART_RTS);
59 /*
60 * USART2 on ttyS3 (Rx, Tx, CTS, RTS).
61 * Used for External Modem.
62 */
63 at91_register_uart(AT91SAM9260_ID_US2, 3,
64 ATMEL_UART_CTS | ATMEL_UART_RTS);
65 /*
66 * USART3 on ttyS4 (Rx, Tx, RTS).
67 * Used for RS-485.
68 */
69 at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS);
70
71 /*
72 * USART4 on ttyS5 (Rx, Tx).
73 * Used for TRX433 Radio Module.
74 */
75 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
76} 44}
77 45
78/* 46/*
@@ -558,6 +526,37 @@ static int __init gsia18s_power_off_init(void)
558 526
559static void __init gsia18s_board_init(void) 527static void __init gsia18s_board_init(void)
560{ 528{
529 /*
530 * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI).
531 * Used for Internal Analog Modem.
532 */
533 at91_register_uart(AT91SAM9260_ID_US0, 1,
534 ATMEL_UART_CTS | ATMEL_UART_RTS |
535 ATMEL_UART_DTR | ATMEL_UART_DSR |
536 ATMEL_UART_DCD | ATMEL_UART_RI);
537 /*
538 * USART1 on ttyS2 (Rx, Tx, CTS, RTS).
539 * Used for GPS or WiFi or Data stream.
540 */
541 at91_register_uart(AT91SAM9260_ID_US1, 2,
542 ATMEL_UART_CTS | ATMEL_UART_RTS);
543 /*
544 * USART2 on ttyS3 (Rx, Tx, CTS, RTS).
545 * Used for External Modem.
546 */
547 at91_register_uart(AT91SAM9260_ID_US2, 3,
548 ATMEL_UART_CTS | ATMEL_UART_RTS);
549 /*
550 * USART3 on ttyS4 (Rx, Tx, RTS).
551 * Used for RS-485.
552 */
553 at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS);
554
555 /*
556 * USART4 on ttyS5 (Rx, Tx).
557 * Used for TRX433 Radio Module.
558 */
559 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
561 stamp9g20_board_init(); 560 stamp9g20_board_init();
562 at91_add_device_usbh(&usbh_data); 561 at91_add_device_usbh(&usbh_data);
563 at91_add_device_udc(&udc_data); 562 at91_add_device_udc(&udc_data);
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c
index efde1b2327c8..f260657f32bc 100644
--- a/arch/arm/mach-at91/board-kafa.c
+++ b/arch/arm/mach-at91/board-kafa.c
@@ -47,18 +47,6 @@ static void __init kafa_init_early(void)
47 47
48 /* Initialize processor: 18.432 MHz crystal */ 48 /* Initialize processor: 18.432 MHz crystal */
49 at91_initialize(18432000); 49 at91_initialize(18432000);
50
51 /* Set up the LEDs */
52 at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4);
53
54 /* DBGU on ttyS0. (Rx & Tx only) */
55 at91_register_uart(0, 0, 0);
56
57 /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
58 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
59
60 /* set serial console to ttyS0 (ie, DBGU) */
61 at91_set_serial_console(0);
62} 50}
63 51
64static struct macb_platform_data __initdata kafa_eth_data = { 52static struct macb_platform_data __initdata kafa_eth_data = {
@@ -79,7 +67,15 @@ static struct at91_udc_data __initdata kafa_udc_data = {
79 67
80static void __init kafa_board_init(void) 68static void __init kafa_board_init(void)
81{ 69{
70 /* Set up the LEDs */
71 at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4);
72
82 /* Serial */ 73 /* Serial */
74 /* DBGU on ttyS0. (Rx & Tx only) */
75 at91_register_uart(0, 0, 0);
76
77 /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
78 at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
83 at91_add_device_serial(); 79 at91_add_device_serial();
84 /* Ethernet */ 80 /* Ethernet */
85 at91_add_device_eth(&kafa_eth_data); 81 at91_add_device_eth(&kafa_eth_data);
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c
index 59b92aab9bcf..ba39db5482b9 100644
--- a/arch/arm/mach-at91/board-kb9202.c
+++ b/arch/arm/mach-at91/board-kb9202.c
@@ -50,24 +50,6 @@ static void __init kb9202_init_early(void)
50 50
51 /* Initialize processor: 10 MHz crystal */ 51 /* Initialize processor: 10 MHz crystal */
52 at91_initialize(10000000); 52 at91_initialize(10000000);
53
54 /* Set up the LEDs */
55 at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18);
56
57 /* DBGU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* USART0 on ttyS1 (Rx & Tx only) */
61 at91_register_uart(AT91RM9200_ID_US0, 1, 0);
62
63 /* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */
64 at91_register_uart(AT91RM9200_ID_US1, 2, 0);
65
66 /* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */
67 at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
68
69 /* set serial console to ttyS0 (ie, DBGU) */
70 at91_set_serial_console(0);
71} 53}
72 54
73static struct macb_platform_data __initdata kb9202_eth_data = { 55static struct macb_platform_data __initdata kb9202_eth_data = {
@@ -115,7 +97,21 @@ static struct atmel_nand_data __initdata kb9202_nand_data = {
115 97
116static void __init kb9202_board_init(void) 98static void __init kb9202_board_init(void)
117{ 99{
100 /* Set up the LEDs */
101 at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18);
102
118 /* Serial */ 103 /* Serial */
104 /* DBGU on ttyS0. (Rx & Tx only) */
105 at91_register_uart(0, 0, 0);
106
107 /* USART0 on ttyS1 (Rx & Tx only) */
108 at91_register_uart(AT91RM9200_ID_US0, 1, 0);
109
110 /* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */
111 at91_register_uart(AT91RM9200_ID_US1, 2, 0);
112
113 /* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */
114 at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
119 at91_add_device_serial(); 115 at91_add_device_serial();
120 /* Ethernet */ 116 /* Ethernet */
121 at91_add_device_eth(&kb9202_eth_data); 117 at91_add_device_eth(&kb9202_eth_data);
diff --git a/arch/arm/mach-at91/board-neocore926.c b/arch/arm/mach-at91/board-neocore926.c
index 57d5f6a4726a..d2f4cc161766 100644
--- a/arch/arm/mach-at91/board-neocore926.c
+++ b/arch/arm/mach-at91/board-neocore926.c
@@ -55,15 +55,6 @@ static void __init neocore926_init_early(void)
55{ 55{
56 /* Initialize processor: 20 MHz crystal */ 56 /* Initialize processor: 20 MHz crystal */
57 at91_initialize(20000000); 57 at91_initialize(20000000);
58
59 /* DBGU on ttyS0. (Rx & Tx only) */
60 at91_register_uart(0, 0, 0);
61
62 /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
63 at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
64
65 /* set serial console to ttyS0 (ie, DBGU) */
66 at91_set_serial_console(0);
67} 58}
68 59
69/* 60/*
@@ -341,6 +332,11 @@ static struct ac97c_platform_data neocore926_ac97_data = {
341static void __init neocore926_board_init(void) 332static void __init neocore926_board_init(void)
342{ 333{
343 /* Serial */ 334 /* Serial */
335 /* DBGU on ttyS0. (Rx & Tx only) */
336 at91_register_uart(0, 0, 0);
337
338 /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
339 at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
344 at91_add_device_serial(); 340 at91_add_device_serial();
345 341
346 /* USB Host */ 342 /* USB Host */
diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c
index b4a12fc184c8..7fe638342421 100644
--- a/arch/arm/mach-at91/board-pcontrol-g20.c
+++ b/arch/arm/mach-at91/board-pcontrol-g20.c
@@ -40,17 +40,6 @@
40static void __init pcontrol_g20_init_early(void) 40static void __init pcontrol_g20_init_early(void)
41{ 41{
42 stamp9g20_init_early(); 42 stamp9g20_init_early();
43
44 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback A2 */
45 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS
46 | ATMEL_UART_RTS);
47
48 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485 X5 */
49 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS
50 | ATMEL_UART_RTS);
51
52 /* USART2 on ttyS3. (Rx, Tx) 9bit-Bus Multidrop-mode X4 */
53 at91_register_uart(AT91SAM9260_ID_US4, 3, 0);
54} 43}
55 44
56static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { { 45static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { {
@@ -199,6 +188,16 @@ static struct spi_board_info pcontrol_g20_spi_devices[] = {
199 188
200static void __init pcontrol_g20_board_init(void) 189static void __init pcontrol_g20_board_init(void)
201{ 190{
191 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback A2 */
192 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS
193 | ATMEL_UART_RTS);
194
195 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485 X5 */
196 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS
197 | ATMEL_UART_RTS);
198
199 /* USART2 on ttyS3. (Rx, Tx) 9bit-Bus Multidrop-mode X4 */
200 at91_register_uart(AT91SAM9260_ID_US4, 3, 0);
202 stamp9g20_board_init(); 201 stamp9g20_board_init();
203 at91_add_device_usbh(&usbh_data); 202 at91_add_device_usbh(&usbh_data);
204 at91_add_device_eth(&macb_data); 203 at91_add_device_eth(&macb_data);
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c
index 59e35dd14863..b45c0a5d5ca7 100644
--- a/arch/arm/mach-at91/board-picotux200.c
+++ b/arch/arm/mach-at91/board-picotux200.c
@@ -48,17 +48,6 @@ static void __init picotux200_init_early(void)
48{ 48{
49 /* Initialize processor: 18.432 MHz crystal */ 49 /* Initialize processor: 18.432 MHz crystal */
50 at91_initialize(18432000); 50 at91_initialize(18432000);
51
52 /* DBGU on ttyS0. (Rx & Tx only) */
53 at91_register_uart(0, 0, 0);
54
55 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
56 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
57 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
58 | ATMEL_UART_RI);
59
60 /* set serial console to ttyS0 (ie, DBGU) */
61 at91_set_serial_console(0);
62} 51}
63 52
64static struct macb_platform_data __initdata picotux200_eth_data = { 53static struct macb_platform_data __initdata picotux200_eth_data = {
@@ -106,6 +95,13 @@ static struct platform_device picotux200_flash = {
106static void __init picotux200_board_init(void) 95static void __init picotux200_board_init(void)
107{ 96{
108 /* Serial */ 97 /* Serial */
98 /* DBGU on ttyS0. (Rx & Tx only) */
99 at91_register_uart(0, 0, 0);
100
101 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
102 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
103 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
104 | ATMEL_UART_RI);
109 at91_add_device_serial(); 105 at91_add_device_serial();
110 /* Ethernet */ 106 /* Ethernet */
111 at91_add_device_eth(&picotux200_eth_data); 107 at91_add_device_eth(&picotux200_eth_data);
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c
index b6ed5ed7081a..0c61bf0d272c 100644
--- a/arch/arm/mach-at91/board-qil-a9260.c
+++ b/arch/arm/mach-at91/board-qil-a9260.c
@@ -52,24 +52,6 @@ static void __init ek_init_early(void)
52{ 52{
53 /* Initialize processor: 12.000 MHz crystal */ 53 /* Initialize processor: 12.000 MHz crystal */
54 at91_initialize(12000000); 54 at91_initialize(12000000);
55
56 /* DBGU on ttyS0. (Rx & Tx only) */
57 at91_register_uart(0, 0, 0);
58
59 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
60 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
61 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
62 | ATMEL_UART_RI);
63
64 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
65 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
66
67 /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
68 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
69
70 /* set serial console to ttyS1 (ie, USART0) */
71 at91_set_serial_console(1);
72
73} 55}
74 56
75/* 57/*
@@ -235,6 +217,19 @@ static struct gpio_led ek_leds[] = {
235static void __init ek_board_init(void) 217static void __init ek_board_init(void)
236{ 218{
237 /* Serial */ 219 /* Serial */
220 /* DBGU on ttyS0. (Rx & Tx only) */
221 at91_register_uart(0, 0, 0);
222
223 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
224 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
225 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
226 | ATMEL_UART_RI);
227
228 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
229 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
230
231 /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
232 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
238 at91_add_device_serial(); 233 at91_add_device_serial();
239 /* USB Host */ 234 /* USB Host */
240 at91_add_device_usbh(&ek_usbh_data); 235 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c
index 01332aa538b2..afd7a4713766 100644
--- a/arch/arm/mach-at91/board-rm9200dk.c
+++ b/arch/arm/mach-at91/board-rm9200dk.c
@@ -50,20 +50,6 @@ static void __init dk_init_early(void)
50{ 50{
51 /* Initialize processor: 18.432 MHz crystal */ 51 /* Initialize processor: 18.432 MHz crystal */
52 at91_initialize(18432000); 52 at91_initialize(18432000);
53
54 /* Setup the LEDs */
55 at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
56
57 /* DBGU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
61 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
62 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
63 | ATMEL_UART_RI);
64
65 /* set serial console to ttyS0 (ie, DBGU) */
66 at91_set_serial_console(0);
67} 53}
68 54
69static struct macb_platform_data __initdata dk_eth_data = { 55static struct macb_platform_data __initdata dk_eth_data = {
@@ -190,7 +176,17 @@ static struct gpio_led dk_leds[] = {
190 176
191static void __init dk_board_init(void) 177static void __init dk_board_init(void)
192{ 178{
179 /* Setup the LEDs */
180 at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
181
193 /* Serial */ 182 /* Serial */
183 /* DBGU on ttyS0. (Rx & Tx only) */
184 at91_register_uart(0, 0, 0);
185
186 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
187 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
188 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
189 | ATMEL_UART_RI);
194 at91_add_device_serial(); 190 at91_add_device_serial();
195 /* Ethernet */ 191 /* Ethernet */
196 at91_add_device_eth(&dk_eth_data); 192 at91_add_device_eth(&dk_eth_data);
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c
index b2e4fe21f346..2b15b8adec4c 100644
--- a/arch/arm/mach-at91/board-rm9200ek.c
+++ b/arch/arm/mach-at91/board-rm9200ek.c
@@ -50,20 +50,6 @@ static void __init ek_init_early(void)
50{ 50{
51 /* Initialize processor: 18.432 MHz crystal */ 51 /* Initialize processor: 18.432 MHz crystal */
52 at91_initialize(18432000); 52 at91_initialize(18432000);
53
54 /* Setup the LEDs */
55 at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2);
56
57 /* DBGU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
61 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
62 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
63 | ATMEL_UART_RI);
64
65 /* set serial console to ttyS0 (ie, DBGU) */
66 at91_set_serial_console(0);
67} 53}
68 54
69static struct macb_platform_data __initdata ek_eth_data = { 55static struct macb_platform_data __initdata ek_eth_data = {
@@ -161,7 +147,17 @@ static struct gpio_led ek_leds[] = {
161 147
162static void __init ek_board_init(void) 148static void __init ek_board_init(void)
163{ 149{
150 /* Setup the LEDs */
151 at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2);
152
164 /* Serial */ 153 /* Serial */
154 /* DBGU on ttyS0. (Rx & Tx only) */
155 at91_register_uart(0, 0, 0);
156
157 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
158 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
159 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
160 | ATMEL_UART_RI);
165 at91_add_device_serial(); 161 at91_add_device_serial();
166 /* Ethernet */ 162 /* Ethernet */
167 at91_add_device_eth(&ek_eth_data); 163 at91_add_device_eth(&ek_eth_data);
diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c
index af0750fafa29..24ab9be7510f 100644
--- a/arch/arm/mach-at91/board-rsi-ews.c
+++ b/arch/arm/mach-at91/board-rsi-ews.c
@@ -35,26 +35,6 @@ static void __init rsi_ews_init_early(void)
35{ 35{
36 /* Initialize processor: 18.432 MHz crystal */ 36 /* Initialize processor: 18.432 MHz crystal */
37 at91_initialize(18432000); 37 at91_initialize(18432000);
38
39 /* Setup the LEDs */
40 at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9);
41
42 /* DBGU on ttyS0. (Rx & Tx only) */
43 /* This one is for debugging */
44 at91_register_uart(0, 0, 0);
45
46 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
47 /* Dialin/-out modem interface */
48 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
49 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
50 | ATMEL_UART_RI);
51
52 /* USART3 on ttyS4. (Rx, Tx, RTS) */
53 /* RS485 communication */
54 at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS);
55
56 /* set serial console to ttyS0 (ie, DBGU) */
57 at91_set_serial_console(0);
58} 38}
59 39
60/* 40/*
@@ -204,7 +184,23 @@ static struct platform_device rsiews_nor_flash = {
204 */ 184 */
205static void __init rsi_ews_board_init(void) 185static void __init rsi_ews_board_init(void)
206{ 186{
187 /* Setup the LEDs */
188 at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9);
189
207 /* Serial */ 190 /* Serial */
191 /* DBGU on ttyS0. (Rx & Tx only) */
192 /* This one is for debugging */
193 at91_register_uart(0, 0, 0);
194
195 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
196 /* Dialin/-out modem interface */
197 at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
198 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
199 | ATMEL_UART_RI);
200
201 /* USART3 on ttyS4. (Rx, Tx, RTS) */
202 /* RS485 communication */
203 at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS);
208 at91_add_device_serial(); 204 at91_add_device_serial();
209 at91_set_gpio_output(AT91_PIN_PA21, 0); 205 at91_set_gpio_output(AT91_PIN_PA21, 0);
210 /* Ethernet */ 206 /* Ethernet */
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c
index e8b116b6cba6..cdd21f2595d2 100644
--- a/arch/arm/mach-at91/board-sam9-l9260.c
+++ b/arch/arm/mach-at91/board-sam9-l9260.c
@@ -48,23 +48,6 @@ static void __init ek_init_early(void)
48{ 48{
49 /* Initialize processor: 18.432 MHz crystal */ 49 /* Initialize processor: 18.432 MHz crystal */
50 at91_initialize(18432000); 50 at91_initialize(18432000);
51
52 /* Setup the LEDs */
53 at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6);
54
55 /* DBGU on ttyS0. (Rx & Tx only) */
56 at91_register_uart(0, 0, 0);
57
58 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
59 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
60 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
61 | ATMEL_UART_RI);
62
63 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
64 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
65
66 /* set serial console to ttyS0 (ie, DBGU) */
67 at91_set_serial_console(0);
68} 51}
69 52
70/* 53/*
@@ -184,7 +167,20 @@ static struct at91_mmc_data __initdata ek_mmc_data = {
184 167
185static void __init ek_board_init(void) 168static void __init ek_board_init(void)
186{ 169{
170 /* Setup the LEDs */
171 at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6);
172
187 /* Serial */ 173 /* Serial */
174 /* DBGU on ttyS0. (Rx & Tx only) */
175 at91_register_uart(0, 0, 0);
176
177 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
178 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
179 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
180 | ATMEL_UART_RI);
181
182 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
183 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
188 at91_add_device_serial(); 184 at91_add_device_serial();
189 /* USB Host */ 185 /* USB Host */
190 at91_add_device_usbh(&ek_usbh_data); 186 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c
index d5aec55b0eb4..7b3c3913551a 100644
--- a/arch/arm/mach-at91/board-sam9260ek.c
+++ b/arch/arm/mach-at91/board-sam9260ek.c
@@ -54,20 +54,6 @@ static void __init ek_init_early(void)
54{ 54{
55 /* Initialize processor: 18.432 MHz crystal */ 55 /* Initialize processor: 18.432 MHz crystal */
56 at91_initialize(18432000); 56 at91_initialize(18432000);
57
58 /* DBGU on ttyS0. (Rx & Tx only) */
59 at91_register_uart(0, 0, 0);
60
61 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
62 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
63 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
64 | ATMEL_UART_RI);
65
66 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
67 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
68
69 /* set serial console to ttyS0 (ie, DBGU) */
70 at91_set_serial_console(0);
71} 57}
72 58
73/* 59/*
@@ -320,6 +306,16 @@ static void __init ek_add_device_buttons(void) {}
320static void __init ek_board_init(void) 306static void __init ek_board_init(void)
321{ 307{
322 /* Serial */ 308 /* Serial */
309 /* DBGU on ttyS0. (Rx & Tx only) */
310 at91_register_uart(0, 0, 0);
311
312 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
313 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
314 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
315 | ATMEL_UART_RI);
316
317 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
318 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
323 at91_add_device_serial(); 319 at91_add_device_serial();
324 /* USB Host */ 320 /* USB Host */
325 at91_add_device_usbh(&ek_usbh_data); 321 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c
index 065fed342424..2736453821b0 100644
--- a/arch/arm/mach-at91/board-sam9261ek.c
+++ b/arch/arm/mach-at91/board-sam9261ek.c
@@ -58,15 +58,6 @@ static void __init ek_init_early(void)
58{ 58{
59 /* Initialize processor: 18.432 MHz crystal */ 59 /* Initialize processor: 18.432 MHz crystal */
60 at91_initialize(18432000); 60 at91_initialize(18432000);
61
62 /* Setup the LEDs */
63 at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14);
64
65 /* DBGU on ttyS0. (Rx & Tx only) */
66 at91_register_uart(0, 0, 0);
67
68 /* set serial console to ttyS0 (ie, DBGU) */
69 at91_set_serial_console(0);
70} 61}
71 62
72/* 63/*
@@ -577,7 +568,12 @@ static struct gpio_led ek_leds[] = {
577 568
578static void __init ek_board_init(void) 569static void __init ek_board_init(void)
579{ 570{
571 /* Setup the LEDs */
572 at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14);
573
580 /* Serial */ 574 /* Serial */
575 /* DBGU on ttyS0. (Rx & Tx only) */
576 at91_register_uart(0, 0, 0);
581 at91_add_device_serial(); 577 at91_add_device_serial();
582 /* USB Host */ 578 /* USB Host */
583 at91_add_device_usbh(&ek_usbh_data); 579 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
index 2ffe50f3a9e9..983cb98d2465 100644
--- a/arch/arm/mach-at91/board-sam9263ek.c
+++ b/arch/arm/mach-at91/board-sam9263ek.c
@@ -57,15 +57,6 @@ static void __init ek_init_early(void)
57{ 57{
58 /* Initialize processor: 16.367 MHz crystal */ 58 /* Initialize processor: 16.367 MHz crystal */
59 at91_initialize(16367660); 59 at91_initialize(16367660);
60
61 /* DBGU on ttyS0. (Rx & Tx only) */
62 at91_register_uart(0, 0, 0);
63
64 /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
65 at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
66
67 /* set serial console to ttyS0 (ie, DBGU) */
68 at91_set_serial_console(0);
69} 60}
70 61
71/* 62/*
@@ -412,6 +403,11 @@ static struct at91_can_data ek_can_data = {
412static void __init ek_board_init(void) 403static void __init ek_board_init(void)
413{ 404{
414 /* Serial */ 405 /* Serial */
406 /* DBGU on ttyS0. (Rx & Tx only) */
407 at91_register_uart(0, 0, 0);
408
409 /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
410 at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
415 at91_add_device_serial(); 411 at91_add_device_serial();
416 /* USB Host */ 412 /* USB Host */
417 at91_add_device_usbh(&ek_usbh_data); 413 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c
index 8923ec9f5831..3d615532ae5c 100644
--- a/arch/arm/mach-at91/board-sam9g20ek.c
+++ b/arch/arm/mach-at91/board-sam9g20ek.c
@@ -65,20 +65,6 @@ static void __init ek_init_early(void)
65{ 65{
66 /* Initialize processor: 18.432 MHz crystal */ 66 /* Initialize processor: 18.432 MHz crystal */
67 at91_initialize(18432000); 67 at91_initialize(18432000);
68
69 /* DBGU on ttyS0. (Rx & Tx only) */
70 at91_register_uart(0, 0, 0);
71
72 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
73 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
74 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
75 | ATMEL_UART_RI);
76
77 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
78 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
79
80 /* set serial console to ttyS0 (ie, DBGU) */
81 at91_set_serial_console(0);
82} 68}
83 69
84/* 70/*
@@ -372,6 +358,16 @@ static struct i2c_board_info __initdata ek_i2c_devices[] = {
372static void __init ek_board_init(void) 358static void __init ek_board_init(void)
373{ 359{
374 /* Serial */ 360 /* Serial */
361 /* DBGU on ttyS0. (Rx & Tx only) */
362 at91_register_uart(0, 0, 0);
363
364 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
365 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
366 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
367 | ATMEL_UART_RI);
368
369 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
370 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
375 at91_add_device_serial(); 371 at91_add_device_serial();
376 /* USB Host */ 372 /* USB Host */
377 at91_add_device_usbh(&ek_usbh_data); 373 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c
index c88e908ddd82..9a87f0b072f8 100644
--- a/arch/arm/mach-at91/board-sam9m10g45ek.c
+++ b/arch/arm/mach-at91/board-sam9m10g45ek.c
@@ -53,16 +53,6 @@ static void __init ek_init_early(void)
53{ 53{
54 /* Initialize processor: 12.000 MHz crystal */ 54 /* Initialize processor: 12.000 MHz crystal */
55 at91_initialize(12000000); 55 at91_initialize(12000000);
56
57 /* DGBU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* USART0 not connected on the -EK board */
61 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
62 at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
63
64 /* set serial console to ttyS0 (ie, DBGU) */
65 at91_set_serial_console(0);
66} 56}
67 57
68/* 58/*
@@ -457,6 +447,12 @@ static struct platform_device *devices[] __initdata = {
457static void __init ek_board_init(void) 447static void __init ek_board_init(void)
458{ 448{
459 /* Serial */ 449 /* Serial */
450 /* DGBU on ttyS0. (Rx & Tx only) */
451 at91_register_uart(0, 0, 0);
452
453 /* USART0 not connected on the -EK board */
454 /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
455 at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
460 at91_add_device_serial(); 456 at91_add_device_serial();
461 /* USB HS Host */ 457 /* USB HS Host */
462 at91_add_device_usbh_ohci(&ek_usbh_hs_data); 458 at91_add_device_usbh_ohci(&ek_usbh_hs_data);
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c
index b109ce2ba864..be3239f13daa 100644
--- a/arch/arm/mach-at91/board-sam9rlek.c
+++ b/arch/arm/mach-at91/board-sam9rlek.c
@@ -42,15 +42,6 @@ static void __init ek_init_early(void)
42{ 42{
43 /* Initialize processor: 12.000 MHz crystal */ 43 /* Initialize processor: 12.000 MHz crystal */
44 at91_initialize(12000000); 44 at91_initialize(12000000);
45
46 /* DBGU on ttyS0. (Rx & Tx only) */
47 at91_register_uart(0, 0, 0);
48
49 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
50 at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
51
52 /* set serial console to ttyS0 (ie, DBGU) */
53 at91_set_serial_console(0);
54} 45}
55 46
56/* 47/*
@@ -296,6 +287,11 @@ static void __init ek_add_device_buttons(void) {}
296static void __init ek_board_init(void) 287static void __init ek_board_init(void)
297{ 288{
298 /* Serial */ 289 /* Serial */
290 /* DBGU on ttyS0. (Rx & Tx only) */
291 at91_register_uart(0, 0, 0);
292
293 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
294 at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
299 at91_add_device_serial(); 295 at91_add_device_serial();
300 /* USB HS */ 296 /* USB HS */
301 at91_add_device_usba(&ek_usba_udc_data); 297 at91_add_device_usba(&ek_usba_udc_data);
diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c
index ebc9d01ce742..9d446f1bb45f 100644
--- a/arch/arm/mach-at91/board-snapper9260.c
+++ b/arch/arm/mach-at91/board-snapper9260.c
@@ -43,16 +43,6 @@
43static void __init snapper9260_init_early(void) 43static void __init snapper9260_init_early(void)
44{ 44{
45 at91_initialize(18432000); 45 at91_initialize(18432000);
46
47 /* Debug on ttyS0 */
48 at91_register_uart(0, 0, 0);
49 at91_set_serial_console(0);
50
51 at91_register_uart(AT91SAM9260_ID_US0, 1,
52 ATMEL_UART_CTS | ATMEL_UART_RTS);
53 at91_register_uart(AT91SAM9260_ID_US1, 2,
54 ATMEL_UART_CTS | ATMEL_UART_RTS);
55 at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
56} 46}
57 47
58static struct at91_usbh_data __initdata snapper9260_usbh_data = { 48static struct at91_usbh_data __initdata snapper9260_usbh_data = {
@@ -168,6 +158,14 @@ static void __init snapper9260_board_init(void)
168 snapper9260_i2c_isl1208.irq = gpio_to_irq(AT91_PIN_PA31); 158 snapper9260_i2c_isl1208.irq = gpio_to_irq(AT91_PIN_PA31);
169 i2c_register_board_info(0, &snapper9260_i2c_isl1208, 1); 159 i2c_register_board_info(0, &snapper9260_i2c_isl1208, 1);
170 160
161 /* Debug on ttyS0 */
162 at91_register_uart(0, 0, 0);
163
164 at91_register_uart(AT91SAM9260_ID_US0, 1,
165 ATMEL_UART_CTS | ATMEL_UART_RTS);
166 at91_register_uart(AT91SAM9260_ID_US1, 2,
167 ATMEL_UART_CTS | ATMEL_UART_RTS);
168 at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
171 at91_add_device_serial(); 169 at91_add_device_serial();
172 at91_add_device_usbh(&snapper9260_usbh_data); 170 at91_add_device_usbh(&snapper9260_usbh_data);
173 at91_add_device_udc(&snapper9260_udc_data); 171 at91_add_device_udc(&snapper9260_udc_data);
diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c
index 7640049410a0..ee86f9d7ee72 100644
--- a/arch/arm/mach-at91/board-stamp9g20.c
+++ b/arch/arm/mach-at91/board-stamp9g20.c
@@ -36,44 +36,6 @@ void __init stamp9g20_init_early(void)
36{ 36{
37 /* Initialize processor: 18.432 MHz crystal */ 37 /* Initialize processor: 18.432 MHz crystal */
38 at91_initialize(18432000); 38 at91_initialize(18432000);
39
40 /* DGBU on ttyS0. (Rx & Tx only) */
41 at91_register_uart(0, 0, 0);
42
43 /* set serial console to ttyS0 (ie, DBGU) */
44 at91_set_serial_console(0);
45}
46
47static void __init stamp9g20evb_init_early(void)
48{
49 stamp9g20_init_early();
50
51 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
52 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
53 | ATMEL_UART_DTR | ATMEL_UART_DSR
54 | ATMEL_UART_DCD | ATMEL_UART_RI);
55}
56
57static void __init portuxg20_init_early(void)
58{
59 stamp9g20_init_early();
60
61 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
62 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
63 | ATMEL_UART_DTR | ATMEL_UART_DSR
64 | ATMEL_UART_DCD | ATMEL_UART_RI);
65
66 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
67 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
68
69 /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
70 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
71
72 /* USART4 on ttyS5. (Rx, Tx only) */
73 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
74
75 /* USART5 on ttyS6. (Rx, Tx only) */
76 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
77} 39}
78 40
79/* 41/*
@@ -254,6 +216,8 @@ void add_w1(void)
254void __init stamp9g20_board_init(void) 216void __init stamp9g20_board_init(void)
255{ 217{
256 /* Serial */ 218 /* Serial */
219 /* DGBU on ttyS0. (Rx & Tx only) */
220 at91_register_uart(0, 0, 0);
257 at91_add_device_serial(); 221 at91_add_device_serial();
258 /* NAND */ 222 /* NAND */
259 add_device_nand(); 223 add_device_nand();
@@ -269,6 +233,22 @@ void __init stamp9g20_board_init(void)
269 233
270static void __init portuxg20_board_init(void) 234static void __init portuxg20_board_init(void)
271{ 235{
236 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
237 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
238 | ATMEL_UART_DTR | ATMEL_UART_DSR
239 | ATMEL_UART_DCD | ATMEL_UART_RI);
240
241 /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
242 at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
243
244 /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
245 at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
246
247 /* USART4 on ttyS5. (Rx, Tx only) */
248 at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
249
250 /* USART5 on ttyS6. (Rx, Tx only) */
251 at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
272 stamp9g20_board_init(); 252 stamp9g20_board_init();
273 /* USB Host */ 253 /* USB Host */
274 at91_add_device_usbh(&usbh_data); 254 at91_add_device_usbh(&usbh_data);
@@ -286,6 +266,10 @@ static void __init portuxg20_board_init(void)
286 266
287static void __init stamp9g20evb_board_init(void) 267static void __init stamp9g20evb_board_init(void)
288{ 268{
269 /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
270 at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
271 | ATMEL_UART_DTR | ATMEL_UART_DSR
272 | ATMEL_UART_DCD | ATMEL_UART_RI);
289 stamp9g20_board_init(); 273 stamp9g20_board_init();
290 /* USB Host */ 274 /* USB Host */
291 at91_add_device_usbh(&usbh_data); 275 at91_add_device_usbh(&usbh_data);
@@ -303,7 +287,7 @@ MACHINE_START(PORTUXG20, "taskit PortuxG20")
303 /* Maintainer: taskit GmbH */ 287 /* Maintainer: taskit GmbH */
304 .timer = &at91sam926x_timer, 288 .timer = &at91sam926x_timer,
305 .map_io = at91_map_io, 289 .map_io = at91_map_io,
306 .init_early = portuxg20_init_early, 290 .init_early = stamp9g20_init_early,
307 .init_irq = at91_init_irq_default, 291 .init_irq = at91_init_irq_default,
308 .init_machine = portuxg20_board_init, 292 .init_machine = portuxg20_board_init,
309MACHINE_END 293MACHINE_END
@@ -312,7 +296,7 @@ MACHINE_START(STAMP9G20, "taskit Stamp9G20")
312 /* Maintainer: taskit GmbH */ 296 /* Maintainer: taskit GmbH */
313 .timer = &at91sam926x_timer, 297 .timer = &at91sam926x_timer,
314 .map_io = at91_map_io, 298 .map_io = at91_map_io,
315 .init_early = stamp9g20evb_init_early, 299 .init_early = stamp9g20_init_early,
316 .init_irq = at91_init_irq_default, 300 .init_irq = at91_init_irq_default,
317 .init_machine = stamp9g20evb_board_init, 301 .init_machine = stamp9g20evb_board_init,
318MACHINE_END 302MACHINE_END
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c
index b7483a3d0980..95393fcaf199 100644
--- a/arch/arm/mach-at91/board-usb-a926x.c
+++ b/arch/arm/mach-at91/board-usb-a926x.c
@@ -53,12 +53,6 @@ static void __init ek_init_early(void)
53{ 53{
54 /* Initialize processor: 12.00 MHz crystal */ 54 /* Initialize processor: 12.00 MHz crystal */
55 at91_initialize(12000000); 55 at91_initialize(12000000);
56
57 /* DBGU on ttyS0. (Rx & Tx only) */
58 at91_register_uart(0, 0, 0);
59
60 /* set serial console to ttyS0 (ie, DBGU) */
61 at91_set_serial_console(0);
62} 56}
63 57
64/* 58/*
@@ -178,6 +172,10 @@ static struct mtd_partition __initdata ek_nand_partition[] = {
178 .offset = MTDPART_OFS_NXTBLK, 172 .offset = MTDPART_OFS_NXTBLK,
179 .size = SZ_128K, 173 .size = SZ_128K,
180 }, { 174 }, {
175 .name = "oftree",
176 .offset = MTDPART_OFS_NXTBLK,
177 .size = SZ_128K,
178 }, {
181 .name = "kernel", 179 .name = "kernel",
182 .offset = MTDPART_OFS_NXTBLK, 180 .offset = MTDPART_OFS_NXTBLK,
183 .size = 4 * SZ_1M, 181 .size = 4 * SZ_1M,
@@ -325,6 +323,8 @@ static void __init ek_add_device_leds(void)
325static void __init ek_board_init(void) 323static void __init ek_board_init(void)
326{ 324{
327 /* Serial */ 325 /* Serial */
326 /* DBGU on ttyS0. (Rx & Tx only) */
327 at91_register_uart(0, 0, 0);
328 at91_add_device_serial(); 328 at91_add_device_serial();
329 /* USB Host */ 329 /* USB Host */
330 at91_add_device_usbh(&ek_usbh_data); 330 at91_add_device_usbh(&ek_usbh_data);
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c
index 38dd279d30b2..d56665ea4b55 100644
--- a/arch/arm/mach-at91/board-yl-9200.c
+++ b/arch/arm/mach-at91/board-yl-9200.c
@@ -58,26 +58,6 @@ static void __init yl9200_init_early(void)
58 58
59 /* Initialize processor: 18.432 MHz crystal */ 59 /* Initialize processor: 18.432 MHz crystal */
60 at91_initialize(18432000); 60 at91_initialize(18432000);
61
62 /* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */
63 at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17);
64
65 /* DBGU on ttyS0. (Rx & Tx only) */
66 at91_register_uart(0, 0, 0);
67
68 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
69 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
70 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
71 | ATMEL_UART_RI);
72
73 /* USART0 on ttyS2. (Rx & Tx only to JP3) */
74 at91_register_uart(AT91RM9200_ID_US0, 2, 0);
75
76 /* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */
77 at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS);
78
79 /* set serial console to ttyS0 (ie, DBGU) */
80 at91_set_serial_console(0);
81} 61}
82 62
83/* 63/*
@@ -560,7 +540,23 @@ void __init yl9200_add_device_video(void) {}
560 540
561static void __init yl9200_board_init(void) 541static void __init yl9200_board_init(void)
562{ 542{
543 /* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */
544 at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17);
545
563 /* Serial */ 546 /* Serial */
547 /* DBGU on ttyS0. (Rx & Tx only) */
548 at91_register_uart(0, 0, 0);
549
550 /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
551 at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
552 | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
553 | ATMEL_UART_RI);
554
555 /* USART0 on ttyS2. (Rx & Tx only to JP3) */
556 at91_register_uart(AT91RM9200_ID_US0, 2, 0);
557
558 /* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */
559 at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS);
564 at91_add_device_serial(); 560 at91_add_device_serial();
565 /* Ethernet */ 561 /* Ethernet */
566 at91_add_device_eth(&yl9200_eth_data); 562 at91_add_device_eth(&yl9200_eth_data);
diff --git a/arch/arm/mach-at91/cpuidle.c b/arch/arm/mach-at91/cpuidle.c
index ece1f9aefb47..0c6381516a5a 100644
--- a/arch/arm/mach-at91/cpuidle.c
+++ b/arch/arm/mach-at91/cpuidle.c
@@ -21,6 +21,7 @@
21#include <linux/export.h> 21#include <linux/export.h>
22#include <asm/proc-fns.h> 22#include <asm/proc-fns.h>
23#include <asm/cpuidle.h> 23#include <asm/cpuidle.h>
24#include <mach/cpu.h>
24 25
25#include "pm.h" 26#include "pm.h"
26 27
@@ -33,7 +34,12 @@ static int at91_enter_idle(struct cpuidle_device *dev,
33 struct cpuidle_driver *drv, 34 struct cpuidle_driver *drv,
34 int index) 35 int index)
35{ 36{
36 at91_standby(); 37 if (cpu_is_at91rm9200())
38 at91rm9200_standby();
39 else if (cpu_is_at91sam9g45())
40 at91sam9g45_standby();
41 else
42 at91sam9_standby();
37 43
38 return index; 44 return index;
39} 45}
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h
index dd9b346c451d..0a60bf837037 100644
--- a/arch/arm/mach-at91/generic.h
+++ b/arch/arm/mach-at91/generic.h
@@ -40,17 +40,6 @@ extern struct sys_timer at91sam926x_timer;
40extern struct sys_timer at91x40_timer; 40extern struct sys_timer at91x40_timer;
41 41
42 /* Clocks */ 42 /* Clocks */
43/*
44 * function to specify the clock of the default console. As we do not
45 * use the device/driver bus, the dev_name is not intialize. So we need
46 * to link the clock to a specific con_id only "usart"
47 */
48extern void __init at91rm9200_set_console_clock(int id);
49extern void __init at91sam9260_set_console_clock(int id);
50extern void __init at91sam9261_set_console_clock(int id);
51extern void __init at91sam9263_set_console_clock(int id);
52extern void __init at91sam9rl_set_console_clock(int id);
53extern void __init at91sam9g45_set_console_clock(int id);
54#ifdef CONFIG_AT91_PMC_UNIT 43#ifdef CONFIG_AT91_PMC_UNIT
55extern int __init at91_clock_init(unsigned long main_clock); 44extern int __init at91_clock_init(unsigned long main_clock);
56extern int __init at91_dt_clock_init(void); 45extern int __init at91_dt_clock_init(void);
diff --git a/arch/arm/mach-at91/include/mach/at91rm9200.h b/arch/arm/mach-at91/include/mach/at91rm9200.h
index 603e6aac2a4f..e67317c67761 100644
--- a/arch/arm/mach-at91/include/mach/at91rm9200.h
+++ b/arch/arm/mach-at91/include/mach/at91rm9200.h
@@ -88,11 +88,6 @@
88#define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */ 88#define AT91RM9200_BASE_RTC 0xfffffe00 /* Real-Time Clock */
89#define AT91RM9200_BASE_MC 0xffffff00 /* Memory Controllers */ 89#define AT91RM9200_BASE_MC 0xffffff00 /* Memory Controllers */
90 90
91#define AT91_USART0 AT91RM9200_BASE_US0
92#define AT91_USART1 AT91RM9200_BASE_US1
93#define AT91_USART2 AT91RM9200_BASE_US2
94#define AT91_USART3 AT91RM9200_BASE_US3
95
96/* 91/*
97 * Internal Memory. 92 * Internal Memory.
98 */ 93 */
diff --git a/arch/arm/mach-at91/include/mach/at91sam9260.h b/arch/arm/mach-at91/include/mach/at91sam9260.h
index 08ae9afd00fe..416c7b6c56d3 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9260.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9260.h
@@ -95,13 +95,6 @@
95#define AT91SAM9260_BASE_WDT 0xfffffd40 95#define AT91SAM9260_BASE_WDT 0xfffffd40
96#define AT91SAM9260_BASE_GPBR 0xfffffd50 96#define AT91SAM9260_BASE_GPBR 0xfffffd50
97 97
98#define AT91_USART0 AT91SAM9260_BASE_US0
99#define AT91_USART1 AT91SAM9260_BASE_US1
100#define AT91_USART2 AT91SAM9260_BASE_US2
101#define AT91_USART3 AT91SAM9260_BASE_US3
102#define AT91_USART4 AT91SAM9260_BASE_US4
103#define AT91_USART5 AT91SAM9260_BASE_US5
104
105 98
106/* 99/*
107 * Internal Memory. 100 * Internal Memory.
diff --git a/arch/arm/mach-at91/include/mach/at91sam9261.h b/arch/arm/mach-at91/include/mach/at91sam9261.h
index 44fbdc12ee62..a041406d06ee 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9261.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9261.h
@@ -79,10 +79,6 @@
79#define AT91SAM9261_BASE_WDT 0xfffffd40 79#define AT91SAM9261_BASE_WDT 0xfffffd40
80#define AT91SAM9261_BASE_GPBR 0xfffffd50 80#define AT91SAM9261_BASE_GPBR 0xfffffd50
81 81
82#define AT91_USART0 AT91SAM9261_BASE_US0
83#define AT91_USART1 AT91SAM9261_BASE_US1
84#define AT91_USART2 AT91SAM9261_BASE_US2
85
86 82
87/* 83/*
88 * Internal Memory. 84 * Internal Memory.
diff --git a/arch/arm/mach-at91/include/mach/at91sam9263.h b/arch/arm/mach-at91/include/mach/at91sam9263.h
index d96cbb2e03c4..d201029d60b3 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9263.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9263.h
@@ -95,10 +95,6 @@
95#define AT91SAM9263_BASE_RTT1 0xfffffd50 95#define AT91SAM9263_BASE_RTT1 0xfffffd50
96#define AT91SAM9263_BASE_GPBR 0xfffffd60 96#define AT91SAM9263_BASE_GPBR 0xfffffd60
97 97
98#define AT91_USART0 AT91SAM9263_BASE_US0
99#define AT91_USART1 AT91SAM9263_BASE_US1
100#define AT91_USART2 AT91SAM9263_BASE_US2
101
102#define AT91_SMC AT91_SMC0 98#define AT91_SMC AT91_SMC0
103 99
104/* 100/*
diff --git a/arch/arm/mach-at91/include/mach/at91sam9g45.h b/arch/arm/mach-at91/include/mach/at91sam9g45.h
index d052abcff852..3a4da24d5911 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9g45.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9g45.h
@@ -106,11 +106,6 @@
106#define AT91SAM9G45_BASE_RTC 0xfffffdb0 106#define AT91SAM9G45_BASE_RTC 0xfffffdb0
107#define AT91SAM9G45_BASE_GPBR 0xfffffd60 107#define AT91SAM9G45_BASE_GPBR 0xfffffd60
108 108
109#define AT91_USART0 AT91SAM9G45_BASE_US0
110#define AT91_USART1 AT91SAM9G45_BASE_US1
111#define AT91_USART2 AT91SAM9G45_BASE_US2
112#define AT91_USART3 AT91SAM9G45_BASE_US3
113
114/* 109/*
115 * Internal Memory. 110 * Internal Memory.
116 */ 111 */
diff --git a/arch/arm/mach-at91/include/mach/at91sam9rl.h b/arch/arm/mach-at91/include/mach/at91sam9rl.h
index e0073eb10144..a15db56d33fa 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9rl.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9rl.h
@@ -89,11 +89,6 @@
89#define AT91SAM9RL_BASE_GPBR 0xfffffd60 89#define AT91SAM9RL_BASE_GPBR 0xfffffd60
90#define AT91SAM9RL_BASE_RTC 0xfffffe00 90#define AT91SAM9RL_BASE_RTC 0xfffffe00
91 91
92#define AT91_USART0 AT91SAM9RL_BASE_US0
93#define AT91_USART1 AT91SAM9RL_BASE_US1
94#define AT91_USART2 AT91SAM9RL_BASE_US2
95#define AT91_USART3 AT91SAM9RL_BASE_US3
96
97 92
98/* 93/*
99 * Internal Memory. 94 * Internal Memory.
diff --git a/arch/arm/mach-at91/include/mach/at91sam9x5.h b/arch/arm/mach-at91/include/mach/at91sam9x5.h
index 88e43d534cdf..c75ee19b58d3 100644
--- a/arch/arm/mach-at91/include/mach/at91sam9x5.h
+++ b/arch/arm/mach-at91/include/mach/at91sam9x5.h
@@ -55,14 +55,6 @@
55#define AT91SAM9X5_BASE_USART2 0xf8024000 55#define AT91SAM9X5_BASE_USART2 0xf8024000
56 56
57/* 57/*
58 * Base addresses for early serial code (uncompress.h)
59 */
60#define AT91_DBGU AT91_BASE_DBGU0
61#define AT91_USART0 AT91SAM9X5_BASE_USART0
62#define AT91_USART1 AT91SAM9X5_BASE_USART1
63#define AT91_USART2 AT91SAM9X5_BASE_USART2
64
65/*
66 * Internal Memory. 58 * Internal Memory.
67 */ 59 */
68#define AT91SAM9X5_SRAM_BASE 0x00300000 /* Internal SRAM base address */ 60#define AT91SAM9X5_SRAM_BASE 0x00300000 /* Internal SRAM base address */
diff --git a/arch/arm/mach-at91/include/mach/board.h b/arch/arm/mach-at91/include/mach/board.h
index 49a821192c65..369afc2ffc5b 100644
--- a/arch/arm/mach-at91/include/mach/board.h
+++ b/arch/arm/mach-at91/include/mach/board.h
@@ -121,7 +121,6 @@ extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_de
121#define ATMEL_UART_RI 0x20 121#define ATMEL_UART_RI 0x20
122 122
123extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins); 123extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);
124extern void __init at91_set_serial_console(unsigned portnr);
125 124
126extern struct platform_device *atmel_default_console_device; 125extern struct platform_device *atmel_default_console_device;
127 126
diff --git a/arch/arm/mach-at91/include/mach/cpu.h b/arch/arm/mach-at91/include/mach/cpu.h
index 0118c3338552..73d2fd209ce4 100644
--- a/arch/arm/mach-at91/include/mach/cpu.h
+++ b/arch/arm/mach-at91/include/mach/cpu.h
@@ -54,6 +54,7 @@
54#define ARCH_REVISON_9200_BGA (0 << 0) 54#define ARCH_REVISON_9200_BGA (0 << 0)
55#define ARCH_REVISON_9200_PQFP (1 << 0) 55#define ARCH_REVISON_9200_PQFP (1 << 0)
56 56
57#ifndef __ASSEMBLY__
57enum at91_soc_type { 58enum at91_soc_type {
58 /* 920T */ 59 /* 920T */
59 AT91_SOC_RM9200, 60 AT91_SOC_RM9200,
@@ -106,7 +107,7 @@ static inline int at91_soc_is_detected(void)
106 return at91_soc_initdata.type != AT91_SOC_NONE; 107 return at91_soc_initdata.type != AT91_SOC_NONE;
107} 108}
108 109
109#ifdef CONFIG_ARCH_AT91RM9200 110#ifdef CONFIG_SOC_AT91RM9200
110#define cpu_is_at91rm9200() (at91_soc_initdata.type == AT91_SOC_RM9200) 111#define cpu_is_at91rm9200() (at91_soc_initdata.type == AT91_SOC_RM9200)
111#define cpu_is_at91rm9200_bga() (at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA) 112#define cpu_is_at91rm9200_bga() (at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA)
112#define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP) 113#define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP)
@@ -116,45 +117,37 @@ static inline int at91_soc_is_detected(void)
116#define cpu_is_at91rm9200_pqfp() (0) 117#define cpu_is_at91rm9200_pqfp() (0)
117#endif 118#endif
118 119
119#ifdef CONFIG_ARCH_AT91SAM9260 120#ifdef CONFIG_SOC_AT91SAM9260
120#define cpu_is_at91sam9xe() (at91_soc_initdata.subtype == AT91_SOC_SAM9XE) 121#define cpu_is_at91sam9xe() (at91_soc_initdata.subtype == AT91_SOC_SAM9XE)
121#define cpu_is_at91sam9260() (at91_soc_initdata.type == AT91_SOC_SAM9260) 122#define cpu_is_at91sam9260() (at91_soc_initdata.type == AT91_SOC_SAM9260)
123#define cpu_is_at91sam9g20() (at91_soc_initdata.type == AT91_SOC_SAM9G20)
122#else 124#else
123#define cpu_is_at91sam9xe() (0) 125#define cpu_is_at91sam9xe() (0)
124#define cpu_is_at91sam9260() (0) 126#define cpu_is_at91sam9260() (0)
125#endif
126
127#ifdef CONFIG_ARCH_AT91SAM9G20
128#define cpu_is_at91sam9g20() (at91_soc_initdata.type == AT91_SOC_SAM9G20)
129#else
130#define cpu_is_at91sam9g20() (0) 127#define cpu_is_at91sam9g20() (0)
131#endif 128#endif
132 129
133#ifdef CONFIG_ARCH_AT91SAM9261 130#ifdef CONFIG_SOC_AT91SAM9261
134#define cpu_is_at91sam9261() (at91_soc_initdata.type == AT91_SOC_SAM9261) 131#define cpu_is_at91sam9261() (at91_soc_initdata.type == AT91_SOC_SAM9261)
135#else
136#define cpu_is_at91sam9261() (0)
137#endif
138
139#ifdef CONFIG_ARCH_AT91SAM9G10
140#define cpu_is_at91sam9g10() (at91_soc_initdata.type == AT91_SOC_SAM9G10) 132#define cpu_is_at91sam9g10() (at91_soc_initdata.type == AT91_SOC_SAM9G10)
141#else 133#else
134#define cpu_is_at91sam9261() (0)
142#define cpu_is_at91sam9g10() (0) 135#define cpu_is_at91sam9g10() (0)
143#endif 136#endif
144 137
145#ifdef CONFIG_ARCH_AT91SAM9263 138#ifdef CONFIG_SOC_AT91SAM9263
146#define cpu_is_at91sam9263() (at91_soc_initdata.type == AT91_SOC_SAM9263) 139#define cpu_is_at91sam9263() (at91_soc_initdata.type == AT91_SOC_SAM9263)
147#else 140#else
148#define cpu_is_at91sam9263() (0) 141#define cpu_is_at91sam9263() (0)
149#endif 142#endif
150 143
151#ifdef CONFIG_ARCH_AT91SAM9RL 144#ifdef CONFIG_SOC_AT91SAM9RL
152#define cpu_is_at91sam9rl() (at91_soc_initdata.type == AT91_SOC_SAM9RL) 145#define cpu_is_at91sam9rl() (at91_soc_initdata.type == AT91_SOC_SAM9RL)
153#else 146#else
154#define cpu_is_at91sam9rl() (0) 147#define cpu_is_at91sam9rl() (0)
155#endif 148#endif
156 149
157#ifdef CONFIG_ARCH_AT91SAM9G45 150#ifdef CONFIG_SOC_AT91SAM9G45
158#define cpu_is_at91sam9g45() (at91_soc_initdata.type == AT91_SOC_SAM9G45) 151#define cpu_is_at91sam9g45() (at91_soc_initdata.type == AT91_SOC_SAM9G45)
159#define cpu_is_at91sam9g45es() (at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES) 152#define cpu_is_at91sam9g45es() (at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES)
160#define cpu_is_at91sam9m10() (at91_soc_initdata.subtype == AT91_SOC_SAM9M10) 153#define cpu_is_at91sam9m10() (at91_soc_initdata.subtype == AT91_SOC_SAM9M10)
@@ -168,7 +161,7 @@ static inline int at91_soc_is_detected(void)
168#define cpu_is_at91sam9m11() (0) 161#define cpu_is_at91sam9m11() (0)
169#endif 162#endif
170 163
171#ifdef CONFIG_ARCH_AT91SAM9X5 164#ifdef CONFIG_SOC_AT91SAM9X5
172#define cpu_is_at91sam9x5() (at91_soc_initdata.type == AT91_SOC_SAM9X5) 165#define cpu_is_at91sam9x5() (at91_soc_initdata.type == AT91_SOC_SAM9X5)
173#define cpu_is_at91sam9g15() (at91_soc_initdata.subtype == AT91_SOC_SAM9G15) 166#define cpu_is_at91sam9g15() (at91_soc_initdata.subtype == AT91_SOC_SAM9G15)
174#define cpu_is_at91sam9g35() (at91_soc_initdata.subtype == AT91_SOC_SAM9G35) 167#define cpu_is_at91sam9g35() (at91_soc_initdata.subtype == AT91_SOC_SAM9G35)
@@ -189,5 +182,6 @@ static inline int at91_soc_is_detected(void)
189 * definitions may reduce clutter in common drivers. 182 * definitions may reduce clutter in common drivers.
190 */ 183 */
191#define cpu_is_at32ap7000() (0) 184#define cpu_is_at32ap7000() (0)
185#endif /* __ASSEMBLY__ */
192 186
193#endif /* __MACH_CPU_H__ */ 187#endif /* __MACH_CPU_H__ */
diff --git a/arch/arm/mach-at91/include/mach/hardware.h b/arch/arm/mach-at91/include/mach/hardware.h
index e9e29a6c3868..3a01f8ff7e74 100644
--- a/arch/arm/mach-at91/include/mach/hardware.h
+++ b/arch/arm/mach-at91/include/mach/hardware.h
@@ -22,27 +22,17 @@
22/* 9263, 9g45 */ 22/* 9263, 9g45 */
23#define AT91_BASE_DBGU1 0xffffee00 23#define AT91_BASE_DBGU1 0xffffee00
24 24
25#if defined(CONFIG_ARCH_AT91RM9200) 25#if defined(CONFIG_ARCH_AT91X40)
26#include <mach/at91x40.h>
27#else
26#include <mach/at91rm9200.h> 28#include <mach/at91rm9200.h>
27#elif defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)
28#include <mach/at91sam9260.h> 29#include <mach/at91sam9260.h>
29#elif defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)
30#include <mach/at91sam9261.h> 30#include <mach/at91sam9261.h>
31#elif defined(CONFIG_ARCH_AT91SAM9263)
32#include <mach/at91sam9263.h> 31#include <mach/at91sam9263.h>
33#elif defined(CONFIG_ARCH_AT91SAM9RL)
34#include <mach/at91sam9rl.h> 32#include <mach/at91sam9rl.h>
35#elif defined(CONFIG_ARCH_AT91SAM9G45)
36#include <mach/at91sam9g45.h> 33#include <mach/at91sam9g45.h>
37#elif defined(CONFIG_ARCH_AT91SAM9X5)
38#include <mach/at91sam9x5.h> 34#include <mach/at91sam9x5.h>
39#elif defined(CONFIG_ARCH_AT91X40)
40#include <mach/at91x40.h>
41#else
42#error "Unsupported AT91 processor"
43#endif
44 35
45#if !defined(CONFIG_ARCH_AT91X40)
46/* 36/*
47 * On all at91 except rm9200 and x40 have the System Controller starts 37 * On all at91 except rm9200 and x40 have the System Controller starts
48 * at address 0xffffc000 and has a size of 16KiB. 38 * at address 0xffffc000 and has a size of 16KiB.
diff --git a/arch/arm/mach-at91/include/mach/uncompress.h b/arch/arm/mach-at91/include/mach/uncompress.h
index 4218647c1fcd..6f6118d1576a 100644
--- a/arch/arm/mach-at91/include/mach/uncompress.h
+++ b/arch/arm/mach-at91/include/mach/uncompress.h
@@ -1,7 +1,8 @@
1/* 1/*
2 * arch/arm/mach-at91/include/mach/uncompress.h 2 * arch/arm/mach-at91/include/mach/uncompress.h
3 * 3 *
4 * Copyright (C) 2003 SAN People 4 * Copyright (C) 2003 SAN People
5 * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
5 * 6 *
6 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 8 * it under the terms of the GNU General Public License as published by
@@ -25,22 +26,147 @@
25#include <linux/atmel_serial.h> 26#include <linux/atmel_serial.h>
26#include <mach/hardware.h> 27#include <mach/hardware.h>
27 28
28#if defined(CONFIG_AT91_EARLY_DBGU0) 29#include <mach/at91_dbgu.h>
29#define UART_OFFSET AT91_BASE_DBGU0 30#include <mach/cpu.h>
30#elif defined(CONFIG_AT91_EARLY_DBGU1) 31
31#define UART_OFFSET AT91_BASE_DBGU1 32void __iomem *at91_uart;
32#elif defined(CONFIG_AT91_EARLY_USART0) 33
33#define UART_OFFSET AT91_USART0 34#if !defined(CONFIG_ARCH_AT91X40)
34#elif defined(CONFIG_AT91_EARLY_USART1) 35static const u32 uarts_rm9200[] = {
35#define UART_OFFSET AT91_USART1 36 AT91_BASE_DBGU0,
36#elif defined(CONFIG_AT91_EARLY_USART2) 37 AT91RM9200_BASE_US0,
37#define UART_OFFSET AT91_USART2 38 AT91RM9200_BASE_US1,
38#elif defined(CONFIG_AT91_EARLY_USART3) 39 AT91RM9200_BASE_US2,
39#define UART_OFFSET AT91_USART3 40 AT91RM9200_BASE_US3,
40#elif defined(CONFIG_AT91_EARLY_USART4) 41 0,
41#define UART_OFFSET AT91_USART4 42};
42#elif defined(CONFIG_AT91_EARLY_USART5) 43
43#define UART_OFFSET AT91_USART5 44static const u32 uarts_sam9260[] = {
45 AT91_BASE_DBGU0,
46 AT91SAM9260_BASE_US0,
47 AT91SAM9260_BASE_US1,
48 AT91SAM9260_BASE_US2,
49 AT91SAM9260_BASE_US3,
50 AT91SAM9260_BASE_US4,
51 AT91SAM9260_BASE_US5,
52 0,
53};
54
55static const u32 uarts_sam9261[] = {
56 AT91_BASE_DBGU0,
57 AT91SAM9261_BASE_US0,
58 AT91SAM9261_BASE_US1,
59 AT91SAM9261_BASE_US2,
60 0,
61};
62
63static const u32 uarts_sam9263[] = {
64 AT91_BASE_DBGU1,
65 AT91SAM9263_BASE_US0,
66 AT91SAM9263_BASE_US1,
67 AT91SAM9263_BASE_US2,
68 0,
69};
70
71static const u32 uarts_sam9g45[] = {
72 AT91_BASE_DBGU1,
73 AT91SAM9G45_BASE_US0,
74 AT91SAM9G45_BASE_US1,
75 AT91SAM9G45_BASE_US2,
76 AT91SAM9G45_BASE_US3,
77 0,
78};
79
80static const u32 uarts_sam9rl[] = {
81 AT91_BASE_DBGU0,
82 AT91SAM9RL_BASE_US0,
83 AT91SAM9RL_BASE_US1,
84 AT91SAM9RL_BASE_US2,
85 AT91SAM9RL_BASE_US3,
86 0,
87};
88
89static const u32 uarts_sam9x5[] = {
90 AT91_BASE_DBGU0,
91 AT91SAM9X5_BASE_USART0,
92 AT91SAM9X5_BASE_USART1,
93 AT91SAM9X5_BASE_USART2,
94 0,
95};
96
97static inline const u32* decomp_soc_detect(u32 dbgu_base)
98{
99 u32 cidr, socid;
100
101 cidr = __raw_readl(dbgu_base + AT91_DBGU_CIDR);
102 socid = cidr & ~AT91_CIDR_VERSION;
103
104 switch (socid) {
105 case ARCH_ID_AT91RM9200:
106 return uarts_rm9200;
107
108 case ARCH_ID_AT91SAM9G20:
109 case ARCH_ID_AT91SAM9260:
110 return uarts_sam9260;
111
112 case ARCH_ID_AT91SAM9261:
113 return uarts_sam9261;
114
115 case ARCH_ID_AT91SAM9263:
116 return uarts_sam9263;
117
118 case ARCH_ID_AT91SAM9G45:
119 return uarts_sam9g45;
120
121 case ARCH_ID_AT91SAM9RL64:
122 return uarts_sam9rl;
123
124 case ARCH_ID_AT91SAM9X5:
125 return uarts_sam9x5;
126 }
127
128 /* at91sam9g10 */
129 if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) {
130 return uarts_sam9261;
131 }
132 /* at91sam9xe */
133 else if ((cidr & AT91_CIDR_ARCH) == ARCH_FAMILY_AT91SAM9XE) {
134 return uarts_sam9260;
135 }
136
137 return NULL;
138}
139
140static inline void arch_decomp_setup(void)
141{
142 int i = 0;
143 const u32* usarts;
144
145 usarts = decomp_soc_detect(AT91_BASE_DBGU0);
146
147 if (!usarts)
148 usarts = decomp_soc_detect(AT91_BASE_DBGU1);
149 if (!usarts) {
150 at91_uart = NULL;
151 return;
152 }
153
154 do {
155 /* physical address */
156 at91_uart = (void __iomem *)usarts[i];
157
158 if (__raw_readl(at91_uart + ATMEL_US_BRGR))
159 return;
160 i++;
161 } while (usarts[i]);
162
163 at91_uart = NULL;
164}
165#else
166static inline void arch_decomp_setup(void)
167{
168 at91_uart = NULL;
169}
44#endif 170#endif
45 171
46/* 172/*
@@ -52,28 +178,24 @@
52 */ 178 */
53static void putc(int c) 179static void putc(int c)
54{ 180{
55#ifdef UART_OFFSET 181 if (!at91_uart)
56 void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ 182 return;
57 183
58 while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXRDY)) 184 while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXRDY))
59 barrier(); 185 barrier();
60 __raw_writel(c, sys + ATMEL_US_THR); 186 __raw_writel(c, at91_uart + ATMEL_US_THR);
61#endif
62} 187}
63 188
64static inline void flush(void) 189static inline void flush(void)
65{ 190{
66#ifdef UART_OFFSET 191 if (!at91_uart)
67 void __iomem *sys = (void __iomem *) UART_OFFSET; /* physical address */ 192 return;
68 193
69 /* wait for transmission to complete */ 194 /* wait for transmission to complete */
70 while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXEMPTY)) 195 while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXEMPTY))
71 barrier(); 196 barrier();
72#endif
73} 197}
74 198
75#define arch_decomp_setup()
76
77#define arch_decomp_wdog() 199#define arch_decomp_wdog()
78 200
79#endif 201#endif
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index f630250c6b87..1bfaad628731 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -261,7 +261,12 @@ static int at91_pm_enter(suspend_state_t state)
261 * For ARM 926 based chips, this requirement is weaker 261 * For ARM 926 based chips, this requirement is weaker
262 * as at91sam9 can access a RAM in self-refresh mode. 262 * as at91sam9 can access a RAM in self-refresh mode.
263 */ 263 */
264 at91_standby(); 264 if (cpu_is_at91rm9200())
265 at91rm9200_standby();
266 else if (cpu_is_at91sam9g45())
267 at91sam9g45_standby();
268 else
269 at91sam9_standby();
265 break; 270 break;
266 271
267 case PM_SUSPEND_ON: 272 case PM_SUSPEND_ON:
@@ -307,10 +312,9 @@ static int __init at91_pm_init(void)
307 312
308 pr_info("AT91: Power Management%s\n", (slow_clock ? " (with slow clock mode)" : "")); 313 pr_info("AT91: Power Management%s\n", (slow_clock ? " (with slow clock mode)" : ""));
309 314
310#ifdef CONFIG_ARCH_AT91RM9200
311 /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */ 315 /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */
312 at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0); 316 if (cpu_is_at91rm9200())
313#endif 317 at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0);
314 318
315 suspend_set_ops(&at91_pm_ops); 319 suspend_set_ops(&at91_pm_ops);
316 320
diff --git a/arch/arm/mach-at91/pm.h b/arch/arm/mach-at91/pm.h
index 89f56f3a802e..38f467c6b710 100644
--- a/arch/arm/mach-at91/pm.h
+++ b/arch/arm/mach-at91/pm.h
@@ -12,7 +12,6 @@
12#define __ARCH_ARM_MACH_AT91_PM 12#define __ARCH_ARM_MACH_AT91_PM
13 13
14#include <mach/at91_ramc.h> 14#include <mach/at91_ramc.h>
15#ifdef CONFIG_ARCH_AT91RM9200
16#include <mach/at91rm9200_sdramc.h> 15#include <mach/at91rm9200_sdramc.h>
17 16
18/* 17/*
@@ -43,10 +42,6 @@ static inline void at91rm9200_standby(void)
43 "r" (lpr)); 42 "r" (lpr));
44} 43}
45 44
46#define at91_standby at91rm9200_standby
47
48#elif defined(CONFIG_ARCH_AT91SAM9G45)
49
50/* We manage both DDRAM/SDRAM controllers, we need more than one value to 45/* We manage both DDRAM/SDRAM controllers, we need more than one value to
51 * remember. 46 * remember.
52 */ 47 */
@@ -75,11 +70,7 @@ static inline void at91sam9g45_standby(void)
75 at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1); 70 at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);
76} 71}
77 72
78#define at91_standby at91sam9g45_standby 73#ifdef CONFIG_SOC_AT91SAM9263
79
80#else
81
82#ifdef CONFIG_ARCH_AT91SAM9263
83/* 74/*
84 * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use; 75 * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
85 * handle those cases both here and in the Suspend-To-RAM support. 76 * handle those cases both here and in the Suspend-To-RAM support.
@@ -102,8 +93,4 @@ static inline void at91sam9_standby(void)
102 at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr); 93 at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr);
103} 94}
104 95
105#define at91_standby at91sam9_standby
106
107#endif
108
109#endif 96#endif
diff --git a/arch/arm/mach-at91/pm_slowclock.S b/arch/arm/mach-at91/pm_slowclock.S
index db5452123f17..098c28ddf025 100644
--- a/arch/arm/mach-at91/pm_slowclock.S
+++ b/arch/arm/mach-at91/pm_slowclock.S
@@ -18,7 +18,7 @@
18#include <mach/at91_ramc.h> 18#include <mach/at91_ramc.h>
19 19
20 20
21#ifdef CONFIG_ARCH_AT91SAM9263 21#ifdef CONFIG_SOC_AT91SAM9263
22/* 22/*
23 * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use; 23 * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
24 * handle those cases both here and in the Suspend-To-RAM support. 24 * handle those cases both here and in the Suspend-To-RAM support.
diff --git a/arch/arm/mach-at91/soc.h b/arch/arm/mach-at91/soc.h
index 5db4aa45404a..683dddfd8b13 100644
--- a/arch/arm/mach-at91/soc.h
+++ b/arch/arm/mach-at91/soc.h
@@ -26,30 +26,30 @@ static inline int at91_soc_is_enabled(void)
26 return at91_boot_soc.init != NULL; 26 return at91_boot_soc.init != NULL;
27} 27}
28 28
29#if !defined(CONFIG_ARCH_AT91RM9200) 29#if !defined(CONFIG_SOC_AT91RM9200)
30#define at91rm9200_soc at91_boot_soc 30#define at91rm9200_soc at91_boot_soc
31#endif 31#endif
32 32
33#if !(defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)) 33#if !defined(CONFIG_SOC_AT91SAM9260)
34#define at91sam9260_soc at91_boot_soc 34#define at91sam9260_soc at91_boot_soc
35#endif 35#endif
36 36
37#if !(defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)) 37#if !defined(CONFIG_SOC_AT91SAM9261)
38#define at91sam9261_soc at91_boot_soc 38#define at91sam9261_soc at91_boot_soc
39#endif 39#endif
40 40
41#if !defined(CONFIG_ARCH_AT91SAM9263) 41#if !defined(CONFIG_SOC_AT91SAM9263)
42#define at91sam9263_soc at91_boot_soc 42#define at91sam9263_soc at91_boot_soc
43#endif 43#endif
44 44
45#if !defined(CONFIG_ARCH_AT91SAM9G45) 45#if !defined(CONFIG_SOC_AT91SAM9G45)
46#define at91sam9g45_soc at91_boot_soc 46#define at91sam9g45_soc at91_boot_soc
47#endif 47#endif
48 48
49#if !defined(CONFIG_ARCH_AT91SAM9RL) 49#if !defined(CONFIG_SOC_AT91SAM9RL)
50#define at91sam9rl_soc at91_boot_soc 50#define at91sam9rl_soc at91_boot_soc
51#endif 51#endif
52 52
53#if !defined(CONFIG_ARCH_AT91SAM9X5) 53#if !defined(CONFIG_SOC_AT91SAM9X5)
54#define at91sam9x5_soc at91_boot_soc 54#define at91sam9x5_soc at91_boot_soc
55#endif 55#endif
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 0689bf6b0183..b2402eb076c7 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -62,7 +62,7 @@ config HW_RANDOM_AMD
62 62
63config HW_RANDOM_ATMEL 63config HW_RANDOM_ATMEL
64 tristate "Atmel Random Number Generator support" 64 tristate "Atmel Random Number Generator support"
65 depends on HW_RANDOM && ARCH_AT91SAM9G45 65 depends on HW_RANDOM && HAVE_CLK
66 default HW_RANDOM 66 default HW_RANDOM
67 ---help--- 67 ---help---
68 This driver provides kernel-side support for the Random Number 68 This driver provides kernel-side support for the Random Number
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 2a2141915aa0..75838d7710ce 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -489,10 +489,10 @@ config TOUCHSCREEN_TI_TSCADC
489 489
490config TOUCHSCREEN_ATMEL_TSADCC 490config TOUCHSCREEN_ATMEL_TSADCC
491 tristate "Atmel Touchscreen Interface" 491 tristate "Atmel Touchscreen Interface"
492 depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 492 depends on ARCH_AT91
493 help 493 help
494 Say Y here if you have a 4-wire touchscreen connected to the 494 Say Y here if you have a 4-wire touchscreen connected to the
495 ADC Controller on your Atmel SoC (such as the AT91SAM9RL). 495 ADC Controller on your Atmel SoC.
496 496
497 If unsure, say N. 497 If unsure, say N.
498 498
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 8c8377d50c4c..4161bfe462cd 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -838,7 +838,7 @@ config RTC_DRV_AT32AP700X
838 838
839config RTC_DRV_AT91RM9200 839config RTC_DRV_AT91RM9200
840 tristate "AT91RM9200 or some AT91SAM9 RTC" 840 tristate "AT91RM9200 or some AT91SAM9 RTC"
841 depends on ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45 841 depends on ARCH_AT91
842 help 842 help
843 Driver for the internal RTC (Realtime Clock) module found on 843 Driver for the internal RTC (Realtime Clock) module found on
844 Atmel AT91RM9200's and some AT91SAM9 chips. On AT91SAM9 chips 844 Atmel AT91RM9200's and some AT91SAM9 chips. On AT91SAM9 chips