/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
 * board/amlogic/configs/sm1_sabrina_v1.h
 *
 * Copyright (C) 2020 Amlogic, Inc. All rights reserved.
 *
 */

#ifndef __SM1_SABRINA_V1_H__
#define __SM1_SABRINA_V1_H__

#include <asm/arch/cpu.h>

#define CONFIG_SYS_GENERIC_BOARD  1
#ifndef CONFIG_AML_MESON
#warning "include warning"
#endif

/*
 * platform power init config
 */
#define CONFIG_PLATFORM_POWER_INIT
#define CONFIG_VCCK_INIT_VOLTAGE    1010    // VCCK power up voltage
#define CONFIG_VDDEE_INIT_VOLTAGE   840     // VDDEE power up voltage
#define CONFIG_VDDEE_SLEEP_VOLTAGE  770     // VDDEE suspend voltage

#define CONFIG_SYS_LED_INIT_VOLTAGE 0x00090013
#define CONFIG_YELLOW_LED_VOLTAGE   0x00090013

#define CONFIG_VENDOR_NAME      "Google"
#define CONFIG_PRODUCT_NAME     "Chromecast"

/* configs for CEC */
#define CONFIG_CEC_OSD_NAME     CONFIG_PRODUCT_NAME
#define CONFIG_CEC_WAKEUP
/*if use bt-wakeup,open it*/
#define CONFIG_BT_WAKEUP
/* SMP Definitinos */
#define CPU_RELEASE_ADDR        secondary_boot_func

/* config saradc*/
#define CONFIG_CMD_SARADC 1

//#define CONFIG_AML_PRODUCT_MODE 1 //
#ifdef CONFIG_AML_PRODUCT_MODE
#define CONFIG_SILENT_CONSOLE
#define CONFIG_NO_FASTBOOT_FLASHING
#define CONFIG_USB_TOOL_ENTRY   "echo product mode"
#else
#define CONFIG_USB_TOOL_ENTRY   "update 1500"
#define CONFIG_CMD_BOOTI        1
#define CONFIG_CMD_MEMORY       1
#define CONFIG_CMD_JTAG	        1
#define CONFIG_CMD_AUTOSCRIPT   1
#endif

/*if disable uboot console, enable it*/
//#define CONFIG_SILENT_CONSOLE
#ifdef CONFIG_SILENT_CONSOLE
#undef CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
#endif

/* Bootloader Control Block function
   That is used for recovery and the bootloader to talk to each other
  */
#define CONFIG_BOOTLOADER_CONTROL_BLOCK

#define CONFIG_CMD_BOOTCTOL_AVB

/* AVB configs */
//#define CONFIG_AVB2 "avb2"      // this is defined in the Makefile
#define CONFIG_AVB2_KPUB_VENDOR
#define CONFIG_AVB2_KPUB_VENDOR_MULTIPLE

/* support ext4*/
#define CONFIG_CMD_EXT4 1

#define CONFIG_FAT_WRITE 1
#define CONFIG_AML_FACTORY_PROVISION 1

/* Serial config */
#define CONFIG_CONS_INDEX         2
#define CONFIG_BAUDRATE           115200
#define CONFIG_AML_MESON_SERIAL   1
#define CONFIG_SERIAL_MULTI       1

//Enable ir remote wake up for bl30
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL1 0xef10fe01 //amlogic tv ir --- power
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL2 0xFFFFFFFF
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL3 0xF20DFE01 //amlogic tv ir --- ch-
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL4 0XBA45BD02 //amlogic small ir--- power
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL5 0xe51afb04
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL6 0xFFFFFFFF
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL7 0xFFFFFFFF
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL8 0xFFFFFFFF
#define CONFIG_IR_REMOTE_POWER_UP_KEY_VAL9 0xFFFFFFFF

/*config the default parameters for adc power key*/
#define CONFIG_ADC_POWER_KEY_CHAN   2  /*channel range: 0-7*/
#define CONFIG_ADC_POWER_KEY_VAL    0  /*sample value range: 0-1023*/

/* args/envs */
#define CONFIG_SYS_MAXARGS  64
#define CONFIG_EXTRA_ENV_SETTINGS_BASE \
		"firstboot=1\0"\
		"upgrade_step=0\0"\
		"jtag=disable\0"\
		"loadaddr=3080000\0"\
		"dv_fw_addr=0xa00000\0"\
		"panel_type=lcd_1\0" \
		"lcd_ctrl=0x00000000\0" \
		"lcd_debug=0x00000000\0" \
		"outputmode=1080p60hz\0" \
		"vout_init=disable\0" \
		"hdmimode=none\0" \
		"colorattribute=444,8bit\0"\
		"cvbsmode=576cvbs\0" \
		"display_width=1920\0" \
		"display_height=1080\0" \
		"display_bpp=16\0" \
		"display_color_index=16\0" \
		"display_layer=osd0\0" \
		"display_color_fg=0xffff\0" \
		"display_color_bg=0\0" \
		"dtb_mem_addr=0x1000000\0" \
		"vbmeta_mem_addr=0x3000000\0"\
		"fb_addr=0x3d800000\0" \
		"fb_width=1920\0" \
		"fb_height=1080\0" \
		"frac_rate_policy=1\0" \
		"hdr_policy=0\0" \
		"config_csc_en=1\0" \
		"hdmi_read_edid=1\0" \
		"hdmichecksum=0x00000000\0" \
		"dolby_status=0\0" \
		"dolby_vision_on=0\0" \
		"dv_fw_dir_odm_ext=/odm_ext/firmware/dovi_fw.bin\0" \
		"dv_fw_dir_vendor=/vendor/firmware/dovi_fw.bin\0" \
		"dv_fw_dir=/reserved/firmware/dovi_fw.bin\0" \
		"otg_device=1\0"\
		"fdt_high=0x20000000\0"\
		"wipe_data=successful\0"\
		"wipe_cache=successful\0"\
		"EnableSelinux=enforcing\0" \
		"recovery_part=recovery\0"\
		"recovery_offset=0\0"\
		"cvbs_drv=0\0"\
		"osd_reverse=0\0"\
		"video_reverse=0\0"\
		"active_slot=normal\0"\
		"boot_part=boot\0"\
		"boot_flag=0\0"\
		"vendor_boot_part=vendor_boot\0"\
		"reboot_mode_android=""normal""\0"\
		"Irq_check_en=0\0"\
		"fs_type=""rootfstype=ramfs""\0"\
		"initargs="\
			"init=/init" \
			" console=ttyS0,115200" \
			" no_console_suspend" \
			" earlycon=aml-uart,0xff803000" \
			" ${CONFIG_KNL_LOG_LEVEL}" \
			" ramoops.pstore_en=1" \
			" ramoops.record_size=0x8000" \
			" ramoops.console_size=0x4000" \
			"\0"\
		"storeargs="\
			"get_bootloaderversion;" \
			"setenv bootargs" \
			" ${initargs}" \
			" hdr_policy=${hdr_policy}" \
			" hdr_priority=${hdr_priority}" \
			" otg_device=${otg_device}" \
			" reboot_mode_android=${reboot_mode_android}" \
			" logo=${display_layer},loaded,${fb_addr}" \
			" fb_width=${fb_width}" \
			" fb_height=${fb_height}" \
			" display_bpp=${display_bpp}" \
			" outputmode=${outputmode}" \
			" vout=${outputmode},${vout_init}" \
			" panel_type=${panel_type}" \
			" lcd_ctrl=${lcd_ctrl}" \
			" lcd_debug=${lcd_debug}" \
			" hdmitx=${cecconfig},${colorattribute}" \
			" hdmimode=${hdmimode}" \
			" hdmichecksum=${hdmichecksum}" \
			" dolby_vision_on=${dolby_vision_on}" \
			" frac_rate_policy=${frac_rate_policy}" \
			" hdmi_read_edid=${hdmi_read_edid}" \
			" cvbsmode=${cvbsmode}" \
			" config_csc_en=${config_csc_en}" \
			" osd_reverse=${osd_reverse}" \
			" video_reverse=${video_reverse}" \
			" irq_check_en=${Irq_check_en}" \
			" androidboot.selinux=${EnableSelinux}" \
			" androidboot.firstboot=${firstboot}" \
			" jtag=${jtag}; "\
			"setenv bootconfig" \
				" androidboot.hardware=amlogic" \
				" androidboot.bootloader=${bootloader_version}" \
				" androidboot.build.expect.baseband=N/A"\
				" androidboot.board_variant=${board_variant};"\
			"run cmdline_keys;"\
			"\0"\
		"factory_reset_poweroff_protect="\
			"echo wipe_data=${wipe_data}; echo wipe_cache=${wipe_cache};"\
			"if test ${wipe_data} = failed; then "\
				"run init_display; run storeargs;"\
				"if mmcinfo; then "\
					"run recovery_from_sdcard;"\
				"fi;"\
				"if usb start 0; then "\
					"run recovery_from_udisk;"\
				"fi;"\
				"run recovery_from_flash;"\
			"fi; "\
			"if test ${wipe_cache} = failed; then "\
				"run init_display; run storeargs;"\
				"if mmcinfo; then "\
					"run recovery_from_sdcard;"\
				"fi;"\
				"if usb start 0; then "\
					"run recovery_from_udisk;"\
				"fi;"\
				"run recovery_from_flash;"\
			"fi; \0" \
		"init_display="\
			"get_rebootmode;"\
			"echo reboot_mode:::: ${reboot_mode};"\
			"if test ${reboot_mode} = quiescent; then "\
				"setenv reboot_mode_android ""quiescent"";"\
				"setenv dolby_status 0;"\
				"setenv dolby_vision_on 0;"\
				"run storeargs;"\
				"setenv bootargs ${bootargs} androidboot.quiescent=1;"\
				"osd open;osd clear;"\
			"elif test ${reboot_mode} = recovery_quiescent; then "\
				"setenv reboot_mode_android ""quiescent"";"\
				"setenv dolby_status 0;"\
				"setenv dolby_vision_on 0;"\
				"run storeargs;"\
				"setenv bootargs ${bootargs} androidboot.quiescent=1;"\
				"osd open;osd clear;"\
			"else "\
				"setenv reboot_mode_android ""normal"";"\
				"run storeargs;"\
				"hdmitx hpd;"\
				"hdmitx get_parse_edid;"\
				"dovi process;"\
				"osd open;"\
				"osd clear;"\
				"imgread pic logo bootup $loadaddr;"\
				"bmp display $bootup_offset;"\
				"bmp scale;"\
				"vout output ${outputmode};"\
				"dovi set;"\
				"dovi pkg;"\
				"vpp hdrpkt;"\
			"fi;"\
			"\0"\
		"cmdline_keys_usid="\
			"if keyman read usid ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} androidboot.serialno=${usid};"\
				"setenv serial ${usid};"\
			"else "\
				"setenv bootargs ${bootargs} androidboot.serialno=sabrina;"\
				"setenv serial sabrina${cpu_id};"\
			"fi;"\
			"\0"\
		"cmdline_keys_mac="\
			"if keyman read mac ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} "\
					"mac=${mac} "\
					"androidboot.mac=${mac};"\
			"fi;"\
			"if keyman read mac_wifi ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} "\
					"mac_wifi=${mac_wifi} "\
					"androidboot.mac_wifi=${mac_wifi};"\
			"else "\
				"setenv bootargs ${bootargs} "\
					"mac_wifi=00:11:22:33:44:55 "\
					"androidboot.mac_wifi=00:11:22:33:44:55;"\
			"fi;"\
			"if keyman read mac_bt ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} "\
					"mac_bt=${mac_bt} "\
					"androidboot.mac_bt=${mac_bt};"\
			"fi;"\
			"\0"\
		"cmdline_keys_deviceid="\
			"if keyman read deviceid ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} androidboot.deviceid=${deviceid};"\
			"fi;"\
			"\0"\
		"cmdline_keys_sku="\
			"if keyman read nest_key1 ${loadaddr} str; then "\
				"setenv bootargs ${bootargs} "\
				"androidboot.hardware.sku=${nest_key1};"\
			"fi;"\
			"\0"\
		"cmdline_keys="\
			"if keyman init 0x1234; then "\
				"run cmdline_keys_usid;"\
				"run cmdline_keys_mac;"\
				"run cmdline_keys_deviceid;"\
				"run cmdline_keys_sku;"\
			"fi;"\
			"\0"\
		"bcb_cmd="\
			"get_avb_mode;"\
			"get_valid_slot;"\
			"if test ${vendor_boot_mode} = true; then "\
				"setenv loadaddr 2080000;"\
				"setenv dtb_mem_addr 0x1f00000;"\
			"fi;"\
			"\0"\
		"storeboot="\
			"if test ${reboot_mode} = normal; then "\
			"else if test ${reboot_mode} = cold_boot; then "\
			"else "\
				"boot_cooling;"\
			"fi;fi;"\
			"get_system_as_root_mode;"\
			"echo system_mode: ${system_mode};"\
			"get_avb_mode;"\
			"echo active_slot: ${active_slot};"\
			"if test ${system_mode} = 1; then "\
				"setenv bootargs ${bootargs} ro rootwait skip_initramfs;"\
			"else "\
				"setenv bootargs ${bootargs} androidboot.force_normal_boot=1;"\
			"fi;"\
			"if test ${active_slot} != normal; then "\
					"setenv bootargs ${bootargs} androidboot.slot_suffix=${active_slot};"\
			"fi;"\
			"if test ${avb2} = 0; then "\
				"if test ${active_slot} = _a; then "\
					"setenv bootargs ${bootargs} root=/dev/mmcblk0p23;"\
				"else if test ${active_slot} = _b; then "\
					"setenv bootargs ${bootargs} root=/dev/mmcblk0p24;"\
				"fi;fi;"\
			"fi;"\
			"if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;"\
			"run storeargs; run fallback;"\
			"\0"\
		"upgrade_check=" \
			"echo upgrade_step=${upgrade_step}; "\
			"if itest ${upgrade_step} == 3; then "\
				"run init_display;" \
				"run storeargs;" \
				"run fallback;" \
			"fi;"\
			"\0" \
		"recovery_from_cache="\
			"if ext4size mmc 1:2 /recovery/recovery.img && " \
			"   itest ${filesize} <= 0x1800000 && " \
			"   ext4load mmc 1:2 ${loadaddr} /recovery/recovery.img ${filesize} && " \
			"   ext4size mmc 1:2  /recovery/dtb.img && " \
			"   itest ${filesize} <= 0x80000 && " \
			"   ext4load mmc 1:2 ${dtb_mem_addr} /recovery/dtb.img ${filesize}; then "\
				"echo cache recovery.img loaded;" \
				"setenv loadpart recovery;" \
				"bootm ${loadaddr};"\
			"fi;"\
			"\0"\
		"recovery_from_flash="\
			"echo active_slot: ${active_slot};"\
			"if test ${active_slot} = normal; then "\
				"run recovery_from_cache;" \
				"setenv bootargs" \
					" ${bootargs}" \
					" aml_dt=${aml_dt}" \
					" recovery_part=${recovery_part}" \
					" recovery_offset=${recovery_offset};"\
				"if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then "\
					"wipeisb;"\
					"bootm ${loadaddr};"\
				"fi;"\
			"else "\
				"if test ${partition_mode} = normal; then "\
					"setenv bootargs ${bootargs}" \
					" aml_dt=${aml_dt}" \
					" recovery_part=${boot_part}" \
					" recovery_offset=${recovery_offset};" \
					"if imgread kernel ${boot_part} ${loadaddr}; then " \
					"bootm ${loadaddr};" \
					"fi;" \
				"else "\
					"if test ${vendor_boot_mode} = true; then "\
						"setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} recovery_part=${boot_part} recovery_offset=${recovery_offset} androidboot.slot_suffix=${active_slot};"\
						"if imgread kernel ${boot_part} ${loadaddr}; then bootm ${loadaddr}; fi;"\
					"else "\
						"setenv bootargs ${bootargs} ${fs_type} aml_dt=${aml_dt} recovery_part=${recovery_part} recovery_offset=${recovery_offset} androidboot.slot_suffix=${active_slot};"\
						"if imgread kernel ${recovery_part} ${loadaddr} ${recovery_offset}; then wipeisb; bootm ${loadaddr}; fi;"\
					"fi;"\
				"fi;"\
			"fi;"\
			"\0"\
		"switch_bootmode="\
			"get_rebootmode;"\
			"if test ${reboot_mode} = factory_reset; then "\
				"setenv reboot_mode_android ""normal"";"\
				"run storeargs;"\
				"run recovery_from_flash;"\
			"elif test ${reboot_mode} = update; then "\
				"setenv reboot_mode_android ""normal"";"\
				"run storeargs;"\
				"run update;"\
			"elif test ${reboot_mode} = quiescent; then "\
				"setenv reboot_mode_android ""quiescent"";"\
					"setenv dolby_status 0;"\
					"setenv dolby_vision_on 0;"\
				"run storeargs;"\
				"setenv bootargs ${bootargs} androidboot.quiescent=1;"\
			"elif test ${reboot_mode} = recovery_quiescent; then "\
				"setenv reboot_mode_android ""quiescent"";"\
					"setenv dolby_status 0;"\
					"setenv dolby_vision_on 0;"\
				"run storeargs;"\
				"setenv bootargs ${bootargs} androidboot.quiescent=1;"\
				"run recovery_from_flash;"\
			"elif test ${reboot_mode} = cold_boot; then "\
				"setenv reboot_mode_android ""normal"";"\
				"run storeargs;"\
			"elif test ${reboot_mode} = fastboot; then "\
				"setenv reboot_mode_android ""normal"";"\
				"run storeargs;"\
				"fastboot;"\
			"fi;"\
			"\0"\
		"recovery_from_udisk=" \
			"if fatsize usb 0 recovery.img && " \
			"   itest ${filesize} <= 0x1800000 && " \
			"   fatload usb 0 ${loadaddr} recovery.img ${filesize} && " \
			"   fatsize usb 0 dtb.img && " \
			"   itest ${filesize} <= 0x80000 && " \
			"   fatload usb 0 ${dtb_mem_addr} dtb.img ${filesize} && " \
			"   fatsize usb 0 vbmeta.img && " \
			"   itest ${filesize} <= 0x80000 && " \
			"   fatload usb 0 ${vbmeta_mem_addr} vbmeta.img ${filesize}; then " \
				"setenv bootargs ${bootargs} androidboot.install_ota_from_usb=true; "\
				"setenv loadpart recovery;"\
				"setenv upgrade_step 0;" /* never skip avb */ \
				"setenv use_mem_vbmeta 1;"\
				"setenv use_external_avb_key 1;"\
				"bootm ${loadaddr};" \
			"fi;" \
			"\0" \
		"upgrade_key=" \
			"if gpio input GPIOAO_10; then " \
				"echo GPIOAO_10 pressed;" \
				"if usb start 0; then " \
					"run recovery_from_udisk;" \
				"fi;" \
			"fi;" \
			"\0"

#define CONFIG_EXTRA_ENV_SETTINGS_RELEASE \
		CONFIG_EXTRA_ENV_SETTINGS_BASE \
		"lock=10001110\0" \
		"board_variant=prod\0"\
		"fallback=" \
			"run recovery_from_flash;" \
			"\0"

#define CONFIG_EXTRA_ENV_SETTINGS_DEV \
		CONFIG_EXTRA_ENV_SETTINGS_BASE \
		"lock=10101110\0" /* default to unlockable */ \
		"board_variant=dev\0"\
		"fallback=run update\0" \
		"usb_burning=" CONFIG_USB_TOOL_ENTRY "\0" \
		"try_auto_burn=update 700 750;\0" \
		"sdcburncfg=aml_sdc_burn.ini\0" \
		"sdc_burning=sdc_burn ${sdcburncfg}\0" \
		"update=" \
			/* first sdc_burn, second ext-sd autoscr/recovery, */ \
			/* last udisk autoscr/recovery */ \
			"run sdc_burning; " \
			"if usb start 0; then " \
				"run recovery_from_udisk;" \
			"fi;" \
			"run recovery_from_flash;" \
			"\0"

#ifdef AML_DISABLE_UPDATE_MODE
#define CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_SETTINGS_RELEASE
#define CONFIG_BOOTDELAY 0
#define CONFIG_KNL_LOG_LEVEL    "loglevel=3"
#else
#define CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_SETTINGS_DEV
#define CONFIG_BOOTDELAY 1
#define CONFIG_KNL_LOG_LEVEL    "loglevel=7"
#endif

#define CONFIG_PREBOOT  \
			"run factory_reset_poweroff_protect;"\
			"run upgrade_check;"\
			"run init_display;"\
			"run storeargs;"\
			"run upgrade_key;" \
			"bcb uboot-command;"\
			"run switch_bootmode;"

#define CONFIG_BOOTCOMMAND "ddr_auto_fast_boot_check 6;run storeboot"

//#define CONFIG_ENV_IS_NOWHERE  1
#define CONFIG_ENV_SIZE   (64*1024)
#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_SIZE)
#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
#define CONFIG_ENV_BACKUP

#define CONFIG_FIT 1
#define CONFIG_OF_LIBFDT 1
#define CONFIG_ANDROID_BOOT_IMAGE 1
#define CONFIG_ANDROID_IMG 1
#define CONFIG_SYS_BOOTM_LEN (64<<20) /* Increase max gunzip size*/

/* cpu */
#define CONFIG_CPU_CLK			1908 //MHz. Range: 360-1908, should be multiple of 24

/* ATTENTION */
/* DDR configs move to board/amlogic/[board]/firmware/timing.c */

#define CONFIG_NR_DRAM_BANKS			1
/* ddr functions */
#define CONFIG_DDR_FULL_TEST			0 //0:disable, 1:enable. ddr full test
#define CONFIG_CMD_DDR_D2PLL			1 //0:disable, 1:enable. d2pll cmd
#define CONFIG_CMD_DDR_TEST_G12			1 //0:disable, 1:enable. ddrtest cmd
#define CONFIG_DDR_LOW_POWER			0 //0:disable, 1:enable. ddr clk gate for lp
#define CONFIG_DDR_ZQ_PD				0 //0:disable, 1:enable. ddr zq power down
#define CONFIG_DDR_USE_EXT_VREF			0 //0:disable, 1:enable. ddr use external vref
#define CONFIG_DDR4_TIMING_TEST			0 //0:disable, 1:enable. ddr4 timing test function
#define CONFIG_DDR_PLL_BYPASS			0 //0:disable, 1:enable. ddr pll bypass function

