aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2007-06-12 08:34:47 -0400
committerHaavard Skinnemoen <hskinnemoen@atmel.com>2007-07-18 14:45:51 -0400
commita8e93ed8cb3d9aa22d192033009357526548c825 (patch)
tree40e551da96bfc4753853bb863f92eb6e56bd7115
parent9e58e1855c9815ad4944df90f695a7645c50f463 (diff)
[AVR32] Make STK1000 mux settings configurable
This adds some STK1002-specific config options covering the jumper settings, so the kernel can automatically be configured to include the relevant devices. One of them replaces the previous internal SW2_DEFAULT setting; SPI config is affected by two of the jumpers; and a fourth one switches between LCD and the second Ethernet connector. (There's more that to be done.) Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
-rw-r--r--arch/avr32/Kconfig4
-rw-r--r--arch/avr32/boards/atstk1000/Kconfig53
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c30
3 files changed, 80 insertions, 7 deletions
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index 8f37a14e6378..d12346aaa88b 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -113,6 +113,10 @@ config BOARD_ATNGW100
113 bool "ATNGW100 Network Gateway" 113 bool "ATNGW100 Network Gateway"
114endchoice 114endchoice
115 115
116if BOARD_ATSTK1000
117source "arch/avr32/boards/atstk1000/Kconfig"
118endif
119
116choice 120choice
117 prompt "Boot loader type" 121 prompt "Boot loader type"
118 default LOADER_U_BOOT 122 default LOADER_U_BOOT
diff --git a/arch/avr32/boards/atstk1000/Kconfig b/arch/avr32/boards/atstk1000/Kconfig
new file mode 100644
index 000000000000..71bc7d364fb7
--- /dev/null
+++ b/arch/avr32/boards/atstk1000/Kconfig
@@ -0,0 +1,53 @@
1# STK1000 customization
2
3if BOARD_ATSTK1002
4
5config BOARD_ATSTK1002_CUSTOM
6 bool "Non-default STK-1002 jumper settings"
7 help
8 You will normally leave the jumpers on the CPU card at their
9 default settings. If you need to use certain peripherals,
10 you will need to change some of those jumpers.
11
12if BOARD_ATSTK1002_CUSTOM
13
14config BOARD_ATSTK1002_SW1_CUSTOM
15 bool "SW1: use SSC1 (not SPI0)"
16 help
17 This also prevents using the external DAC as an audio interface,
18 and means you can't initialize the on-board QVGA display.
19
20config BOARD_ATSTK1002_SW2_CUSTOM
21 bool "SW2: use IRDA or TIMER0 (not UART-A, MMC/SD, and PS2-A)"
22 help
23 If you change this you'll want an updated boot loader putting
24 the console on UART-C not UART-A.
25
26config BOARD_ATSTK1002_SW3_CUSTOM
27 bool "SW3: use TIMER1 (not SSC0 and GCLK)"
28 help
29 This also prevents using the external DAC as an audio interface.
30
31config BOARD_ATSTK1002_SW4_CUSTOM
32 bool "SW4: use ISI/Camera (not GPIOs, SPI1, and PS2-B)"
33 help
34 To use the camera interface you'll need a custom card (on the
35 PCI-format connector) connect a video sensor.
36
37config BOARD_ATSTK1002_SW5_CUSTOM
38 bool "SW5: use MACB1 (not LCDC)"
39
40config BOARD_ATSTK1002_SW6_CUSTOM
41 bool "SW6: more GPIOs (not MACB0)"
42
43endif # custom
44
45config BOARD_ATSTK1002_SPI1
46 bool "Configure SPI1 controller"
47 depends on !BOARD_ATSTK1002_SW4_CUSTOM
48 help
49 All the signals for the second SPI controller are available on
50 GPIO lines and accessed through the J1 jumper block. Say "y"
51 here to configure that SPI controller.
52
53endif # stk 1002
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index e253e86a1a39..6b2187f35031 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -27,7 +27,6 @@
27 27
28#include "atstk1000.h" 28#include "atstk1000.h"
29 29
30#define SW2_DEFAULT /* MMCI and UART_A available */
31 30
32struct eth_addr { 31struct eth_addr {
33 u8 addr[6]; 32 u8 addr[6];
@@ -36,6 +35,7 @@ struct eth_addr {
36static struct eth_addr __initdata hw_addr[2]; 35static struct eth_addr __initdata hw_addr[2];
37static struct eth_platform_data __initdata eth_data[2]; 36static struct eth_platform_data __initdata eth_data[2];
38 37
38#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
39static struct spi_board_info spi0_board_info[] __initdata = { 39static struct spi_board_info spi0_board_info[] __initdata = {
40 { 40 {
41 /* QVGA display */ 41 /* QVGA display */
@@ -45,6 +45,13 @@ static struct spi_board_info spi0_board_info[] __initdata = {
45 .mode = SPI_MODE_3, 45 .mode = SPI_MODE_3,
46 }, 46 },
47}; 47};
48#endif
49
50#ifdef CONFIG_BOARD_ATSTK1002_SPI1
51static struct spi_board_info spi1_board_info[] __initdata = { {
52 /* patch in custom entries here */
53} };
54#endif
48 55
49/* 56/*
50 * The next two functions should go away as the boot loader is 57 * The next two functions should go away as the boot loader is
@@ -103,10 +110,10 @@ static void __init set_hw_addr(struct platform_device *pdev)
103 110
104void __init setup_board(void) 111void __init setup_board(void)
105{ 112{
106#ifdef SW2_DEFAULT 113#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
107 at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
108#else
109 at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ 114 at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */
115#else
116 at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
110#endif 117#endif
111 /* USART 2/unused: expansion connector */ 118 /* USART 2/unused: expansion connector */
112 at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */ 119 at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */
@@ -140,18 +147,27 @@ static int __init atstk1002_init(void)
140 147
141 at32_add_system_devices(); 148 at32_add_system_devices();
142 149
143#ifdef SW2_DEFAULT 150#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
144 at32_add_device_usart(0);
145#else
146 at32_add_device_usart(1); 151 at32_add_device_usart(1);
152#else
153 at32_add_device_usart(0);
147#endif 154#endif
148 at32_add_device_usart(2); 155 at32_add_device_usart(2);
149 156
150 set_hw_addr(at32_add_device_eth(0, &eth_data[0])); 157 set_hw_addr(at32_add_device_eth(0, &eth_data[0]));
151 158
159#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
152 at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info)); 160 at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
161#endif
162#ifdef CONFIG_BOARD_ATSTK1002_SPI1
163 at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
164#endif
165#ifdef CONFIG_BOARD_ATSTK1002_SW5_CUSTOM
166 set_hw_addr(at32_add_device_eth(1, &eth_data[1]));
167#else
153 at32_add_device_lcdc(0, &atstk1000_lcdc_data, 168 at32_add_device_lcdc(0, &atstk1000_lcdc_data,
154 fbmem_start, fbmem_size); 169 fbmem_start, fbmem_size);
170#endif
155 171
156 return 0; 172 return 0;
157} 173}