# The Serial Flash Controller is the AST2400 BMC.
set   SFC_IS_AST2500
unset SFC_IS_AST2400
unset BMC_DOES_SFC_INIT
unset SFC_IS_IBM_DPSS
set   ALLOW_MICRON_PNOR
set   ALLOW_MACRONIX_PNOR

# VPD options.
set MVPD_READ_FROM_HW
set MVPD_WRITE_TO_HW
set MVPD_READ_FROM_PNOR
set MVPD_WRITE_TO_PNOR
set DJVPD_READ_FROM_HW
unset DJVPD_WRITE_TO_HW
set DJVPD_READ_FROM_PNOR
set DJVPD_WRITE_TO_PNOR
unset MEMVPD_READ_FROM_HW
unset MEMVPD_WRITE_TO_HW
set MEMVPD_READ_FROM_PNOR
set MEMVPD_WRITE_TO_PNOR
unset PVPD_READ_FROM_HW
unset PVPD_WRITE_TO_HW
set PVPD_READ_FROM_PNOR
set PVPD_WRITE_TO_PNOR
unset CDIMM_FORMAT_FOR_CVPD

# gpio config
set GPIODD
unset PALMETTO_VDDR

# Enable SBE updates
unset SBE_UPDATE_INDEPENDENT
unset SBE_UPDATE_SEQUENTIAL
set SBE_UPDATE_SIMULTANEOUS
unset NO_SBE_UPDATES

unset PCIE_HOTPLUG_CONTROLLER

# turn on console output
set CONSOLE
set BMC_AST2500

set DISABLE_HOSTBOOT_RUNTIME

# Compile in hostboot runtime PRD
set HBRT_PRD
unset HTMGT
unset START_OCC_DURING_BOOT

#PNOR flags
unset PNOR_TWO_SIDE_SUPPORT

set BMC_BT_LPC_IPMI

# Disable Checktop Analysis
unset ENABLE_CHECKSTOP_ANALYSIS
unset IPLTIME_CHECKSTOP_ANALYSIS

# Hostboot will not detect hardware changes
unset HOST_HCDB_SUPPORT

# set for trace debug to console
set CONSOLE_OUTPUT_TRACE

unset CONFIG_SECUREBOOT
unset CONFIG_TPMDD
unset CONFIG_TPM_NUVOTON
