# Use IPMIDD for PNOR
unset SFC_IS_AST2400
set PNORDD_IS_IPMI
unset PNORDD_IS_SFC
unset BMC_DOES_SFC_INIT
unset SFC_IS_IBM_DPSS
set   ALLOW_MICRON_PNOR
set   ALLOW_MACRONIX_PNOR

#PNOR flags
unset PNOR_TWO_SIDE_SUPPORT

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

unset PCIE_HOTPLUG_CONTROLLER

# turn on console output
set CONSOLE
set BMC_AST2400

set PNOR_IS_32MB

unset DISABLE_HOSTBOOT_RUNTIME

# Compile in hostboot runtime PRD
set HBRT_PRD

# OCC Enablment flags
unset SET_NOMINAL_PSTATE
set HTMGT
set START_OCC_DURING_BOOT

set BMC_BT_LPC_IPMI

# 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