/* storage: emmc/nand/sd */
#define		CONFIG_STORE_COMPATIBLE 1
#define 	CONFIG_ENV_OVERWRITE
#define 	CONFIG_CMD_SAVEENV
/* fixme, need fix*/

#if (defined(CONFIG_ENV_IS_IN_AMLNAND) || defined(CONFIG_ENV_IS_IN_MMC)) && defined(CONFIG_STORE_COMPATIBLE)
#error env in amlnand/mmc already be compatible;
#endif

/*
*				storage
*		|---------|---------|
*		|					|
*		emmc<--Compatible-->nand
*					|-------|-------|
*					|				|
*					MTD<-Exclusive->NFTL
*/
/* axg only support slc nand */
/* swither for mtd nand which is for slc only. */
/* support for mtd */
//#define CONFIG_AML_MTD 1
/* support for nftl */
//#define CONFIG_AML_NAND	1

#if defined(CONFIG_AML_NAND) && defined(CONFIG_AML_MTD)
#error CONFIG_AML_NAND/CONFIG_AML_MTD can not support at the sametime;
#endif

#ifdef CONFIG_AML_MTD

/* bootloader is construct by bl2 and fip
 * when DISCRETE_BOOTLOADER is enabled, bl2 & fip
 * will not be stored continuously, and nand layout
 * would be bl2|rsv|fip|normal, but not
 * bl2|fip|rsv|normal anymore
 */
