mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 16:15:11 +00:00
[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>
This commit is contained in:
parent
9e58e1855c
commit
a8e93ed8cb
3 changed files with 80 additions and 7 deletions
|
@ -113,6 +113,10 @@ config BOARD_ATNGW100
|
||||||
bool "ATNGW100 Network Gateway"
|
bool "ATNGW100 Network Gateway"
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
if BOARD_ATSTK1000
|
||||||
|
source "arch/avr32/boards/atstk1000/Kconfig"
|
||||||
|
endif
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Boot loader type"
|
prompt "Boot loader type"
|
||||||
default LOADER_U_BOOT
|
default LOADER_U_BOOT
|
||||||
|
|
53
arch/avr32/boards/atstk1000/Kconfig
Normal file
53
arch/avr32/boards/atstk1000/Kconfig
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
# STK1000 customization
|
||||||
|
|
||||||
|
if BOARD_ATSTK1002
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_CUSTOM
|
||||||
|
bool "Non-default STK-1002 jumper settings"
|
||||||
|
help
|
||||||
|
You will normally leave the jumpers on the CPU card at their
|
||||||
|
default settings. If you need to use certain peripherals,
|
||||||
|
you will need to change some of those jumpers.
|
||||||
|
|
||||||
|
if BOARD_ATSTK1002_CUSTOM
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW1_CUSTOM
|
||||||
|
bool "SW1: use SSC1 (not SPI0)"
|
||||||
|
help
|
||||||
|
This also prevents using the external DAC as an audio interface,
|
||||||
|
and means you can't initialize the on-board QVGA display.
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW2_CUSTOM
|
||||||
|
bool "SW2: use IRDA or TIMER0 (not UART-A, MMC/SD, and PS2-A)"
|
||||||
|
help
|
||||||
|
If you change this you'll want an updated boot loader putting
|
||||||
|
the console on UART-C not UART-A.
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW3_CUSTOM
|
||||||
|
bool "SW3: use TIMER1 (not SSC0 and GCLK)"
|
||||||
|
help
|
||||||
|
This also prevents using the external DAC as an audio interface.
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW4_CUSTOM
|
||||||
|
bool "SW4: use ISI/Camera (not GPIOs, SPI1, and PS2-B)"
|
||||||
|
help
|
||||||
|
To use the camera interface you'll need a custom card (on the
|
||||||
|
PCI-format connector) connect a video sensor.
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW5_CUSTOM
|
||||||
|
bool "SW5: use MACB1 (not LCDC)"
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SW6_CUSTOM
|
||||||
|
bool "SW6: more GPIOs (not MACB0)"
|
||||||
|
|
||||||
|
endif # custom
|
||||||
|
|
||||||
|
config BOARD_ATSTK1002_SPI1
|
||||||
|
bool "Configure SPI1 controller"
|
||||||
|
depends on !BOARD_ATSTK1002_SW4_CUSTOM
|
||||||
|
help
|
||||||
|
All the signals for the second SPI controller are available on
|
||||||
|
GPIO lines and accessed through the J1 jumper block. Say "y"
|
||||||
|
here to configure that SPI controller.
|
||||||
|
|
||||||
|
endif # stk 1002
|
|
@ -27,7 +27,6 @@
|
||||||
|
|
||||||
#include "atstk1000.h"
|
#include "atstk1000.h"
|
||||||
|
|
||||||
#define SW2_DEFAULT /* MMCI and UART_A available */
|
|
||||||
|
|
||||||
struct eth_addr {
|
struct eth_addr {
|
||||||
u8 addr[6];
|
u8 addr[6];
|
||||||
|
@ -36,6 +35,7 @@ struct eth_addr {
|
||||||
static struct eth_addr __initdata hw_addr[2];
|
static struct eth_addr __initdata hw_addr[2];
|
||||||
static struct eth_platform_data __initdata eth_data[2];
|
static struct eth_platform_data __initdata eth_data[2];
|
||||||
|
|
||||||
|
#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
|
||||||
static struct spi_board_info spi0_board_info[] __initdata = {
|
static struct spi_board_info spi0_board_info[] __initdata = {
|
||||||
{
|
{
|
||||||
/* QVGA display */
|
/* QVGA display */
|
||||||
|
@ -45,6 +45,13 @@ static struct spi_board_info spi0_board_info[] __initdata = {
|
||||||
.mode = SPI_MODE_3,
|
.mode = SPI_MODE_3,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BOARD_ATSTK1002_SPI1
|
||||||
|
static struct spi_board_info spi1_board_info[] __initdata = { {
|
||||||
|
/* patch in custom entries here */
|
||||||
|
} };
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The next two functions should go away as the boot loader is
|
* 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)
|
||||||
|
|
||||||
void __init setup_board(void)
|
void __init setup_board(void)
|
||||||
{
|
{
|
||||||
#ifdef SW2_DEFAULT
|
#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
|
||||||
at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
|
|
||||||
#else
|
|
||||||
at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */
|
at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */
|
||||||
|
#else
|
||||||
|
at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */
|
||||||
#endif
|
#endif
|
||||||
/* USART 2/unused: expansion connector */
|
/* USART 2/unused: expansion connector */
|
||||||
at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */
|
at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */
|
||||||
|
@ -140,18 +147,27 @@ static int __init atstk1002_init(void)
|
||||||
|
|
||||||
at32_add_system_devices();
|
at32_add_system_devices();
|
||||||
|
|
||||||
#ifdef SW2_DEFAULT
|
#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
|
||||||
at32_add_device_usart(0);
|
|
||||||
#else
|
|
||||||
at32_add_device_usart(1);
|
at32_add_device_usart(1);
|
||||||
|
#else
|
||||||
|
at32_add_device_usart(0);
|
||||||
#endif
|
#endif
|
||||||
at32_add_device_usart(2);
|
at32_add_device_usart(2);
|
||||||
|
|
||||||
set_hw_addr(at32_add_device_eth(0, ð_data[0]));
|
set_hw_addr(at32_add_device_eth(0, ð_data[0]));
|
||||||
|
|
||||||
|
#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
|
||||||
at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
|
at32_add_device_spi(0, spi0_board_info, ARRAY_SIZE(spi0_board_info));
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_BOARD_ATSTK1002_SPI1
|
||||||
|
at32_add_device_spi(1, spi1_board_info, ARRAY_SIZE(spi1_board_info));
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_BOARD_ATSTK1002_SW5_CUSTOM
|
||||||
|
set_hw_addr(at32_add_device_eth(1, ð_data[1]));
|
||||||
|
#else
|
||||||
at32_add_device_lcdc(0, &atstk1000_lcdc_data,
|
at32_add_device_lcdc(0, &atstk1000_lcdc_data,
|
||||||
fbmem_start, fbmem_size);
|
fbmem_start, fbmem_size);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue