1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2012 Freescale Semiconductor, Inc.
4  *
5  * Configuration settings for the Freescale i.MX6Q SabreSD board.
6  */
7 
8 #ifndef __MX6QSABRE_COMMON_CONFIG_H
9 #define __MX6QSABRE_COMMON_CONFIG_H
10 
11 #include <linux/stringify.h>
12 
13 #include "mx6_common.h"
14 
15 /* MMC Configs */
16 #define CFG_SYS_FSL_ESDHC_ADDR      0
17 
18 #ifdef CONFIG_SUPPORT_EMMC_BOOT
19 #define EMMC_ENV \
20 	"emmcdev=2\0" \
21 	"update_emmc_firmware=" \
22 		"if test ${ip_dyn} = yes; then " \
23 			"setenv get_cmd dhcp; " \
24 		"else " \
25 			"setenv get_cmd tftp; " \
26 		"fi; " \
27 		"if ${get_cmd} ${update_sd_firmware_filename}; then " \
28 			"if mmc dev ${emmcdev} 1; then "	\
29 				"setexpr fw_sz ${filesize} / 0x200; " \
30 				"setexpr fw_sz ${fw_sz} + 1; "	\
31 				"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
32 			"fi; "	\
33 		"fi\0"
34 #else
35 #define EMMC_ENV ""
36 #endif
37 
38 #define CFG_EXTRA_ENV_SETTINGS \
39 	"script=boot.scr\0" \
40 	"image=zImage\0" \
41 	"fdtfile=undefined\0" \
42 	"fdt_addr=0x18000000\0" \
43 	"boot_fdt=try\0" \
44 	"ip_dyn=yes\0" \
45 	"console=" CONSOLE_DEV "\0" \
46 	"dfuspi=dfu 0 sf 0:0:10000000:0\0" \
47 	"dfu_alt_info_spl=spl raw 0x400\0" \
48 	"dfu_alt_info_img=u-boot raw 0x10000\0" \
49 	"dfu_alt_info=spl raw 0x400\0" \
50 	"fdt_high=0xffffffff\0"	  \
51 	"initrd_high=0xffffffff\0" \
52 	"splashimage=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
53 	"mmcdev=" __stringify(CONFIG_ENV_MMC_DEVICE_INDEX) "\0" \
54 	"mmcpart=1\0" \
55 	"finduuid=part uuid mmc ${mmcdev}:2 uuid\0" \
56 	"update_sd_firmware=" \
57 		"if test ${ip_dyn} = yes; then " \
58 			"setenv get_cmd dhcp; " \
59 		"else " \
60 			"setenv get_cmd tftp; " \
61 		"fi; " \
62 		"if mmc dev ${mmcdev}; then "	\
63 			"if ${get_cmd} ${update_sd_firmware_filename}; then " \
64 				"setexpr fw_sz ${filesize} / 0x200; " \
65 				"setexpr fw_sz ${fw_sz} + 1; "	\
66 				"mmc write ${loadaddr} 0x2 ${fw_sz}; " \
67 			"fi; "	\
68 		"fi\0" \
69 	EMMC_ENV	  \
70 	"mmcargs=setenv bootargs console=${console},${baudrate} " \
71 		"root=PARTUUID=${uuid} rootwait rw\0" \
72 	"loadbootscript=" \
73 		"load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script} || " \
74 		"load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${script};\0" \
75 	"bootscript=echo Running bootscript from mmc ...; " \
76 		"source\0" \
77 	"loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image} || " \
78 		"load mmc ${mmcdev}:${mmcpart} ${loadaddr} boot/${image}\0" \
79 	"loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdtfile} || " \
80 		"load mmc ${mmcdev}:${mmcpart} ${fdt_addr} boot/${fdtfile}\0" \
81 	"mmcboot=echo Booting from mmc ...; " \
82 		"run finduuid; " \
83 		"run mmcargs; " \
84 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
85 			"if run loadfdt; then " \
86 				"bootz ${loadaddr} - ${fdt_addr}; " \
87 			"else " \
88 				"if test ${boot_fdt} = try; then " \
89 					"bootz; " \
90 				"else " \
91 					"echo WARN: Cannot load the DT; " \
92 				"fi; " \
93 			"fi; " \
94 		"else " \
95 			"bootz; " \
96 		"fi;\0" \
97 	"netargs=setenv bootargs console=${console},${baudrate} " \
98 		"root=/dev/nfs " \
99 		"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
100 	"netboot=echo Booting from net ...; " \
101 		"run netargs; " \
102 		"if test ${ip_dyn} = yes; then " \
103 			"setenv get_cmd dhcp; " \
104 		"else " \
105 			"setenv get_cmd tftp; " \
106 		"fi; " \
107 		"${get_cmd} ${image}; " \
108 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
109 			"if ${get_cmd} ${fdt_addr} ${fdtfile}; then " \
110 				"bootz ${loadaddr} - ${fdt_addr}; " \
111 			"else " \
112 				"if test ${boot_fdt} = try; then " \
113 					"bootz; " \
114 				"else " \
115 					"echo WARN: Cannot load the DT; " \
116 				"fi; " \
117 			"fi; " \
118 		"else " \
119 			"bootz; " \
120 		"fi;\0" \
121 		"findfdt="\
122 			"if test $fdtfile = undefined; then " \
123 				"if test $board_name = SABREAUTO && test $board_rev = MX6QP; then " \
124 					"setenv fdtfile imx6qp-sabreauto.dtb; fi; " \
125 				"if test $board_name = SABREAUTO && test $board_rev = MX6Q; then " \
126 					"setenv fdtfile imx6q-sabreauto.dtb; fi; " \
127 				"if test $board_name = SABREAUTO && test $board_rev = MX6DL; then " \
128 					"setenv fdtfile imx6dl-sabreauto.dtb; fi; " \
129 				"if test $board_name = SABRESD && test $board_rev = MX6QP; then " \
130 					"setenv fdtfile imx6qp-sabresd.dtb; fi; " \
131 				"if test $board_name = SABRESD && test $board_rev = MX6Q; then " \
132 					"setenv fdtfile imx6q-sabresd.dtb; fi; " \
133 				"if test $board_name = SABRESD && test $board_rev = MX6DL; then " \
134 					"setenv fdtfile imx6dl-sabresd.dtb; fi; " \
135 				"if test $fdtfile = undefined; then " \
136 					"echo WARNING: Could not determine dtb to use; fi; " \
137 			"fi;\0" \
138 
139 /* Physical Memory Map */
140 #define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
141 
142 #define CFG_SYS_SDRAM_BASE          PHYS_SDRAM
143 #define CFG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
144 #define CFG_SYS_INIT_RAM_SIZE       IRAM_SIZE
145 
146 /* Environment organization */
147 
148 #endif                         /* __MX6QSABRE_COMMON_CONFIG_H */
149