/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2017 Armadeus Systems
 *
 * Configuration settings for the OPOS6ULDev board
 */

#ifndef __OPOS6ULDEV_CONFIG_H
#define __OPOS6ULDEV_CONFIG_H

#include "mx6_common.h"

#ifdef CONFIG_SPL
#include "imx6_spl.h"
#endif

/* Miscellaneous configurable options */
#define CONFIG_STANDALONE_LOAD_ADDR	CONFIG_SYS_LOAD_ADDR

/* Physical Memory Map */
#define CONFIG_SYS_SDRAM_BASE		MMDC0_ARB_BASE_ADDR
#define CONFIG_SYS_INIT_RAM_ADDR	IRAM_BASE_ADDR
#define CONFIG_SYS_INIT_RAM_SIZE	IRAM_SIZE

/* USB */
#ifdef CONFIG_USB_EHCI_MX6
#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
#define CONFIG_MXC_USB_PORTSC		(PORT_PTS_UTMI | PORT_PTS_PTW)
#define CONFIG_MXC_USB_FLAGS		0
#define CONFIG_USB_MAX_CONTROLLER_COUNT	2
#endif

/* LCD */
#ifndef CONFIG_SPL_BUILD
#ifdef CONFIG_DM_VIDEO
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
#endif
#endif

/* Environment is stored in the eMMC boot partition */

#define CONFIG_ENV_VERSION	100
#define ACFG_CONSOLE_DEV        ttymxc0
#define CONFIG_SYS_AUTOLOAD     "no"
#define CONFIG_ROOTPATH         "/tftpboot/opos6ul-root"

