# The Serial Flash Controller is the AST2400 BMC.
set   SFC_IS_AST2400
set   PNORDD_IS_IPMI
unset PNORDD_IS_SFC
set   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
set CVPD_READ_FROM_HW
set CVPD_WRITE_TO_HW
set CVPD_READ_FROM_PNOR
set CVPD_WRITE_TO_PNOR
set PVPD_READ_FROM_HW
set PVPD_WRITE_TO_HW
set PVPD_READ_FROM_PNOR
set PVPD_WRITE_TO_PNOR
set SKIP_RESTRICT_EX_UNITS
unset CDIMM_FORMAT_FOR_CVPD

# gpio config
set GPIODD
set PALMETTO_VDDR

# Enable SBE updates
#set SBE_UPDATE_INDEPENDENT
set SBE_UPDATE_SIMULTANEOUS

unset PCIE_HOTPLUG_CONTROLLER

# turn on console output
set CONSOLE
set BMC_AST2400

# Enable Kingston dimm voltage workaround
unset KINGSTON_1_35_VOLT

unset DISABLE_HOSTBOOT_RUNTIME

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

#PNOR flags
unset PNOR_TWO_SIDE_SUPPORT
set PNOR_IS_32MB

set BMC_BT_LPC_IPMI

unset SET_NOMINAL_PSTATE

# Enable Checktop Analysis
set ENABLE_CHECKSTOP_ANALYSIS
set IPLTIME_CHECKSTOP_ANALYSIS

# Hostboot will detect hardware changes
set HOST_HCDB_SUPPORT

# set for trace debug to console
unset CONSOLE_OUTPUT_TRACE
