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

# VPD options.
unset MVPD_READ_FROM_PNOR
set MVPD_READ_FROM_HW
unset DJVPD_READ_FROM_PNOR
set DJVPD_READ_FROM_HW
unset CVPD_READ_FROM_PNOR
set CVPD_READ_FROM_HW
set SKIP_RESTRICT_EX_UNITS

# gpio config
set GPIODD
set PALMETTO_VDDR

# disable sbe updates
set NO_SBE_UPDATES

unset PCIE_HOTPLUG_CONTROLLER

# turn on console output
set CONSOLE
set CONSOLE_AST2400

set PNOR_IS_32MB

set NO_DMI_EREPAIR
set DISABLE_HOSTBOOT_RUNTIME

# OCC Enablment flags
unset SET_NOMINAL_PSTATE
set HTMGT
set START_OCC_DURING_BOOT

set BMC_BT_LPC_IPMI

# set for trace debug to console
unset CONSOLE_OUTPUT_TRACE
