xref: /rk3399_rockchip-uboot/include/configs/mx28evk.h (revision 577968e5669858e1d5bcb651ab28d60d20166252)
129f75a5cSFabio Estevam /*
229f75a5cSFabio Estevam  * (C) Copyright 2011 Freescale Semiconductor, Inc.
329f75a5cSFabio Estevam  * Author: Fabio Estevam <fabio.estevam@freescale.com>
429f75a5cSFabio Estevam  *
529f75a5cSFabio Estevam  * Based on m28evk.h:
629f75a5cSFabio Estevam  * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
729f75a5cSFabio Estevam  * on behalf of DENX Software Engineering GmbH
829f75a5cSFabio Estevam  *
91a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
1029f75a5cSFabio Estevam  */
115434caf5SMarek Vasut #ifndef __CONFIGS_MX28EVK_H__
125434caf5SMarek Vasut #define __CONFIGS_MX28EVK_H__
1329f75a5cSFabio Estevam 
145434caf5SMarek Vasut /* System configurations */
1529f75a5cSFabio Estevam #define CONFIG_MX28				/* i.MX28 SoC */
1629f75a5cSFabio Estevam #define CONFIG_MACH_TYPE	MACH_TYPE_MX28EVK
1729f75a5cSFabio Estevam 
185434caf5SMarek Vasut /* Memory configuration */
1929f75a5cSFabio Estevam #define CONFIG_NR_DRAM_BANKS		1		/* 1 bank of DRAM */
2029f75a5cSFabio Estevam #define PHYS_SDRAM_1			0x40000000	/* Base address */
2129f75a5cSFabio Estevam #define PHYS_SDRAM_1_SIZE		0x40000000	/* Max 1 GB RAM */
2229f75a5cSFabio Estevam #define CONFIG_SYS_SDRAM_BASE		PHYS_SDRAM_1
2329f75a5cSFabio Estevam 
245434caf5SMarek Vasut /* Environment */
25*3aa89052SFabio Estevam #ifndef CONFIG_ENV_IS_IN_SPI_FLASH
2629f75a5cSFabio Estevam #define CONFIG_ENV_SIZE			(16 * 1024)
27*3aa89052SFabio Estevam #else
28*3aa89052SFabio Estevam #define CONFIG_ENV_SIZE			(4 * 1024)
29*3aa89052SFabio Estevam #endif
305434caf5SMarek Vasut #define CONFIG_ENV_OVERWRITE
315434caf5SMarek Vasut 
325434caf5SMarek Vasut /* Environment is in MMC */
335434caf5SMarek Vasut #if defined(CONFIG_CMD_MMC) && defined(CONFIG_ENV_IS_IN_MMC)
345434caf5SMarek Vasut #define CONFIG_ENV_OFFSET		(256 * 1024)
3529f75a5cSFabio Estevam #define CONFIG_SYS_MMC_ENV_DEV		0
36ed97abedSMatthias Fuchs #endif
37ab461be6SFabio Estevam 
38ab461be6SFabio Estevam /* Environment is in NAND */
395434caf5SMarek Vasut #if defined(CONFIG_CMD_NAND) && defined(CONFIG_ENV_IS_IN_NAND)
40ab461be6SFabio Estevam #define CONFIG_ENV_SIZE_REDUND		CONFIG_ENV_SIZE
41ab461be6SFabio Estevam #define CONFIG_ENV_SECT_SIZE		(128 * 1024)
42ab461be6SFabio Estevam #define CONFIG_ENV_RANGE		(512 * 1024)
43ab461be6SFabio Estevam #define CONFIG_ENV_OFFSET		0x300000
44ab461be6SFabio Estevam #define CONFIG_ENV_OFFSET_REDUND	\
45ab461be6SFabio Estevam 		(CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
46da85c9c8STom Rini #endif
47ab461be6SFabio Estevam 
485434caf5SMarek Vasut /* Environemnt is in SPI flash */
495434caf5SMarek Vasut #if defined(CONFIG_CMD_SF) && defined(CONFIG_ENV_IS_IN_SPI_FLASH)
505434caf5SMarek Vasut #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
515434caf5SMarek Vasut #define CONFIG_ENV_OFFSET		0x40000		/* 256K */
525434caf5SMarek Vasut #define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
535434caf5SMarek Vasut #define CONFIG_ENV_SECT_SIZE		0x1000
545434caf5SMarek Vasut #define CONFIG_ENV_SPI_CS		0
555434caf5SMarek Vasut #define CONFIG_ENV_SPI_BUS		2
565434caf5SMarek Vasut #define CONFIG_ENV_SPI_MAX_HZ		24000000
575434caf5SMarek Vasut #define CONFIG_ENV_SPI_MODE		SPI_MODE_0
585434caf5SMarek Vasut #endif
595434caf5SMarek Vasut 
605434caf5SMarek Vasut /* UBI and NAND partitioning */
61ecb7be29SLauri Hintsala 
625434caf5SMarek Vasut /* FEC Ethernet on SoC */
6329f75a5cSFabio Estevam #ifdef	CONFIG_CMD_NET
6429f75a5cSFabio Estevam #define CONFIG_FEC_MXC
6529f75a5cSFabio Estevam #define CONFIG_MX28_FEC_MAC_IN_OCOTP
6629f75a5cSFabio Estevam #endif
6729f75a5cSFabio Estevam 
6840f1daa0SFabio Estevam /* RTC */
699588d942SMatthias Fuchs #ifdef	CONFIG_CMD_DATE
709588d942SMatthias Fuchs #define	CONFIG_RTC_MXS
719588d942SMatthias Fuchs #endif
729588d942SMatthias Fuchs 
7340f1daa0SFabio Estevam /* USB */
74598aa2bbSMatthias Fuchs #ifdef	CONFIG_CMD_USB
75598aa2bbSMatthias Fuchs #define CONFIG_EHCI_MXS_PORT1
76afa87210SMarek Vasut #define CONFIG_USB_MAX_CONTROLLER_COUNT	1
77598aa2bbSMatthias Fuchs #endif
78598aa2bbSMatthias Fuchs 
7940f1daa0SFabio Estevam /* SPI */
80ed97abedSMatthias Fuchs #ifdef CONFIG_CMD_SPI
81ed97abedSMatthias Fuchs #define CONFIG_DEFAULT_SPI_BUS		2
82ed97abedSMatthias Fuchs #define CONFIG_DEFAULT_SPI_MODE		SPI_MODE_0
83ed97abedSMatthias Fuchs 
84ed97abedSMatthias Fuchs /* SPI Flash */
85ed97abedSMatthias Fuchs #ifdef CONFIG_CMD_SF
861fc3bbd1SFabio Estevam #define CONFIG_SF_DEFAULT_BUS		2
871fc3bbd1SFabio Estevam #define CONFIG_SF_DEFAULT_CS		0
88ed97abedSMatthias Fuchs /* this may vary and depends on the installed chip */
89ed97abedSMatthias Fuchs #define CONFIG_SF_DEFAULT_MODE		SPI_MODE_0
90ed97abedSMatthias Fuchs #define CONFIG_SF_DEFAULT_SPEED		24000000
915434caf5SMarek Vasut #endif
92ed97abedSMatthias Fuchs 
93ed97abedSMatthias Fuchs #endif
94ed97abedSMatthias Fuchs 
9568661db2SFabio Estevam /* Framebuffer support */
9668661db2SFabio Estevam #ifdef CONFIG_VIDEO
9768661db2SFabio Estevam #define CONFIG_VIDEO_LOGO
9868661db2SFabio Estevam #define CONFIG_SPLASH_SCREEN
9968661db2SFabio Estevam #define CONFIG_BMP_16BPP
10068661db2SFabio Estevam #define CONFIG_VIDEO_BMP_RLE8
10168661db2SFabio Estevam #define CONFIG_VIDEO_BMP_GZIP
10268661db2SFabio Estevam #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE	(512 << 10)
10368661db2SFabio Estevam #endif
10468661db2SFabio Estevam 
10540f1daa0SFabio Estevam /* Boot Linux */
10629f75a5cSFabio Estevam #define CONFIG_BOOTFILE		"uImage"
10729f75a5cSFabio Estevam #define CONFIG_LOADADDR		0x42000000
10829f75a5cSFabio Estevam #define CONFIG_SYS_LOAD_ADDR	CONFIG_LOADADDR
10929f75a5cSFabio Estevam 
1105434caf5SMarek Vasut /* Extra Environment */
11129f75a5cSFabio Estevam #define CONFIG_EXTRA_ENV_SETTINGS \
1128ae269d4SOtavio Salvador 	"ubifs_file=filesystem.ubifs\0" \
113f994dc5eSOtavio Salvador 	"update_nand_full_filename=u-boot.nand\0" \
114f994dc5eSOtavio Salvador 	"update_nand_firmware_filename=u-boot.sb\0"	\
115f994dc5eSOtavio Salvador 	"update_nand_firmware_maxsz=0x100000\0"	\
116f994dc5eSOtavio Salvador 	"update_nand_stride=0x40\0"	/* MX28 datasheet ch. 12.12 */ \
117f994dc5eSOtavio Salvador 	"update_nand_count=0x4\0"	/* MX28 datasheet ch. 12.12 */ \
118f994dc5eSOtavio Salvador 	"update_nand_get_fcb_size="	/* Get size of FCB blocks */ \
119f994dc5eSOtavio Salvador 		"nand device 0 ; " \
120f994dc5eSOtavio Salvador 		"nand info ; " \
121f994dc5eSOtavio Salvador 		"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
122f994dc5eSOtavio Salvador 		"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
1238ae269d4SOtavio Salvador 	"update_nand_firmware_full=" /* Update FCB, DBBT and FW */ \
124f994dc5eSOtavio Salvador 		"if tftp ${update_nand_full_filename} ; then " \
125f994dc5eSOtavio Salvador 		"run update_nand_get_fcb_size ; " \
126f994dc5eSOtavio Salvador 		"nand scrub -y 0x0 ${filesize} ; " \
12771779d5bSEric Benard 		"nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
128f994dc5eSOtavio Salvador 		"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
129f994dc5eSOtavio Salvador 		"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
130f994dc5eSOtavio Salvador 		"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
131f994dc5eSOtavio Salvador 		"fi\0" \
132f994dc5eSOtavio Salvador 	"update_nand_firmware="		/* Update only firmware */ \
133f994dc5eSOtavio Salvador 		"if tftp ${update_nand_firmware_filename} ; then " \
134f994dc5eSOtavio Salvador 		"run update_nand_get_fcb_size ; " \
135f994dc5eSOtavio Salvador 		"setexpr fcb_sz ${update_nand_fcb} * 2 ; " /* FCB + DBBT */ \
136f994dc5eSOtavio Salvador 		"setexpr fw_sz ${update_nand_firmware_maxsz} * 2 ; " \
137f994dc5eSOtavio Salvador 		"setexpr fw_off ${fcb_sz} + ${update_nand_firmware_maxsz};" \
138f994dc5eSOtavio Salvador 		"nand erase ${fcb_sz} ${fw_sz} ; " \
139f994dc5eSOtavio Salvador 		"nand write ${loadaddr} ${fcb_sz} ${filesize} ; " \
140f994dc5eSOtavio Salvador 		"nand write ${loadaddr} ${fw_off} ${filesize} ; " \
141f994dc5eSOtavio Salvador 		"fi\0" \
1428ae269d4SOtavio Salvador 	"update_nand_kernel="		/* Update kernel */ \
1438ae269d4SOtavio Salvador 		"mtdparts default; " \
1448ae269d4SOtavio Salvador 		"nand erase.part kernel; " \
1458ae269d4SOtavio Salvador 		"if test ${ip_dyn} = yes; then " \
1468ae269d4SOtavio Salvador 			"setenv get_cmd dhcp; " \
1478ae269d4SOtavio Salvador 		"else " \
1488ae269d4SOtavio Salvador 			"setenv get_cmd tftp; " \
1498ae269d4SOtavio Salvador 		"fi; " \
150fb3f9170SOtavio Salvador 		"${get_cmd} ${image}; " \
1518ae269d4SOtavio Salvador 		"nand write ${loadaddr} kernel ${filesize}\0" \
1528ae269d4SOtavio Salvador 	"update_nand_fdt="		/* Update fdt */ \
1538ae269d4SOtavio Salvador 		"mtdparts default; " \
1548ae269d4SOtavio Salvador 		"nand erase.part fdt; " \
1558ae269d4SOtavio Salvador 		"if test ${ip_dyn} = yes; then " \
1568ae269d4SOtavio Salvador 			"setenv get_cmd dhcp; " \
1578ae269d4SOtavio Salvador 		"else " \
1588ae269d4SOtavio Salvador 			"setenv get_cmd tftp; " \
1598ae269d4SOtavio Salvador 		"fi; " \
1608ae269d4SOtavio Salvador 		"${get_cmd} ${fdt_file}; " \
1618ae269d4SOtavio Salvador 		"nand write ${loadaddr} fdt ${filesize}\0" \
1628ae269d4SOtavio Salvador 	"update_nand_filesystem="		/* Update filesystem */ \
1638ae269d4SOtavio Salvador 		"mtdparts default; " \
1648ae269d4SOtavio Salvador 		"nand erase.part filesystem; " \
1658ae269d4SOtavio Salvador 		"if test ${ip_dyn} = yes; then " \
1668ae269d4SOtavio Salvador 			"setenv get_cmd dhcp; " \
1678ae269d4SOtavio Salvador 		"else " \
1688ae269d4SOtavio Salvador 			"setenv get_cmd tftp; " \
1698ae269d4SOtavio Salvador 		"fi; " \
1708ae269d4SOtavio Salvador 		"${get_cmd} ${ubifs_file}; " \
1718ae269d4SOtavio Salvador 		"ubi part filesystem; " \
1728ae269d4SOtavio Salvador 		"ubi create filesystem; " \
1738ae269d4SOtavio Salvador 		"ubi write ${loadaddr} filesystem ${filesize}\0" \
17409308e8eSOtavio Salvador 	"nandargs=setenv bootargs console=${console_mainline},${baudrate} " \
17509308e8eSOtavio Salvador 		"rootfstype=ubifs ubi.mtd=6 root=ubi0_0 ${mtdparts}\0" \
17609308e8eSOtavio Salvador 	"nandboot="		/* Boot from NAND */ \
17709308e8eSOtavio Salvador 		"mtdparts default; " \
17809308e8eSOtavio Salvador 		"run nandargs; " \
17909308e8eSOtavio Salvador 		"nand read ${loadaddr} kernel 0x00400000; " \
18009308e8eSOtavio Salvador 		"if test ${boot_fdt} = yes; then " \
18109308e8eSOtavio Salvador 			"nand read ${fdt_addr} fdt 0x00080000; " \
182fb3f9170SOtavio Salvador 			"bootz ${loadaddr} - ${fdt_addr}; " \
18309308e8eSOtavio Salvador 		"else " \
18409308e8eSOtavio Salvador 			"if test ${boot_fdt} = no; then " \
185fb3f9170SOtavio Salvador 				"bootz; " \
18609308e8eSOtavio Salvador 			"else " \
18709308e8eSOtavio Salvador 				"echo \"ERROR: Set boot_fdt to yes or no.\"; " \
18809308e8eSOtavio Salvador 			"fi; " \
18909308e8eSOtavio Salvador 		"fi\0" \
19009308e8eSOtavio Salvador 	"update_sd_firmware_filename=u-boot.sd\0" \
191f994dc5eSOtavio Salvador 	"update_sd_firmware="		/* Update the SD firmware partition */ \
192f994dc5eSOtavio Salvador 		"if mmc rescan ; then "	\
193f994dc5eSOtavio Salvador 		"if tftp ${update_sd_firmware_filename} ; then " \
194f994dc5eSOtavio Salvador 		"setexpr fw_sz ${filesize} / 0x200 ; "	/* SD block size */ \
195f994dc5eSOtavio Salvador 		"setexpr fw_sz ${fw_sz} + 1 ; "	\
196f994dc5eSOtavio Salvador 		"mmc write ${loadaddr} 0x800 ${fw_sz} ; " \
197f994dc5eSOtavio Salvador 		"fi ; "	\
198f994dc5eSOtavio Salvador 		"fi\0" \
199f994dc5eSOtavio Salvador 	"script=boot.scr\0"	\
200fb3f9170SOtavio Salvador 	"image=zImage\0" \
201f994dc5eSOtavio Salvador 	"console_fsl=ttyAM0\0" \
202f994dc5eSOtavio Salvador 	"console_mainline=ttyAMA0\0" \
2034c6b2350SOtavio Salvador 	"fdt_file=imx28-evk.dtb\0" \
2044c6b2350SOtavio Salvador 	"fdt_addr=0x41000000\0" \
2054c6b2350SOtavio Salvador 	"boot_fdt=try\0" \
2064c6b2350SOtavio Salvador 	"ip_dyn=yes\0" \
207f994dc5eSOtavio Salvador 	"mmcdev=0\0" \
208f994dc5eSOtavio Salvador 	"mmcpart=2\0" \
2093c41e901SOtavio Salvador 	"mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
210f994dc5eSOtavio Salvador 	"mmcargs=setenv bootargs console=${console_mainline},${baudrate} " \
2113c41e901SOtavio Salvador 		"root=${mmcroot}\0" \
212f994dc5eSOtavio Salvador 	"loadbootscript="  \
213f994dc5eSOtavio Salvador 		"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
214f994dc5eSOtavio Salvador 	"bootscript=echo Running bootscript from mmc ...; "	\
215f994dc5eSOtavio Salvador 		"source\0" \
216fb3f9170SOtavio Salvador 	"loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
2174c6b2350SOtavio Salvador 	"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
218f994dc5eSOtavio Salvador 	"mmcboot=echo Booting from mmc ...; " \
219f994dc5eSOtavio Salvador 		"run mmcargs; " \
2204c6b2350SOtavio Salvador 		"if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
2214c6b2350SOtavio Salvador 			"if run loadfdt; then " \
222fb3f9170SOtavio Salvador 				"bootz ${loadaddr} - ${fdt_addr}; " \
2234c6b2350SOtavio Salvador 			"else " \
2244c6b2350SOtavio Salvador 				"if test ${boot_fdt} = try; then " \
225fb3f9170SOtavio Salvador 					"bootz; " \
2264c6b2350SOtavio Salvador 				"else " \
2274c6b2350SOtavio Salvador 					"echo WARN: Cannot load the DT; " \
2284c6b2350SOtavio Salvador 				"fi; " \
2294c6b2350SOtavio Salvador 			"fi; " \
2304c6b2350SOtavio Salvador 		"else " \
231fb3f9170SOtavio Salvador 			"bootz; " \
2324c6b2350SOtavio Salvador 		"fi;\0" \
233f994dc5eSOtavio Salvador 	"netargs=setenv bootargs console=${console_mainline},${baudrate} " \
23429f75a5cSFabio Estevam 		"root=/dev/nfs " \
235f994dc5eSOtavio Salvador 		"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
236f994dc5eSOtavio Salvador 	"netboot=echo Booting from net ...; " \
23729f75a5cSFabio Estevam 		"run netargs; "	\
2384c6b2350SOtavio Salvador 		"if test ${ip_dyn} = yes; then " \
2394c6b2350SOtavio Salvador 			"setenv get_cmd dhcp; " \
2404c6b2350SOtavio Salvador 		"else " \
2414c6b2350SOtavio Salvador 			"setenv get_cmd tftp; " \
2424c6b2350SOtavio Salvador 		"fi; " \
243fb3f9170SOtavio Salvador 		"${get_cmd} ${image}; " \
2444c6b2350SOtavio Salvador 		"if test ${boot_fdt} = yes; then " \
2454c6b2350SOtavio Salvador 			"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
246fb3f9170SOtavio Salvador 				"bootz ${loadaddr} - ${fdt_addr}; " \
2474c6b2350SOtavio Salvador 			"else " \
2484c6b2350SOtavio Salvador 				"if test ${boot_fdt} = try; then " \
249fb3f9170SOtavio Salvador 					"bootz; " \
2504c6b2350SOtavio Salvador 				"else " \
2514c6b2350SOtavio Salvador 					"echo WARN: Cannot load the DT; " \
2524c6b2350SOtavio Salvador 				"fi;" \
2534c6b2350SOtavio Salvador 			"fi; " \
2544c6b2350SOtavio Salvador 		"else " \
255fb3f9170SOtavio Salvador 			"bootz; " \
2564c6b2350SOtavio Salvador 		"fi;\0"
257f994dc5eSOtavio Salvador 
258f994dc5eSOtavio Salvador #define CONFIG_BOOTCOMMAND \
25966968110SAndrew Bradford 	"mmc dev ${mmcdev}; if mmc rescan; then " \
260f994dc5eSOtavio Salvador 		"if run loadbootscript; then " \
261f994dc5eSOtavio Salvador 			"run bootscript; " \
262f994dc5eSOtavio Salvador 		"else " \
263fb3f9170SOtavio Salvador 			"if run loadimage; then " \
264f994dc5eSOtavio Salvador 				"run mmcboot; " \
265f994dc5eSOtavio Salvador 			"else run netboot; " \
266f994dc5eSOtavio Salvador 			"fi; " \
267f994dc5eSOtavio Salvador 		"fi; " \
268f994dc5eSOtavio Salvador 	"else run netboot; fi"
26929f75a5cSFabio Estevam 
2705434caf5SMarek Vasut /* The rest of the configuration is shared */
2715434caf5SMarek Vasut #include <configs/mxs.h>
2725434caf5SMarek Vasut 
2735434caf5SMarek Vasut #endif /* __CONFIGS_MX28EVK_H__ */
274