#define CONFIG_DISCRETE_BOOTLOADER

#ifdef  CONFIG_DISCRETE_BOOTLOADER
#define CONFIG_TPL_SIZE_PER_COPY          0x200000
#define CONFIG_TPL_COPY_NUM               4
#define CONFIG_TPL_PART_NAME              "tpl"
/* for bl2, restricted by romboot */
//SKT 1024 pages only support 4 block, so 4 copies
#define CONFIG_BL2_COPY_NUM               4
#endif /* CONFIG_DISCRETE_BOOTLOADER */

#define CONFIG_CMD_NAND 1
#define CONFIG_MTD_DEVICE y
/* mtd parts of ourown.*/
#define CONFIG_AML_MTDPART	1
/* mtd parts by env default way.*/
/*
#define MTDIDS_NAME_STR		"aml_nand.0"
#define MTDIDS_DEFAULT		"nand1=" MTDIDS_NAME_STR
#define MTDPARTS_DEFAULT	"mtdparts=" MTDIDS_NAME_STR ":" \
					"3M@8192K(logo),"	\
					"10M(recovery),"	\
					"8M(kernel),"	\
					"40M(rootfs),"	\
					"-(data)"
*/
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_RBTREE
#define CONFIG_CMD_NAND_TORTURE 1
#define CONFIG_CMD_MTDPARTS   1
#define CONFIG_MTD_PARTITIONS 1
#define CONFIG_SYS_MAX_NAND_DEVICE  2
#define CONFIG_SYS_NAND_BASE_LIST   {0}
#endif
/* endof CONFIG_AML_MTD */
#define		CONFIG_AML_SD_EMMC 1
#ifdef		CONFIG_AML_SD_EMMC
	#define 	CONFIG_GENERIC_MMC 1
	#define 	CONFIG_CMD_MMC 1
	#define CONFIG_CMD_GPT 1
	#define	CONFIG_SYS_MMC_ENV_DEV 1
	#define CONFIG_EMMC_DDR52_EN 0
	#define CONFIG_EMMC_DDR52_CLK 35000000
#endif
#define		CONFIG_PARTITIONS 1
#define 	CONFIG_SYS_NO_FLASH  1
//#define     CONFIG_AML_GPT

/* meson SPI */
#define CONFIG_AML_SPIFC
//#define CONFIG_AML_SPICC
#if defined CONFIG_AML_SPIFC || defined CONFIG_AML_SPICC
	#define CONFIG_OF_SPI
	#define CONFIG_DM_SPI
	#define CONFIG_CMD_SPI
#endif
/* SPI flash config */
#ifdef CONFIG_AML_SPIFC
	#define CONFIG_SPI_FLASH
	#define CONFIG_DM_SPI_FLASH
	#define CONFIG_CMD_SF
	/* SPI flash support list */
	#define CONFIG_SPI_FLASH_ATMEL
	#define CONFIG_SPI_FLASH_EON
	#define CONFIG_SPI_FLASH_GIGADEVICE
	#define CONFIG_SPI_FLASH_MACRONIX
	#define CONFIG_SPI_FLASH_SPANSION
	#define CONFIG_SPI_FLASH_STMICRO
	#define CONFIG_SPI_FLASH_SST
	#define CONFIG_SPI_FLASH_WINBOND
	#define CONFIG_SPI_FRAM_RAMTRON
	#define CONFIG_SPI_M95XXX
	#define CONFIG_SPI_FLASH_ESMT
	/* SPI nand flash support */
//	#define CONFIG_SPI_NAND
	#define CONFIG_BL2_SIZE (64 * 1024)
#endif

