config BR2_PACKAGE_OPENPOWER_PNOR
        bool "openpower_pnor"
        default y if (BR2_OPENPOWER_PLATFORM && BR2_powerpc_power8)
        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_BARRELEYE_XML if (BR2_OPENPOWER_XML_PACKAGE = "barreleye-xml")
        select BR2_PACKAGE_FIRESTONE_XML if (BR2_OPENPOWER_XML_PACKAGE = "firestone-xml")
        select BR2_PACKAGE_GARRISON_XML if (BR2_OPENPOWER_XML_PACKAGE = "garrison-xml")
        select BR2_PACKAGE_HABANERO_XML if (BR2_OPENPOWER_XML_PACKAGE = "habanero-xml")
        select BR2_PACKAGE_PALMETTO_XML if (BR2_OPENPOWER_XML_PACKAGE = "palmetto-xml")
        help
            Utilites for building a targeting binary image

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_XML_PACKAGE
        string "Name of xml/targeting package"
        help
            String defines the xml/targeting package used

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
        boolean "Compress the skiboot image with XZ"
        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_WINK_FILENAME
        string "Name of winkle hostboot binary"
        help
            String used to define name of winkle hostboot binary file

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_OPENPOWER_PNOR_XZ_ENABLED
        bool "Enable xz compression in PNOR payloads"
        default y if BR2_TARGET_SKIBOOT_XZ
