Add zero bootdelay check
[pandaboard:u-boot-4460.git] / include / configs / omap3630zoom3.h
1 /*
2  * (C) Copyright 2008 - 2009 Texas Instruments.
3  *
4  * Configuration settings for the 3430 TI Zoom2 board.
5  *
6  * See file CREDITS for list of people who contributed to this
7  * project.
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 2 of
12  * the License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
22  * MA 02111-1307 USA
23  */
24
25 #ifndef __CONFIG_H
26 #define __CONFIG_H
27
28 /*
29  * High Level Configuration Options
30  */
31 #define CONFIG_ARMCORTEXA8      1    /* This is an ARM V7 CPU core */
32 #define CONFIG_OMAP             1    /* in a TI OMAP core */
33 #define CONFIG_OMAP36XX         1    /* which is a 36XX */
34 #define CONFIG_OMAP34XX         1    /* reuse the 34XX setup */
35 #define CONFIG_OMAP3430         1    /* which is in a 3430 */
36 #define CONFIG_3630ZOOM3        1    /* working on Zoom3 board */
37 #define CONFIG_3430ZOOM2        1    /* reuse Zoom2 setup */
38 #define CONFIG_FASTBOOT         1    /* Using fastboot interface */
39 #define CONFIG_ZOOM2_LED        1    /* Using Zoom2 LED's */
40 #define CONFIG_TWL4030_KEYPAD   1    /* Use the keypad */
41 #define CONFIG_TWL4030_USB      1    /* Initialize twl usb */
42 #define CONFIG_BOARD_REVISION   1    /* Board revision */
43 #if !defined(CONFIG_STORAGE_EMMC)
44 #define CONFIG_STORAGE_NAND     1    /* Flash to NAND using Fastboot */
45 #endif
46
47 //#define CONFIG_3430_AS_3410   1    /* true for 3430 in 3410 mode */
48
49 #include <asm/arch/cpu.h>        /* get chip and board defs */
50
51 /* Clock Defines */
52 #define V_OSCK                   26000000  /* Clock output from T2 */
53
54 #define V_SCLK                   (V_OSCK >> 1)
55
56 #define PRCM_CLK_CFG2_400MHZ   1    /* VDD2=1.2v - 200MHz DDR */
57 #define PRCM_PCLK_OPP2           1    /* ARM=500MHz - VDD1=1.20v */
58
59 /* PER clock options, only uncomment 1 */
60 /* Uncomment to run PER M2 at 2x 96MHz */
61 /* #define CONFIG_PER_M2_192 */
62 /* Uncomment to run PER SGX at 192MHz */
63 /*define CONFIG_PER_SGX_192*/
64
65 /* Uncommend to run PER at 2x 96MHz */
66
67 #undef CONFIG_USE_IRQ                 /* no support for IRQs */
68 #define CONFIG_MISC_INIT_R
69
70 #define CONFIG_CMDLINE_TAG       1    /* enable passing of ATAGs */
71 #define CONFIG_SETUP_MEMORY_TAGS 1
72 #define CONFIG_INITRD_TAG        1
73 #define CONFIG_REVISION_TAG      1
74
75 /*
76  * Size of malloc() pool
77  */
78 #define CFG_ENV_SIZE             SZ_128K    /* Total Size Environment Sector */
79 #define CFG_MALLOC_LEN           (CFG_ENV_SIZE + SZ_128K)
80 #define CFG_GBL_DATA_SIZE        128  /* bytes reserved for initial data */
81
82 /*
83  * Hardware drivers
84  */
85
86 /*
87  * NS16550 Configuration:
88  *  Zoom2 has external TL16CP754C
89  */
90 #define CONFIG_SERIAL_MULTI      1
91 /* 0 - 1 : first  USB with respect to the left edge of the debug board
92    2 - 3 : second USB with respect to the left edge of the debug board */
93 #define DEFAULT_ZOOM2_SERIAL_DEVICE (&zoom2_serial_device0)
94
95 #define V_NS16550_CLK            (1843200)  /* 1.8432 Mhz */
96
97 #define CFG_NS16550
98 #define CFG_NS16550_REG_SIZE     (-2)
99 #define CFG_NS16550_CLK          V_NS16550_CLK
100 #define CONFIG_BAUDRATE          115200
101 #define CFG_BAUDRATE_TABLE       {115200}
102
103 /* allow to overwrite serial and ethaddr */
104 #define CONFIG_ENV_OVERWRITE
105 #define CONFIG_MMC              1
106 #define CFG_MMC_BASE            0xF0000000
107 #define CONFIG_DOS_PARTITION    1
108
109 #define NET_CMDS                 (CFG_CMD_DHCP|CFG_CMD_NFS|CFG_CMD_NET)
110
111 #ifndef CONFIG_OPTIONAL_NOR_POPULATED
112 //#define C_MSK (CFG_CMD_FLASH | CFG_CMD_IMLS)
113 #define C_MSK (CFG_CMD_IMLS | CFG_CMD_FLASH)
114 #endif
115
116 /* Config CMD*/
117 #if defined(CONFIG_STORAGE_NAND)
118 #define CONFIG_COMMANDS         ((CFG_CMD_I2C | CONFIG_CMD_DFL | CFG_CMD_DHCP |\
119                                   CFG_CMD_FAT | CFG_CMD_MMC |\
120                                   CFG_CMD_NAND) & ~(C_MSK))
121 #elif defined(CONFIG_STORAGE_EMMC)
122 #define CONFIG_COMMANDS         ((CFG_CMD_I2C | CONFIG_CMD_DFL | CFG_CMD_DHCP |\
123                                   CFG_CMD_FAT | CFG_CMD_MMC) & ~(C_MSK))
124 #endif
125
126 #define CONFIG_BOOTP_MASK        CONFIG_BOOTP_DEFAULT
127
128 /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
129 #include <cmd_confdefs.h>
130
131 #if (CONFIG_COMMANDS & CFG_CMD_NET)
132 /*
133  * SMC91c96 Etherent
134  */
135 #define CONFIG_DRIVER_SMSC9118
136 #define CONFIG_SMSC9118_BASE     (DEBUG_BASE)
137 #endif
138
139 #if (CONFIG_COMMANDS & CFG_CMD_I2C)
140 #define CFG_I2C_SPEED            400
141 #define CFG_I2C_SLAVE            1
142 #define CFG_I2C_BUS              0
143 #define CFG_I2C_BUS_SELECT       1
144 #define CONFIG_DRIVER_OMAP34XX_I2C 1
145 #endif
146
147 #if defined(CONFIG_STORAGE_NAND)
148 /*
149  *  Board NAND Info.
150  */
151 #define CFG_NAND_ADDR NAND_BASE  /* physical address to access nand*/
152 #define CFG_NAND_BASE NAND_BASE  /* physical address to access nand at CS0*/
153 #define CFG_NAND_WIDTH_16
154
155 #define CFG_MAX_NAND_DEVICE      1 /* Max number of NAND devices */
156 #define SECTORSIZE               512
157
158 /* To use the 256/512 byte s/w ecc define CFG_SW_ECC_(256/512) */
159 /* Use the 512 byte ROM CODE HW ecc */
160 #define CFG_HW_ECC_ROMCODE     1
161
162 #define NAND_ALLOW_ERASE_ALL
163 #define ADDR_COLUMN              1
164 #define ADDR_PAGE                2
165 #define ADDR_COLUMN_PAGE         3
166
167 #define NAND_ChipID_UNKNOWN      0x00
168 #define NAND_MAX_FLOORS          1
169 #define NAND_NO_RB               1
170 #define CFG_NAND_WP
171 #endif
172
173 #define NAND_MAX_CHIPS           1
174
175 #define CONFIG_BOOTDELAY         3
176 #define CONFIG_ZERO_BOOTDELAY_CHECK     /* check for keypress on bootdelay==0 */
177
178 #define CONFIG_EXTRA_ENV_SETTINGS               \
179 "loadaddr=0x81c00000\0"                 \
180 "nandloadaddr=0x81000000\0"                     \
181 "console=ttyS3,115200n8\0"                      \
182 "mmcroot=/dev/mmcblk0p2\0"                      \
183 "nandroot=/dev/ram0\0"                          \
184 "mmcargs=setenv bootargs console=${console} "   \
185                 "root=${mmcroot} rootdelay=2\0" \
186 "nandargs=setenv bootargs console=${console} "  \
187                 "rootdelay=2\0"                 \
188 "loaduimage=fatload mmc 0:1 ${loadaddr} uImage\0"\
189 "mmcboot=echo Booting from mmc ...;"            \
190         " run mmcargs;"                         \
191         " bootm ${loadaddr}\0"                  \
192 "nandboot=echo Booting from nand ...;"          \
193                 " nand unlock;"                 \
194                 " nand read.i ${nandloadaddr}"  \
195                 " ${kernel_nand_offset}"        \
196                 " ${kernel_nand_size};"         \
197                 " run nandargs;"                \
198                 " bootm ${nandloadaddr}\0"      \
199 "autoboot=if mmc init 0; then"                  \
200                 " run loaduimage;"              \
201                 " run mmcboot;"                 \
202         " else run nandboot;"                   \
203         " fi;\0"                                \
204
205 #define CONFIG_BOOTCOMMAND "run autoboot"
206
207 #ifdef NFS_BOOT_DEFAULTS
208 #define CONFIG_BOOTARGS "mem=64M console=ttyS3,115200n8 noinitrd root=/dev/nfs rw nfsroot=128.247.77.158:/home/a0384864/wtbu/rootfs ip=dhcp"
209 #else
210 #define CONFIG_BOOTARGS "root=/dev/ram0 rw mem=64M console=ttyS3,115200n8 initrd=0x80600000,8M ramdisk_size=8192"
211 #endif
212
213 #define CONFIG_NETMASK           255.255.254.0
214 #define CONFIG_IPADDR            128.247.77.90
215 #define CONFIG_SERVERIP          128.247.77.158
216 #define CONFIG_BOOTFILE          "uImage"
217 #define CONFIG_AUTO_COMPLETE     1
218 /*
219  * Miscellaneous configurable options
220  */
221 #define V_PROMPT                 "OMAP36XX ZOOM3 # "
222
223 #define CFG_LONGHELP             /* undef to save memory */
224 #define CFG_PROMPT               V_PROMPT
225 #define CFG_CBSIZE               256  /* Console I/O Buffer Size */
226 /* Print Buffer Size */
227 #define CFG_PBSIZE               (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)
228 #define CFG_MAXARGS              24          /* max number of command args */
229 #define CFG_BARGSIZE             CFG_CBSIZE  /* Boot Argument Buffer Size */
230
231 #define CFG_MEMTEST_START        (OMAP34XX_SDRC_CS0)  /* memtest works on */
232 #define CFG_MEMTEST_END          (OMAP34XX_SDRC_CS0+SZ_31M)
233
234 #undef  CFG_CLKS_IN_HZ           /* everything, incl board info, in Hz */
235
236 #define CFG_LOAD_ADDR            (OMAP34XX_SDRC_CS0) /* default load address */
237
238 /* 2430 has 12 GP timers, they can be driven by the SysClk (12/13/19.2) or by
239  * 32KHz clk, or from external sig. This rate is divided by a local divisor.
240  */
241 #define V_PVT                    7
242
243 #define CFG_TIMERBASE            OMAP34XX_GPT2
244 #define CFG_PVT                  V_PVT  /* 2^(pvt+1) */
245 #define CFG_HZ                   ((V_SCLK)/(2 << CFG_PVT))
246
247 /*-----------------------------------------------------------------------
248  * Stack sizes
249  *
250  * The stack sizes are set up in start.S using the settings below
251  */
252 #define CONFIG_STACKSIZE        SZ_128K /* regular stack */
253 #ifdef CONFIG_USE_IRQ
254 #define CONFIG_STACKSIZE_IRQ    SZ_4K   /* IRQ stack */
255 #define CONFIG_STACKSIZE_FIQ    SZ_4K   /* FIQ stack */
256 #endif
257
258 /*-----------------------------------------------------------------------
259  * Physical Memory Map
260  */
261 #define CONFIG_NR_DRAM_BANKS    2       /* CS1 may or may not be populated */
262 #define PHYS_SDRAM_1            OMAP34XX_SDRC_CS0
263 #define PHYS_SDRAM_1_SIZE       SZ_32M            /* at least 32 meg */
264 #define PHYS_SDRAM_2            OMAP34XX_SDRC_CS1
265
266 /* SDRAM Bank Allocation method */
267 /*#define SDRC_B_R_C            1 */
268 /*#define SDRC_B1_R_B0_C        1 */
269 #define SDRC_R_B_C              1
270
271 /*-----------------------------------------------------------------------
272  * FLASH and environment organization
273  */
274
275 /* **** PISMO SUPPORT *** */
276
277 /* Configure the PISMO */
278 /** REMOVE ME ***/
279 #define PISMO1_NOR_SIZE_SDPV2   GPMC_SIZE_128M
280 #define PISMO1_NOR_SIZE         GPMC_SIZE_64M
281
282 #define PISMO1_NAND_SIZE        GPMC_SIZE_128M
283 #define PISMO1_ONEN_SIZE        GPMC_SIZE_128M
284 #define DBG_MPDB_SIZE           GPMC_SIZE_16M
285 #define PISMO2_SIZE             0
286 #define SERIAL_TL16CP754C_SIZE  GPMC_SIZE_16M
287
288 #define CFG_MAX_FLASH_SECT      (520)           /* max number of sectors on one chip */
289 #define CFG_MAX_FLASH_BANKS      2              /* max number of flash banks */
290 #define CFG_MONITOR_LEN         SZ_256K         /* Reserve 2 sectors */
291
292 #define PHYS_FLASH_SIZE_SDPV2   SZ_128M
293 #define PHYS_FLASH_SIZE         SZ_32M
294
295 #if defined(CONFIG_STORAGE_NAND)
296 #define CFG_FLASH_BASE          boot_flash_base
297 #define PHYS_FLASH_SECT_SIZE    boot_flash_sec
298 /* Dummy declaration of flash banks to get compilation right */
299 #define CFG_FLASH_BANKS_LIST    {0, 0}
300
301 #define CFG_MONITOR_BASE        CFG_FLASH_BASE /* Monitor at start of flash */
302
303 #if 1
304 #define CFG_ENV_IS_IN_NAND      1
305 #define ENV_IS_VARIABLE         1
306 #else
307 #define CFG_ENV_IS_NOWHERE      1
308 #endif
309
310 #ifdef CONFIG_OPTIONAL_NOR_POPULATED
311 # define CFG_ENV_IS_IN_FLASH    1
312 #endif
313
314 #define SMNAND_ENV_OFFSET       0x1c0000 /* environment starts here  */
315
316 #define CFG_ENV_SECT_SIZE       boot_flash_sec
317 #define CFG_ENV_OFFSET          boot_flash_off
318 #define CFG_ENV_ADDR            boot_flash_env_addr
319 #endif
320
321 #if defined(CONFIG_STORAGE_EMMC)
322 #define CFG_MONITOR_BASE       CFG_FLASH_BASE /* Monitor at start of flash */
323
324 /* eMMC Variables */
325 #define CFG_ENV_IS_IN_EMMC     1
326 #define CFG_FLASH_BASE         0x0
327 #define CFG_ENV_SECT_SIZE      SZ_128K
328 #define CFG_ENV_OFFSET         0x700
329 #define CFG_ENV_ADDR           0x700
330
331 #define ENV_IS_VARIABLE        1
332 #endif
333 /*-----------------------------------------------------------------------
334  * CFI FLASH driver setup
335  */
336 #ifndef CONFIG_OPTIONAL_NOR_POPULATED
337 #define CFG_NO_FLASH    1            /* Disable NOR Flash support */
338 #else
339 #define CFG_FLASH_CFI           1    /* Flash memory is CFI compliant */
340 #define CFG_FLASH_CFI_DRIVER    1    /* Use drivers/cfi_flash.c */
341 #if (!ENV_IS_VARIABLE)
342 /* saveenv fails when this variable is defined. 
343    If env is variable, do not use buffered writes */
344 #define CFG_FLASH_USE_BUFFER_WRITE 1    /* Use buffered writes (~10x faster) */
345 #endif
346 #define CFG_FLASH_PROTECTION    1    /* Use hardware sector protection */
347 #define CFG_FLASH_QUIET_TEST    1    /* Dont crib abt missing chips */
348 #define CFG_FLASH_CFI_WIDTH     0x02
349 /* timeout values are in ticks */
350 #define CFG_FLASH_ERASE_TOUT    (100*CFG_HZ) /* Timeout for Flash Erase */
351 #define CFG_FLASH_WRITE_TOUT    (100*CFG_HZ) /* Timeout for Flash Write */
352
353 /* Flash banks JFFS2 should use */
354 #define CFG_MAX_MTD_BANKS       (CFG_MAX_FLASH_BANKS+CFG_MAX_NAND_DEVICE)
355 #define CFG_JFFS2_MEM_NAND
356 #define CFG_JFFS2_FIRST_BANK    CFG_MAX_FLASH_BANKS /* use flash_info[2] */
357 #define CFG_JFFS2_NUM_BANKS     1
358 #define CONFIG_LED_INFOnand_read_buf16
359 #define CONFIG_LED_LEN          16
360 #endif  /* optional NOR flash */
361
362 #ifndef __ASSEMBLY__
363 extern unsigned int nand_cs_base;
364 extern unsigned int boot_flash_base;
365 extern volatile unsigned int boot_flash_env_addr;
366 extern unsigned int boot_flash_off;
367 extern unsigned int boot_flash_sec;
368 extern unsigned int boot_flash_type;
369 #endif
370
371 #if defined(CONFIG_STORAGE_NAND)
372 #define WRITE_NAND_COMMAND(d, adr) __raw_writew(d, (nand_cs_base + GPMC_NAND_CMD))
373 #define WRITE_NAND_ADDRESS(d, adr) __raw_writew(d, (nand_cs_base + GPMC_NAND_ADR))
374 #define WRITE_NAND(d, adr) __raw_writew(d, (nand_cs_base + GPMC_NAND_DAT))
375 #define READ_NAND(adr) __raw_readw((nand_cs_base + GPMC_NAND_DAT))
376
377 /* Other NAND Access APIs */
378 #define NAND_WP_OFF()  do {*(volatile u32 *)(GPMC_CONFIG) |= 0x00000010;} while(0)
379 #define NAND_WP_ON()  do {*(volatile u32 *)(GPMC_CONFIG) &= ~0x00000010;} while(0)
380 #define NAND_DISABLE_CE(nand)
381 #define NAND_ENABLE_CE(nand)
382 #define NAND_WAIT_READY(nand)   udelay(10)
383 #endif
384
385 /* Fastboot variables */
386 #define CFG_FASTBOOT_MMC_NO               1    /* Use eMMC */
387 #define CFG_FASTBOOT_TRANSFER_BUFFER (PHYS_SDRAM_1 + SZ_16M)
388 #define CFG_FASTBOOT_TRANSFER_BUFFER_SIZE (SZ_512M - SZ_16M)
389 #define CFG_FASTBOOT_PREBOOT_KEYS         1
390 #define CFG_FASTBOOT_PREBOOT_KEY1         0x37 /* 'ok' */
391 #define CFG_FASTBOOT_PREBOOT_KEY2         0x00 /* unused */
392 #define CFG_FASTBOOT_PREBOOT_INITIAL_WAIT (0)
393 #define CFG_FASTBOOT_PREBOOT_LOOP_MAXIMUM (1)
394 #define CFG_FASTBOOT_PREBOOT_LOOP_WAIT    (0)
395
396 #if defined(CONFIG_STORAGE_NAND)
397 /* Yaffs variables */
398 #define CFG_NAND_YAFFS_WRITE
399 #endif
400
401 /* Zoom2 Battery charging enable */
402 #define CFG_BATTERY_CHARGING
403
404 /* Zoom2 Battery threshold */
405 #define CFG_LOW_BAT 3300 /* 3.3V */
406 #define CFG_BAT_CHG 4000 /* 4.0V */
407
408 /* Zoom2 charger tries */
409 #define CFG_CHARGER_TRIES_MAX 100
410
411 /* Command shell */
412 #define CFG_HUSH_PARSER
413 #define CFG_PROMPT_HUSH_PS2 "> "
414
415 /* Clock command */
416 #define CONFIG_CMD_CLOCK                1
417 #define CONFIG_CMD_CLOCK_INFO_CPU       1
418
419 /* Voltage command */
420 #define CONFIG_CMD_VOLTAGE              1
421
422 #endif                           /* __CONFIG_H */