# 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
unset SBE_UPDATE_SIMULTANEOUS
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

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

unset CONFIG_SECUREBOOT
unset CONFIG_TPMDD
unset CONFIG_TPM_NUVOTON
