# 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.
set MVPD_READ_FROM_HW
set MVPD_WRITE_TO_HW
set MVPD_READ_FROM_PNOR
set MVPD_WRITE_FROM_PNOR
set DJVPD_READ_FROM_HW
set 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 SKIP_RESTRICT_EX_UNITS
unset CDIMM_FORMAT_FOR_CVPD

# 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

# Enable Kingston dimm voltage workaround
set KINGSTON_1_35_VOLT

set NO_DMI_EREPAIR
set DISABLE_HOSTBOOT_RUNTIME
unset HTMGT
unset START_OCC_DURING_BOOT

# Enable Checktop Analysis
set ENABLE_CHECKSTOP_ANALYSIS

