diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 00:02:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 00:02:35 -0400 |
commit | 367069f16e32e188d4687fe2c3e30f2ca583836f (patch) | |
tree | 977f87038b75e53af9d132cba2f7a2aecb2fa005 /arch/arm/mach-at91 | |
parent | 81a3c10ce8a7fd5bf9a06bfc38bd417512911831 (diff) | |
parent | c72dbae971400e466ad9ff16c920cd6d9d8c55a1 (diff) |
Merge branch 'next/dt' of git://git.linaro.org/people/arnd/arm-soc
* 'next/dt' of git://git.linaro.org/people/arnd/arm-soc:
ARM: gic: use module.h instead of export.h
ARM: gic: fix irq_alloc_descs handling for sparse irq
ARM: gic: add OF based initialization
ARM: gic: add irq_domain support
irq: support domains with non-zero hwirq base
of/irq: introduce of_irq_init
ARM: at91: add at91sam9g20 and Calao USB A9G20 DT support
ARM: at91: dt: at91sam9g45 family and board device tree files
arm/mx5: add device tree support for imx51 babbage
arm/mx5: add device tree support for imx53 boards
ARM: msm: Add devicetree support for msm8660-surf
msm_serial: Add devicetree support
msm_serial: Use relative resources for iomem
Fix up conflicts in arch/arm/mach-at91/{at91sam9260.c,at91sam9g45.c}
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r-- | arch/arm/mach-at91/Kconfig | 11 | ||||
-rw-r--r-- | arch/arm/mach-at91/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/mach-at91/Makefile.boot | 2 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9g45.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-dt.c | 123 |
6 files changed, 153 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index 04a85c546abc..a6b7991d7fe8 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
@@ -455,6 +455,17 @@ endif | |||
455 | 455 | ||
456 | # ---------------------------------------------------------- | 456 | # ---------------------------------------------------------- |
457 | 457 | ||
458 | comment "Generic Board Type" | ||
459 | |||
460 | config MACH_AT91SAM_DT | ||
461 | bool "Atmel AT91SAM Evaluation Kits with device-tree support" | ||
462 | select USE_OF | ||
463 | help | ||
464 | Select this if you want to experiment device-tree with | ||
465 | an Atmel Evaluation Kit. | ||
466 | |||
467 | # ---------------------------------------------------------- | ||
468 | |||
458 | comment "AT91 Board Options" | 469 | comment "AT91 Board Options" |
459 | 470 | ||
460 | config MTD_AT91_DATAFLASH_CARD | 471 | config MTD_AT91_DATAFLASH_CARD |
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index d992dd5d9321..242174f9f355 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
@@ -76,6 +76,9 @@ obj-$(CONFIG_MACH_SNAPPER_9260) += board-snapper9260.o | |||
76 | # AT91SAM9G45 board-specific support | 76 | # AT91SAM9G45 board-specific support |
77 | obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o | 77 | obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o |
78 | 78 | ||
79 | # AT91SAM board with device-tree | ||
80 | obj-$(CONFIG_MACH_AT91SAM_DT) += board-dt.o | ||
81 | |||
79 | # AT91CAP9 board-specific support | 82 | # AT91CAP9 board-specific support |
80 | obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o | 83 | obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o |
81 | 84 | ||
diff --git a/arch/arm/mach-at91/Makefile.boot b/arch/arm/mach-at91/Makefile.boot index 9ab5a3e5f4f1..8ddafadfdc7d 100644 --- a/arch/arm/mach-at91/Makefile.boot +++ b/arch/arm/mach-at91/Makefile.boot | |||
@@ -16,3 +16,5 @@ else | |||
16 | params_phys-y := 0x20000100 | 16 | params_phys-y := 0x20000100 |
17 | initrd_phys-y := 0x20410000 | 17 | initrd_phys-y := 0x20410000 |
18 | endif | 18 | endif |
19 | |||
20 | dtb-$(CONFIG_MACH_AT91SAM_DT) += at91sam9m10g45ek.dtb usb_a9g20.dtb | ||
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index a9be75825e34..b84a9f642f59 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -199,6 +199,14 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
199 | CLKDEV_CON_DEV_ID("t4_clk", "atmel_tcb.1", &tc4_clk), | 199 | CLKDEV_CON_DEV_ID("t4_clk", "atmel_tcb.1", &tc4_clk), |
200 | CLKDEV_CON_DEV_ID("t5_clk", "atmel_tcb.1", &tc5_clk), | 200 | CLKDEV_CON_DEV_ID("t5_clk", "atmel_tcb.1", &tc5_clk), |
201 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc_clk), | 201 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc_clk), |
202 | /* more usart lookup table for DT entries */ | ||
203 | CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck), | ||
204 | CLKDEV_CON_DEV_ID("usart", "fffb0000.serial", &usart0_clk), | ||
205 | CLKDEV_CON_DEV_ID("usart", "fffb4000.serial", &usart1_clk), | ||
206 | CLKDEV_CON_DEV_ID("usart", "fffb8000.serial", &usart2_clk), | ||
207 | CLKDEV_CON_DEV_ID("usart", "fffd0000.serial", &usart3_clk), | ||
208 | CLKDEV_CON_DEV_ID("usart", "fffd4000.serial", &usart4_clk), | ||
209 | CLKDEV_CON_DEV_ID("usart", "fffd8000.serial", &usart5_clk), | ||
202 | /* fake hclk clock */ | 210 | /* fake hclk clock */ |
203 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), | 211 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk), |
204 | }; | 212 | }; |
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index 29def9095ab1..318b0407ea04 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -223,6 +223,12 @@ static struct clk_lookup periph_clocks_lookups[] = { | |||
223 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), | 223 | CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk), |
224 | CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), | 224 | CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk), |
225 | CLKDEV_CON_DEV_ID(NULL, "atmel-trng", &trng_clk), | 225 | CLKDEV_CON_DEV_ID(NULL, "atmel-trng", &trng_clk), |
226 | /* more usart lookup table for DT entries */ | ||
227 | CLKDEV_CON_DEV_ID("usart", "ffffee00.serial", &mck), | ||
228 | CLKDEV_CON_DEV_ID("usart", "fff8c000.serial", &usart0_clk), | ||
229 | CLKDEV_CON_DEV_ID("usart", "fff90000.serial", &usart1_clk), | ||
230 | CLKDEV_CON_DEV_ID("usart", "fff94000.serial", &usart2_clk), | ||
231 | CLKDEV_CON_DEV_ID("usart", "fff98000.serial", &usart3_clk), | ||
226 | /* fake hclk clock */ | 232 | /* fake hclk clock */ |
227 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), | 233 | CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &uhphs_clk), |
228 | }; | 234 | }; |
diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c new file mode 100644 index 000000000000..0b7d32778210 --- /dev/null +++ b/arch/arm/mach-at91/board-dt.c | |||
@@ -0,0 +1,123 @@ | |||
1 | /* | ||
2 | * Setup code for AT91SAM Evaluation Kits with Device Tree support | ||
3 | * | ||
4 | * Covers: * AT91SAM9G45-EKES board | ||
5 | * * AT91SAM9M10-EKES board | ||
6 | * * AT91SAM9M10G45-EK board | ||
7 | * | ||
8 | * Copyright (C) 2011 Atmel, | ||
9 | * 2011 Nicolas Ferre <nicolas.ferre@atmel.com> | ||
10 | * | ||
11 | * Licensed under GPLv2 or later. | ||
12 | */ | ||
13 | |||
14 | #include <linux/types.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/module.h> | ||
17 | #include <linux/gpio.h> | ||
18 | #include <linux/irqdomain.h> | ||
19 | #include <linux/of_irq.h> | ||
20 | #include <linux/of_platform.h> | ||
21 | |||
22 | #include <mach/hardware.h> | ||
23 | #include <mach/board.h> | ||
24 | #include <mach/system_rev.h> | ||
25 | #include <mach/at91sam9_smc.h> | ||
26 | |||
27 | #include <asm/setup.h> | ||
28 | #include <asm/irq.h> | ||
29 | #include <asm/mach/arch.h> | ||
30 | #include <asm/mach/map.h> | ||
31 | #include <asm/mach/irq.h> | ||
32 | |||
33 | #include "sam9_smc.h" | ||
34 | #include "generic.h" | ||
35 | |||
36 | |||
37 | static void __init ek_init_early(void) | ||
38 | { | ||
39 | /* Initialize processor: 12.000 MHz crystal */ | ||
40 | at91_initialize(12000000); | ||
41 | |||
42 | /* DGBU on ttyS0. (Rx & Tx only) */ | ||
43 | at91_register_uart(0, 0, 0); | ||
44 | |||
45 | /* set serial console to ttyS0 (ie, DBGU) */ | ||
46 | at91_set_serial_console(0); | ||
47 | } | ||
48 | |||
49 | /* det_pin is not connected */ | ||
50 | static struct atmel_nand_data __initdata ek_nand_data = { | ||
51 | .ale = 21, | ||
52 | .cle = 22, | ||
53 | .rdy_pin = AT91_PIN_PC8, | ||
54 | .enable_pin = AT91_PIN_PC14, | ||
55 | }; | ||
56 | |||
57 | static struct sam9_smc_config __initdata ek_nand_smc_config = { | ||
58 | .ncs_read_setup = 0, | ||
59 | .nrd_setup = 2, | ||
60 | .ncs_write_setup = 0, | ||
61 | .nwe_setup = 2, | ||
62 | |||
63 | .ncs_read_pulse = 4, | ||
64 | .nrd_pulse = 4, | ||
65 | .ncs_write_pulse = 4, | ||
66 | .nwe_pulse = 4, | ||
67 | |||
68 | .read_cycle = 7, | ||
69 | .write_cycle = 7, | ||
70 | |||
71 | .mode = AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE, | ||
72 | .tdf_cycles = 3, | ||
73 | }; | ||
74 | |||
75 | static void __init ek_add_device_nand(void) | ||
76 | { | ||
77 | ek_nand_data.bus_width_16 = board_have_nand_16bit(); | ||
78 | /* setup bus-width (8 or 16) */ | ||
79 | if (ek_nand_data.bus_width_16) | ||
80 | ek_nand_smc_config.mode |= AT91_SMC_DBW_16; | ||
81 | else | ||
82 | ek_nand_smc_config.mode |= AT91_SMC_DBW_8; | ||
83 | |||
84 | /* configure chip-select 3 (NAND) */ | ||
85 | sam9_smc_configure(3, &ek_nand_smc_config); | ||
86 | |||
87 | at91_add_device_nand(&ek_nand_data); | ||
88 | } | ||
89 | |||
90 | static const struct of_device_id aic_of_match[] __initconst = { | ||
91 | { .compatible = "atmel,at91rm9200-aic", }, | ||
92 | {}, | ||
93 | }; | ||
94 | |||
95 | static void __init at91_dt_init_irq(void) | ||
96 | { | ||
97 | irq_domain_generate_simple(aic_of_match, 0xfffff000, 0); | ||
98 | at91_init_irq_default(); | ||
99 | } | ||
100 | |||
101 | static void __init at91_dt_device_init(void) | ||
102 | { | ||
103 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||
104 | |||
105 | /* NAND */ | ||
106 | ek_add_device_nand(); | ||
107 | } | ||
108 | |||
109 | static const char *at91_dt_board_compat[] __initdata = { | ||
110 | "atmel,at91sam9m10g45ek", | ||
111 | "calao,usb-a9g20", | ||
112 | NULL | ||
113 | }; | ||
114 | |||
115 | DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)") | ||
116 | /* Maintainer: Atmel */ | ||
117 | .timer = &at91sam926x_timer, | ||
118 | .map_io = at91_map_io, | ||
119 | .init_early = ek_init_early, | ||
120 | .init_irq = at91_dt_init_irq, | ||
121 | .init_machine = at91_dt_device_init, | ||
122 | .dt_compat = at91_dt_board_compat, | ||
123 | MACHINE_END | ||