#if defined CONFIG_AML_MTD || defined CONFIG_SPI_NAND
	#define CONFIG_CMD_NAND 1
	#define CONFIG_MTD_DEVICE y
	#define CONFIG_RBTREE
	#define CONFIG_CMD_NAND_TORTURE 1
	#define CONFIG_CMD_MTDPARTS   1
	#define CONFIG_MTD_PARTITIONS 1
	#define CONFIG_SYS_MAX_NAND_DEVICE  2
	#define CONFIG_SYS_NAND_BASE_LIST   {0}
#endif

/* vpu */
#define CONFIG_AML_VPU 1
//#define CONFIG_VPU_CLK_LEVEL_DFT 7

/* DISPLAY & HDMITX */
#define CONFIG_AML_HDMITX20 1
#if defined(CONFIG_AML_HDMITX20)
#define CONFIG_AML_DOLBY 1
#define CONFIG_CMD_INI 1
#endif
#define CONFIG_AML_CANVAS 1
#define CONFIG_AML_VOUT 1
#define CONFIG_AML_OSD 1
#define CONFIG_AML_MINUI 1
#define CONFIG_OSD_SCALE_ENABLE 1
#define CONFIG_CMD_BMP 1

#if defined(CONFIG_AML_VOUT)
#define CONFIG_AML_CVBS 1
#endif

// #define CONFIG_AML_LCD    1
// #define CONFIG_AML_LCD_TABLET 1
// #define CONFIG_AML_LCD_EXTERN 1


/* USB
 * Enable CONFIG_MUSB_HCD for Host functionalities MSC, keyboard
 * Enable CONFIG_MUSB_UDD for Device functionalities.
 */
/* #define CONFIG_MUSB_UDC		1 */
#define CONFIG_CMD_USB 1
#if defined(CONFIG_CMD_USB)
	#define CONFIG_GXL_XHCI_BASE            0xff500000
	#define CONFIG_GXL_USB_PHY2_BASE        0xffe09000
	#define CONFIG_GXL_USB_PHY3_BASE        0xffe09080
	#define CONFIG_USB_PHY_20				0xff636000
	#define CONFIG_USB_PHY_21				0xff63A000
	#define CONFIG_USB_STORAGE      1
	#define CONFIG_USB_XHCI		1
	#define CONFIG_USB_XHCI_AMLOGIC_V2 1
	#define CONFIG_USB_GPIO_PWR  			GPIOEE(GPIOH_6)
	#define CONFIG_USB_GPIO_PWR_NAME		"GPIOH_6"
	//#define CONFIG_USB_XHCI_AMLOGIC_USB3_V2		1
#endif //#if defined(CONFIG_CMD_USB)

#define CONFIG_TXLX_USB        1
#define CONFIG_USB_DEVICE_V2    1
#define USB_PHY2_PLL_PARAMETER_1	0x09400414
#define USB_PHY2_PLL_PARAMETER_2	0x927e0000
#define USB_PHY2_PLL_PARAMETER_3	0xAC5F49E5
#define USB_G12x_PHY_PLL_SETTING_1	(0xfe18)
#define USB_G12x_PHY_PLL_SETTING_2	(0xfff)
#define USB_G12x_PHY_PLL_SETTING_3	(0x78000)
#define USB_G12x_PHY_PLL_SETTING_4	(0xe0004)
#define USB_G12x_PHY_PLL_SETTING_5	(0xe000c)

//UBOOT fastboot config
#define CONFIG_CMD_FASTBOOT 1
#define CONFIG_FASTBOOT_FLASH_MMC_DEV 1
#define CONFIG_FASTBOOT_FLASH 1
#define CONFIG_USB_GADGET 1
#define CONFIG_USBDOWNLOAD_GADGET 1
#define CONFIG_SYS_CACHELINE_SIZE 64
#define CONFIG_FASTBOOT_MAX_DOWN_SIZE	0x8000000
#define CONFIG_DEVICE_PRODUCT	"sabrina"

#ifndef AML_DISABLE_UPDATE_MODE
//UBOOT Facotry usb/sdcard burning config
#define CONFIG_AML_V2_FACTORY_BURN              1       //support facotry usb burning
#define CONFIG_AML_FACTORY_BURN_LOCAL_UPGRADE   1       //support factory sdcard burning
#define CONFIG_POWER_KEY_NOT_SUPPORTED_FOR_BURN 1       //There isn't power-key for factory sdcard burning
#define CONFIG_SD_BURNING_SUPPORT_UI            1       //Displaying upgrading progress bar when sdcard/udisk burning
#endif // #ifndef AML_DISABLE_UPDATE_MODE

#define CONFIG_AML_SECURITY_KEY                 1
#define CONFIG_UNIFY_KEY_MANAGE                 1

