aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32/boards/atstk1000/atstk1002.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/avr32/boards/atstk1000/atstk1002.c')
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c106
1 files changed, 21 insertions, 85 deletions
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index 5be0d13f4b03..000eb4220a12 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -11,7 +11,6 @@
11#include <linux/etherdevice.h> 11#include <linux/etherdevice.h>
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/leds.h>
15#include <linux/platform_device.h> 14#include <linux/platform_device.h>
16#include <linux/string.h> 15#include <linux/string.h>
17#include <linux/types.h> 16#include <linux/types.h>
@@ -22,7 +21,7 @@
22 21
23#include <asm/io.h> 22#include <asm/io.h>
24#include <asm/setup.h> 23#include <asm/setup.h>
25#include <asm/arch/at32ap7000.h> 24#include <asm/arch/at32ap700x.h>
26#include <asm/arch/board.h> 25#include <asm/arch/board.h>
27#include <asm/arch/init.h> 26#include <asm/arch/init.h>
28#include <asm/arch/portmux.h> 27#include <asm/arch/portmux.h>
@@ -49,18 +48,16 @@ static struct eth_platform_data __initdata eth_data[2] = {
49 }, 48 },
50}; 49};
51 50
52#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM 51#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
53#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
54static struct at73c213_board_info at73c213_data = { 52static struct at73c213_board_info at73c213_data = {
55 .ssc_id = 0, 53 .ssc_id = 0,
56 .shortname = "AVR32 STK1000 external DAC", 54 .shortname = "AVR32 STK1000 external DAC",
57}; 55};
58#endif 56#endif
59#endif
60 57
61#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM 58#ifndef CONFIG_BOARD_ATSTK100X_SW1_CUSTOM
62static struct spi_board_info spi0_board_info[] __initdata = { 59static struct spi_board_info spi0_board_info[] __initdata = {
63#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM 60#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
64 { 61 {
65 /* AT73C213 */ 62 /* AT73C213 */
66 .modalias = "at73c213", 63 .modalias = "at73c213",
@@ -80,7 +77,7 @@ static struct spi_board_info spi0_board_info[] __initdata = {
80}; 77};
81#endif 78#endif
82 79
83#ifdef CONFIG_BOARD_ATSTK1002_SPI1 80#ifdef CONFIG_BOARD_ATSTK100X_SPI1
84static struct spi_board_info spi1_board_info[] __initdata = { { 81static struct spi_board_info spi1_board_info[] __initdata = { {
85 /* patch in custom entries here */ 82 /* patch in custom entries here */
86} }; 83} };
@@ -141,68 +138,8 @@ static void __init set_hw_addr(struct platform_device *pdev)
141 clk_put(pclk); 138 clk_put(pclk);
142} 139}
143 140
144#ifdef CONFIG_BOARD_ATSTK1002_J2_LED 141#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
145 142static void __init atstk1002_setup_extdac(void)
146static struct gpio_led stk_j2_led[] = {
147#ifdef CONFIG_BOARD_ATSTK1002_J2_LED8
148#define LEDSTRING "J2 jumpered to LED8"
149 { .name = "led0:amber", .gpio = GPIO_PIN_PB( 8), },
150 { .name = "led1:amber", .gpio = GPIO_PIN_PB( 9), },
151 { .name = "led2:amber", .gpio = GPIO_PIN_PB(10), },
152 { .name = "led3:amber", .gpio = GPIO_PIN_PB(13), },
153 { .name = "led4:amber", .gpio = GPIO_PIN_PB(14), },
154 { .name = "led5:amber", .gpio = GPIO_PIN_PB(15), },
155 { .name = "led6:amber", .gpio = GPIO_PIN_PB(16), },
156 { .name = "led7:amber", .gpio = GPIO_PIN_PB(30),
157 .default_trigger = "heartbeat", },
158#else /* RGB */
159#define LEDSTRING "J2 jumpered to RGB LEDs"
160 { .name = "r1:red", .gpio = GPIO_PIN_PB( 8), },
161 { .name = "g1:green", .gpio = GPIO_PIN_PB(10), },
162 { .name = "b1:blue", .gpio = GPIO_PIN_PB(14), },
163
164 { .name = "r2:red", .gpio = GPIO_PIN_PB( 9),
165 .default_trigger = "heartbeat", },
166 { .name = "g2:green", .gpio = GPIO_PIN_PB(13), },
167 { .name = "b2:blue", .gpio = GPIO_PIN_PB(15),
168 .default_trigger = "heartbeat", },
169 /* PB16, PB30 unused */
170#endif
171};
172
173static struct gpio_led_platform_data stk_j2_led_data = {
174 .num_leds = ARRAY_SIZE(stk_j2_led),
175 .leds = stk_j2_led,
176};
177
178static struct platform_device stk_j2_led_dev = {
179 .name = "leds-gpio",
180 .id = 2, /* gpio block J2 */
181 .dev = {
182 .platform_data = &stk_j2_led_data,
183 },
184};
185
186static void setup_j2_leds(void)
187{
188 unsigned i;
189
190 for (i = 0; i < ARRAY_SIZE(stk_j2_led); i++)
191 at32_select_gpio(stk_j2_led[i].gpio, AT32_GPIOF_OUTPUT);
192
193 printk("STK1002: " LEDSTRING "\n");
194 platform_device_register(&stk_j2_led_dev);
195}
196
197#else
198static void setup_j2_leds(void)
199{
200}
201#endif
202
203#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
204#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
205static void __init at73c213_set_clk(struct at73c213_board_info *info)
206{ 143{
207 struct clk *gclk; 144 struct clk *gclk;
208 struct clk *pll; 145 struct clk *pll;
@@ -220,7 +157,7 @@ static void __init at73c213_set_clk(struct at73c213_board_info *info)
220 } 157 }
221 158
222 at32_select_periph(GPIO_PIN_PA(30), GPIO_PERIPH_A, 0); 159 at32_select_periph(GPIO_PIN_PA(30), GPIO_PERIPH_A, 0);
223 info->dac_clk = gclk; 160 at73c213_data.dac_clk = gclk;
224 161
225err_set_clk: 162err_set_clk:
226 clk_put(pll); 163 clk_put(pll);
@@ -229,12 +166,16 @@ err_pll:
229err_gclk: 166err_gclk:
230 return; 167 return;
231} 168}
232#endif 169#else
233#endif 170static void __init atstk1002_setup_extdac(void)
171{
172
173}
174#endif /* CONFIG_BOARD_ATSTK1000_EXTDAC */
234 175
235void __init setup_board(void) 176void __init setup_board(void)
236{ 177{
237#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM 178#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
238 at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ 179 at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */
239#else 180#else
240 at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */ 181 at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
@@ -271,7 +212,7 @@ static int __init atstk1002_init(void)
271 212
272 at32_add_system_devices(); 213 at32_add_system_devices();
273 214
274#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM 215#ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM
275 at32_add_device_usart(1); 216 at32_add_device_usart(1);
276#else 217#else
277 at32_add_device_usart(0); 218 at32_add_device_usart(0);
@@ -281,10 +222,10 @@ static int __init atstk1002_init(void)
281#ifndef CONFIG_BOARD_ATSTK1002_SW6_CUSTOM 222#ifndef CONFIG_BOARD_ATSTK1002_SW6_CUSTOM
282 set_hw_addr(at32_add_device_eth(0, &eth_data[0])); 223 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
283#endif 224#endif
284#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM 225#ifndef CONFIG_BOARD_ATSTK100X_SW1_CUSTOM
285 at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); 226 at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
286#endif 227#endif
287#ifdef CONFIG_BOARD_ATSTK1002_SPI1 228#ifdef CONFIG_BOARD_ATSTK100X_SPI1
288 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info)); 229 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
289#endif 230#endif
290#ifdef CONFIG_BOARD_ATSTK1002_SW5_CUSTOM 231#ifdef CONFIG_BOARD_ATSTK1002_SW5_CUSTOM
@@ -294,17 +235,12 @@ static int __init atstk1002_init(void)
294 fbmem_start, fbmem_size); 235 fbmem_start, fbmem_size);
295#endif 236#endif
296 at32_add_device_usba(0, NULL); 237 at32_add_device_usba(0, NULL);
297#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM 238#ifndef CONFIG_BOARD_ATSTK100X_SW3_CUSTOM
298 at32_add_device_ssc(0, ATMEL_SSC_TX); 239 at32_add_device_ssc(0, ATMEL_SSC_TX);
299#endif 240#endif
300 241
301 setup_j2_leds(); 242 atstk1000_setup_j2_leds();
302 243 atstk1002_setup_extdac();
303#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
304#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
305 at73c213_set_clk(&at73c213_data);
306#endif
307#endif
308 244
309 return 0; 245 return 0;
310} 246}