# Cuttlefish defines the maximum size of the environment partition
CONFIG_ENV_SIZE=0x1000

# Enable Android-specific features and commands needed to boot
CONFIG_ANDROID_AB=y
CONFIG_ANDROID_BOOT_IMAGE=y
CONFIG_ANDROID_BOOTLOADER=y
CONFIG_ANDROID_USES_RECOVERY_AS_BOOT=y
CONFIG_ANDROID_BOOTLOADER_OEMLOCK_CONSOLE=y
CONFIG_ANDROID_BOOTLOADER_KEYMINT_CONSOLE=y
CONFIG_ANDROID_PERSISTENT_RAW_DISK=y
CONFIG_ANDROID_PERSISTENT_RAW_DISK_DEVICE=1
CONFIG_CMDLINE=y
CONFIG_CMD_AB_SELECT=y
CONFIG_CMD_BOOT_ANDROID=y
CONFIG_CMD_ENV_EXISTS=y
CONFIG_CMD_ENV_VERIFIED_IMPORT=y
CONFIG_CMD_GPT=y
CONFIG_CMD_PART=y
CONFIG_CMD_READ=y
CONFIG_CMD_SETEXPR=y
CONFIG_HUSH_PARSER=y
CONFIG_USE_DEFAULT_ENV_FILE=y
CONFIG_DEFAULT_ENV_FILE="default_env.txt"
CONFIG_LIBAVB=y
CONFIG_AVB_VERIFY=y
CONFIG_CMD_AVB=y
CONFIG_AVB_BUF_SIZE=0x100000
CONFIG_AVB_PUBKEY_FILE="testkey_rsa4096.avbpubkey"
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_SUPPORT_RAW_INITRD=y

# arm/x86 specific option to enable support for bzImage/zImage
CONFIG_CMD_BOOTZ=y

# arm64 specific options to enable support for compressed Images
# CONFIG_LZMA is not set
CONFIG_GZIP=y
CONFIG_LZ4=y

# Other OS support (EFI system partition)
CONFIG_CMD_BOOTEFI=y
# CONFIG_CMD_BOOTEFI_HELLO_COMPILE is not set
CONFIG_CMD_FAT=y
CONFIG_CMD_FS_GENERIC=y

# Support bootconfig with libxbc
CONFIG_XBC=y

# Support examining device model state
CONFIG_CMD_DM=y

# Interactive command line
CONFIG_AUTO_COMPLETE=y
CONFIG_AUTOBOOT=y
CONFIG_BOOTDELAY=-2
CONFIG_CMDLINE_EDITING=y
CONFIG_SYS_LONGHELP=y

# Used by Android boot loader and fastboot
CONFIG_CMD_BCB=y
# Used by Android boot loader (oemlock/avb)
CONFIG_ANDROID_BOOTLOADER_OEMLOCK_VIRTIO_CONSOLE_INDEX=10

# Must not use RNG from host.
# CONFIG_VIRTIO_RNG is not set