/* net */
#define CONFIG_CMD_NET   1
#if defined(CONFIG_CMD_NET)
	#define CONFIG_DESIGNWARE_ETH 1
	#define CONFIG_PHYLIB	1
	#define CONFIG_NET_MULTI 1
	#define CONFIG_CMD_PING 1
	#define CONFIG_CMD_DHCP 1
	#define CONFIG_CMD_RARP 1
	#define CONFIG_HOSTNAME        arm_gxbb
//	#define CONFIG_RANDOM_ETHADDR  1				   /* use random eth addr, or default */
	#define CONFIG_ETHADDR         00:15:18:01:81:31   /* Ethernet address */
	#define CONFIG_IPADDR          10.18.9.97          /* Our ip address */
	#define CONFIG_GATEWAYIP       10.18.9.1           /* Our getway ip address */
	#define CONFIG_SERVERIP        10.18.9.113         /* Tftp server ip address */
	#define CONFIG_NETMASK         255.255.255.0
#endif /* (CONFIG_CMD_NET) */

/* other devices */
/* I2C DM driver*/
#define CONFIG_DM_I2C
#define CONFIG_DM_I2C_GPIO		1
#if defined(CONFIG_DM_I2C)
#define CONFIG_SYS_I2C_MESON		1
#else
#define CONFIG_SYS_I2C_AML			1
#define CONFIG_SYS_I2C_SPEED		400000
#endif

/* PWM DM driver*/
#define CONFIG_DM_PWM
#define CONFIG_PWM_MESON

#define CONFIG_EFUSE 1

/* commands */
#define CONFIG_CMD_CACHE 1
#define CONFIG_CMD_EFUSE 1
#define CONFIG_CMD_I2C 1
#define CONFIG_CMD_FAT 1
#define CONFIG_CMD_GPIO 1
#define CONFIG_CMD_RUN
#define CONFIG_CMD_REBOOT 1
#define CONFIG_CMD_ECHO 1
#define CONFIG_CMD_MISC 1

/*file system*/
#define CONFIG_DOS_PARTITION 1
#define CONFIG_EFI_PARTITION 1
#define CONFIG_AML_PARTITION 1
#define CONFIG_MMC 1
#define CONFIG_FS_FAT 1
#define CONFIG_FS_EXT4 1
#define CONFIG_LZO 1
#define CONFIG_LZMA 1

/* Cache Definitions */
//#define CONFIG_SYS_DCACHE_OFF
//#define CONFIG_SYS_ICACHE_OFF

/* other functions */
#define CONFIG_NEED_BL301	1
#define CONFIG_NEED_BL32	1
#define CONFIG_CMD_RSVMEM	1
#define CONFIG_FIP_IMG_SUPPORT	1
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_CMD_MISC     1
#define CONFIG_CMD_ITEST    1
#define CONFIG_CMD_CPU_TEMP 1
#define CONFIG_SYS_MEM_TOP_HIDE 0x08000000 //hide 128MB for kernel reserve
#define CONFIG_CMD_LOADB    1

#define CONFIG_MULTI_DTB    1

/* debug mode defines */
//#define CONFIG_DEBUG_MODE           1
#ifdef CONFIG_DEBUG_MODE
#define CONFIG_DDR_CLK_DEBUG        636
#define CONFIG_CPU_CLK_DEBUG        600
#endif

//support secure boot
#define CONFIG_AML_SECURE_UBOOT   1

#if defined(CONFIG_AML_SECURE_UBOOT)

//for SRAM size limitation just disable NAND
//as the socket board default has no NAND
//#undef CONFIG_AML_NAND

//unify build for generate encrypted bootloader "u-boot.bin.encrypt"
#define CONFIG_AML_CRYPTO_UBOOT   1

//unify build for generate encrypted kernel image
//SRC : "board/amlogic/(board)/boot.img"
//DST : "fip/boot.img.encrypt"
//#define CONFIG_AML_CRYPTO_IMG       1

#endif //CONFIG_AML_SECURE_UBOOT

#define CONFIG_SECURE_STORAGE 1

//build with uboot auto test
//#define CONFIG_AML_UBOOT_AUTO_TEST 1

//board customer ID
//#define CONFIG_CUSTOMER_ID  (0x6472616F624C4D41)

#if defined(CONFIG_CUSTOMER_ID)
  #undef CONFIG_AML_CUSTOMER_ID
  #define CONFIG_AML_CUSTOMER_ID  CONFIG_CUSTOMER_ID
#endif

/* Choose One of Ethernet Type */
#define CONFIG_ETHERNET_NONE
#undef ETHERNET_INTERNAL_PHY
#undef ETHERNET_EXTERNAL_PHY

#define CONFIG_HIGH_TEMP_COOL 90

#define CONFIG_MDUMP_COMPRESS 1
#define CONFIG_AML_KASLR_SEED
#endif

