diff options
| author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-07-27 13:54:08 +0200 | 
|---|---|---|
| committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-07-27 13:54:08 +0200 | 
| commit | eda3d8f5604860aae1bb9996bb5efc4213778369 (patch) | |
| tree | 9d3887d2665bcc5f5abf200758794545c7b2c69b /arch/avr32/boards | |
| parent | 87a9f704658a40940e740b1d73d861667e9164d3 (diff) | |
| parent | 8be1a6d6c77ab4532e4476fdb8177030ef48b52c (diff) | |
| download | linux-eda3d8f5604860aae1bb9996bb5efc4213778369.tar.bz2 | |
Merge commit 'upstream/master'
Diffstat (limited to 'arch/avr32/boards')
| -rw-r--r-- | arch/avr32/boards/atstk1000/Kconfig | 4 | ||||
| -rw-r--r-- | arch/avr32/boards/atstk1000/Makefile | 1 | ||||
| -rw-r--r-- | arch/avr32/boards/atstk1000/atstk1002.c | 78 | 
3 files changed, 81 insertions, 2 deletions
| diff --git a/arch/avr32/boards/atstk1000/Kconfig b/arch/avr32/boards/atstk1000/Kconfig index af90b00100fd..8dc48214f0b7 100644 --- a/arch/avr32/boards/atstk1000/Kconfig +++ b/arch/avr32/boards/atstk1000/Kconfig @@ -18,6 +18,10 @@ config BOARD_ATSTK1004  	bool "ATSTK1004"  	select CPU_AT32AP7002 +config BOARD_ATSTK1006 +	bool "ATSTK1006" +	select CPU_AT32AP7000 +  endchoice diff --git a/arch/avr32/boards/atstk1000/Makefile b/arch/avr32/boards/atstk1000/Makefile index beead86462e8..edecee03742d 100644 --- a/arch/avr32/boards/atstk1000/Makefile +++ b/arch/avr32/boards/atstk1000/Makefile @@ -2,3 +2,4 @@ obj-y				+= setup.o flash.o  obj-$(CONFIG_BOARD_ATSTK1002)	+= atstk1002.o  obj-$(CONFIG_BOARD_ATSTK1003)	+= atstk1003.o  obj-$(CONFIG_BOARD_ATSTK1004)	+= atstk1004.o +obj-$(CONFIG_BOARD_ATSTK1006)	+= atstk1002.o diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c index e11659b732fa..14dc5a143695 100644 --- a/arch/avr32/boards/atstk1000/atstk1002.c +++ b/arch/avr32/boards/atstk1000/atstk1002.c @@ -1,7 +1,7 @@  /* - * ATSTK1002 daughterboard-specific init code + * ATSTK1002/ATSTK1006 daughterboard-specific init code   * - * Copyright (C) 2005-2006 Atmel Corporation + * Copyright (C) 2005-2007 Atmel Corporation   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of the GNU General Public License version 2 as @@ -35,6 +35,74 @@ unsigned long at32_board_osc_rates[3] = {  	[2] = 12000000,	/* 12 MHz on osc1 */  }; +/* + * The ATSTK1006 daughterboard is very similar to the ATSTK1002. Both + * have the AT32AP7000 chip on board; the difference is that the + * STK1006 has 128 MB SDRAM (the STK1002 uses the 8 MB SDRAM chip on + * the STK1000 motherboard) and 256 MB NAND flash (the STK1002 has + * none.) + * + * The RAM difference is handled by the boot loader, so the only + * difference we end up handling here is the NAND flash. + */ +#ifdef CONFIG_BOARD_ATSTK1006 +#include <linux/mtd/partitions.h> +#include <asm/arch/smc.h> + +static struct smc_timing nand_timing __initdata = { +	.ncs_read_setup		= 0, +	.nrd_setup		= 10, +	.ncs_write_setup	= 0, +	.nwe_setup		= 10, + +	.ncs_read_pulse		= 30, +	.nrd_pulse		= 15, +	.ncs_write_pulse	= 30, +	.nwe_pulse		= 15, + +	.read_cycle		= 30, +	.write_cycle		= 30, + +	.ncs_read_recover	= 0, +	.nrd_recover		= 15, +	.ncs_write_recover	= 0, +	/* WE# high -> RE# low min 60 ns */ +	.nwe_recover		= 50, +}; + +static struct smc_config nand_config __initdata = { +	.bus_width		= 1, +	.nrd_controlled		= 1, +	.nwe_controlled		= 1, +	.nwait_mode		= 0, +	.byte_write		= 0, +	.tdf_cycles		= 2, +	.tdf_mode		= 0, +}; + +static struct mtd_partition nand_partitions[] = { +	{ +		.name		= "main", +		.offset		= 0x00000000, +		.size		= MTDPART_SIZ_FULL, +	}, +}; + +static struct mtd_partition *nand_part_info(int size, int *num_partitions) +{ +	*num_partitions = ARRAY_SIZE(nand_partitions); +	return nand_partitions; +} + +struct atmel_nand_data atstk1006_nand_data __initdata = { +	.cle		= 21, +	.ale		= 22, +	.rdy_pin	= GPIO_PIN_PB(30), +	.enable_pin	= GPIO_PIN_PB(29), +	.partition_info	= nand_part_info, +}; +#endif +  struct eth_addr {  	u8 addr[6];  }; @@ -218,6 +286,12 @@ static int __init atstk1002_init(void)  	at32_add_system_devices(); +#ifdef CONFIG_BOARD_ATSTK1006 +	smc_set_timing(&nand_config, &nand_timing); +	smc_set_configuration(3, &nand_config); +	at32_add_device_nand(0, &atstk1006_nand_data); +#endif +  #ifdef	CONFIG_BOARD_ATSTK100X_SW2_CUSTOM  	at32_add_device_usart(1);  #else |