1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2018
4  * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
5  *
6  * Copyright 2016 3ADEV <http://3adev.com>
7  * Written-by: Albert ARIBAUD <albert.aribaud@3adev.fr>
8  *
9  * Configuration settings for BK4R1.
10  */
11 
12 #ifndef __CONFIG_H
13 #define __CONFIG_H
14 
15 /* Define the BK4r1-specific env commands */
16 #define BK4_EXTRA_ENV_SETTINGS \
17 	"bootlimit=3\0" \
18 	"eraseuserdata=false\0" \
19 	"set_gpio103=mw 0x400ff0c4 0x0080; mw 0x4004819C 0x000011bf\0" \
20 	"set_gpio102=mw 0x400ff0c4 0x40; mw 0x40048198 0x000011bf\0" \
21 	"set_gpio96=mw 0x40048180 0x282; mw 0x400ff0c4 0x1\0"\
22 	"set_gpio122=mw 0x400481e8 0x0282; mw 0x400ff0c4 0x04000000\0"\
23 	"set_gpio6=mw 0x40048018 0x282; mw 0x400ff008 0x40\0"\
24 	"manage_userdata=" MANAGE_USERDATA "\0"\
25 	"ncenable=true\0"\
26 	"ncserverip=192.168.0.77\0"\
27 	"if_netconsole=ping $ncserverip\0"\
28 	"start_netconsole=setenv ncip $serverip; setenv bootdelay 10;" \
29 	     "setenv stdin nc; setenv stdout nc; setenv stderr nc; version;\0" \
30 	"preboot=" BK4_NET_INIT \
31 		"if ${ncenable}; then run if_netconsole start_netconsole; fi\0"
32 
33 /* Enable PREBOOT variable */
34 
35 /* BK4r1 net init sets GPIO122/PTE17 to enable Ethernet */
36 #define BK4_NET_INIT "run set_gpio122;"
37 
38 /* Check if userdata volume shall be erased */
39 #define MANAGE_USERDATA "if ${eraseuserdata}; " \
40 						"then ubi part system; " \
41 						"ubi remove userdata; " \
42 						"ubi create userdata; " \
43 						"ubi detach; " \
44 						"setenv eraseuserdata false; " \
45 						"saveenv; " \
46 						"fi; "
47 
48 #include <asm/arch/imx-regs.h>
49 #include <linux/sizes.h>
50 
51 /* NAND support */
52 
53 #define IMX_FEC1_BASE			ENET1_BASE_ADDR
54 
55 /* boot command, including the target-defined one if any */
56 
57 /* Extra env settings (including the target-defined ones if any) */
58 #define CFG_EXTRA_ENV_SETTINGS \
59 	BK4_EXTRA_ENV_SETTINGS \
60 	"fdt_high=0xffffffff\0" \
61 	"initrd_high=0xffffffff\0" \
62 	"blimg_file=u-boot.vyb\0" \
63 	"blimg_addr=0x81000000\0" \
64 	"dtbkernel_file=fitImage\0" \
65 	"dtbkernel_addr=0x82000000\0" \
66 	"ram_file=uRamdisk\0" \
67 	"ram_addr=0x83000000\0" \
68 	"filesys=rootfs.ubifs\0" \
69 	"sys_addr=0x81000000\0" \
70 	"nfs_root=/path/to/nfs/root\0" \
71 	"tftptimeout=1000\0" \
72 	"tftptimeoutcountmax=1000000\0" \
73 	"ipaddr=192.168.0.60\0" \
74 	"serverip=192.168.0.1\0" \
75 	"bootargs_base=setenv bootargs rw " \
76 	"console=ttyLP1,115200n8\0" \
77 	"bootargs_sd=setenv bootargs ${bootargs} " \
78 		"root=/dev/mmcblk0p2 rootwait\0" \
79 	"bootargs_nand=setenv bootargs ${bootargs} " \
80 		"ubi.mtd=5 rootfstype=" \
81 				"ubifs root=ubi0:rootfs${active_workset}\0" \
82 	"bootargs_ram=setenv bootargs ${bootargs} " \
83 		"root=/dev/ram rw initrd=${ram_addr}\0" \
84 	"bootargs_mtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
85 	"bootcmd_sd=run bootargs_base bootargs_sd bootargs_mtd; " \
86 		"fatload mmc 0:2 ${dtbkernel_addr} ${dtbkernel_file}; " \
87 		"bootm ${dtbkernel_addr}\0" \
88 	"bootcmd_nand=sf probe;run bootargs_base bootargs_nand bootargs_mtd; " \
89 		"ubi part dtbkernel; " \
90 		"ubi readvol ${dtbkernel_addr} dtbkernel${active_workset}; " \
91 		"led 0 on; " \
92 		"bootm ${dtbkernel_addr}\0" \
93 	"bootcmd_ram=run bootargs_base bootargs_ram bootargs_mtd; " \
94 		"nand read ${fdt_addr} dtb; " \
95 		"nand read ${kernel_addr} kernel; " \
96 		"nand read ${ram_addr} root; " \
97 		"bootz ${kernel_addr} ${ram_addr} ${fdt_addr}\0" \
98 	"update_bootloader_from_sd=if fatload mmc 0:2 ${blimg_addr} " \
99 		"${blimg_file}; " \
100 		"then sf probe; " \
101 		"mtdparts default; " \
102 		"nand erase.part bootloader; " \
103 		"nand write ${blimg_addr} bootloader ${filesize}; fi\0" \
104 	"update_bootloader_from_tftp=if tftp ${blimg_addr} "\
105 		"${tftpdir}${blimg_file}; "\
106 		"then sf probe; " \
107 		"mtdparts default; " \
108 		"nand erase.part bootloader; " \
109 		"nand write ${blimg_addr} bootloader ${filesize}; fi\0" \
110 	"update_dtbkernel_from_sd=if fatload mmc 0:2 ${dtbkernel_addr} " \
111 		"${dtbkernel_file}; " \
112 		"then sf probe; " \
113 		"ubi part dtbkernel; " \
114 		"ubi write ${dtbkernel_addr} dtbkernel${active_workset} " \
115 		"${filesize}; " \
116 		"ubi detach; fi\0" \
117 	"update_dtbkernel_from_tftp=if tftp ${dtbkernel_addr} " \
118 		"${tftpdir}${dtbkernel_file}; " \
119 		"then sf probe; " \
120 		"ubi part dtbkernel; " \
121 		"ubi write ${dtbkernel_addr} dtbkernel${active_workset} " \
122 		"${filesize}; " \
123 		"ubi detach; fi\0" \
124 	"update_ramdisk_from_sd=if fatload mmc 0:2 ${ram_addr} " \
125 		"${ram_file}; " \
126 		"then sf probe; " \
127 		"mtdparts default; " \
128 		"nand erase.part initrd; " \
129 		"nand write ${ram_addr} initrd ${filesize}; fi\0" \
130 	"update_ramdisk_from_tftp=if tftp ${ram_addr} ${tftpdir}${ram_file}; " \
131 		"then sf probe; " \
132 		"nand erase.part initrd; " \
133 		"nand write ${ram_addr} initrd ${filesize}; fi\0" \
134 	"update_rootfs_from_sd=if fatload mmc 0:2 ${sys_addr} " \
135 		"${filesys}; " \
136 		"then sf probe; " \
137 		"ubi part system; " \
138 		"ubi write ${sys_addr} rootfs${active_workset} ${filesize}; " \
139 		"ubi detach; fi\0" \
140 	"update_rootfs_from_tftp=if tftp ${sys_addr} ${tftpdir}${filesys}; " \
141 		"then sf probe; " \
142 		"ubi part system; " \
143 		"ubi write ${sys_addr} rootfs${active_workset} ${filesize}; " \
144 		"ubi detach; fi\0" \
145 	"setup_dtbkernel=nand erase.part dtbkernel; " \
146 		"ubi part dtbkernel; " \
147 		"ubi create dtbkernel1 972000 s; " \
148 		"ubi create dtbkernel2 972000 s; " \
149 		"ubi detach\0" \
150 	"setup_system=nand erase.part system; " \
151 		"ubi part system; " \
152 		"ubi create rootfs1 15E15000 d; " \
153 		"ubi create rootfs2 15E15000 d; " \
154 		"ubi create userdata; " \
155 		"ubi detach\0" \
156 	"setup_nor1=" BK4_NET_INIT \
157 		"if tftp ${sys_addr} ${tftpdir}ubinor1.img; " \
158 		"then sf probe 0:0; " \
159 		"sf erase 0 01000000; " \
160 		"mtdparts default; " \
161 		"ubi part nor; " \
162 		"ubi create nor1fs; " \
163 		"ubi write ${sys_addr} nor1fs ${filesize}; " \
164 		"ubi detach; fi\0" \
165 	"setup_nor2=" BK4_NET_INIT \
166 		"if tftp ${sys_addr} ${tftpdir}ubinor2.img; " \
167 		"then sf probe 0:1; " \
168 		"sf erase 0 01000000; " \
169 		"mtdparts default; " \
170 		"ubi part nor; " \
171 		"ubi create nor2fs; " \
172 		"ubi write ${sys_addr} nor2fs ${filesize}; " \
173 		"ubi detach; fi\0" \
174 	"prepare_install_bk4r1_envs=" \
175 		"echo 'Preparing envs for SD card recovery!';" \
176 		"setenv ipaddr 192.168.0.99;" \
177 		"setenv serverip 192.168.0.50;" \
178 		"\0" \
179 	"install_bk4r1rs="\
180 		"led 0 on; " \
181 		"nand erase.chip; mtdparts default; "\
182 		"led 1 on; "\
183 		"run setup_dtbkernel; " \
184 		"run setup_system; " \
185 		"led 2 on;" \
186 		"run update_bootloader_from_sd; "\
187 		"run update_dtbkernel_from_sd; "\
188 		"run update_rootfs_from_sd; "\
189 		"setenv bootcmd 'run bootcmd_nand'; "\
190 		"saveenv; " \
191 		"led 3 on; " \
192 		"echo Finished - Please Power off, REMOVE SDCARD and set boot" \
193 			"source to NAND\0" \
194 	"active_workset=1\0"
195 
196 /* Physical memory map */
197 #define PHYS_SDRAM			(0x80000000)
198 #define PHYS_SDRAM_SIZE		(SZ_512M)
199 
200 #define CFG_SYS_SDRAM_BASE		PHYS_SDRAM
201 #define CFG_SYS_INIT_RAM_ADDR	IRAM_BASE_ADDR
202 #define CFG_SYS_INIT_RAM_SIZE	IRAM_SIZE
203 
204 #endif /* __CONFIG_H */
205