/* 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

#ifdef CONFIG_MTK_ANDROID

#define MMC_LOAD_PART(_partname) \
	"part start mmc ${mmcdev} " _partname " " _partname "_part_start;" \
	"part size mmc ${mmcdev} " _partname " " _partname "_part_size;" \
	"mmc read ${loadaddr} ${" _partname "_part_start} ${" _partname "_part_size};"

#define MMC_LOAD_DTB \
	MMC_LOAD_PART("dtbo") \
	"dtimg select ${loadaddr} ${dtb_index};" \
	"dtimg merge ${loadaddr} ${dtbo_index};"

#ifdef CONFIG_CMD_AB_SELECT

#define MMC_LOAD_PART_AB(_partname, _slot) \
	"part start mmc ${mmcdev} " _partname "_" _slot " " _partname "_part_start;"  \
	"part size mmc ${mmcdev} " _partname "_" _slot " " _partname "_part_size;"  \
	"mmc read ${loadaddr} ${" _partname "_part_start} ${" _partname "_part_size};"

#define MMC_LOAD_BOOT     MMC_LOAD_PART_AB("boot", "${android_ab_slot}")

/*
 * In the case of Android A/B, the recovery RAM disk
 * is contained in the boot.img
 * https://source.android.com/devices/tech/ota/ab/ab_implement#recovery
 */
#define ANDROID_BOOT_RECOVERY \
	MMC_LOAD_DTB \
	MMC_LOAD_BOOT \
	"bootm ${loadaddr};"

#define ANDROID_BOOT_SYSTEM \
	MMC_LOAD_DTB \
	MMC_LOAD_BOOT \
	"part number-format dec;" \
	"part number mmc ${mmcdev} system_${android_ab_slot} rootfs_partition;" \
	"setenv bootargs   \"${bootargs} root=/dev/mmcblk${mmcdev}p${rootfs_partition}\";" \
	"setenv bootargs  \"${bootargs} androidboot.android_dt_dir=/proc/device-tree/odm/firmware/android/\";" \
	"setenv bootargs  \"${bootargs} skip_initramfs\";"	\
	"bootm ${loadaddr};"

#define ANDROID_AB_GET_SLOT \
	"ab_select android_ab_slot mmc ${mmcdev}#misc;" \
	"setenv bootargs  \"${bootargs} androidboot.slot_suffix=_${android_ab_slot}\";"

#else
#define MMC_LOAD_RECOVERY MMC_LOAD_PART("recovery")
#define MMC_LOAD_BOOT     MMC_LOAD_PART("boot")

#define ANDROID_BOOT_RECOVERY \
	MMC_LOAD_DTB \
	MMC_LOAD_RECOVERY \
	"bootm ${loadaddr};"

#define ANDROID_BOOT_SYSTEM \
	MMC_LOAD_DTB \
	MMC_LOAD_BOOT \
	"part number-format dec;" \
	"part number mmc ${mmcdev} system rootfs_partition;" \
	"setenv bootargs  \"${bootargs} root=/dev/mmcblk${mmcdev}p${rootfs_partition}\";" \
	"setenv bootargs  \"${bootargs} androidboot.android_dt_dir=/proc/device-tree/odm/firmware/android/\";" \
	"bootm ${loadaddr};"

#define ANDROID_AB_GET_SLOT ""

#endif // ifdef CONFIG_CMD_AB_SELECT

#define ANDROID_BOOT_FASTBOOT \
	"fastboot usb 0;"

/*
 * checks if we should boot into 'fastboot' mode
 *
 * set androidboot_fastboot to 1 if we should boot into 'fastboot'
 */
#define ANDROID_TEST_FASTBOOT \
	"if bcb load ${mmcdev} misc; then " \
		"if bcb test command = bootonce-bootloader ; then " \
			"bcb clear command; bcb store;" \
			"setenv androidboot_fastboot 1;" \
		"fi;" \
	"fi;" \

/*
 * checks if we should boot into android recovery mode
 *
 * This is a mix between BCB (misc partition) and Android system properties
 * from userdata.
 *
 * To avoid booting twice in a row into recovery, always erase the system
 * property
 *
 * sets androidboot_recovery to 1 if we should boot into recovery
 */
#define ANDROID_TEST_RECOVERY \
	"if bcb load ${mmcdev} misc; then " \
		"if bcb test command = boot-recovery; then " \
			"bcb clear command; bcb store;" \
			"aprop load ${mmcdev} userdata;" \
			"if aprop test persist.sys.boot.reason = recovery; then " \
				"aprop set persist.sys.boot.reason none; aprop store;" \
			"fi;" \
			"setenv androidboot_recovery 1;" \
		"else " \
			"if aprop load ${mmcdev} userdata; then " \
				"if aprop test persist.sys.boot.reason = recovery; then " \
					"aprop set persist.sys.boot.reason none; aprop store;" \
					"setenv androidboot_recovery 1;" \
				"fi;" \
			"fi;" \
		"fi;" \
	"fi;" \

#define MMCBOOT \
	"mmcdev=0\0" \
	"rootfs_partition=0\0" \
	"dtb_index=0\0" \
	"dtbo_index=1\0" \
	"loadaddr=0x50000000\0" \
	"androidboot_fastboot=0\0" \
	"androidboot_recovery=0\0" \
	"android_ab_slot=\0" \
	"mmcboot=" \
		ANDROID_AB_GET_SLOT \
		ANDROID_TEST_FASTBOOT \
		ANDROID_TEST_RECOVERY \
		"if test \"${androidboot_fastboot}\" -eq 1; then " \
			"echo Android: booting into fastboot;" \
			ANDROID_BOOT_FASTBOOT \
		"fi;" \
		"if test \"${androidboot_recovery}\" -eq 1; then " \
			"echo Android: booting into recovery;" \
			ANDROID_BOOT_RECOVERY \
		"fi;" \
		"echo Android: booting into system;" \
		ANDROID_BOOT_SYSTEM \
		"\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
