config BR2_PACKAGE_OPENPOWER_PNOR
        bool "openpower_pnor"
        default y if (BR2_OPENPOWER_PLATFORM)
        select BR2_PACKAGE_HOSTBOOT
        select BR2_PACKAGE_HOSTBOOT_BINARIES
        select BR2_PACKAGE_SKIBOOT
        select BR2_PACKAGE_OPENPOWER_FFS
        select BR2_PACKAGE_OCC
        select BR2_PACKAGE_CAPP_UCODE
        select BR2_PACKAGE_IMA_CATALOG
        select BR2_PACKAGE_HOST_OPENPOWER_VPNOR
        select BR2_PACKAGE_MACHINE_XML
        select BR2_PACKAGE_HCODE if BR2_OPENPOWER_POWER9
        help
            Utilites for building a targeting binary image

menu "OpenPOWER PNOR assembly options"

choice
    prompt "Secure Boot key transition type"
    default BR2_OPENPOWER_SECUREBOOT_NO_KEY_TRANSITION

config BR2_OPENPOWER_SECUREBOOT_NO_KEY_TRANSITION
    bool "None"
    help
      Builds a driver that does not transition Secure Boot keys

config BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_DEV
    bool "Transition existing keys to development keys"
    help
      Builds a driver that transitions Secure Boot keys to development keys and
      powers off the system.  Only usable when system security has been
      disabled.

config BR2_OPENPOWER_SECUREBOOT_KEY_TRANSITION_TO_PROD
    bool "Transition development keys to production keys"
    help
      Builds a driver that transitions Secure Boot development keys to
      vendor supplied production keys and powers off the system.

endchoice

config BR2_OPENPOWER_SECUREBOOT_SIGN_MODE
        string "Secureboot signing mode"
        default "development"
        help
            Available options [development | production]
            Indicates the signing mode when generating the PNOR image.  Only
            applicable when hostboot is compiled with SECUREBOOT compile flag.
            Default mode is development.

config BR2_OPENPOWER_PNOR_XML_LAYOUT_FILENAME
        string "Name of Openpower pnor xml layout file"
        help
            String used to define hw specific make config file

config BR2_OPENPOWER_CONFIG_NAME
        string "Name of configuration"
        help
            String used to define configuration name

config BR2_OPENPOWER_PNOR_FILENAME
        string "Name of pnor file to be created"
        help
            String used to define pnor filename to be created

config BR2_OPENPOWER_PNOR_UPDATE_FILENAME
        string "Name of pnor file to be created for updates, if needed"
        help
            String used to define pnor filename to be created for updates, if needed

config BR2_SKIBOOT_LID_NAME
        string "Name of skiboot lid name to be used"
        default "skiboot.lid"
        help
            String used to define skiboot lid filename

config BR2_TARGET_SKIBOOT_XZ
        bool "Compress the skiboot image with XZ"
        select BR2_OPENPOWER_PNOR_XZ_ENABLED
        default y

config BR2_SKIBOOT_LID_XZ_NAME
        string "Name of compressed skiboot lid"
        default "skiboot.lid" if !BR2_TARGET_SKIBOOT_XZ
        default "skiboot.lid.xz" if BR2_TARGET_SKIBOOT_XZ
        help
            String used to define compressed skiboot lid filename

config BR2_HOSTBOOT_BINARY_SBE_FILENAME
        string "Name of sbe hostboot binary"
        help
            String used to define name of sbe hostboot binary file

config BR2_HOSTBOOT_BINARY_SBEC_FILENAME
        string "Name of sbec hostboot binary"
        help
            String used to define name of sbec hostboot binary file

config BR2_HOSTBOOT_BINARY_IONV_FILENAME
        string "Name of IONV binary"
        default "ionv.bin"
        help
            String used to define name of ionv binary file

config BR2_HOSTBOOT_BINARY_WINK_FILENAME
        string "Name of winkle hostboot binary"
        help
            String used to define name of winkle hostboot binary file

config BR2_WOFDATA_FILENAME
        string "Name of wofdata original file"
        default "wof_output"
        help
            String used to define name of wofdata original file

config BR2_WOFDATA_BINARY_FILENAME
        string "Name of wofdata binary file"
        default "wofdata.bin.ecc"
        help
            String used to define name of wofdata binary ecc'd file

config BR2_MEMDDATA_FILENAME
        string "Name of memd original file"
        default "memd_output.dat"
        help
            String used to define name of memd original file

config BR2_MEMDDATA_BINARY_FILENAME
        string "Name of memd binary file"
        default "memd_extra_data.bin.ecc"
        help
            String used to define the name of the memd binary ecc'd file

config BR2_IMA_CATALOG_FILENAME
        string "Name of IMA catalog binary"
        help
            String used to define name of IMA catalog binary file

config BR2_IMA_CATALOG_ECC_FILENAME
        string "Name of IMA catalog binary"
        help
            String used to define name of IMA catalog binary file, ecc protected

config BR2_OPENPOWER_TARGETING_BIN_FILENAME
        string "Name of openpower binary targeting file"
        help
            String used to define name of openpower targeting binary file

config BR2_OPENPOWER_TARGETING_ECC_FILENAME
        string "Name of openpower binary targeting file"
        help
            String used to define name of openpower targeting binary file, ecc protected

config BR2_OCMBFW_FILENAME
        string "Name of the OCMBFW Update original file"
        default "signed_app_fw.mem"
        help
            String used to define name of OCBMFW Update original file (before any processing occurs)

config BR2_OCMBFW_PROCESSED_FILENAME
        string "Name of OCMBFW Update binary processed file"
        default "ocmbfw.bin.ecc"
        help
            String used to define the name of the OCMBFW update binary file after processing, ecc protected

config BR2_OPENPOWER_PNOR_XZ_ENABLED
        bool "Enable xz compression in PNOR payloads"
        default n

config BR2_BUILD_PNOR_SQUASHFS
        bool "Create a virtual PNOR image along with the standard image"
        default n

endmenu
