diff options
| -rw-r--r-- | arch/avr32/Kconfig | 13 | ||||
| -rw-r--r-- | arch/avr32/Makefile | 2 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/Kconfig | 25 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/evklcd10x.c | 7 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/mrmt.c | 1 | ||||
| -rw-r--r-- | arch/avr32/boards/atngw100/setup.c | 121 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100_defconfig | 383 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100_evklcd100_defconfig | 605 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100_evklcd101_defconfig | 599 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100mkii_defconfig | 1414 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100mkii_evklcd100_defconfig | 1549 | ||||
| -rw-r--r-- | arch/avr32/configs/atngw100mkii_evklcd101_defconfig | 1549 | ||||
| -rw-r--r-- | arch/avr32/configs/atstk1002_defconfig | 415 | ||||
| -rw-r--r-- | arch/avr32/configs/atstk1006_defconfig | 297 | ||||
| -rw-r--r-- | arch/avr32/include/asm/hardirq.h | 19 | ||||
| -rw-r--r-- | arch/avr32/kernel/irq.c | 9 | ||||
| -rw-r--r-- | arch/avr32/kernel/vmlinux.lds.S | 64 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/at32ap700x.c | 35 | ||||
| -rw-r--r-- | arch/avr32/mach-at32ap/include/mach/board.h | 1 |
19 files changed, 6389 insertions, 719 deletions
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index d856354f4272..f2b319333184 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
| @@ -112,6 +112,11 @@ config CPU_AT32AP7002 | |||
| 112 | bool | 112 | bool |
| 113 | select CPU_AT32AP700X | 113 | select CPU_AT32AP700X |
| 114 | 114 | ||
| 115 | # AP700X boards | ||
| 116 | config BOARD_ATNGW100_COMMON | ||
| 117 | bool | ||
| 118 | select CPU_AT32AP7000 | ||
| 119 | |||
| 115 | choice | 120 | choice |
| 116 | prompt "AVR32 board type" | 121 | prompt "AVR32 board type" |
| 117 | default BOARD_ATSTK1000 | 122 | default BOARD_ATSTK1000 |
| @@ -119,9 +124,13 @@ choice | |||
| 119 | config BOARD_ATSTK1000 | 124 | config BOARD_ATSTK1000 |
| 120 | bool "ATSTK1000 evaluation board" | 125 | bool "ATSTK1000 evaluation board" |
| 121 | 126 | ||
| 122 | config BOARD_ATNGW100 | 127 | config BOARD_ATNGW100_MKI |
| 123 | bool "ATNGW100 Network Gateway" | 128 | bool "ATNGW100 Network Gateway" |
| 124 | select CPU_AT32AP7000 | 129 | select BOARD_ATNGW100_COMMON |
| 130 | |||
| 131 | config BOARD_ATNGW100_MKII | ||
| 132 | bool "ATNGW100 mkII Network Gateway" | ||
| 133 | select BOARD_ATNGW100_COMMON | ||
| 125 | 134 | ||
| 126 | config BOARD_HAMMERHEAD | 135 | config BOARD_HAMMERHEAD |
| 127 | bool "Hammerhead board" | 136 | bool "Hammerhead board" |
diff --git a/arch/avr32/Makefile b/arch/avr32/Makefile index c21a3290d542..ead8a75203a9 100644 --- a/arch/avr32/Makefile +++ b/arch/avr32/Makefile | |||
| @@ -32,7 +32,7 @@ head-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/head.o | |||
| 32 | head-y += arch/avr32/kernel/head.o | 32 | head-y += arch/avr32/kernel/head.o |
| 33 | core-y += $(machdirs) | 33 | core-y += $(machdirs) |
| 34 | core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/ | 34 | core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/ |
| 35 | core-$(CONFIG_BOARD_ATNGW100) += arch/avr32/boards/atngw100/ | 35 | core-$(CONFIG_BOARD_ATNGW100_COMMON) += arch/avr32/boards/atngw100/ |
| 36 | core-$(CONFIG_BOARD_HAMMERHEAD) += arch/avr32/boards/hammerhead/ | 36 | core-$(CONFIG_BOARD_HAMMERHEAD) += arch/avr32/boards/hammerhead/ |
| 37 | core-$(CONFIG_BOARD_FAVR_32) += arch/avr32/boards/favr-32/ | 37 | core-$(CONFIG_BOARD_FAVR_32) += arch/avr32/boards/favr-32/ |
| 38 | core-$(CONFIG_BOARD_MERISC) += arch/avr32/boards/merisc/ | 38 | core-$(CONFIG_BOARD_MERISC) += arch/avr32/boards/merisc/ |
diff --git a/arch/avr32/boards/atngw100/Kconfig b/arch/avr32/boards/atngw100/Kconfig index be27a0218ab4..4e55617ade2d 100644 --- a/arch/avr32/boards/atngw100/Kconfig +++ b/arch/avr32/boards/atngw100/Kconfig | |||
| @@ -1,6 +1,17 @@ | |||
| 1 | # NGW100 customization | 1 | # NGW100 customization |
| 2 | 2 | ||
| 3 | if BOARD_ATNGW100 | 3 | if BOARD_ATNGW100_COMMON |
| 4 | |||
| 5 | config BOARD_ATNGW100_MKII_LCD | ||
| 6 | bool "Enable ATNGW100 mkII LCD interface" | ||
| 7 | depends on BOARD_ATNGW100_MKII | ||
| 8 | help | ||
| 9 | This enables the LCD controller (LCDC) in the AT32AP7000. Since the | ||
| 10 | LCDC is multiplexed with MACB1 (LAN) Ethernet port, only one can be | ||
| 11 | enabled at a time. | ||
| 12 | |||
| 13 | This choice enables the LCDC and disables the MACB1 interface marked | ||
| 14 | LAN on the PCB. | ||
| 4 | 15 | ||
| 5 | choice | 16 | choice |
| 6 | prompt "Select an NGW100 add-on board to support" | 17 | prompt "Select an NGW100 add-on board to support" |
| @@ -11,15 +22,11 @@ config BOARD_ATNGW100_ADDON_NONE | |||
| 11 | 22 | ||
| 12 | config BOARD_ATNGW100_EVKLCD10X | 23 | config BOARD_ATNGW100_EVKLCD10X |
| 13 | bool "EVKLCD10X addon board" | 24 | bool "EVKLCD10X addon board" |
| 25 | depends on BOARD_ATNGW100_MKI || BOARD_ATNGW100_MKII_LCD | ||
| 14 | help | 26 | help |
| 15 | This enables support for the EVKLCD100 (QVGA) or EVKLCD101 (VGA) | 27 | This enables support for the EVKLCD100 (QVGA) or EVKLCD101 (VGA) |
| 16 | addon board for the NGW100. By enabling this the LCD controller and | 28 | addon board for the NGW100 and NGW100 mkII. By enabling this the LCD |
| 17 | AC97 controller is added as platform devices. | 29 | controller and AC97 controller is added as platform devices. |
| 18 | |||
| 19 | This choice disables the detect pin and the write-protect pin for the | ||
| 20 | MCI platform device, since it conflicts with the LCD platform device. | ||
| 21 | The MCI pins can be reenabled by editing the "add device function" but | ||
| 22 | this may break the setup for other displays that use these pins. | ||
| 23 | 30 | ||
| 24 | config BOARD_ATNGW100_MRMT | 31 | config BOARD_ATNGW100_MRMT |
| 25 | bool "Mediama RMT1/2 add-on board" | 32 | bool "Mediama RMT1/2 add-on board" |
| @@ -55,4 +62,4 @@ if BOARD_ATNGW100_MRMT | |||
| 55 | source "arch/avr32/boards/atngw100/Kconfig_mrmt" | 62 | source "arch/avr32/boards/atngw100/Kconfig_mrmt" |
| 56 | endif | 63 | endif |
| 57 | 64 | ||
| 58 | endif # BOARD_ATNGW100 | 65 | endif # BOARD_ATNGW100_COMMON |
diff --git a/arch/avr32/boards/atngw100/evklcd10x.c b/arch/avr32/boards/atngw100/evklcd10x.c index 00337112c5ac..20388750d564 100644 --- a/arch/avr32/boards/atngw100/evklcd10x.c +++ b/arch/avr32/boards/atngw100/evklcd10x.c | |||
| @@ -164,7 +164,12 @@ static int __init atevklcd10x_init(void) | |||
| 164 | 164 | ||
| 165 | at32_add_device_lcdc(0, &atevklcd10x_lcdc_data, | 165 | at32_add_device_lcdc(0, &atevklcd10x_lcdc_data, |
| 166 | fbmem_start, fbmem_size, | 166 | fbmem_start, fbmem_size, |
| 167 | ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL); | 167 | #ifdef CONFIG_BOARD_ATNGW100_MKII |
| 168 | ATMEL_LCDC_PRI_18BIT | ATMEL_LCDC_PC_DVAL | ||
| 169 | #else | ||
| 170 | ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL | ||
| 171 | #endif | ||
| 172 | ); | ||
| 168 | 173 | ||
| 169 | at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH); | 174 | at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH); |
| 170 | 175 | ||
diff --git a/arch/avr32/boards/atngw100/mrmt.c b/arch/avr32/boards/atngw100/mrmt.c index bf78e516a85f..7919be311f4a 100644 --- a/arch/avr32/boards/atngw100/mrmt.c +++ b/arch/avr32/boards/atngw100/mrmt.c | |||
| @@ -302,6 +302,7 @@ static int __init mrmt1_init(void) | |||
| 302 | at32_select_periph( GPIO_PIOB_BASE, 1 << (PB_EXTINT_BASE+TS_IRQ), | 302 | at32_select_periph( GPIO_PIOB_BASE, 1 << (PB_EXTINT_BASE+TS_IRQ), |
| 303 | GPIO_PERIPH_A, AT32_GPIOF_DEGLITCH); | 303 | GPIO_PERIPH_A, AT32_GPIOF_DEGLITCH); |
| 304 | set_irq_type( AT32_EXTINT(TS_IRQ), IRQ_TYPE_EDGE_FALLING ); | 304 | set_irq_type( AT32_EXTINT(TS_IRQ), IRQ_TYPE_EDGE_FALLING ); |
| 305 | at32_spi_setup_slaves(0,spi01_board_info,ARRAY_SIZE(spi01_board_info)); | ||
| 305 | spi_register_board_info(spi01_board_info,ARRAY_SIZE(spi01_board_info)); | 306 | spi_register_board_info(spi01_board_info,ARRAY_SIZE(spi01_board_info)); |
| 306 | #endif | 307 | #endif |
| 307 | 308 | ||
diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c index bc299fbbeb4e..8c6a2440e345 100644 --- a/arch/avr32/boards/atngw100/setup.c +++ b/arch/avr32/boards/atngw100/setup.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/leds.h> | 20 | #include <linux/leds.h> |
| 21 | #include <linux/spi/spi.h> | 21 | #include <linux/spi/spi.h> |
| 22 | #include <linux/atmel-mci.h> | 22 | #include <linux/atmel-mci.h> |
| 23 | #include <linux/usb/atmel_usba_udc.h> | ||
| 23 | 24 | ||
| 24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
| 25 | #include <asm/setup.h> | 26 | #include <asm/setup.h> |
| @@ -36,6 +37,75 @@ unsigned long at32_board_osc_rates[3] = { | |||
| 36 | [2] = 12000000, /* 12 MHz on osc1 */ | 37 | [2] = 12000000, /* 12 MHz on osc1 */ |
| 37 | }; | 38 | }; |
| 38 | 39 | ||
| 40 | /* | ||
| 41 | * The ATNGW100 mkII is very similar to the ATNGW100. Both have the AT32AP7000 | ||
| 42 | * chip on board; the difference is that the ATNGW100 mkII has 128 MB 32-bit | ||
| 43 | * SDRAM (the ATNGW100 has 32 MB 16-bit SDRAM) and 256 MB 16-bit NAND flash | ||
| 44 | * (the ATNGW100 has none.) | ||
| 45 | * | ||
| 46 | * The RAM difference is handled by the boot loader, so the only difference we | ||
| 47 | * end up handling here is the NAND flash, EBI pin reservation and if LCDC or | ||
| 48 | * MACB1 should be enabled. | ||
| 49 | */ | ||
| 50 | #ifdef CONFIG_BOARD_ATNGW100_MKII | ||
| 51 | #include <linux/mtd/partitions.h> | ||
| 52 | #include <mach/smc.h> | ||
| 53 | |||
| 54 | static struct smc_timing nand_timing __initdata = { | ||
| 55 | .ncs_read_setup = 0, | ||
| 56 | .nrd_setup = 10, | ||
| 57 | .ncs_write_setup = 0, | ||
| 58 | .nwe_setup = 10, | ||
