/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Configuration for MT8183 based boards
 *
 * Copyright (C) 2019 BayLibre, SAS
 * Author: Fabien Parent <fparent@baylibre.com
 */

#ifndef __MT8183_H
#define __MT8183_H

#include <linux/sizes.h>

#define CONFIG_ENV_SIZE			SZ_4K
#define CONFIG_SYS_LOAD_ADDR		CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_MALLOC_LEN		SZ_4M

#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		0x11005200
#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

/* Environment settings */
#include <config_distro_bootcmd.h>

#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" \
	"load_recoveryimg=" \
		"part start mmc ${mmcdev} recovery recovery_part_start;" \
		"part size mmc ${mmcdev} recovery recovery_part_size;" \
		"mmc read ${loadaddr} ${recovery_part_start} ${recovery_part_size}; \0" \
	"mmcboot=" \
		"if bcb load ${mmcdev} persist; then " \
			"if bcb test command = boot-recovery; then " \
				"bcb clear command; bcb store;" \
				"run load_dtb;" \
				"run load_recoveryimg;" \
				"bootm ${loadaddr};" \
			 "fi;" \
		"fi;" \
		"run load_dtb;" \
		"run load_bootimg;" \
		"bootm ${loadaddr}; \0"
#else
#define MMCBOOT \
	"mmcdev=0\0" \
	"rootfs_partition=3\0" \
	"mmc_discover_partition=" \
		"part start mmc ${mmcdev} kernel kernel_part_addr;" \
		"part size mmc ${mmcdev} kernel kernel_part_size;\0" \
	"mmcboot=" \
		"mmc dev ${mmcdev};" \
		"run mmc_discover_partition;" \
		"mmc read ${kerneladdr} ${kernel_part_addr} ${kernel_part_size};" \
		"setenv bootargs ${bootargs} root=/dev/mmcblk${mmcdev}p${rootfs_partition} rootwait; " \
		"bootm ${kerneladdr}${boot_conf}; \0"
#endif /* CONFIG_MTK_ANDROID */

#define CONFIG_EXTRA_ENV_SETTINGS \
	"kerneladdr=0x4A000000\0" \
	MMCBOOT \
	"bootcmd=run mmcboot\0"

#endif
