# 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
set 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

# Disable SBE updates
unset SBE_UPDATE_INDEPENDENT
unset SBE_UPDATE_SEQUENTIAL
set 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

unset 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
unset CONSOLE_OUTPUT_TRACE

unset CONFIG_SECUREBOOT
unset CONFIG_TPMDD
unset CONFIG_TPM_NUVOTON
