diff options
Diffstat (limited to 'arch/avr32/boards/atstk1000/atstk1002.c')
-rw-r--r-- | arch/avr32/boards/atstk1000/atstk1002.c | 106 |
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 | ||
54 | static struct at73c213_board_info at73c213_data = { | 52 | static 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 |
62 | static struct spi_board_info spi0_board_info[] __initdata = { | 59 | static 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 |
84 | static struct spi_board_info spi1_board_info[] __initdata = { { | 81 | static 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 | 142 | static void __init atstk1002_setup_extdac(void) | |
146 | static 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 | |||
173 | static struct gpio_led_platform_data stk_j2_led_data = { | ||
174 | .num_leds = ARRAY_SIZE(stk_j2_led), | ||
175 | .leds = stk_j2_led, | ||
176 | }; | ||
177 | |||
178 | static 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 | |||
186 | static 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 | ||
198 | static void setup_j2_leds(void) | ||
199 | { | ||
200 | } | ||
201 | #endif | ||
202 | |||
203 | #ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM | ||
204 | #ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM | ||
205 | static 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 | ||
225 | err_set_clk: | 162 | err_set_clk: |
226 | clk_put(pll); | 163 | clk_put(pll); |
@@ -229,12 +166,16 @@ err_pll: | |||
229 | err_gclk: | 166 | err_gclk: |
230 | return; | 167 | return; |
231 | } | 168 | } |
232 | #endif | 169 | #else |
233 | #endif | 170 | static void __init atstk1002_setup_extdac(void) |
171 | { | ||
172 | |||
173 | } | ||
174 | #endif /* CONFIG_BOARD_ATSTK1000_EXTDAC */ | ||
234 | 175 | ||
235 | void __init setup_board(void) | 176 | void __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, ð_data[0])); | 223 | set_hw_addr(at32_add_device_eth(0, ð_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 | } |