blob: 74b7fe85800f4c5242b08612ae132931fcbf9fa4 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Heiko Schocher499c4982013-08-19 16:39:01 +02002/*
3 * siemens am33x common board options
4 * (C) Copyright 2013 Siemens Schweiz AG
5 * (C) Heiko Schocher, DENX Software Engineering, hs@denx.de.
6 *
7 * Based on:
8 * U-Boot file:/include/configs/am335x_evm.h
9 *
Nishanth Menoneaa39c62023-11-01 15:56:03 -050010 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
Heiko Schocher499c4982013-08-19 16:39:01 +020011 */
12
13#ifndef __CONFIG_SIEMENS_AM33X_COMMON_H
14#define __CONFIG_SIEMENS_AM33X_COMMON_H
15
Heiko Schocher499c4982013-08-19 16:39:01 +020016#include <asm/arch/omap.h>
17
Heiko Schocher499c4982013-08-19 16:39:01 +020018/* commands to include */
Heiko Schocher499c4982013-08-19 16:39:01 +020019
Heiko Schocher499c4982013-08-19 16:39:01 +020020/* Clock Defines */
21#define V_OSCK 24000000 /* Clock output from T2 */
22#define V_SCLK (V_OSCK)
23
Heiko Schocher499c4982013-08-19 16:39:01 +020024/* Console I/O Buffer Size */
Heiko Schocher499c4982013-08-19 16:39:01 +020025
Heiko Schocher499c4982013-08-19 16:39:01 +020026/*
27 * memtest works on 8 MB in DRAM after skipping 32MB from
28 * start addr of ram disk
29 */
Heiko Schocher499c4982013-08-19 16:39:01 +020030
Heiko Schocher499c4982013-08-19 16:39:01 +020031 /* Physical Memory Map */
Heiko Schocher499c4982013-08-19 16:39:01 +020032#define PHYS_DRAM_1 0x80000000 /* DRAM Bank #1 */
33
Tom Rinibb4dd962022-11-16 13:10:37 -050034#define CFG_SYS_SDRAM_BASE PHYS_DRAM_1
Heiko Schocher499c4982013-08-19 16:39:01 +020035 /* Platform/Board specific defs */
Tom Rini6a5dccc2022-11-16 13:10:41 -050036#define CFG_SYS_TIMERBASE 0x48040000 /* Use Timer2 */
Heiko Schocher499c4982013-08-19 16:39:01 +020037
38/* NS16550 Configuration */
Tom Rinidf6a2152022-11-16 13:10:28 -050039#define CFG_SYS_NS16550_CLK (48000000)
40#define CFG_SYS_NS16550_COM1 0x44e09000
41#define CFG_SYS_NS16550_COM4 0x481a6000
Heiko Schocher499c4982013-08-19 16:39:01 +020042
Heiko Schocher499c4982013-08-19 16:39:01 +020043/* I2C Configuration */
Heiko Schocher499c4982013-08-19 16:39:01 +020044
45/* Defines for SPL */
Heiko Schocher499c4982013-08-19 16:39:01 +020046
Tom Rinib4213492022-11-12 17:36:51 -050047#define CFG_SYS_NAND_ECCPOS { 2, 3, 4, 5, 6, 7, 8, 9, \
Heiko Schocher499c4982013-08-19 16:39:01 +020048 10, 11, 12, 13, 14, 15, 16, 17, \
49 18, 19, 20, 21, 22, 23, 24, 25, \
50 26, 27, 28, 29, 30, 31, 32, 33, \
51 34, 35, 36, 37, 38, 39, 40, 41, \
52 42, 43, 44, 45, 46, 47, 48, 49, \
53 50, 51, 52, 53, 54, 55, 56, 57, }
54
Tom Rinib4213492022-11-12 17:36:51 -050055#define CFG_SYS_NAND_ECCSIZE 512
56#define CFG_SYS_NAND_ECCBYTES 14
Heiko Schocher499c4982013-08-19 16:39:01 +020057
Tom Rinib4213492022-11-12 17:36:51 -050058#define CFG_SYS_NAND_U_BOOT_START CONFIG_TEXT_BASE
Heiko Schocher499c4982013-08-19 16:39:01 +020059
Heiko Schocher499c4982013-08-19 16:39:01 +020060/*
61 * 1MB into the SDRAM to allow for SPL's bss at the beginning of SDRAM
62 * 64 bytes before this address should be set aside for u-boot.img's
63 * header. That is 0x800FFFC0--0x80100000 should not be used for any
64 * other needs.
65 */
Heiko Schocher499c4982013-08-19 16:39:01 +020066
67/*
68 * Since SPL did pll and ddr initialization for us,
69 * we don't need to do it twice.
70 */
Heiko Schocher499c4982013-08-19 16:39:01 +020071
Heiko Schocher499c4982013-08-19 16:39:01 +020072/* USB Device Firmware Update support */
Heiko Schocherea75c472014-03-18 08:09:57 +010073#define DFU_MANIFEST_POLL_TIMEOUT 25000
Heiko Schocher499c4982013-08-19 16:39:01 +020074
Heiko Schocher499c4982013-08-19 16:39:01 +020075/*
76 * Default to using SPI for environment, etc. We have multiple copies
77 * of SPL as the ROM will check these locations.
78 * 0x0 - 0x20000 : First copy of SPL
79 * 0x20000 - 0x40000 : Second copy of SPL
80 * 0x40000 - 0x60000 : Third copy of SPL
81 * 0x60000 - 0x80000 : Fourth copy of SPL
82 * 0x80000 - 0xDF000 : U-Boot
83 * 0xDF000 - 0xE0000 : U-Boot Environment
84 * 0xE0000 - 0x442000 : Linux Kernel
85 * 0x442000 - 0x800000 : Userland
86 */
Heiko Schocher499c4982013-08-19 16:39:01 +020087
Heiko Schocher499c4982013-08-19 16:39:01 +020088/* NAND support */
Miquel Raynald0935362019-10-03 19:50:03 +020089#ifdef CONFIG_MTD_RAW_NAND
Heiko Schocherd17c3fc2015-06-16 14:59:34 +020090/* UBI Support */
Heiko Schocher499c4982013-08-19 16:39:01 +020091
Heiko Schocherd17c3fc2015-06-16 14:59:34 +020092/* Commen environment */
Heiko Schocherd17c3fc2015-06-16 14:59:34 +020093#define COMMON_ENV_DFU_ARGS "dfu_args=run bootargs_defaults;" \
94 "setenv bootargs ${bootargs};" \
95 "mtdparts default;" \
96 "draco_led 1;" \
97 "dfu 0 nand 0;" \
98 "draco_led 0;\0" \
99
100#define COMMON_ENV_NAND_BOOT \
101 "nand_boot=echo Booting from nand; " \
102 "if test ${upgrade_available} -eq 1; then " \
103 "if test ${bootcount} -gt ${bootlimit}; " \
104 "then " \
105 "setenv upgrade_available 0;" \
106 "setenv ${partitionset_active} true;" \
107 "if test -n ${A}; then " \
108 "setenv partitionset_active B; " \
109 "env delete A; " \
110 "fi;" \
111 "if test -n ${B}; then " \
112 "setenv partitionset_active A; " \
113 "env delete B; " \
114 "fi;" \
115 "saveenv; " \
116 "fi;" \
117 "fi;" \
118 "echo set ${partitionset_active}...;" \
119 "run nand_args; "
120
121#define COMMON_ENV_NAND_CMDS "flash_self=run nand_boot\0" \
122 "flash_self_test=setenv testargs test; " \
123 "run nand_boot\0" \
124 "dfu_start=echo Preparing for dfu mode ...; " \
125 "run dfu_args; \0"
126
127#define COMMON_ENV_SETTINGS \
128 "verify=no \0" \
129 "project_dir=targetdir\0" \
130 "upgrade_available=0\0" \
131 "altbootcmd=run bootcmd\0" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200132 "partitionset_active=A\0" \
133 "loadaddr=0x82000000\0" \
134 "kloadaddr=0x81000000\0" \
135 "script_addr=0x81900000\0" \
136 "console=console=ttyMTD,mtdoops console=ttyO0,115200n8 panic=5\0" \
137 "nfsopts=nolock rw\0" \
138 "ip_method=none\0" \
139 "bootenv=uEnv.txt\0" \
140 "bootargs_defaults=setenv bootargs " \
141 "console=${console} " \
142 "${testargs} " \
143 "${optargs}\0" \
144 "siemens_help=echo; "\
145 "echo Type 'run flash_self' to use kernel and root " \
146 "filesystem on memory; echo Type 'run flash_self_test' to " \
147 "use kernel and root filesystem on memory, boot in test " \
148 "mode; echo Not ready yet: 'run flash_nfs' to use kernel " \
149 "from memory and root filesystem over NFS; echo Type " \
150 "'run net_nfs' to get Kernel over TFTP and mount root " \
151 "filesystem over NFS; " \
152 "echo Set partitionset_active variable to 'A' " \
153 "or 'B' to select kernel and rootfs partition; " \
154 "echo" \
155 "\0"
156
Heiko Schocher499c4982013-08-19 16:39:01 +0200157/*
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200158 * Variant 1 partition layout
Heiko Schocher499c4982013-08-19 16:39:01 +0200159 * chip-size = 256MiB
160 *| name | size | address area |
161 *-------------------------------------------------------
162 *| spl | 128.000 KiB | 0x 0..0x 1ffff |
163 *| spl.backup1 | 128.000 KiB | 0x 20000..0x 3ffff |
164 *| spl.backup2 | 128.000 KiB | 0x 40000..0x 5ffff |
165 *| spl.backup3 | 128.000 KiB | 0x 60000..0x 7ffff |
166 *| u-boot | 1.875 MiB | 0x 80000..0x 25ffff |
167 *| uboot.env | 128.000 KiB | 0x 260000..0x 27ffff |
168 *| kernel_a | 5.000 MiB | 0x 280000..0x 77ffff |
169 *| kernel_b | 5.000 MiB | 0x 780000..0x c7ffff |
170 *| mtdoops | 8.000 MiB | 0x c80000..0x 147ffff |
171 *| rootfs | 235.500 MiB | 0x 1480000..0x fffffff |
172 *-------------------------------------------------------
Tom Rini5ad8e112017-10-22 17:55:07 -0400173
174 "mtdparts=omap2-nand.0:" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200175 "128k(spl)," \
176 "128k(spl.backup1)," \
177 "128k(spl.backup2)," \
178 "128k(spl.backup3)," \
179 "1920k(u-boot)," \
180 "128k(uboot.env)," \
181 "5120k(kernel_a)," \
182 "5120k(kernel_b)," \
183 "8192k(mtdoops)," \
184 "-(rootfs)"
Tom Rini5ad8e112017-10-22 17:55:07 -0400185 */
Heiko Schocher499c4982013-08-19 16:39:01 +0200186
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200187#define DFU_ALT_INFO_NAND_V1 \
Heiko Schocher499c4982013-08-19 16:39:01 +0200188 "spl part 0 1;" \
189 "spl.backup1 part 0 2;" \
190 "spl.backup2 part 0 3;" \
191 "spl.backup3 part 0 4;" \
192 "u-boot part 0 5;" \
193 "u-boot.env part 0 6;" \
194 "kernel_a part 0 7;" \
195 "kernel_b part 0 8;" \
196 "rootfs partubi 0 10"
197
Tom Rini798a5822022-12-04 10:03:42 -0500198#define CFG_ENV_SETTINGS_NAND_V1 \
Heiko Schocher499c4982013-08-19 16:39:01 +0200199 "nand_active_ubi_vol=rootfs_a\0" \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100200 "nand_active_ubi_vol_A=rootfs_a\0" \
201 "nand_active_ubi_vol_B=rootfs_b\0" \
Michael Trimarchi034d8ff2022-05-22 15:22:08 +0200202 "nand_root_fs_type=ubifs rootwait\0" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200203 "nand_src_addr=0x280000\0" \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100204 "nand_src_addr_A=0x280000\0" \
205 "nand_src_addr_B=0x780000\0" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200206 "nand_args=run bootargs_defaults;" \
207 "mtdparts default;" \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100208 "setenv ${partitionset_active} true;" \
209 "if test -n ${A}; then " \
210 "setenv nand_active_ubi_vol ${nand_active_ubi_vol_A};" \
211 "setenv nand_src_addr ${nand_src_addr_A};" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200212 "fi;" \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100213 "if test -n ${B}; then " \
214 "setenv nand_active_ubi_vol ${nand_active_ubi_vol_B};" \
215 "setenv nand_src_addr ${nand_src_addr_B};" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200216 "fi;" \
217 "setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
Heiko Schochercbec11a2016-06-07 08:55:45 +0200218 "ubi.mtd=9,${ubi_off};" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200219 "setenv bootargs ${bootargs} " \
220 "root=${nand_root} noinitrd ${mtdparts} " \
221 "rootfstype=${nand_root_fs_type} ip=${ip_method} " \
222 "console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
223 "=mtdoops\0" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200224 COMMON_ENV_DFU_ARGS \
225 "dfu_alt_info=" DFU_ALT_INFO_NAND_V1 "\0" \
226 COMMON_ENV_NAND_BOOT \
227 "nand read.i ${kloadaddr} ${nand_src_addr} " \
228 "${nand_img_size}; bootm ${kloadaddr}\0" \
229 COMMON_ENV_NAND_CMDS
230
Tom Rini70ffd782022-12-04 10:03:44 -0500231#define CFG_ENV_SETTINGS_V1 \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200232 COMMON_ENV_SETTINGS \
Heiko Schocher499c4982013-08-19 16:39:01 +0200233 "net_args=run bootargs_defaults;" \
234 "mtdparts default;" \
235 "setenv bootfile ${project_dir}/kernel/uImage;" \
236 "setenv rootpath /home/projects/${project_dir}/rootfs;" \
237 "setenv bootargs ${bootargs} " \
238 "root=/dev/nfs ${mtdparts} " \
239 "nfsroot=${serverip}:${rootpath},${nfsopts} " \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100240 "ip=${ipaddr}:${serverip}:" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200241 "${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200242 "net_nfs=echo Booting from network ...; " \
243 "run net_args; " \
244 "tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
245 "bootm ${kloadaddr}\0"
246
247/*
Tom Rini5ad8e112017-10-22 17:55:07 -0400248 * Variant 2 partition layout (default)
Egli, Samuel21c5f722015-07-01 17:57:39 +0200249 * chip-size = 256MiB or 512 MiB
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200250 *| name | size | address area |
251 *-------------------------------------------------------
252 *| spl | 128.000 KiB | 0x 0..0x 1ffff |
253 *| spl.backup1 | 128.000 KiB | 0x 20000..0x 3ffff |
254 *| spl.backup2 | 128.000 KiB | 0x 40000..0x 5ffff |
255 *| spl.backup3 | 128.000 KiB | 0x 60000..0x 7ffff |
256 *| u-boot | 1.875 MiB | 0x 80000..0x 25ffff |
257 *| uboot.env0 | 512.000 KiB | 0x 260000..0x 2Dffff |
258 *| uboot.env1 | 512.000 KiB | 0x 2E0000..0x 35ffff |
Egli, Samuel21c5f722015-07-01 17:57:39 +0200259 *| mtdoops | 512.000 KiB | 0x 360000..0x 3dffff |
260 *| (256) rootfs | 252.125 MiB | 0x 3E0000..0x fffffff |
261 *| (512) rootfs | 508.125 MiB | 0x 3E0000..0x1fffffff |
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200262 *-------------------------------------------------------
263 */
264
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200265#define DFU_ALT_INFO_NAND_V2 \
266 "spl part 0 1;" \
267 "spl.backup1 part 0 2;" \
268 "spl.backup2 part 0 3;" \
269 "spl.backup3 part 0 4;" \
270 "u-boot part 0 5;" \
271 "u-boot.env0 part 0 6;" \
272 "u-boot.env1 part 0 7;" \
Egli, Samuel21c5f722015-07-01 17:57:39 +0200273 "rootfs partubi 0 9" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200274
Tom Rini51ec9bd2022-12-04 10:03:43 -0500275#define CFG_ENV_SETTINGS_NAND_V2 \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200276 "nand_active_ubi_vol=rootfs_a\0" \
277 "rootfs_name=rootfs\0" \
278 "kernel_name=uImage\0"\
Michael Trimarchi034d8ff2022-05-22 15:22:08 +0200279 "nand_root_fs_type=ubifs rootwait\0" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200280 "nand_args=run bootargs_defaults;" \
281 "mtdparts default;" \
282 "setenv ${partitionset_active} true;" \
283 "if test -n ${A}; then " \
284 "setenv nand_active_ubi_vol ${rootfs_name}_a;" \
Samuel Egli8069bfe2013-11-04 14:05:03 +0100285 "fi;" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200286 "if test -n ${B}; then " \
287 "setenv nand_active_ubi_vol ${rootfs_name}_b;" \
288 "fi;" \
289 "setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
Egli, Samuel21c5f722015-07-01 17:57:39 +0200290 "ubi.mtd=rootfs,2048;" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200291 "setenv bootargs ${bootargs} " \
292 "root=${nand_root} noinitrd ${mtdparts} " \
293 "rootfstype=${nand_root_fs_type} ip=${ip_method} " \
294 "console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
295 "=mtdoops\0" \
296 COMMON_ENV_DFU_ARGS \
297 "dfu_alt_info=" DFU_ALT_INFO_NAND_V2 "\0" \
298 COMMON_ENV_NAND_BOOT \
Heiko Schochercbec11a2016-06-07 08:55:45 +0200299 "ubi part rootfs ${ubi_off};" \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200300 "ubifsmount ubi0:${nand_active_ubi_vol};" \
301 "ubifsload ${kloadaddr} boot/${kernel_name};" \
302 "ubifsload ${loadaddr} boot/${dtb_name}.dtb;" \
303 "bootm ${kloadaddr} - ${loadaddr}\0" \
304 "nand_boot_backup=ubifsload ${loadaddr} boot/am335x-draco.dtb;" \
305 "bootm ${kloadaddr} - ${loadaddr}\0" \
306 COMMON_ENV_NAND_CMDS
307
Tom Rinicbd97e72022-12-04 10:03:45 -0500308#define CFG_ENV_SETTINGS_V2 \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200309 COMMON_ENV_SETTINGS \
310 "net_args=run bootargs_defaults;" \
311 "mtdparts default;" \
312 "setenv bootfile ${project_dir}/kernel/uImage;" \
313 "setenv bootdtb ${project_dir}/kernel/dtb;" \
314 "setenv rootpath /home/projects/${project_dir}/rootfs;" \
315 "setenv bootargs ${bootargs} " \
316 "root=/dev/nfs ${mtdparts} " \
317 "nfsroot=${serverip}:${rootpath},${nfsopts} " \
318 "ip=${ipaddr}:${serverip}:" \
319 "${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
Heiko Schocher499c4982013-08-19 16:39:01 +0200320 "net_nfs=echo Booting from network ...; " \
321 "run net_args; " \
322 "tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
Heiko Schocherd17c3fc2015-06-16 14:59:34 +0200323 "tftpboot ${loadaddr} ${serverip}:${bootdtb}; " \
324 "bootm ${kloadaddr} - ${loadaddr}\0"
325
Heiko Schocherb7a6d142015-06-15 14:56:41 +0200326/*
327 * Variant 3 partition layout
328 * chip-size = 512MiB
329 *| name | size | address area |
330 *-------------------------------------------------------
331 *| spl | 128.000 KiB | 0x 0..0x 1ffff |
332 *| spl.backup1 | 128.000 KiB | 0x 20000..0x 3ffff |
333 *| spl.backup2 | 128.000 KiB | 0x 40000..0x 5ffff |
334 *| spl.backup3 | 128.000 KiB | 0x 60000..0x 7ffff |
335 *| u-boot | 1.875 MiB | 0x 80000..0x 25ffff |
336 *| uboot.env0 | 512.000 KiB | 0x 260000..0x 2Dffff |
337 *| uboot.env1 | 512.000 KiB | 0x 2E0000..0x 35ffff |
338 *| rootfs | 300.000 MiB | 0x 360000..0x12f5ffff |
339 *| mtdoops | 512.000 KiB | 0x12f60000..0x12fdffff |
340 *|configuration | 104.125 MiB | 0x12fe0000..0x1fffffff |
341 *-------------------------------------------------------
Heiko Schocherb7a6d142015-06-15 14:56:41 +0200342
Tom Rini5ad8e112017-10-22 17:55:07 -0400343 "mtdparts=omap2-nand.0:" \
Heiko Schocherb7a6d142015-06-15 14:56:41 +0200344 "128k(spl)," \
345 "128k(spl.backup1)," \
346 "128k(spl.backup2)," \
347 "128k(spl.backup3)," \
348 "1920k(u-boot)," \
349 "512k(u-boot.env0)," \
350 "512k(u-boot.env1)," \
351 "300m(rootfs)," \
352 "512k(mtdoops)," \
353 "-(configuration)"
354
Tom Rini5ad8e112017-10-22 17:55:07 -0400355 */
356
Tom Rinib4213492022-11-12 17:36:51 -0500357#define CFG_SYS_NAND_BASE (0x08000000) /* physical address */
Heiko Schocher499c4982013-08-19 16:39:01 +0200358 /* to access nand at */
359 /* CS0 */
Heiko Schocher499c4982013-08-19 16:39:01 +0200360#endif
361
Heiko Schocher499c4982013-08-19 16:39:01 +0200362#endif /* ! __CONFIG_SIEMENS_AM33X_COMMON_H */