diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boot/dts/at91sam9260.dtsi | 9 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9263.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9g45.dtsi | 11 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9n12.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/boot/dts/at91sam9x5.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/configs/at91_dt_defconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9g45.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9n12.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9x5.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-at91/setup.c | 3 |
12 files changed, 79 insertions, 21 deletions
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi index 425da936051d..0b72ae3d8250 100644 --- a/arch/arm/boot/dts/at91sam9260.dtsi +++ b/arch/arm/boot/dts/at91sam9260.dtsi | |||
@@ -104,6 +104,15 @@ | |||
104 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; | 104 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; |
105 | ranges = <0xfffff400 0xfffff400 0x600>; | 105 | ranges = <0xfffff400 0xfffff400 0x600>; |
106 | 106 | ||
107 | atmel,mux-mask = < | ||
108 | /* A B */ | ||
109 | 0xffffffff 0xffc00c3b /* pioA */ | ||
110 | 0xffffffff 0x7fff3ccf /* pioB */ | ||
111 | 0xffffffff 0x007fffff /* pioC */ | ||
112 | >; | ||
113 | |||
114 | /* shared pinctrl settings */ | ||
115 | |||
107 | pioA: gpio@fffff400 { | 116 | pioA: gpio@fffff400 { |
108 | compatible = "atmel,at91rm9200-gpio"; | 117 | compatible = "atmel,at91rm9200-gpio"; |
109 | reg = <0xfffff400 0x200>; | 118 | reg = <0xfffff400 0x200>; |
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi index 5b619c9255bd..c8028fc9ec83 100644 --- a/arch/arm/boot/dts/at91sam9263.dtsi +++ b/arch/arm/boot/dts/at91sam9263.dtsi | |||
@@ -95,6 +95,17 @@ | |||
95 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; | 95 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; |
96 | ranges = <0xfffff200 0xfffff200 0xa00>; | 96 | ranges = <0xfffff200 0xfffff200 0xa00>; |
97 | 97 | ||
98 | atmel,mux-mask = < | ||
99 | /* A B */ | ||
100 | 0xfffffffb 0xffffe07f /* pioA */ | ||
101 | 0x0007ffff 0x39072fff /* pioB */ | ||
102 | 0xffffffff 0x3ffffff8 /* pioC */ | ||
103 | 0xfffffbff 0xffffffff /* pioD */ | ||
104 | 0xffe00fff 0xfbfcff00 /* pioE */ | ||
105 | >; | ||
106 | |||
107 | /* shared pinctrl settings */ | ||
108 | |||
98 | pioA: gpio@fffff200 { | 109 | pioA: gpio@fffff200 { |
99 | compatible = "atmel,at91rm9200-gpio"; | 110 | compatible = "atmel,at91rm9200-gpio"; |
100 | reg = <0xfffff200 0x200>; | 111 | reg = <0xfffff200 0x200>; |
@@ -143,6 +154,7 @@ | |||
143 | gpio-controller; | 154 | gpio-controller; |
144 | interrupt-controller; | 155 | interrupt-controller; |
145 | #interrupt-cells = <2>; | 156 | #interrupt-cells = <2>; |
157 | }; | ||
146 | }; | 158 | }; |
147 | 159 | ||
148 | dbgu: serial@ffffee00 { | 160 | dbgu: serial@ffffee00 { |
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi index f2b0f93c0499..5222625b6ce0 100644 --- a/arch/arm/boot/dts/at91sam9g45.dtsi +++ b/arch/arm/boot/dts/at91sam9g45.dtsi | |||
@@ -114,6 +114,17 @@ | |||
114 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; | 114 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; |
115 | ranges = <0xfffff200 0xfffff200 0xa00>; | 115 | ranges = <0xfffff200 0xfffff200 0xa00>; |
116 | 116 | ||
117 | atmel,mux-mask = < | ||
118 | /* A B */ | ||
119 | 0xffffffff 0xffc003ff /* pioA */ | ||
120 | 0xffffffff 0x800f8f00 /* pioB */ | ||
121 | 0xffffffff 0x00000e00 /* pioC */ | ||
122 | 0xffffffff 0xff0c1381 /* pioD */ | ||
123 | 0xffffffff 0x81ffff81 /* pioE */ | ||
124 | >; | ||
125 | |||
126 | /* shared pinctrl settings */ | ||
127 | |||
117 | pioA: gpio@fffff200 { | 128 | pioA: gpio@fffff200 { |
118 | compatible = "atmel,at91rm9200-gpio"; | 129 | compatible = "atmel,at91rm9200-gpio"; |
119 | reg = <0xfffff200 0x200>; | 130 | reg = <0xfffff200 0x200>; |
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi index b061c0626025..8b5276499aaf 100644 --- a/arch/arm/boot/dts/at91sam9n12.dtsi +++ b/arch/arm/boot/dts/at91sam9n12.dtsi | |||
@@ -105,9 +105,19 @@ | |||
105 | pinctrl@fffff400 { | 105 | pinctrl@fffff400 { |
106 | #address-cells = <1>; | 106 | #address-cells = <1>; |
107 | #size-cells = <1>; | 107 | #size-cells = <1>; |
108 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; | 108 | compatible = "atmel,at91sam9x5-pinctrl", "atmel,at91rm9200-pinctrl", "simple-bus"; |
109 | ranges = <0xfffff400 0xfffff400 0x800>; | 109 | ranges = <0xfffff400 0xfffff400 0x800>; |
110 | 110 | ||
111 | atmel,mux-mask = < | ||
112 | /* A B C */ | ||
113 | 0xffffffff 0xffe07983 0x00000000 /* pioA */ | ||
114 | 0x00040000 0x00047e0f 0x00000000 /* pioB */ | ||
115 | 0xfdffffff 0x07c00000 0xb83fffff /* pioC */ | ||
116 | 0x003fffff 0x003f8000 0x00000000 /* pioD */ | ||
117 | >; | ||
118 | |||
119 | /* shared pinctrl settings */ | ||
120 | |||
111 | pioA: gpio@fffff400 { | 121 | pioA: gpio@fffff400 { |
112 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 122 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
113 | reg = <0xfffff400 0x200>; | 123 | reg = <0xfffff400 0x200>; |
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index 065698ac4deb..34d4d5c8c58d 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi | |||
@@ -114,9 +114,19 @@ | |||
114 | pinctrl@fffff200 { | 114 | pinctrl@fffff200 { |
115 | #address-cells = <1>; | 115 | #address-cells = <1>; |
116 | #size-cells = <1>; | 116 | #size-cells = <1>; |
117 | compatible = "atmel,at91rm9200-pinctrl", "simple-bus"; | 117 | compatible = "atmel,at91sam9x5-pinctrl", "atmel,at91rm9200-pinctrl", "simple-bus"; |
118 | ranges = <0xfffff400 0xfffff400 0x800>; | 118 | ranges = <0xfffff400 0xfffff400 0x800>; |
119 | 119 | ||
120 | atmel,mux-mask = < | ||
121 | /* A B C */ | ||
122 | 0xffffffff 0xffe0399f 0xc000001c /* pioA */ | ||
123 | 0xffffffff 0xffc003ff 0xffc003ff /* pioB */ | ||
124 | 0xffffffff 0xffc003ff 0xffc003ff /* pioC */ | ||
125 | 0xffffffff 0xffc003ff 0xffc003ff /* pioD */ | ||
126 | >; | ||
127 | |||
128 | /* shared pinctrl settings */ | ||
129 | |||
120 | pioA: gpio@fffff400 { | 130 | pioA: gpio@fffff400 { |
121 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; | 131 | compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio"; |
122 | reg = <0xfffff400 0x200>; | 132 | reg = <0xfffff400 0x200>; |
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig index 67bc571ed0c3..b175577d7abb 100644 --- a/arch/arm/configs/at91_dt_defconfig +++ b/arch/arm/configs/at91_dt_defconfig | |||
@@ -111,6 +111,7 @@ CONFIG_I2C=y | |||
111 | CONFIG_I2C_GPIO=y | 111 | CONFIG_I2C_GPIO=y |
112 | CONFIG_SPI=y | 112 | CONFIG_SPI=y |
113 | CONFIG_SPI_ATMEL=y | 113 | CONFIG_SPI_ATMEL=y |
114 | CONFIG_PINCTRL_AT91=y | ||
114 | # CONFIG_HWMON is not set | 115 | # CONFIG_HWMON is not set |
115 | CONFIG_WATCHDOG=y | 116 | CONFIG_WATCHDOG=y |
116 | CONFIG_AT91SAM9X_WATCHDOG=y | 117 | CONFIG_AT91SAM9X_WATCHDOG=y |
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 1dc40620ccfa..46d30831c9a8 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -235,6 +235,9 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
235 | CLKDEV_CON_ID("pioA", &pioA_clk), | 235 | CLKDEV_CON_ID("pioA", &pioA_clk), |
236 | CLKDEV_CON_ID("pioB", &pioB_clk), | 236 | CLKDEV_CON_ID("pioB", &pioB_clk), |
237 | CLKDEV_CON_ID("pioC", &pioC_clk), | 237 | CLKDEV_CON_ID("pioC", &pioC_clk), |
238 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioA_clk), | ||
239 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioB_clk), | ||
240 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioC_clk), | ||
238 | }; | 241 | }; |
239 | 242 | ||
240 | static struct clk_lookup usart_clocks_lookups[] = { | 243 | static struct clk_lookup usart_clocks_lookups[] = { |
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 03cac586e36f..f8ea00136234 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -212,6 +212,11 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
212 | CLKDEV_CON_DEV_ID("spi_clk", "fffa4000.spi", &spi0_clk), | 212 | CLKDEV_CON_DEV_ID("spi_clk", "fffa4000.spi", &spi0_clk), |
213 | CLKDEV_CON_DEV_ID("spi_clk", "fffa8000.spi", &spi1_clk), | 213 | CLKDEV_CON_DEV_ID("spi_clk", "fffa8000.spi", &spi1_clk), |
214 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi_clk), | 214 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi_clk), |
215 | CLKDEV_CON_DEV_ID(NULL, "fffff200.gpio", &pioA_clk), | ||
216 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioB_clk), | ||
217 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioCDE_clk), | ||
218 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCDE_clk), | ||
219 | CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioCDE_clk), | ||
215 | }; | 220 | }; |
216 | 221 | ||
217 | static struct clk_lookup usart_clocks_lookups[] = { | 222 | static struct clk_lookup usart_clocks_lookups[] = { |
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 32504b9eed9d..e6dd371d9f56 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -260,6 +260,12 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
260 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), | 260 | CLKDEV_CON_DEV_ID(NULL, "fff88000.i2c", &twi1_clk), |
261 | /* fake hclk clock */ | 261 | /* fake hclk clock */ |
262 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), | 262 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), |
263 | CLKDEV_CON_DEV_ID(NULL, "fffff200.gpio", &pioA_clk), | ||
264 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioB_clk), | ||
265 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioC_clk), | ||
266 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioDE_clk), | ||
267 | CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioDE_clk), | ||
268 | |||
263 | CLKDEV_CON_ID("pioA", &pioA_clk), | 269 | CLKDEV_CON_ID("pioA", &pioA_clk), |
264 | CLKDEV_CON_ID("pioB", &pioB_clk), | 270 | CLKDEV_CON_ID("pioB", &pioB_clk), |
265 | CLKDEV_CON_ID("pioC", &pioC_clk), | 271 | CLKDEV_CON_ID("pioC", &pioC_clk), |
diff --git a/arch/arm/mach-at91/at91sam9n12.c b/arch/arm/mach-at91/at91sam9n12.c index 3905465f3abf..bf8a083a02ab 100644 --- a/arch/arm/mach-at91/at91sam9n12.c +++ b/arch/arm/mach-at91/at91sam9n12.c | |||
@@ -171,10 +171,10 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
171 | CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma_clk), | 171 | CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma_clk), |
172 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), | 172 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), |
173 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), | 173 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), |
174 | CLKDEV_CON_ID("pioA", &pioAB_clk), | 174 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), |
175 | CLKDEV_CON_ID("pioB", &pioAB_clk), | 175 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), |
176 | CLKDEV_CON_ID("pioC", &pioCD_clk), | 176 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), |
177 | CLKDEV_CON_ID("pioD", &pioCD_clk), | 177 | CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioCD_clk), |
178 | /* additional fake clock for macb_hclk */ | 178 | /* additional fake clock for macb_hclk */ |
179 | CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &uhp_clk), | 179 | CLKDEV_CON_DEV_ID("hclk", "500000.ohci", &uhp_clk), |
180 | CLKDEV_CON_DEV_ID("ohci_clk", "500000.ohci", &uhp_clk), | 180 | CLKDEV_CON_DEV_ID("ohci_clk", "500000.ohci", &uhp_clk), |
@@ -223,9 +223,6 @@ static void __init at91sam9n12_map_io(void) | |||
223 | void __init at91sam9n12_initialize(void) | 223 | void __init at91sam9n12_initialize(void) |
224 | { | 224 | { |
225 | at91_extern_irq = (1 << AT91SAM9N12_ID_IRQ0); | 225 | at91_extern_irq = (1 << AT91SAM9N12_ID_IRQ0); |
226 | |||
227 | /* Register GPIO subsystem (using DT) */ | ||
228 | at91_gpio_init(NULL, 0); | ||
229 | } | 226 | } |
230 | 227 | ||
231 | AT91_SOC_START(sam9n12) | 228 | AT91_SOC_START(sam9n12) |
diff --git a/arch/arm/mach-at91/at91sam9x5.c b/arch/arm/mach-at91/at91sam9x5.c index f31d3a065d56..56d13a4950a7 100644 --- a/arch/arm/mach-at91/at91sam9x5.c +++ b/arch/arm/mach-at91/at91sam9x5.c | |||
@@ -234,10 +234,10 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
234 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), | 234 | CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk), |
235 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), | 235 | CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk), |
236 | CLKDEV_CON_DEV_ID(NULL, "f8018000.i2c", &twi2_clk), | 236 | CLKDEV_CON_DEV_ID(NULL, "f8018000.i2c", &twi2_clk), |
237 | CLKDEV_CON_ID("pioA", &pioAB_clk), | 237 | CLKDEV_CON_DEV_ID(NULL, "fffff400.gpio", &pioAB_clk), |
238 | CLKDEV_CON_ID("pioB", &pioAB_clk), | 238 | CLKDEV_CON_DEV_ID(NULL, "fffff600.gpio", &pioAB_clk), |
239 | CLKDEV_CON_ID("pioC", &pioCD_clk), | 239 | CLKDEV_CON_DEV_ID(NULL, "fffff800.gpio", &pioCD_clk), |
240 | CLKDEV_CON_ID("pioD", &pioCD_clk), | 240 | CLKDEV_CON_DEV_ID(NULL, "fffffa00.gpio", &pioCD_clk), |
241 | /* additional fake clock for macb_hclk */ | 241 | /* additional fake clock for macb_hclk */ |
242 | CLKDEV_CON_DEV_ID("hclk", "f802c000.ethernet", &macb0_clk), | 242 | CLKDEV_CON_DEV_ID("hclk", "f802c000.ethernet", &macb0_clk), |
243 | CLKDEV_CON_DEV_ID("hclk", "f8030000.ethernet", &macb1_clk), | 243 | CLKDEV_CON_DEV_ID("hclk", "f8030000.ethernet", &macb1_clk), |
@@ -313,12 +313,6 @@ static void __init at91sam9x5_map_io(void) | |||
313 | at91_init_sram(0, AT91SAM9X5_SRAM_BASE, AT91SAM9X5_SRAM_SIZE); | 313 | at91_init_sram(0, AT91SAM9X5_SRAM_BASE, AT91SAM9X5_SRAM_SIZE); |
314 | } | 314 | } |
315 | 315 | ||
316 | void __init at91sam9x5_initialize(void) | ||
317 | { | ||
318 | /* Register GPIO subsystem (using DT) */ | ||
319 | at91_gpio_init(NULL, 0); | ||
320 | } | ||
321 | |||
322 | /* -------------------------------------------------------------------- | 316 | /* -------------------------------------------------------------------- |
323 | * Interrupt initialization | 317 | * Interrupt initialization |
324 | * -------------------------------------------------------------------- */ | 318 | * -------------------------------------------------------------------- */ |
@@ -326,5 +320,4 @@ void __init at91sam9x5_initialize(void) | |||
326 | AT91_SOC_START(sam9x5) | 320 | AT91_SOC_START(sam9x5) |
327 | .map_io = at91sam9x5_map_io, | 321 | .map_io = at91sam9x5_map_io, |
328 | .register_clocks = at91sam9x5_register_clocks, | 322 | .register_clocks = at91sam9x5_register_clocks, |
329 | .init = at91sam9x5_initialize, | ||
330 | AT91_SOC_END | 323 | AT91_SOC_END |
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index e228d7377b61..523daa92be10 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c | |||
@@ -449,7 +449,8 @@ void __init at91_dt_initialize(void) | |||
449 | /* Register the processor-specific clocks */ | 449 | /* Register the processor-specific clocks */ |
450 | at91_boot_soc.register_clocks(); | 450 | at91_boot_soc.register_clocks(); |
451 | 451 | ||
452 | at91_boot_soc.init(); | 452 | if (at91_boot_soc.init) |
453 | at91_boot_soc.init(); | ||
453 | } | 454 | } |
454 | #endif | 455 | #endif |
455 | 456 | ||