diff --git a/target/linux/avr32/Makefile b/target/linux/avr32/Makefile index 4897765b15..7ee7266c4a 100644 --- a/target/linux/avr32/Makefile +++ b/target/linux/avr32/Makefile @@ -10,7 +10,7 @@ ARCH:=avr32 BOARD:=avr32 BOARDNAME:=Atmel AVR32 FEATURES:=squashfs -LINUX_VERSION:=2.6.28.10 +LINUX_VERSION:=2.6.30-rc7 include $(INCLUDE_DIR)/target.mk diff --git a/target/linux/avr32/config-default b/target/linux/avr32/config-default index 4b98b5dcc2..8dea3f004e 100644 --- a/target/linux/avr32/config-default +++ b/target/linux/avr32/config-default @@ -9,19 +9,22 @@ CONFIG_ARCH_REQUIRE_GPIOLIB=y # CONFIG_ARCH_SPARSEMEM_ENABLE is not set # CONFIG_ARCH_SUPPORTS_MSI is not set CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ASYNC_TX_DMA is not set CONFIG_AT32AP700X_WDT=m # CONFIG_ATMEL_PWM is not set # CONFIG_ATMEL_SSC is not set -CONFIG_ATMEL_TCB_CLKSRC=y CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 +CONFIG_ATMEL_TCB_CLKSRC=y CONFIG_ATMEL_TCLIB=y CONFIG_AVR32=y CONFIG_BASE_SMALL=0 CONFIG_BITREVERSE=y -CONFIG_BOARD_ATNGW100=y # CONFIG_BOARD_ATNGW100_EVKLCD10X is not set +CONFIG_BOARD_ATNGW100=y # CONFIG_BOARD_ATSTK1000 is not set # CONFIG_BOARD_FAVR_32 is not set +# CONFIG_BOARD_HAMMERHEAD is not set +# CONFIG_BOARD_MERISC is not set # CONFIG_BOARD_MIMC200 is not set CONFIG_CLASSIC_RCU=y CONFIG_CPU_AT32AP7000=y @@ -34,8 +37,8 @@ CONFIG_DW_DMAC=y CONFIG_ENTRY_ADDRESS=0x90000000 CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_BUG=y -CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_GPIO=y CONFIG_GPIOLIB=y CONFIG_HARDIRQS_SW_RESEND=y @@ -48,35 +51,35 @@ CONFIG_HAVE_CLK=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_OPROFILE=y # CONFIG_HW_RANDOM is not set -CONFIG_I2C=m CONFIG_I2C_BOARDINFO=y +CONFIG_I2C=m CONFIG_INITRAMFS_SOURCE="" CONFIG_LEDS_GPIO=y -CONFIG_LOADER_U_BOOT=y CONFIG_LOAD_ADDRESS=0x10000000 +CONFIG_LOADER_U_BOOT=y CONFIG_MACB=y -CONFIG_MMC=m -CONFIG_MMC_ATMELMCI=m # CONFIG_MMC_ATMELMCI_DMA is not set -CONFIG_MMC_BLOCK=m +CONFIG_MMC_ATMELMCI=m CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK=m # CONFIG_MMC_DEBUG is not set +CONFIG_MMC=m # CONFIG_MMC_SDHCI is not set # CONFIG_MMC_SPI is not set # CONFIG_MMC_UNSAFE_RESUME is not set # CONFIG_MTD_CFI_INTELEXT is not set CONFIG_MTD_CMDLINE_PARTS=y # CONFIG_MTD_COMPLEX_MAPPINGS is not set -CONFIG_MTD_DATAFLASH=y # CONFIG_MTD_DATAFLASH_OTP is not set # CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set -CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_DATAFLASH=y CONFIG_MTD_PHYSMAP_BANKWIDTH=2 CONFIG_MTD_PHYSMAP_LEN=0x0 CONFIG_MTD_PHYSMAP_START=0x80000000 +CONFIG_MTD_PHYSMAP=y # CONFIG_NEED_NODE_MEMMAP_SIZE is not set -CONFIG_NF_CT_ACCT=y # CONFIG_NET_DMA is not set +CONFIG_NF_CT_ACCT=y # CONFIG_NMI_DEBUGGING is not set CONFIG_NO_HZ=y CONFIG_NR_QUICK=2 @@ -93,16 +96,16 @@ CONFIG_SCHED_HRTICK=y # CONFIG_SCSI_DMA is not set # CONFIG_SDIO_UART is not set # CONFIG_SERIAL_8250 is not set -CONFIG_SERIAL_ATMEL=y CONFIG_SERIAL_ATMEL_CONSOLE=y CONFIG_SERIAL_ATMEL_PDC=y # CONFIG_SERIAL_ATMEL_TTYAT is not set -CONFIG_SPI=y +CONFIG_SERIAL_ATMEL=y CONFIG_SPI_ATMEL=y # CONFIG_SPI_BITBANG is not set # CONFIG_SPI_GPIO is not set CONFIG_SPI_MASTER=y # CONFIG_SPI_SPIDEV is not set +CONFIG_SPI=y CONFIG_SUBARCH_AVR32B=y CONFIG_TICK_ONESHOT=y # CONFIG_VGASTATE is not set diff --git a/target/linux/avr32/patches/000-revert_usart_pin_selection.patch b/target/linux/avr32/patches/000-revert_usart_pin_selection.patch new file mode 100644 index 0000000000..075743b4eb --- /dev/null +++ b/target/linux/avr32/patches/000-revert_usart_pin_selection.patch @@ -0,0 +1,229 @@ +--- a/arch/avr32/boards/atngw100/setup.c ++++ b/arch/avr32/boards/atngw100/setup.c +@@ -118,7 +118,7 @@ static void __init set_hw_addr(struct pl + + void __init setup_board(void) + { +- at32_map_usart(1, 0, 0); /* USART 1: /dev/ttyS0, DB9 */ ++ at32_map_usart(1, 0); /* USART 1: /dev/ttyS0, DB9 */ + at32_setup_serial_console(0); + } + +--- a/arch/avr32/boards/atstk1000/atstk1002.c ++++ b/arch/avr32/boards/atstk1000/atstk1002.c +@@ -252,12 +252,12 @@ static void __init atstk1002_setup_extda + void __init setup_board(void) + { + #ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM +- at32_map_usart(0, 1, 0); /* USART 0/B: /dev/ttyS1, IRDA */ ++ at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ + #else +- at32_map_usart(1, 0, 0); /* USART 1/A: /dev/ttyS0, DB9 */ ++ at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */ + #endif + /* USART 2/unused: expansion connector */ +- at32_map_usart(3, 2, 0); /* USART 3/C: /dev/ttyS2, DB9 */ ++ at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */ + + at32_setup_serial_console(0); + } +--- a/arch/avr32/boards/atstk1000/atstk1003.c ++++ b/arch/avr32/boards/atstk1000/atstk1003.c +@@ -115,12 +115,12 @@ static void __init atstk1003_setup_extda + void __init setup_board(void) + { + #ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM +- at32_map_usart(0, 1, 0); /* USART 0/B: /dev/ttyS1, IRDA */ ++ at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ + #else +- at32_map_usart(1, 0, 0); /* USART 1/A: /dev/ttyS0, DB9 */ ++ at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */ + #endif + /* USART 2/unused: expansion connector */ +- at32_map_usart(3, 2, 0); /* USART 3/C: /dev/ttyS2, DB9 */ ++ at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */ + + at32_setup_serial_console(0); + } +--- a/arch/avr32/boards/atstk1000/atstk1004.c ++++ b/arch/avr32/boards/atstk1000/atstk1004.c +@@ -120,12 +120,12 @@ static void __init atstk1004_setup_extda + void __init setup_board(void) + { + #ifdef CONFIG_BOARD_ATSTK100X_SW2_CUSTOM +- at32_map_usart(0, 1, 0); /* USART 0/B: /dev/ttyS1, IRDA */ ++ at32_map_usart(0, 1); /* USART 0/B: /dev/ttyS1, IRDA */ + #else +- at32_map_usart(1, 0, 0); /* USART 1/A: /dev/ttyS0, DB9 */ ++ at32_map_usart(1, 0); /* USART 1/A: /dev/ttyS0, DB9 */ + #endif + /* USART 2/unused: expansion connector */ +- at32_map_usart(3, 2, 0); /* USART 3/C: /dev/ttyS2, DB9 */ ++ at32_map_usart(3, 2); /* USART 3/C: /dev/ttyS2, DB9 */ + + at32_setup_serial_console(0); + } +--- a/arch/avr32/boards/favr-32/setup.c ++++ b/arch/avr32/boards/favr-32/setup.c +@@ -250,7 +250,7 @@ static void __init favr32_setup_atmel_pw + + void __init setup_board(void) + { +- at32_map_usart(3, 0, 0); /* USART 3 => /dev/ttyS0 */ ++ at32_map_usart(3, 0); /* USART 3 => /dev/ttyS0 */ + at32_setup_serial_console(0); + } + +--- a/arch/avr32/boards/hammerhead/setup.c ++++ b/arch/avr32/boards/hammerhead/setup.c +@@ -165,7 +165,7 @@ static void __init set_hw_addr(struct pl + + void __init setup_board(void) + { +- at32_map_usart(1, 0, 0); /* USART 1: /dev/ttyS0, DB9 */ ++ at32_map_usart(1, 0); /* USART 1: /dev/ttyS0, DB9 */ + at32_setup_serial_console(0); + } + +--- a/arch/avr32/boards/merisc/setup.c ++++ b/arch/avr32/boards/merisc/setup.c +@@ -231,9 +231,9 @@ static void detect_merisc_board_id(void) + + void __init setup_board(void) + { +- at32_map_usart(0, 0, 0); +- at32_map_usart(1, 1, 0); +- at32_map_usart(3, 3, 0); ++ at32_map_usart(0, 0); ++ at32_map_usart(1, 1); ++ at32_map_usart(3, 3); + at32_setup_serial_console(1); + } + +@@ -248,7 +248,7 @@ static int __init merisc_init(void) + at32_reserve_pin(GPIO_PIOE_BASE, ATMEL_EBI_PE_DATA_ALL | (1 << 26)); + + if (merisc_board_id >= 1) +- at32_map_usart(2, 2, 0); ++ at32_map_usart(2, 2); + + at32_add_device_usart(0); + at32_add_device_usart(1); +--- a/arch/avr32/boards/mimc200/setup.c ++++ b/arch/avr32/boards/mimc200/setup.c +@@ -175,10 +175,10 @@ static void __init set_hw_addr(struct pl + + void __init setup_board(void) + { +- at32_map_usart(0, 0, 0); /* USART 0: /dev/ttyS0 (TTL --> Altera) */ +- at32_map_usart(1, 1, 0); /* USART 1: /dev/ttyS1 (RS232) */ +- at32_map_usart(2, 2, 0); /* USART 2: /dev/ttyS2 (RS485) */ +- at32_map_usart(3, 3, 0); /* USART 3: /dev/ttyS3 (RS422 Multidrop) */ ++ at32_map_usart(0, 0); /* USART 0: /dev/ttyS0 (TTL --> Altera) */ ++ at32_map_usart(1, 1); /* USART 1: /dev/ttyS1 (RS232) */ ++ at32_map_usart(2, 2); /* USART 2: /dev/ttyS2 (RS485) */ ++ at32_map_usart(3, 3); /* USART 3: /dev/ttyS3 (RS422 Multidrop) */ + } + + static struct i2c_gpio_platform_data i2c_gpio_data = { +--- a/arch/avr32/mach-at32ap/at32ap700x.c ++++ b/arch/avr32/mach-at32ap/at32ap700x.c +@@ -966,68 +966,56 @@ static struct resource atmel_usart3_reso + DEFINE_DEV_DATA(atmel_usart, 3); + DEV_CLK(usart, atmel_usart3, pba, 6); + +-static inline void configure_usart0_pins(int flags) ++static inline void configure_usart0_pins(void) + { + u32 pin_mask = (1 << 8) | (1 << 9); /* RXD & TXD */ +- if (flags & ATMEL_USART_RTS) pin_mask |= (1 << 6); +- if (flags & ATMEL_USART_CTS) pin_mask |= (1 << 7); +- if (flags & ATMEL_USART_CLK) pin_mask |= (1 << 10); + + select_peripheral(PIOA, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP); + } + +-static inline void configure_usart1_pins(int flags) ++static inline void configure_usart1_pins(void) + { + u32 pin_mask = (1 << 17) | (1 << 18); /* RXD & TXD */ +- if (flags & ATMEL_USART_RTS) pin_mask |= (1 << 19); +- if (flags & ATMEL_USART_CTS) pin_mask |= (1 << 20); +- if (flags & ATMEL_USART_CLK) pin_mask |= (1 << 16); + + select_peripheral(PIOA, pin_mask, PERIPH_A, AT32_GPIOF_PULLUP); + } + +-static inline void configure_usart2_pins(int flags) ++static inline void configure_usart2_pins(void) + { + u32 pin_mask = (1 << 26) | (1 << 27); /* RXD & TXD */ +- if (flags & ATMEL_USART_RTS) pin_mask |= (1 << 30); +- if (flags & ATMEL_USART_CTS) pin_mask |= (1 << 29); +- if (flags & ATMEL_USART_CLK) pin_mask |= (1 << 28); + + select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP); + } + +-static inline void configure_usart3_pins(int flags) ++static inline void configure_usart3_pins(void) + { + u32 pin_mask = (1 << 18) | (1 << 17); /* RXD & TXD */ +- if (flags & ATMEL_USART_RTS) pin_mask |= (1 << 16); +- if (flags & ATMEL_USART_CTS) pin_mask |= (1 << 15); +- if (flags & ATMEL_USART_CLK) pin_mask |= (1 << 19); + + select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP); + } + + static struct platform_device *__initdata at32_usarts[4]; + +-void __init at32_map_usart(unsigned int hw_id, unsigned int line, int flags) ++void __init at32_map_usart(unsigned int hw_id, unsigned int line) + { + struct platform_device *pdev; + + switch (hw_id) { + case 0: + pdev = &atmel_usart0_device; +- configure_usart0_pins(flags); ++ configure_usart0_pins(); + break; + case 1: + pdev = &atmel_usart1_device; +- configure_usart1_pins(flags); ++ configure_usart1_pins(); + break; + case 2: + pdev = &atmel_usart2_device; +- configure_usart2_pins(flags); ++ configure_usart2_pins(); + break; + case 3: + pdev = &atmel_usart3_device; +- configure_usart3_pins(flags); ++ configure_usart3_pins(); + break; + default: + return; +--- a/arch/avr32/mach-at32ap/include/mach/board.h ++++ b/arch/avr32/mach-at32ap/include/mach/board.h +@@ -26,17 +26,12 @@ static inline void __deprecated at32_add + #define ATMEL_MAX_UART 4 + extern struct platform_device *atmel_default_console_device; + +-/* Flags for selecting USART extra pins */ +-#define ATMEL_USART_RTS 0x01 +-#define ATMEL_USART_CTS 0x02 +-#define ATMEL_USART_CLK 0x03 +- + struct atmel_uart_data { + short use_dma_tx; /* use transmit DMA? */ + short use_dma_rx; /* use receive DMA? */ + void __iomem *regs; /* virtual base address, if any */ + }; +-void at32_map_usart(unsigned int hw_id, unsigned int line, int flags); ++void at32_map_usart(unsigned int hw_id, unsigned int line); + struct platform_device *at32_add_device_usart(unsigned int id); + + struct eth_platform_data {