diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-06 16:20:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-06 16:20:10 -0400 |
commit | c6799ade4ae04b53a5f677e5289116155ff01574 (patch) | |
tree | 3601b5e2387e39d62c207e4268c6cc5c68f2a364 /arch/arm/mach-at91 | |
parent | b7405e16435f710edfae6ba32bef4ca20d3de145 (diff) | |
parent | 5cd47155155a32e5b944ac9fc3f3dc578e429aa0 (diff) |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (82 commits)
[ARM] Add comments marking in-use ptrace numbers
[ARM] Move syscall saving out of the way of utrace
[ARM] 4360/1: S3C24XX: regs-udc.h remove unused macro
[ARM] 4358/1: S3C24XX: mach-qt2410.c: remove linux/mmc/protocol.h header
[ARM] mm 10: allow memory type to be specified with ioremap
[ARM] mm 9: add additional device memory types
[ARM] mm 8: define mem_types table L1 bit 4 to be for ARMv6
[ARM] iop: add missing parens in macro
[ARM] mm 7: remove duplicated __ioremap() prototypes
ARM: OMAP: fix OMAP1 mpuio suspend/resume oops
ARM: OMAP: MPUIO wake updates
ARM: OMAP: speed up gpio irq handling
ARM: OMAP: plat-omap changes for 2430 SDP
ARM: OMAP: gpio object shrinkage, cleanup
ARM: OMAP: /sys/kernel/debug/omap_gpio
ARM: OMAP: Implement workaround for GPIO wakeup bug in OMAP2420 silicon
ARM: OMAP: Enable 24xx GPIO autoidling
[ARM] 4318/2: DSM-G600 Board Support
[ARM] 4227/1: minor head.S fixups
[ARM] 4328/1: Move i.MX UART regs to driver
...
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r-- | arch/arm/mach-at91/Kconfig | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91rm9200.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9260.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9261.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9261_devices.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263.c | 48 | ||||
-rw-r--r-- | arch/arm/mach-at91/at91sam9263_devices.c | 124 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-picotux200.c | 166 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-sam9260ek.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-sam9261ek.c | 52 | ||||
-rw-r--r-- | arch/arm/mach-at91/board-sam9263ek.c | 70 |
12 files changed, 513 insertions, 20 deletions
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig index bf0d96272e3a..e238ad8cfd8f 100644 --- a/arch/arm/mach-at91/Kconfig +++ b/arch/arm/mach-at91/Kconfig | |||
@@ -81,6 +81,13 @@ config MACH_KB9200 | |||
81 | Select this if you are using KwikByte's KB920x board. | 81 | Select this if you are using KwikByte's KB920x board. |
82 | <http://kwikbyte.com/KB9202_description_new.htm> | 82 | <http://kwikbyte.com/KB9202_description_new.htm> |
83 | 83 | ||
84 | config MACH_PICOTUX2XX | ||
85 | bool "picotux 200" | ||
86 | depends on ARCH_AT91RM9200 | ||
87 | help | ||
88 | Select this if you are using a picotux 200. | ||
89 | <http://www.picotux.com/> | ||
90 | |||
84 | config MACH_KAFA | 91 | config MACH_KAFA |
85 | bool "Sperry-Sun KAFA board" | 92 | bool "Sperry-Sun KAFA board" |
86 | depends on ARCH_AT91RM9200 | 93 | depends on ARCH_AT91RM9200 |
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile index 05de6cdc88f1..a412ae18a421 100644 --- a/arch/arm/mach-at91/Makefile +++ b/arch/arm/mach-at91/Makefile | |||
@@ -25,6 +25,7 @@ obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o | |||
25 | obj-$(CONFIG_MACH_KB9200) += board-kb9202.o | 25 | obj-$(CONFIG_MACH_KB9200) += board-kb9202.o |
26 | obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o | 26 | obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o |
27 | obj-$(CONFIG_MACH_KAFA) += board-kafa.o | 27 | obj-$(CONFIG_MACH_KAFA) += board-kafa.o |
28 | obj-$(CONFIG_MACH_PICOTUX2XX) += board-picotux200.o | ||
28 | 29 | ||
29 | # AT91SAM9260 board-specific support | 30 | # AT91SAM9260 board-specific support |
30 | obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o | 31 | obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o |
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index 2ddcdd69df7d..2cad2bf864be 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -117,6 +117,21 @@ static struct clk pioD_clk = { | |||
117 | .pmc_mask = 1 << AT91RM9200_ID_PIOD, | 117 | .pmc_mask = 1 << AT91RM9200_ID_PIOD, |
118 | .type = CLK_TYPE_PERIPHERAL, | 118 | .type = CLK_TYPE_PERIPHERAL, |
119 | }; | 119 | }; |
120 | static struct clk ssc0_clk = { | ||
121 | .name = "ssc0_clk", | ||
122 | .pmc_mask = 1 << AT91RM9200_ID_SSC0, | ||
123 | .type = CLK_TYPE_PERIPHERAL, | ||
124 | }; | ||
125 | static struct clk ssc1_clk = { | ||
126 | .name = "ssc1_clk", | ||
127 | .pmc_mask = 1 << AT91RM9200_ID_SSC1, | ||
128 | .type = CLK_TYPE_PERIPHERAL, | ||
129 | }; | ||
130 | static struct clk ssc2_clk = { | ||
131 | .name = "ssc2_clk", | ||
132 | .pmc_mask = 1 << AT91RM9200_ID_SSC2, | ||
133 | .type = CLK_TYPE_PERIPHERAL, | ||
134 | }; | ||
120 | static struct clk tc0_clk = { | 135 | static struct clk tc0_clk = { |
121 | .name = "tc0_clk", | 136 | .name = "tc0_clk", |
122 | .pmc_mask = 1 << AT91RM9200_ID_TC0, | 137 | .pmc_mask = 1 << AT91RM9200_ID_TC0, |
@@ -161,7 +176,9 @@ static struct clk *periph_clocks[] __initdata = { | |||
161 | &udc_clk, | 176 | &udc_clk, |
162 | &twi_clk, | 177 | &twi_clk, |
163 | &spi_clk, | 178 | &spi_clk, |
164 | // ssc 0 .. ssc2 | 179 | &ssc0_clk, |
180 | &ssc1_clk, | ||
181 | &ssc2_clk, | ||
165 | &tc0_clk, | 182 | &tc0_clk, |
166 | &tc1_clk, | 183 | &tc1_clk, |
167 | &tc2_clk, | 184 | &tc2_clk, |
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index 6ea41d8266cb..e47381e8aaba 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -119,6 +119,11 @@ static struct clk spi1_clk = { | |||
119 | .pmc_mask = 1 << AT91SAM9260_ID_SPI1, | 119 | .pmc_mask = 1 << AT91SAM9260_ID_SPI1, |
120 | .type = CLK_TYPE_PERIPHERAL, | 120 | .type = CLK_TYPE_PERIPHERAL, |
121 | }; | 121 | }; |
122 | static struct clk ssc_clk = { | ||
123 | .name = "ssc_clk", | ||
124 | .pmc_mask = 1 << AT91SAM9260_ID_SSC, | ||
125 | .type = CLK_TYPE_PERIPHERAL, | ||
126 | }; | ||
122 | static struct clk tc0_clk = { | 127 | static struct clk tc0_clk = { |
123 | .name = "tc0_clk", | 128 | .name = "tc0_clk", |
124 | .pmc_mask = 1 << AT91SAM9260_ID_TC0, | 129 | .pmc_mask = 1 << AT91SAM9260_ID_TC0, |
@@ -193,7 +198,7 @@ static struct clk *periph_clocks[] __initdata = { | |||
193 | &twi_clk, | 198 | &twi_clk, |
194 | &spi0_clk, | 199 | &spi0_clk, |
195 | &spi1_clk, | 200 | &spi1_clk, |
196 | // ssc | 201 | &ssc_clk, |
197 | &tc0_clk, | 202 | &tc0_clk, |
198 | &tc1_clk, | 203 | &tc1_clk, |
199 | &tc2_clk, | 204 | &tc2_clk, |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index 784d1e682d6d..dfe8c39c9fb9 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
@@ -97,6 +97,21 @@ static struct clk spi1_clk = { | |||
97 | .pmc_mask = 1 << AT91SAM9261_ID_SPI1, | 97 | .pmc_mask = 1 << AT91SAM9261_ID_SPI1, |
98 | .type = CLK_TYPE_PERIPHERAL, | 98 | .type = CLK_TYPE_PERIPHERAL, |
99 | }; | 99 | }; |
100 | static struct clk ssc0_clk = { | ||
101 | .name = "ssc0_clk", | ||
102 | .pmc_mask = 1 << AT91SAM9261_ID_SSC0, | ||
103 | .type = CLK_TYPE_PERIPHERAL, | ||
104 | }; | ||
105 | static struct clk ssc1_clk = { | ||
106 | .name = "ssc1_clk", | ||
107 | .pmc_mask = 1 << AT91SAM9261_ID_SSC1, | ||
108 | .type = CLK_TYPE_PERIPHERAL, | ||
109 | }; | ||
110 | static struct clk ssc2_clk = { | ||
111 | .name = "ssc2_clk", | ||
112 | .pmc_mask = 1 << AT91SAM9261_ID_SSC2, | ||
113 | .type = CLK_TYPE_PERIPHERAL, | ||
114 | }; | ||
100 | static struct clk tc0_clk = { | 115 | static struct clk tc0_clk = { |
101 | .name = "tc0_clk", | 116 | .name = "tc0_clk", |
102 | .pmc_mask = 1 << AT91SAM9261_ID_TC0, | 117 | .pmc_mask = 1 << AT91SAM9261_ID_TC0, |
@@ -135,7 +150,9 @@ static struct clk *periph_clocks[] __initdata = { | |||
135 | &twi_clk, | 150 | &twi_clk, |
136 | &spi0_clk, | 151 | &spi0_clk, |
137 | &spi1_clk, | 152 | &spi1_clk, |
138 | // ssc 0 .. ssc2 | 153 | &ssc0_clk, |
154 | &ssc1_clk, | ||
155 | &ssc2_clk, | ||
139 | &tc0_clk, | 156 | &tc0_clk, |
140 | &tc1_clk, | 157 | &tc1_clk, |
141 | &tc2_clk, | 158 | &tc2_clk, |
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c index e1504766fd64..8e781997716a 100644 --- a/arch/arm/mach-at91/at91sam9261_devices.c +++ b/arch/arm/mach-at91/at91sam9261_devices.c | |||
@@ -430,9 +430,9 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | |||
430 | * LCD Controller | 430 | * LCD Controller |
431 | * -------------------------------------------------------------------- */ | 431 | * -------------------------------------------------------------------- */ |
432 | 432 | ||
433 | #if defined(CONFIG_FB_AT91) || defined(CONFIG_FB_AT91_MODULE) | 433 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) |
434 | static u64 lcdc_dmamask = 0xffffffffUL; | 434 | static u64 lcdc_dmamask = 0xffffffffUL; |
435 | static struct at91fb_info lcdc_data; | 435 | static struct atmel_lcdfb_info lcdc_data; |
436 | 436 | ||
437 | static struct resource lcdc_resources[] = { | 437 | static struct resource lcdc_resources[] = { |
438 | [0] = { | 438 | [0] = { |
@@ -455,7 +455,7 @@ static struct resource lcdc_resources[] = { | |||
455 | }; | 455 | }; |
456 | 456 | ||
457 | static struct platform_device at91_lcdc_device = { | 457 | static struct platform_device at91_lcdc_device = { |
458 | .name = "at91-fb", | 458 | .name = "atmel_lcdfb", |
459 | .id = 0, | 459 | .id = 0, |
460 | .dev = { | 460 | .dev = { |
461 | .dma_mask = &lcdc_dmamask, | 461 | .dma_mask = &lcdc_dmamask, |
@@ -466,7 +466,7 @@ static struct platform_device at91_lcdc_device = { | |||
466 | .num_resources = ARRAY_SIZE(lcdc_resources), | 466 | .num_resources = ARRAY_SIZE(lcdc_resources), |
467 | }; | 467 | }; |
468 | 468 | ||
469 | void __init at91_add_device_lcdc(struct at91fb_info *data) | 469 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) |
470 | { | 470 | { |
471 | if (!data) { | 471 | if (!data) { |
472 | return; | 472 | return; |
@@ -499,7 +499,7 @@ void __init at91_add_device_lcdc(struct at91fb_info *data) | |||
499 | platform_device_register(&at91_lcdc_device); | 499 | platform_device_register(&at91_lcdc_device); |
500 | } | 500 | } |
501 | #else | 501 | #else |
502 | void __init at91_add_device_lcdc(struct at91fb_info *data) {} | 502 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} |
503 | #endif | 503 | #endif |
504 | 504 | ||
505 | 505 | ||
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 0e89a7fca3fa..00e27b177857 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -87,6 +87,11 @@ static struct clk mmc1_clk = { | |||
87 | .pmc_mask = 1 << AT91SAM9263_ID_MCI1, | 87 | .pmc_mask = 1 << AT91SAM9263_ID_MCI1, |
88 | .type = CLK_TYPE_PERIPHERAL, | 88 | .type = CLK_TYPE_PERIPHERAL, |
89 | }; | 89 | }; |
90 | static struct clk can_clk = { | ||
91 | .name = "can_clk", | ||
92 | .pmc_mask = 1 << AT91SAM9263_ID_CAN, | ||
93 | .type = CLK_TYPE_PERIPHERAL, | ||
94 | }; | ||
90 | static struct clk twi_clk = { | 95 | static struct clk twi_clk = { |
91 | .name = "twi_clk", | 96 | .name = "twi_clk", |
92 | .pmc_mask = 1 << AT91SAM9263_ID_TWI, | 97 | .pmc_mask = 1 << AT91SAM9263_ID_TWI, |
@@ -102,16 +107,46 @@ static struct clk spi1_clk = { | |||
102 | .pmc_mask = 1 << AT91SAM9263_ID_SPI1, | 107 | .pmc_mask = 1 << AT91SAM9263_ID_SPI1, |
103 | .type = CLK_TYPE_PERIPHERAL, | 108 | .type = CLK_TYPE_PERIPHERAL, |
104 | }; | 109 | }; |
110 | static struct clk ssc0_clk = { | ||
111 | .name = "ssc0_clk", | ||
112 | .pmc_mask = 1 << AT91SAM9263_ID_SSC0, | ||
113 | .type = CLK_TYPE_PERIPHERAL, | ||
114 | }; | ||
115 | static struct clk ssc1_clk = { | ||
116 | .name = "ssc1_clk", | ||
117 | .pmc_mask = 1 << AT91SAM9263_ID_SSC1, | ||
118 | .type = CLK_TYPE_PERIPHERAL, | ||
119 | }; | ||
120 | static struct clk ac97_clk = { | ||
121 | .name = "ac97_clk", | ||
122 | .pmc_mask = 1 << AT91SAM9263_ID_AC97C, | ||
123 | .type = CLK_TYPE_PERIPHERAL, | ||
124 | }; | ||
105 | static struct clk tcb_clk = { | 125 | static struct clk tcb_clk = { |
106 | .name = "tcb_clk", | 126 | .name = "tcb_clk", |
107 | .pmc_mask = 1 << AT91SAM9263_ID_TCB, | 127 | .pmc_mask = 1 << AT91SAM9263_ID_TCB, |
108 | .type = CLK_TYPE_PERIPHERAL, | 128 | .type = CLK_TYPE_PERIPHERAL, |
109 | }; | 129 | }; |
130 | static struct clk pwmc_clk = { | ||
131 | .name = "pwmc_clk", | ||
132 | .pmc_mask = 1 << AT91SAM9263_ID_PWMC, | ||
133 | .type = CLK_TYPE_PERIPHERAL, | ||
134 | }; | ||
110 | static struct clk macb_clk = { | 135 | static struct clk macb_clk = { |
111 | .name = "macb_clk", | 136 | .name = "macb_clk", |
112 | .pmc_mask = 1 << AT91SAM9263_ID_EMAC, | 137 | .pmc_mask = 1 << AT91SAM9263_ID_EMAC, |
113 | .type = CLK_TYPE_PERIPHERAL, | 138 | .type = CLK_TYPE_PERIPHERAL, |
114 | }; | 139 | }; |
140 | static struct clk dma_clk = { | ||
141 | .name = "dma_clk", | ||
142 | .pmc_mask = 1 << AT91SAM9263_ID_DMA, | ||
143 | .type = CLK_TYPE_PERIPHERAL, | ||
144 | }; | ||
145 | static struct clk twodge_clk = { | ||
146 | .name = "2dge_clk", | ||
147 | .pmc_mask = 1 << AT91SAM9263_ID_2DGE, | ||
148 | .type = CLK_TYPE_PERIPHERAL, | ||
149 | }; | ||
115 | static struct clk udc_clk = { | 150 | static struct clk udc_clk = { |
116 | .name = "udc_clk", | 151 | .name = "udc_clk", |
117 | .pmc_mask = 1 << AT91SAM9263_ID_UDP, | 152 | .pmc_mask = 1 << AT91SAM9263_ID_UDP, |
@@ -142,20 +177,21 @@ static struct clk *periph_clocks[] __initdata = { | |||
142 | &usart2_clk, | 177 | &usart2_clk, |
143 | &mmc0_clk, | 178 | &mmc0_clk, |
144 | &mmc1_clk, | 179 | &mmc1_clk, |
145 | // can | 180 | &can_clk, |
146 | &twi_clk, | 181 | &twi_clk, |
147 | &spi0_clk, | 182 | &spi0_clk, |
148 | &spi1_clk, | 183 | &spi1_clk, |
149 | // ssc0 .. ssc1 | 184 | &ssc0_clk, |
150 | // ac97 | 185 | &ssc1_clk, |
186 | &ac97_clk, | ||
151 | &tcb_clk, | 187 | &tcb_clk, |
152 | // pwmc | 188 | &pwmc_clk, |
153 | &macb_clk, | 189 | &macb_clk, |
154 | // 2dge | 190 | &twodge_clk, |
155 | &udc_clk, | 191 | &udc_clk, |
156 | &isi_clk, | 192 | &isi_clk, |
157 | &lcdc_clk, | 193 | &lcdc_clk, |
158 | // dma | 194 | &dma_clk, |
159 | &ohci_clk, | 195 | &ohci_clk, |
160 | // irq0 .. irq1 | 196 | // irq0 .. irq1 |
161 | }; | 197 | }; |
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c index b77121f27f34..2b2e18a67128 100644 --- a/arch/arm/mach-at91/at91sam9263_devices.c +++ b/arch/arm/mach-at91/at91sam9263_devices.c | |||
@@ -573,6 +573,130 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) | |||
573 | 573 | ||
574 | 574 | ||
575 | /* -------------------------------------------------------------------- | 575 | /* -------------------------------------------------------------------- |
576 | * AC97 | ||
577 | * -------------------------------------------------------------------- */ | ||
578 | |||
579 | #if defined(CONFIG_SND_AT91_AC97) || defined(CONFIG_SND_AT91_AC97_MODULE) | ||
580 | static u64 ac97_dmamask = 0xffffffffUL; | ||
581 | static struct atmel_ac97_data ac97_data; | ||
582 | |||
583 | static struct resource ac97_resources[] = { | ||
584 | [0] = { | ||
585 | .start = AT91SAM9263_BASE_AC97C, | ||
586 | .end = AT91SAM9263_BASE_AC97C + SZ_16K - 1, | ||
587 | .flags = IORESOURCE_MEM, | ||
588 | }, | ||
589 | [1] = { | ||
590 | .start = AT91SAM9263_ID_AC97C, | ||
591 | .end = AT91SAM9263_ID_AC97C, | ||
592 | .flags = IORESOURCE_IRQ, | ||
593 | }, | ||
594 | }; | ||
595 | |||
596 | static struct platform_device at91sam9263_ac97_device = { | ||
597 | .name = "ac97c", | ||
598 | .id = 1, | ||
599 | .dev = { | ||
600 | .dma_mask = &ac97_dmamask, | ||
601 | .coherent_dma_mask = 0xffffffff, | ||
602 | .platform_data = &ac97_data, | ||
603 | }, | ||
604 | .resource = ac97_resources, | ||
605 | .num_resources = ARRAY_SIZE(ac97_resources), | ||
606 | }; | ||
607 | |||
608 | void __init at91_add_device_ac97(struct atmel_ac97_data *data) | ||
609 | { | ||
610 | if (!data) | ||
611 | return; | ||
612 | |||
613 | at91_set_A_periph(AT91_PIN_PB0, 0); /* AC97FS */ | ||
614 | at91_set_A_periph(AT91_PIN_PB1, 0); /* AC97CK */ | ||
615 | at91_set_A_periph(AT91_PIN_PB2, 0); /* AC97TX */ | ||
616 | at91_set_A_periph(AT91_PIN_PB3, 0); /* AC97RX */ | ||
617 | |||
618 | /* reset */ | ||
619 | if (data->reset_pin) | ||
620 | at91_set_gpio_output(data->reset_pin, 0); | ||
621 | |||
622 | ac97_data = *ek_data; | ||
623 | platform_device_register(&at91sam9263_ac97_device); | ||
624 | } | ||
625 | #else | ||
626 | void __init at91_add_device_ac97(struct atmel_ac97_data *data) {} | ||
627 | #endif | ||
628 | |||
629 | |||
630 | /* -------------------------------------------------------------------- | ||
631 | * LCD Controller | ||
632 | * -------------------------------------------------------------------- */ | ||
633 | |||
634 | #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE) | ||
635 | static u64 lcdc_dmamask = 0xffffffffUL; | ||
636 | static struct atmel_lcdfb_info lcdc_data; | ||
637 | |||
638 | static struct resource lcdc_resources[] = { | ||
639 | [0] = { | ||
640 | .start = AT91SAM9263_LCDC_BASE, | ||
641 | .end = AT91SAM9263_LCDC_BASE + SZ_4K - 1, | ||
642 | .flags = IORESOURCE_MEM, | ||
643 | }, | ||
644 | [1] = { | ||
645 | .start = AT91SAM9263_ID_LCDC, | ||
646 | .end = AT91SAM9263_ID_LCDC, | ||
647 | .flags = IORESOURCE_IRQ, | ||
648 | }, | ||
649 | }; | ||
650 | |||
651 | static struct platform_device at91_lcdc_device = { | ||
652 | .name = "atmel_lcdfb", | ||
653 | .id = 0, | ||
654 | .dev = { | ||
655 | .dma_mask = &lcdc_dmamask, | ||
656 | .coherent_dma_mask = 0xffffffff, | ||
657 | .platform_data = &lcdc_data, | ||
658 | }, | ||
659 | .resource = lcdc_resources, | ||
660 | .num_resources = ARRAY_SIZE(lcdc_resources), | ||
661 | }; | ||
662 | |||
663 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) | ||
664 | { | ||
665 | if (!data) | ||
666 | return; | ||
667 | |||
668 | at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDHSYNC */ | ||
669 | at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDDOTCK */ | ||
670 | at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDDEN */ | ||
671 | at91_set_B_periph(AT91_PIN_PB9, 0); /* LCDCC */ | ||
672 | at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDD2 */ | ||
673 | at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDD3 */ | ||
674 | at91_set_A_periph(AT91_PIN_PC8, 0); /* LCDD4 */ | ||
675 | at91_set_A_periph(AT91_PIN_PC9, 0); /* LCDD5 */ | ||
676 | at91_set_A_periph(AT91_PIN_PC10, 0); /* LCDD6 */ | ||
677 | at91_set_A_periph(AT91_PIN_PC11, 0); /* LCDD7 */ | ||
678 | at91_set_A_periph(AT91_PIN_PC14, 0); /* LCDD10 */ | ||
679 | at91_set_A_periph(AT91_PIN_PC15, 0); /* LCDD11 */ | ||
680 | at91_set_A_periph(AT91_PIN_PC16, 0); /* LCDD12 */ | ||
681 | at91_set_B_periph(AT91_PIN_PC12, 0); /* LCDD13 */ | ||
682 | at91_set_A_periph(AT91_PIN_PC18, 0); /* LCDD14 */ | ||
683 | at91_set_A_periph(AT91_PIN_PC19, 0); /* LCDD15 */ | ||
684 | at91_set_A_periph(AT91_PIN_PC22, 0); /* LCDD18 */ | ||
685 | at91_set_A_periph(AT91_PIN_PC23, 0); /* LCDD19 */ | ||
686 | at91_set_A_periph(AT91_PIN_PC24, 0); /* LCDD20 */ | ||
687 | at91_set_B_periph(AT91_PIN_PC17, 0); /* LCDD21 */ | ||
688 | at91_set_A_periph(AT91_PIN_PC26, 0); /* LCDD22 */ | ||
689 | at91_set_A_periph(AT91_PIN_PC27, 0); /* LCDD23 */ | ||
690 | |||
691 | lcdc_data = *data; | ||
692 | platform_device_register(&at91_lcdc_device); | ||
693 | } | ||
694 | #else | ||
695 | void __init at91_add_device_lcdc(struct atmel_lcdfb_info *data) {} | ||
696 | #endif | ||
697 | |||
698 | |||
699 | /* -------------------------------------------------------------------- | ||
576 | * LEDs | 700 | * LEDs |
577 | * -------------------------------------------------------------------- */ | 701 | * -------------------------------------------------------------------- */ |
578 | 702 | ||
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c new file mode 100644 index 000000000000..49cfe7ab4a85 --- /dev/null +++ b/arch/arm/mach-at91/board-picotux200.c | |||
@@ -0,0 +1,166 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91/board-picotux200.c | ||
3 | * | ||
4 | * Copyright (C) 2005 SAN People | ||
5 | * Copyright (C) 2007 Kleinhenz Elektronik GmbH | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | #include <linux/types.h> | ||
23 | #include <linux/init.h> | ||
24 | #include <linux/mm.h> | ||
25 | #include <linux/module.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | #include <linux/spi/spi.h> | ||
28 | #include <linux/mtd/physmap.h> | ||
29 | |||
30 | #include <asm/hardware.h> | ||
31 | #include <asm/setup.h> | ||
32 | #include <asm/mach-types.h> | ||
33 | #include <asm/irq.h> | ||
34 | |||
35 | #include <asm/mach/arch.h> | ||
36 | #include <asm/mach/map.h> | ||
37 | #include <asm/mach/irq.h> | ||
38 | |||
39 | #include <asm/arch/board.h> | ||
40 | #include <asm/arch/gpio.h> | ||
41 | #include <asm/arch/at91rm9200_mc.h> | ||
42 | |||
43 | #include "generic.h" | ||
44 | |||
45 | |||
46 | /* | ||
47 | * Serial port configuration. | ||
48 | * 0 .. 3 = USART0 .. USART3 | ||
49 | * 4 = DBGU | ||
50 | */ | ||
51 | static struct at91_uart_config __initdata picotux200_uart_config = { | ||
52 | .console_tty = 0, /* ttyS0 */ | ||
53 | .nr_tty = 2, | ||
54 | .tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */ | ||
55 | }; | ||
56 | |||
57 | static void __init picotux200_map_io(void) | ||
58 | { | ||
59 | /* Initialize processor: 18.432 MHz crystal */ | ||
60 | at91rm9200_initialize(18432000, AT91RM9200_BGA); | ||
61 | |||
62 | /* Setup the serial ports and console */ | ||
63 | at91_init_serial(&picotux200_uart_config); | ||
64 | } | ||
65 | |||
66 | static void __init picotux200_init_irq(void) | ||
67 | { | ||
68 | at91rm9200_init_interrupts(NULL); | ||
69 | } | ||
70 | |||
71 | static struct at91_eth_data __initdata picotux200_eth_data = { | ||
72 | .phy_irq_pin = AT91_PIN_PC4, | ||
73 | .is_rmii = 1, | ||
74 | }; | ||
75 | |||
76 | static struct at91_usbh_data __initdata picotux200_usbh_data = { | ||
77 | .ports = 1, | ||
78 | }; | ||
79 | |||
80 | // static struct at91_udc_data __initdata picotux200_udc_data = { | ||
81 | // .vbus_pin = AT91_PIN_PD4, | ||
82 | // .pullup_pin = AT91_PIN_PD5, | ||
83 | // }; | ||
84 | |||
85 | static struct at91_mmc_data __initdata picotux200_mmc_data = { | ||
86 | .det_pin = AT91_PIN_PB27, | ||
87 | .slot_b = 0, | ||
88 | .wire4 = 1, | ||
89 | .wp_pin = AT91_PIN_PA17, | ||
90 | }; | ||
91 | |||
92 | // static struct spi_board_info picotux200_spi_devices[] = { | ||
93 | // { /* DataFlash chip */ | ||
94 | // .modalias = "mtd_dataflash", | ||
95 | // .chip_select = 0, | ||
96 | // .max_speed_hz = 15 * 1000 * 1000, | ||
97 | // }, | ||
98 | // #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD | ||
99 | // { /* DataFlash card */ | ||
100 | // .modalias = "mtd_dataflash", | ||
101 | // .chip_select = 3, | ||
102 | // .max_speed_hz = 15 * 1000 * 1000, | ||
103 | // }, | ||
104 | // #endif | ||
105 | // }; | ||
106 | |||
107 | #define PICOTUX200_FLASH_BASE AT91_CHIPSELECT_0 | ||
108 | #define PICOTUX200_FLASH_SIZE 0x400000 | ||
109 | |||
110 | static struct physmap_flash_data picotux200_flash_data = { | ||
111 | .width = 2, | ||
112 | }; | ||
113 | |||
114 | static struct resource picotux200_flash_resource = { | ||
115 | .start = PICOTUX200_FLASH_BASE, | ||
116 | .end = PICOTUX200_FLASH_BASE + PICOTUX200_FLASH_SIZE - 1, | ||
117 | .flags = IORESOURCE_MEM, | ||
118 | }; | ||
119 | |||
120 | static struct platform_device picotux200_flash = { | ||
121 | .name = "physmap-flash", | ||
122 | .id = 0, | ||
123 | .dev = { | ||
124 | .platform_data = &picotux200_flash_data, | ||
125 | }, | ||
126 | .resource = &picotux200_flash_resource, | ||
127 | .num_resources = 1, | ||
128 | }; | ||
129 | |||
130 | static void __init picotux200_board_init(void) | ||
131 | { | ||
132 | /* Serial */ | ||
133 | at91_add_device_serial(); | ||
134 | /* Ethernet */ | ||
135 | at91_add_device_eth(&picotux200_eth_data); | ||
136 | /* USB Host */ | ||
137 | at91_add_device_usbh(&picotux200_usbh_data); | ||
138 | /* USB Device */ | ||
139 | // at91_add_device_udc(&picotux200_udc_data); | ||
140 | // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ | ||
141 | /* I2C */ | ||
142 | at91_add_device_i2c(); | ||
143 | /* SPI */ | ||
144 | // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices)); | ||
145 | #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD | ||
146 | /* DataFlash card */ | ||
147 | at91_set_gpio_output(AT91_PIN_PB22, 0); | ||
148 | #else | ||
149 | /* MMC */ | ||
150 | at91_set_gpio_output(AT91_PIN_PB22, 1); /* this MMC card slot can optionally use SPI signaling (CS3). */ | ||
151 | at91_add_device_mmc(0, &picotux200_mmc_data); | ||
152 | #endif | ||
153 | /* NOR Flash */ | ||
154 | platform_device_register(&picotux200_flash); | ||
155 | } | ||
156 | |||
157 | MACHINE_START(PICOTUX2XX, "picotux 200") | ||
158 | /* Maintainer: Kleinhenz Elektronik GmbH */ | ||
159 | .phys_io = AT91_BASE_SYS, | ||
160 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
161 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
162 | .timer = &at91rm9200_timer, | ||
163 | .map_io = picotux200_map_io, | ||
164 | .init_irq = picotux200_init_irq, | ||
165 | .init_machine = picotux200_board_init, | ||
166 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c index 57fb4499d969..65fa532bb4ac 100644 --- a/arch/arm/mach-at91/board-sam9260ek.c +++ b/arch/arm/mach-at91/board-sam9260ek.c | |||
@@ -104,9 +104,9 @@ static struct spi_board_info ek_spi_devices[] = { | |||
104 | }, | 104 | }, |
105 | #endif | 105 | #endif |
106 | #endif | 106 | #endif |
107 | #if defined(CONFIG_SND_AT73C213) | 107 | #if defined(CONFIG_SND_AT73C213) || defined(CONFIG_SND_AT73C213_MODULE) |
108 | { /* AT73C213 DAC */ | 108 | { /* AT73C213 DAC */ |
109 | .modalias = "snd_at73c213", | 109 | .modalias = "at73c213", |
110 | .chip_select = 0, | 110 | .chip_select = 0, |
111 | .max_speed_hz = 10 * 1000 * 1000, | 111 | .max_speed_hz = 10 * 1000 * 1000, |
112 | .bus_num = 1, | 112 | .bus_num = 1, |
@@ -118,7 +118,7 @@ static struct spi_board_info ek_spi_devices[] = { | |||
118 | /* | 118 | /* |
119 | * MACB Ethernet device | 119 | * MACB Ethernet device |
120 | */ | 120 | */ |
121 | static struct __initdata at91_eth_data ek_macb_data = { | 121 | static struct at91_eth_data __initdata ek_macb_data = { |
122 | .phy_irq_pin = AT91_PIN_PA7, | 122 | .phy_irq_pin = AT91_PIN_PA7, |
123 | .is_rmii = 1, | 123 | .is_rmii = 1, |
124 | }; | 124 | }; |
@@ -140,7 +140,7 @@ static struct mtd_partition __initdata ek_nand_partition[] = { | |||
140 | }, | 140 | }, |
141 | }; | 141 | }; |
142 | 142 | ||
143 | static struct mtd_partition *nand_partitions(int size, int *num_partitions) | 143 | static struct mtd_partition * __init nand_partitions(int size, int *num_partitions) |
144 | { | 144 | { |
145 | *num_partitions = ARRAY_SIZE(ek_nand_partition); | 145 | *num_partitions = ARRAY_SIZE(ek_nand_partition); |
146 | return ek_nand_partition; | 146 | return ek_nand_partition; |
@@ -188,6 +188,8 @@ static void __init ek_board_init(void) | |||
188 | at91_add_device_eth(&ek_macb_data); | 188 | at91_add_device_eth(&ek_macb_data); |
189 | /* MMC */ | 189 | /* MMC */ |
190 | at91_add_device_mmc(0, &ek_mmc_data); | 190 | at91_add_device_mmc(0, &ek_mmc_data); |
191 | /* I2C */ | ||
192 | at91_add_device_i2c(); | ||
191 | } | 193 | } |
192 | 194 | ||
193 | MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") | 195 | MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") |
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index b7e772467cf6..bcf71536cc6d 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
27 | #include <linux/spi/spi.h> | 27 | #include <linux/spi/spi.h> |
28 | #include <linux/spi/ads7846.h> | ||
28 | #include <linux/dm9000.h> | 29 | #include <linux/dm9000.h> |
29 | 30 | ||
30 | #include <asm/hardware.h> | 31 | #include <asm/hardware.h> |
@@ -195,6 +196,41 @@ static struct at91_nand_data __initdata ek_nand_data = { | |||
195 | }; | 196 | }; |
196 | 197 | ||
197 | /* | 198 | /* |
199 | * ADS7846 Touchscreen | ||
200 | */ | ||
201 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
202 | |||
203 | static int ads7843_pendown_state(void) | ||
204 | { | ||
205 | return !at91_get_gpio_value(AT91_PIN_PC2); /* Touchscreen PENIRQ */ | ||
206 | } | ||
207 | |||
208 | static struct ads7846_platform_data ads_info = { | ||
209 | .model = 7843, | ||
210 | .x_min = 150, | ||
211 | .x_max = 3830, | ||
212 | .y_min = 190, | ||
213 | .y_max = 3830, | ||
214 | .vref_delay_usecs = 100, | ||
215 | .x_plate_ohms = 450, | ||
216 | .y_plate_ohms = 250, | ||
217 | .pressure_max = 15000, | ||
218 | .debounce_max = 1, | ||
219 | .debounce_rep = 0, | ||
220 | .debounce_tol = (~0), | ||
221 | .get_pendown_state = ads7843_pendown_state, | ||
222 | }; | ||
223 | |||
224 | static void __init ek_add_device_ts(void) | ||
225 | { | ||
226 | at91_set_B_periph(AT91_PIN_PC2, 1); /* External IRQ0, with pullup */ | ||
227 | at91_set_gpio_input(AT91_PIN_PA11, 1); /* Touchscreen BUSY signal */ | ||
228 | } | ||
229 | #else | ||
230 | static void __init ek_add_device_ts(void) {} | ||
231 | #endif | ||
232 | |||
233 | /* | ||
198 | * SPI devices | 234 | * SPI devices |
199 | */ | 235 | */ |
200 | static struct spi_board_info ek_spi_devices[] = { | 236 | static struct spi_board_info ek_spi_devices[] = { |
@@ -204,6 +240,16 @@ static struct spi_board_info ek_spi_devices[] = { | |||
204 | .max_speed_hz = 15 * 1000 * 1000, | 240 | .max_speed_hz = 15 * 1000 * 1000, |
205 | .bus_num = 0, | 241 | .bus_num = 0, |
206 | }, | 242 | }, |
243 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
244 | { | ||
245 | .modalias = "ads7846", | ||
246 | .chip_select = 2, | ||
247 | .max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */ | ||
248 | .bus_num = 0, | ||
249 | .platform_data = &ads_info, | ||
250 | .irq = AT91SAM9261_ID_IRQ0, | ||
251 | }, | ||
252 | #endif | ||
207 | #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD) | 253 | #if defined(CONFIG_MTD_AT91_DATAFLASH_CARD) |
208 | { /* DataFlash card - jumper (J12) configurable to CS3 or CS0 */ | 254 | { /* DataFlash card - jumper (J12) configurable to CS3 or CS0 */ |
209 | .modalias = "mtd_dataflash", | 255 | .modalias = "mtd_dataflash", |
@@ -211,9 +257,9 @@ static struct spi_board_info ek_spi_devices[] = { | |||
211 | .max_speed_hz = 15 * 1000 * 1000, | 257 | .max_speed_hz = 15 * 1000 * 1000, |
212 | .bus_num = 0, | 258 | .bus_num = 0, |
213 | }, | 259 | }, |
214 | #elif defined(CONFIG_SND_AT73C213) | 260 | #elif defined(CONFIG_SND_AT73C213) || defined(CONFIG_SND_AT73C213_MODULE) |
215 | { /* AT73C213 DAC */ | 261 | { /* AT73C213 DAC */ |
216 | .modalias = "snd_at73c213", | 262 | .modalias = "at73c213", |
217 | .chip_select = 3, | 263 | .chip_select = 3, |
218 | .max_speed_hz = 10 * 1000 * 1000, | 264 | .max_speed_hz = 10 * 1000 * 1000, |
219 | .bus_num = 0, | 265 | .bus_num = 0, |
@@ -241,6 +287,8 @@ static void __init ek_board_init(void) | |||
241 | #if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE) | 287 | #if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE) |
242 | /* SPI */ | 288 | /* SPI */ |
243 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); | 289 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); |
290 | /* Touchscreen */ | ||
291 | ek_add_device_ts(); | ||
244 | #else | 292 | #else |
245 | /* MMC */ | 293 | /* MMC */ |
246 | at91_add_device_mmc(0, &ek_mmc_data); | 294 | at91_add_device_mmc(0, &ek_mmc_data); |
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 8fdce11a880c..f57458559fb6 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
27 | #include <linux/spi/spi.h> | 27 | #include <linux/spi/spi.h> |
28 | #include <linux/spi/ads7846.h> | ||
28 | 29 | ||
29 | #include <asm/hardware.h> | 30 | #include <asm/hardware.h> |
30 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
@@ -86,6 +87,40 @@ static struct at91_udc_data __initdata ek_udc_data = { | |||
86 | 87 | ||
87 | 88 | ||
88 | /* | 89 | /* |
90 | * ADS7846 Touchscreen | ||
91 | */ | ||
92 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
93 | static int ads7843_pendown_state(void) | ||
94 | { | ||
95 | return !at91_get_gpio_value(AT91_PIN_PA15); /* Touchscreen PENIRQ */ | ||
96 | } | ||
97 | |||
98 | static struct ads7846_platform_data ads_info = { | ||
99 | .model = 7843, | ||
100 | .x_min = 150, | ||
101 | .x_max = 3830, | ||
102 | .y_min = 190, | ||
103 | .y_max = 3830, | ||
104 | .vref_delay_usecs = 100, | ||
105 | .x_plate_ohms = 450, | ||
106 | .y_plate_ohms = 250, | ||
107 | .pressure_max = 15000, | ||
108 | .debounce_max = 1, | ||
109 | .debounce_rep = 0, | ||
110 | .debounce_tol = (~0), | ||
111 | .get_pendown_state = ads7843_pendown_state, | ||
112 | }; | ||
113 | |||
114 | static void __init ek_add_device_ts(void) | ||
115 | { | ||
116 | at91_set_B_periph(AT91_PIN_PA15, 1); /* External IRQ1, with pullup */ | ||
117 | at91_set_gpio_input(AT91_PIN_PA31, 1); /* Touchscreen BUSY signal */ | ||
118 | } | ||
119 | #else | ||
120 | static void __init ek_add_device_ts(void) {} | ||
121 | #endif | ||
122 | |||
123 | /* | ||
89 | * SPI devices. | 124 | * SPI devices. |
90 | */ | 125 | */ |
91 | static struct spi_board_info ek_spi_devices[] = { | 126 | static struct spi_board_info ek_spi_devices[] = { |
@@ -97,6 +132,16 @@ static struct spi_board_info ek_spi_devices[] = { | |||
97 | .bus_num = 0, | 132 | .bus_num = 0, |
98 | }, | 133 | }, |
99 | #endif | 134 | #endif |
135 | #if defined(CONFIG_TOUCHSCREEN_ADS7846) || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) | ||
136 | { | ||
137 | .modalias = "ads7846", | ||
138 | .chip_select = 3, | ||
139 | .max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */ | ||
140 | .bus_num = 0, | ||
141 | .platform_data = &ads_info, | ||
142 | .irq = AT91SAM9263_ID_IRQ1, | ||
143 | }, | ||
144 | #endif | ||
100 | }; | 145 | }; |
101 | 146 | ||
102 | 147 | ||
@@ -112,6 +157,14 @@ static struct at91_mmc_data __initdata ek_mmc_data = { | |||
112 | 157 | ||
113 | 158 | ||
114 | /* | 159 | /* |
160 | * MACB Ethernet device | ||
161 | */ | ||
162 | static struct at91_eth_data __initdata ek_macb_data = { | ||
163 | .is_rmii = 1, | ||
164 | }; | ||
165 | |||
166 | |||
167 | /* | ||
115 | * NAND flash | 168 | * NAND flash |
116 | */ | 169 | */ |
117 | static struct mtd_partition __initdata ek_nand_partition[] = { | 170 | static struct mtd_partition __initdata ek_nand_partition[] = { |
@@ -148,6 +201,14 @@ static struct at91_nand_data __initdata ek_nand_data = { | |||
148 | }; | 201 | }; |
149 | 202 | ||
150 | 203 | ||
204 | /* | ||
205 | * AC97 | ||
206 | */ | ||
207 | static struct atmel_ac97_data ek_ac97_data = { | ||
208 | .reset_pin = AT91_PIN_PA13, | ||
209 | }; | ||
210 | |||
211 | |||
151 | static void __init ek_board_init(void) | 212 | static void __init ek_board_init(void) |
152 | { | 213 | { |
153 | /* Serial */ | 214 | /* Serial */ |
@@ -157,11 +218,20 @@ static void __init ek_board_init(void) | |||
157 | /* USB Device */ | 218 | /* USB Device */ |
158 | at91_add_device_udc(&ek_udc_data); | 219 | at91_add_device_udc(&ek_udc_data); |
159 | /* SPI */ | 220 | /* SPI */ |
221 | at91_set_gpio_output(AT91_PIN_PE20, 1); /* select spi0 clock */ | ||
160 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); | 222 | at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); |
223 | /* Touchscreen */ | ||
224 | ek_add_device_ts(); | ||
161 | /* MMC */ | 225 | /* MMC */ |
162 | at91_add_device_mmc(1, &ek_mmc_data); | 226 | at91_add_device_mmc(1, &ek_mmc_data); |
227 | /* Ethernet */ | ||
228 | at91_add_device_eth(&ek_macb_data); | ||
163 | /* NAND */ | 229 | /* NAND */ |
164 | at91_add_device_nand(&ek_nand_data); | 230 | at91_add_device_nand(&ek_nand_data); |
231 | /* I2C */ | ||
232 | at91_add_device_i2c(); | ||
233 | /* AC97 */ | ||
234 | at91_add_device_ac97(&ek_ac97_data); | ||
165 | } | 235 | } |
166 | 236 | ||
167 | MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") | 237 | MACHINE_START(AT91SAM9263EK, "Atmel AT91SAM9263-EK") |