#define CONFIG_EXTRA_ENV_SETTINGS \
	"env_version="          __stringify(CONFIG_ENV_VERSION)         "\0"                    \
	"consoledev="           __stringify(ACFG_CONSOLE_DEV)           "\0"                    \
	"board_name=opos6ul\0"                                                                  \
	"fdt_addr=0x88000000\0"                                                                 \
	"fdt_high=0xffffffff\0"                                                                 \
	"fdt_name=opos6uldev\0"                                                                 \
	"initrd_high=0xffffffff\0"                                                              \
	"ip_dyn=yes\0"                                                                          \
	"stdin=serial\0"                                                                        \
	"stdout=serial\0"                                                                       \
	"stderr=serial\0"                                                                       \
	"mmcdev=0\0"                                                                            \
	"mmcpart=2\0"                                                                           \
	"mmcroot=/dev/mmcblk0p2 ro\0"                                                           \
	"mmcrootfstype=ext4 rootwait\0"                                                         \
	"kernelimg=opos6ul-linux.bin\0"                                                         \
	"splashpos=0,0\0"									\
	"splashimage="		__stringify(CONFIG_SYS_LOAD_ADDR)	"\0"			\
	"videomode=video=ctfb:x:800,y:480,depth:18,pclk:33033,le:96,ri:96,up:20,lo:21,hs:64,vs:4,sync:0,vmode:0\0" \
	"check_env=if test -n ${flash_env_version}; "                                           \
		"then env default env_version; "                                                \
		"else env set flash_env_version ${env_version}; env save; "                     \
		"fi; "                                                                          \
		"if itest ${flash_env_version} != ${env_version}; then "                        \
			"echo \"*** Warning - Environment version"                              \
			" change suggests: run flash_reset_env; reset\"; "                      \
			"env default flash_reset_env; "                                         \
		"else exit; fi; \0"                                                             \
	"flash_reset_env=env default -f -a && saveenv && "                                      \
		"echo Environment variables erased!\0"                                          \
	"download_uboot_spl=tftpboot ${loadaddr} ${board_name}-u-boot.spl\0"                    \
	"flash_uboot_spl="                                                                      \
		"if mmc dev 0 1; then "                                                         \
			"setexpr sz ${filesize} / 0x200; "                                      \
			"setexpr sz ${sz} + 1; "                                                \
			"if mmc write ${loadaddr} 0x2 ${sz}; then "                             \
				"echo Flashing of U-boot SPL succeed; "                         \
			"else echo Flashing of U-boot SPL failed; "                             \
			"fi; "                                                                  \
		"fi;\0"                                                                         \
	"download_uboot_img=tftpboot ${loadaddr} ${board_name}-u-boot.img\0"                    \
	"flash_uboot_img="                                                                      \
		"if mmc dev 0 1; then "                                                         \
			"setexpr sz ${filesize} / 0x200; "                                      \
			"setexpr sz ${sz} + 1; "                                                \
			"if mmc write ${loadaddr} 0x8a ${sz}; then "                            \
				"echo Flashing of U-boot image succeed; "                       \
			"else echo Flashing of U-boot image failed; "                           \
			"fi; "                                                                  \
		"fi;\0"                                                                         \
	"update_uboot=run download_uboot_spl flash_uboot_spl "                                  \
		"download_uboot_img flash_uboot_img\0"                                          \
	"download_kernel=tftpboot ${loadaddr} ${kernelimg}\0"                                   \
	"flash_kernel="                                                                         \
		"if ext4write mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} ${filesize}; then "    \
			"echo kernel update succeed; "                                          \
			"else echo kernel update failed; "                                      \
		"fi;\0"                                                                         \
	"update_kernel=run download_kernel flash_kernel\0"                                      \
	"download_dtb=tftpboot ${fdt_addr} imx6ul-${fdt_name}.dtb\0"                            \
	"flash_dtb="                                                                            \
		"if ext4write mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb ${filesize}; then " \
			"echo dtb update succeed; "                                             \
			"else echo dtb update in failed; "                                      \
		"fi;\0"                                                                         \
	"update_dtb=run download_dtb flash_dtb\0"                                               \
	"download_rootfs=tftpboot ${loadaddr} ${board_name}-rootfs.ext4\0"                      \
	"flash_rootfs="                                                                         \
		"if mmc dev 0 0; then "                                                         \
			"setexpr nbblocks ${filesize} / 0x200; "                                \
			"setexpr nbblocks ${nbblocks} + 1; "                                    \
			"if mmc write ${loadaddr} 0x40800 ${nbblocks}; then "                   \
				"echo Flashing of rootfs image succeed; "                       \
			"else echo Flashing of rootfs image failed; "                           \
			"fi; "                                                                  \
		"fi;\0"                                                                         \
	"update_rootfs=run download_rootfs flash_rootfs\0"                                      \
	"flash_failsafe="                                                                       \
		"if mmc dev 0 0; then "                                                         \
			"setexpr nbblocks ${filesize} / 0x200; "                                \
			"setexpr nbblocks ${nbblocks} + 1; "                                    \
			"if mmc write ${loadaddr} 0x800 ${nbblocks}; then "                     \
				"echo Flashing of rootfs image in failsafe partition succeed; " \
			"else echo Flashing of rootfs image in failsafe partition failed; "     \
			"fi; "                                                                  \
		"fi;\0"                                                                         \
	"update_failsafe=run download_rootfs flash_failsafe\0"                                  \
	"download_userdata=tftpboot ${loadaddr} ${board_name}-user_data.ext4\0"                 \
	"flash_userdata="                                                                       \
		"if mmc dev 0 0; then "                                                         \
			"setexpr nbblocks ${filesize} / 0x200; "                                \
			"setexpr nbblocks ${nbblocks} + 1; "                                    \
			"if mmc write ${loadaddr} 0 ${nbblocks}; then "                         \
				"echo Flashing of user_data image succeed; "                    \
			"else echo Flashing of user_data image failed; "                        \
			"fi; "                                                                  \
		"fi;\0"                                                                         \
	"update_userdata=run download_userdata flash_userdata; mmc rescan\0"                    \
	"erase_userdata="                                                                       \
		"if mmc dev 0 0; then "                                                         \
			"echo Erasing eMMC User Data partition, no way out...; "                \
			"mw ${loadaddr} 0 0x200000; "                                           \
			"mmc write ${loadaddr} 0 0x1000; "                                      \
			"mmc write ${loadaddr} 0x800 0x1000; "                                  \
			"mmc write ${loadaddr} 0x40800 0x1000; "                                \
			"mmc write ${loadaddr} 0x440800 0x1000; "                               \
		"fi;"                                                                           \
		"mmc rescan\0"                                                                  \
	"update_all=run update_rootfs update_uboot\0"						\
	"initargs=setenv bootargs console=${consoledev},${baudrate} ${extrabootargs}\0"         \
	"addipargs=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:"                       \
		"${gatewayip}:${netmask}:${hostname}:eth0:off\0"                                \
	"addmmcargs=setenv bootargs ${bootargs} root=${mmcroot} "                               \
		"rootfstype=${mmcrootfstype}\0"                                                 \
	"emmcboot=run initargs; run addmmcargs; "                                               \
		"load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} && "              \
		"load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb && "    \
		"bootz ${loadaddr} - ${fdt_addr};\0"                                            \
	"emmcsafeboot=setenv mmcpart 1; setenv mmcroot /dev/mmcblk0p1 ro; run emmcboot;\0"      \
	"addnfsargs=setenv bootargs ${bootargs} root=/dev/nfs rw "                              \
		"nfsroot=${serverip}:${rootpath}\0"                                             \
	"nfsboot=run initargs; run addnfsargs addipargs; "                                      \
		"nfs ${loadaddr} ${serverip}:${rootpath}/boot/${kernelimg} && "                 \
		"nfs ${fdt_addr} ${serverip}:${rootpath}/boot/imx6ul-${fdt_name}.dtb && "       \
		"bootz ${loadaddr} - ${fdt_addr};\0"

#endif /* __OPOS6ULDEV_CONFIG_H */
