/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Configuration for Coral board
 *
 * Copyright (C) 2019 BayLibre, SAS
 * Copyright (C) 2020 Google, LLC
 * Author: Fabien Parent <fparent@baylibre.com
 */

#ifndef __MT8516_CORAL_H
#define __MT8516_CORAL_H

#include <linux/sizes.h>
#include <linux/stringify.h>

#ifdef CONFIG_MTK_ANDROID
// Android needs a bigger environment for libavb usage
#define CONFIG_ENV_SIZE			SZ_256K
#define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_MALLOC_LEN		SZ_64M
#define CONFIG_SYS_CBSIZE		SZ_64K
#else
#define CONFIG_ENV_SIZE			SZ_4K
#define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_MALLOC_LEN		SZ_4M
#endif /* CONFIG_MTK_ANDROID */

#define CONFIG_CPU_ARMV8
#define COUNTER_FREQUENCY		13000000

#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE	-4
#define CONFIG_SYS_NS16550_MEM32
#define CONFIG_SYS_NS16550_COM1		0x11005000
#define CONFIG_SYS_NS16550_CLK		26000000

#define CONFIG_SYS_UBOOT_START		CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_TEXT_BASE + SZ_2M - \
						 GENERATED_GBL_DATA_SIZE)

#define CONFIG_SYS_BOOTM_LEN		SZ_64M

#define CONFIG_SYS_MMC_ENV_DEV		0
#define CONFIG_SYS_MMC_ENV_PART		2
#define CONFIG_ENV_OFFSET		0
#define CONFIG_ENV_OVERWRITE		1

#ifdef CONFIG_MTK_ANDROID
#define MMCBOOT \
	"mmcdev=0\0" \
	"dtb_index=0\0" \
	"dtbo_index=1\0" \
	"loadaddr=0x50000000\0" \
	"load_dtb=" \
		"part start mmc ${mmcdev} dtbo dtbo_part_start;" \
		"part size mmc ${mmcdev} dtbo dtbo_part_size;" \
		"mmc read ${loadaddr} ${dtbo_part_start} ${dtbo_part_size};" \
		"dtimg select ${loadaddr} ${dtb_index};" \
		"dtimg merge ${loadaddr} ${dtbo_index}; \0" \
	"load_bootimg=" \
		"part start mmc ${mmcdev} boot boot_part_start;" \
		"part size mmc ${mmcdev} boot boot_part_size;" \
		"mmc read ${loadaddr} ${boot_part_start} ${boot_part_size}; \0" \
	"mmcboot=" \
		"avb init ${mmcdev};" \
		"avb verify;" \
		"setenv bootargs \"${bootargs} ${avb_bootargs}\";" \
		"run load_dtb;" \
		"run load_bootimg;" \
		"bootm ${loadaddr}; \0"
#else
#define MMCBOOT \
	"mmcdev=0\0" \
	"boot_partition=2\0" \
	"mmcboot=" \
		"mmc dev ${mmcdev};" \
		"setenv bootargs ${bootargs} root=PARTUUID=02f36a4f-4562-46b2-bbec-bfc1682f9e92 rootwait; " \
		"ext2load mmc ${mmcdev}:2 " __stringify(CONFIG_SYS_TEXT_BASE) " boot.scr;" \
		"source; \0"
#endif /* CONFIG_MTK_ANDROID */

#define TFTPBOOT \
	"tftpboot=" \
		"set ipaddr 192.168.0.100;" \
		"tftpboot ${kerneladdr} 192.168.0.1:fitImage;" \
		"bootm ${kerneladdr};\0"

#define CONFIG_EXTRA_ENV_SETTINGS \
	"kerneladdr=0x4A000000\0" \
	"fastboot=fastboot usb 0\0" \
	"force_fastboot=0\0" \
	"evt2_board=0\0" \
	MMCBOOT \
	TFTPBOOT \
	"bootcmd=" \
		"gpio input 42;" \
		"if test $? -eq 0 || test \"${force_fastboot}\" -eq 1; then " \
			"setenv force_fastboot 0; saveenv;" \
			"gpio clear 19;" \
			"gpio set 18;" \
			"run fastboot;" \
			"run mmcboot;" \
		"else " \
			"run mmcboot;" \
		"fi\0"
#endif
