xref: /OK3568_Linux_fs/u-boot/include/configs/at91sam9260ek.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2007-2008
3*4882a593Smuzhiyun  * Stelian Pop <stelian@popies.net>
4*4882a593Smuzhiyun  * Lead Tech Design <www.leadtechdesign.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Configuation settings for the AT91SAM9260EK & AT91SAM9G20EK boards.
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef __CONFIG_H
12*4882a593Smuzhiyun #define __CONFIG_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /*
15*4882a593Smuzhiyun  * SoC must be defined first, before hardware.h is included.
16*4882a593Smuzhiyun  * In this case SoC is defined in boards.cfg.
17*4882a593Smuzhiyun  */
18*4882a593Smuzhiyun #include <asm/hardware.h>
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun /*
21*4882a593Smuzhiyun  * Warning: changing CONFIG_SYS_TEXT_BASE requires
22*4882a593Smuzhiyun  * adapting the initial boot program.
23*4882a593Smuzhiyun  * Since the linker has to swallow that define, we must use a pure
24*4882a593Smuzhiyun  * hex number here!
25*4882a593Smuzhiyun  */
26*4882a593Smuzhiyun #define CONFIG_SYS_TEXT_BASE		0x21f00000
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /* ARM asynchronous clock */
29*4882a593Smuzhiyun #define CONFIG_SYS_AT91_SLOW_CLOCK	32768		/* slow clock xtal */
30*4882a593Smuzhiyun #define CONFIG_SYS_AT91_MAIN_CLOCK	18432000	/* main clock xtal */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* Define actual evaluation board type from used processor type */
33*4882a593Smuzhiyun #ifdef CONFIG_AT91SAM9G20
34*4882a593Smuzhiyun # define CONFIG_AT91SAM9G20EK	/* It's an Atmel AT91SAM9G20 EK */
35*4882a593Smuzhiyun #else
36*4882a593Smuzhiyun # define CONFIG_AT91SAM9260EK	/* It's an Atmel AT91SAM9260 EK */
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* Misc CPU related */
40*4882a593Smuzhiyun #define CONFIG_ARCH_CPU_INIT
41*4882a593Smuzhiyun #define CONFIG_CMDLINE_TAG		/* enable passing of ATAGs */
42*4882a593Smuzhiyun #define CONFIG_SETUP_MEMORY_TAGS
43*4882a593Smuzhiyun #define CONFIG_INITRD_TAG
44*4882a593Smuzhiyun #define CONFIG_SKIP_LOWLEVEL_INIT
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun /* general purpose I/O */
47*4882a593Smuzhiyun #define CONFIG_ATMEL_LEGACY		/* required until (g)pio is fixed */
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun /*
50*4882a593Smuzhiyun  * BOOTP options
51*4882a593Smuzhiyun  */
52*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTFILESIZE	1
53*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTPATH		1
54*4882a593Smuzhiyun #define CONFIG_BOOTP_GATEWAY		1
55*4882a593Smuzhiyun #define CONFIG_BOOTP_HOSTNAME		1
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun /*
58*4882a593Smuzhiyun  * SDRAM: 1 bank, min 32, max 128 MB
59*4882a593Smuzhiyun  * Initialized before u-boot gets started.
60*4882a593Smuzhiyun  */
61*4882a593Smuzhiyun #define CONFIG_NR_DRAM_BANKS		1
62*4882a593Smuzhiyun #define CONFIG_SYS_SDRAM_BASE		ATMEL_BASE_CS1
63*4882a593Smuzhiyun #define CONFIG_SYS_SDRAM_SIZE		0x04000000
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun /*
66*4882a593Smuzhiyun  * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
67*4882a593Smuzhiyun  * leaving the correct space for initial global data structure above
68*4882a593Smuzhiyun  * that address while providing maximum stack area below.
69*4882a593Smuzhiyun  */
70*4882a593Smuzhiyun #ifdef CONFIG_AT91SAM9XE
71*4882a593Smuzhiyun # define CONFIG_SYS_INIT_SP_ADDR \
72*4882a593Smuzhiyun 	(ATMEL_BASE_SRAM + 16 * 1024 - GENERATED_GBL_DATA_SIZE)
73*4882a593Smuzhiyun #else
74*4882a593Smuzhiyun # define CONFIG_SYS_INIT_SP_ADDR \
75*4882a593Smuzhiyun 	(ATMEL_BASE_SRAM1 + 16 * 1024 - GENERATED_GBL_DATA_SIZE)
76*4882a593Smuzhiyun #endif
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun /*
79*4882a593Smuzhiyun  * The (arm)linux board id set by generic code depending on configured board
80*4882a593Smuzhiyun  * (see boards.cfg for different boards)
81*4882a593Smuzhiyun  */
82*4882a593Smuzhiyun #ifdef CONFIG_AT91SAM9G20
83*4882a593Smuzhiyun 	/* the sam9g20 variants have two different board ids */
84*4882a593Smuzhiyun # ifdef CONFIG_AT91SAM9G20EK_2MMC
85*4882a593Smuzhiyun 	/* we may be setup for the 2MMC variant of at91sam9g20ek */
86*4882a593Smuzhiyun #  define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK_2MMC
87*4882a593Smuzhiyun # else
88*4882a593Smuzhiyun 	/* or the normal at91sam9g20ek */
89*4882a593Smuzhiyun #  define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9G20EK
90*4882a593Smuzhiyun # endif
91*4882a593Smuzhiyun #else
92*4882a593Smuzhiyun 	/* otherwise default to good old at91sam9260ek */
93*4882a593Smuzhiyun # define CONFIG_MACH_TYPE MACH_TYPE_AT91SAM9260EK
94*4882a593Smuzhiyun #endif
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun /* NAND flash */
97*4882a593Smuzhiyun #ifdef CONFIG_CMD_NAND
98*4882a593Smuzhiyun #define CONFIG_SYS_MAX_NAND_DEVICE	1
99*4882a593Smuzhiyun #define CONFIG_SYS_NAND_BASE		ATMEL_BASE_CS3
100*4882a593Smuzhiyun #define CONFIG_SYS_NAND_DBW_8
101*4882a593Smuzhiyun #define CONFIG_SYS_NAND_MASK_ALE	(1 << 21)
102*4882a593Smuzhiyun #define CONFIG_SYS_NAND_MASK_CLE	(1 << 22)
103*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ENABLE_PIN	AT91_PIN_PC14
104*4882a593Smuzhiyun #define CONFIG_SYS_NAND_READY_PIN	AT91_PIN_PC13
105*4882a593Smuzhiyun #endif
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun /* USB */
108*4882a593Smuzhiyun #define CONFIG_USB_ATMEL
109*4882a593Smuzhiyun #define CONFIG_USB_ATMEL_CLK_SEL_PLLB
110*4882a593Smuzhiyun #define CONFIG_USB_OHCI_NEW		1
111*4882a593Smuzhiyun #define CONFIG_SYS_USB_OHCI_CPU_INIT		1
112*4882a593Smuzhiyun #define CONFIG_SYS_USB_OHCI_REGS_BASE		0x00500000	/* AT91SAM9260_UHP_BASE */
113*4882a593Smuzhiyun #define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9260"
114*4882a593Smuzhiyun #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define CONFIG_SYS_LOAD_ADDR			0x22000000	/* load address */
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_START		CONFIG_SYS_SDRAM_BASE
119*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_END			0x23e00000
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #ifdef CONFIG_SYS_USE_DATAFLASH_CS0
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun /* bootstrap + u-boot + env + linux in dataflash on CS0 */
124*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET	0x4200
125*4882a593Smuzhiyun #define CONFIG_ENV_SIZE		0x4200
126*4882a593Smuzhiyun #define CONFIG_ENV_SECT_SIZE	0x210
127*4882a593Smuzhiyun #define CONFIG_ENV_SPI_MAX_HZ	15000000
128*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND	"sf probe 0:0; " \
129*4882a593Smuzhiyun 				"sf read 0x22000000 0x84000 0x294000; " \
130*4882a593Smuzhiyun 				"bootm 0x22000000"
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #elif CONFIG_SYS_USE_DATAFLASH_CS1
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET	0x4200
135*4882a593Smuzhiyun #define CONFIG_ENV_SIZE		0x4200
136*4882a593Smuzhiyun #define CONFIG_ENV_SECT_SIZE	0x210
137*4882a593Smuzhiyun #define CONFIG_ENV_SPI_MAX_HZ	15000000
138*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND	"sf probe 0:1; " \
139*4882a593Smuzhiyun 				"sf read 0x22000000 0x84000 0x294000; " \
140*4882a593Smuzhiyun 				"bootm 0x22000000"
141*4882a593Smuzhiyun 
142*4882a593Smuzhiyun #elif defined(CONFIG_SYS_USE_NANDFLASH)
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun /* bootstrap + u-boot + env + linux in nandflash */
145*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET		0x120000
146*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET_REDUND	0x100000
147*4882a593Smuzhiyun #define CONFIG_ENV_SIZE		0x20000		/* 1 sector = 128 kB */
148*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND	"nand read 0x22000000 0x200000 0x300000; bootm"
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #else	/* CONFIG_SYS_USE_MMC */
151*4882a593Smuzhiyun /* bootstrap + u-boot + env + linux in mmc */
152*4882a593Smuzhiyun /* For FAT system, most cases it should be in the reserved sector */
153*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET		0x2000
154*4882a593Smuzhiyun #define CONFIG_ENV_SIZE			0x1000
155*4882a593Smuzhiyun #define CONFIG_SYS_MMC_ENV_DEV		0
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND						\
158*4882a593Smuzhiyun 	"fatload mmc 0:1 0x22000000 uImage; bootm"
159*4882a593Smuzhiyun #endif
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun #define CONFIG_SYS_LONGHELP		1
162*4882a593Smuzhiyun #define CONFIG_CMDLINE_EDITING	1
163*4882a593Smuzhiyun #define CONFIG_AUTO_COMPLETE
164*4882a593Smuzhiyun 
165*4882a593Smuzhiyun /*
166*4882a593Smuzhiyun  * Size of malloc() pool
167*4882a593Smuzhiyun  */
168*4882a593Smuzhiyun #define CONFIG_SYS_MALLOC_LEN		ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun #endif
171