# Kconfig SeaBIOS configuration

mainmenu "SeaBIOS Configuration"

choice
    prompt "Processor architecture"
    default X86

    config X86
        bool "Intel/AMD x86"
        help
            Build PC BIOS.

    config PARISC
        bool "PA-RISC"
        help
            Build PA-RISC firmware for QEMU.
endchoice

menu "General Features"

choice
    prompt "Build Target"
    default QEMU

    config COREBOOT
        bool "Build for coreboot" if X86
        help
            Configure as a coreboot payload.

    config QEMU
        bool "Build for QEMU/Xen/KVM/Bochs"
        select QEMU_HARDWARE
        help
            Configure for an emulated machine (QEMU, Xen, KVM, or Bochs).

    config CSM
       bool "Build as Compatibility Support Module for EFI BIOS" if X86
       help
           Configure to be used by EFI firmware as Compatibility Support
           module (CSM) to provide legacy BIOS services.

endchoice

    config QEMU_HARDWARE
        bool "Support hardware found on emulators (QEMU/Xen/KVM/Bochs)" if !QEMU
        default n
        help
            Support virtual hardware when the code detects it is
            running on an emulator.

    config XEN
        depends on QEMU && !PARISC
        bool "Support Xen HVM"
        default y
        help
            Configure to be used by xen hvmloader, for a HVM guest.

    config THREADS
        bool "Parallelize hardware init"
        depends on !PARISC
        default y
        help
            Support running hardware initialization in parallel.

    config RELOCATE_INIT
        bool "Copy init code to high memory"
        default y
        depends on X86
        help
            Support relocating the one time initialization code to high memory.

    config BOOTMENU
        depends on BOOT
        bool "Bootmenu"
        default y
        help
            Support an interactive boot menu at end of post.
    config BOOTSPLASH
        depends on BOOTMENU && !PARISC
        bool "Graphical boot splash screen"
        default y
        help
            Support showing a graphical boot splash screen.
    config BOOTORDER
        depends on BOOT
        bool "Boot ordering"
        default y
        help
            Support controlling of the boot order via the fw_cfg/CBFS
            "bootorder" file.
    config HOST_BIOS_GEOMETRY
        depends on BOOT
        bool "Boot device bios geometry override"
        default y
        help
            Support overriding bios (logical) geometry of boot devices via the
            fw_cfg/CBFS "bios-geometry" file.

    config COREBOOT_FLASH
        depends on COREBOOT
        bool "coreboot CBFS support"
        default y
        help
            Support searching coreboot flash format.
    config LZMA
        depends on COREBOOT_FLASH
        bool "CBFS lzma support"
        default y
        help
            Support CBFS files compressed using the lzma decompression
            algorithm.
    config CBFS_LOCATION
        depends on COREBOOT_FLASH
        hex "CBFS memory end location"
        default 0
        help
            Memory address of where the CBFS data ends.  This should
            be zero for normal builds.  It may be a non-zero value if
            the CBFS filesystem is at a non-standard location (eg,
            0xffe00000 if CBFS ends 2Meg below the end of flash).

    config MULTIBOOT
        depends on COREBOOT
        bool "multiboot support"
        default y
        help
            Add multiboot header in bios.bin.raw and accept files supplied
            as multiboot modules.
    config ENTRY_EXTRASTACK
        bool "Use internal stack for 16bit interrupt entry points"
        default y
        depends on X86
        help
            Utilize an internal stack for all the legacy 16bit
            interrupt entry points.  This reduces the amount of space
            on the caller's stack that SeaBIOS uses.  This may
            adversely impact any legacy operating systems that call
            the BIOS in 16bit protected mode.

    config MALLOC_UPPERMEMORY
        bool "Allocate memory that needs to be in first Meg above 0xc0000"
        default y
        depends on X86
        help
            Use the "Upper Memory Block" area (0xc0000-0xf0000) for
            internal "low memory" allocations.  If this is not
            selected, the memory is instead allocated from the
            "9-segment" (0x90000-0xa0000).

    config ROM_SIZE
        int "ROM size (in KB)"
        default 0
        help
            Set the ROM size.  Say '0' here to make seabios figure the
            needed size automatically.

            Currently SeaBIOS will easily fit into 256 KB. To make it fit
            it into 128 KB (which was big enouth for a long time) you'll
            probably have to disable some featues such as xhci support.

endmenu

menu "Hardware support"
    config ATA
        depends on DRIVES
        bool "ATA controllers"
        default y
        help
            Support for IDE disk code.
    config ATA_DMA
        depends on ATA
        bool "ATA DMA"
        default n
        help
            Detect and try to use ATA bus mastering DMA controllers.
    config ATA_PIO32
        depends on ATA
        bool "ATA 32bit PIO"
        default n
        help
            Use 32bit PIO accesses on ATA (minor optimization on PCI transfers).
    config AHCI
        depends on DRIVES
        bool "AHCI controllers"
        default y
        help
            Support for AHCI disk code.
    config SDCARD
        depends on DRIVES && !PARISC
        bool "SD controllers"
        default y
        help
            Support for SD cards on PCI host controllers.
    config VIRTIO_BLK
        depends on DRIVES && QEMU_HARDWARE && !PARISC
        bool "virtio-blk controllers"
        default y
        help
            Support boot from virtio-blk storage.
    config VIRTIO_SCSI
        depends on DRIVES && QEMU_HARDWARE && !PARISC
        bool "virtio-scsi controllers"
        default y
        help
            Support boot from virtio-scsi storage.
    config PVSCSI
        depends on DRIVES && QEMU_HARDWARE && !PARISC
        bool "PVSCSI controllers"
        default y
        help
            Support boot from Paravirtualized SCSI storage. This kind of storage
            is mainly supported by VMware ESX hypervisor. It is commonly used
            to allow fast storage access by communicating directly with the
            underlying hypervisor. Enabling this type of boot will allow
            booting directly from images imported from an ESX platform,
            without the need to use slower emulation of storage controllers
            such as IDE.
    config ESP_SCSI
        depends on DRIVES && QEMU_HARDWARE
        bool "AMD PCscsi controllers"
        default y
        help
            Support boot from AMD PCscsi storage.
    config LSI_SCSI
        depends on DRIVES && QEMU_HARDWARE
        bool "lsi53c895a scsi controllers"
        default y
        help
            Support boot from qemu-emulated lsi53c895a scsi storage.
    config MEGASAS
        depends on DRIVES
        bool "LSI MegaRAID SAS controllers"
        default y
        help
            Support boot from LSI MegaRAID SAS scsi storage.
    config MPT_SCSI
        depends on DRIVES && QEMU_HARDWARE
        bool "LSI MPT Fusion controllers"
        default y
        help
            Support boot from LSI MPT Fusion scsi storage.
    config FLOPPY
        depends on DRIVES && HARDWARE_IRQ && !PARISC
        bool "Floppy controller"
        default y
        help
            Support floppy drive access.
    config FLASH_FLOPPY
        depends on DRIVES && !PARISC
        bool "Floppy images from CBFS or fw_cfg"
        default y
        help
            Support floppy images stored in coreboot flash or from
            QEMU fw_cfg.
    config NVME
        depends on DRIVES && !PARISC
        bool "NVMe controllers"
        default y
        help
            Support for NVMe disk code.

    config PS2PORT
        depends on KEYBOARD || MOUSE
        bool "PS/2 port"
        default y
        help
            Support PS2 ports (keyboard and mouse).

    config USB
        bool "USB"
        default y
        help
            Support USB devices.
    config USB_UHCI
        depends on USB
        bool "USB UHCI controllers"
        default y
        help
            Support USB UHCI controllers.
    config USB_OHCI
        depends on USB
        bool "USB OHCI controllers"
        default y
        help
            Support USB OHCI controllers.
    config USB_EHCI
        depends on USB
        bool "USB EHCI controllers"
        default y
        help
            Support USB EHCI controllers.
    config USB_XHCI
        depends on USB && !PARISC
        bool "USB XHCI controllers"
        default y
        help
            Support USB XHCI controllers.
    config USB_MSC
        depends on USB && DRIVES
        bool "USB drives"
        default y
        help
            Support USB BOT (bulk-only transport) disks.
    config USB_UAS
        depends on USB && DRIVES
        bool "UAS drives"
        default y
        help
            Support USB UAS (usb attached scsi) disks.
    config USB_HUB
        depends on USB
        bool "USB hubs"
        default y
        help
            Support USB hubs.
    config USB_KEYBOARD
        depends on USB && KEYBOARD
        bool "USB keyboards"
        default y
        help
            Support USB keyboards.
    config USB_MOUSE
        depends on USB && MOUSE
        bool "USB mice"
        default y
        help
            Support USB mice.

    config SERIAL
        bool "Serial port"
        default y
        help
            Support serial ports.  This also enables int 14 serial port calls.
    config SERCON
        bool "Serial console"
        default y
        help
            Support redirecting vga output to the serial console.
    config LPT
        bool "Parallel port"
        default y
        help
            Support parallel ports. This also enables int 17 parallel port calls.
    config RTC_TIMER
        bool "Real Time Clock (RTC) scheduling"
        depends on HARDWARE_IRQ && !PARISC
        default y
        help
            Support MC146818 Real Time Clock chip timer
            interrupts. This also enables int 1583 and int 1586 calls.

            Disabling this support does not disable access to the RTC
            cmos registers.

    config HARDWARE_IRQ
        bool "Hardware interrupts"
        depends on X86
        default y
        help
            Program and support hardware interrupts using the i8259
            programmable interrupt controller (PIC).  This option must
            be enabled in order to support most boot loaders.  Only
            disable this option if running on peculiar hardware known
            not to support irq routing.

    config USE_SMM
        depends on QEMU && X86
        bool "System Management Mode (SMM)"
        default y
        help
            Support System Management Mode (on emulators).
    config CALL32_SMM
        bool
        depends on USE_SMM
        default y
    config MTRR_INIT
        depends on QEMU && X86
        bool "Initialize MTRRs"
        default y
        help
            Initialize the Memory Type Range Registers (on emulators).
    config PMTIMER
        bool "Support ACPI timer"
        default y
        depends on X86
        help
            Detect and use the ACPI timer for timekeeping.
    config TSC_TIMER
        bool "Support CPU timestamp counter as timer"
        default y
        help
            Support for using the CPU timestamp counter as an internal
            timing source.
endmenu

menu "BIOS interfaces"
    config DRIVES
        bool "Drive interface"
        default y
        help
            Support int13 disk/floppy drive functions.

    config CDROM_BOOT
        depends on DRIVES
        bool "DVD/CDROM booting"
        default y
        help
            Support for booting from a CD.  (El Torito spec support.)
    config CDROM_EMU
        depends on CDROM_BOOT
        bool "DVD/CDROM boot drive emulation"
        default y
        help
            Support bootable CDROMs that emulate a floppy/harddrive.

    config PCIBIOS
        bool "PCIBIOS interface"
        default y
        help
            Support int 1a/b1 PCI BIOS calls.
    config APMBIOS
        bool "APM interface"
        default y
        help
            Support int 15/53 APM BIOS calls.
    config PNPBIOS
        bool "PnP BIOS interface"
        default y
        help
            Support PnP BIOS entry point.
    config OPTIONROMS
        depends on !PARISC
        bool "Option ROMS"
        default y
        help
            Support finding and running option roms during POST.
    config PMM
        depends on OPTIONROMS
        bool "PMM interface"
        default y
        help
            Support Post Memory Manager (PMM) entry point.
    config BOOT
        bool "Boot interface"
        default y
        help
            Support int 19/18 system bootup support.
    config KEYBOARD
        bool "Keyboard interface"
        default y
        help
            Support int 16 keyboard calls.
    config KBD_CALL_INT15_4F
        depends on KEYBOARD
        bool "Keyboard hook interface"
        default y
        help
            Support calling int155f on each keyboard event.
    config MOUSE
        bool "Mouse interface"
        default y
        help
            Support for int15c2 mouse calls.

    config S3_RESUME
        bool "S3 resume"
        default y
        help
            Support S3 resume handler.

    config VGAHOOKS
        bool "Hardware specific VGA helpers"
        default y
        help
            Support int 155f BIOS callbacks specific to some Intel and
            VIA on-board vga devices.

    config DISABLE_A20
        bool "Disable A20"
        default n
        help
            Disable A20 on 16bit boot.

    config WRITABLE_UPPERMEMORY
        depends on QEMU
        bool "Make unused UMB memory read/writeable."
        default n
        help
            When selected, the "Upper Memory Block" area
            (0x90000-0xa0000) that is not used for option roms will be
            made writable.  This allows the ram to be directly
            modified by programs.  However, some old DOS high memory
            managers may require the UMB region to be read-only.

    config TCGBIOS
        depends on S3_RESUME
        bool "TPM support and TCG BIOS extensions"
        default y
        help
            Provide TPM support along with TCG BIOS extensions

endmenu

menu "BIOS Tables"
    depends on QEMU && X86
    config PIRTABLE
        bool "PIR table"
        default y
        help
            Support generation of a PIR table in 0xf000 segment.
    config MPTABLE
        bool "MPTable"
        default y
        help
            Support generation of MPTable.
    config SMBIOS
        bool "SMBIOS"
        default y
        help
            Support generation of SM BIOS tables.  This is also
            sometimes called DMI.
    config ACPI
        bool "ACPI"
        default y
        help
            Support generation of ACPI tables.
    config ACPI_DSDT
        bool "Include default ACPI DSDT"
        default y
        depends on ACPI
        help
            Include default DSDT ACPI table in BIOS.
            Required for QEMU 1.3 and older.
            This option can be disabled for QEMU 1.4 and newer
            to save some space in the ROM file.
            If unsure, say Y.
    config FW_ROMFILE_LOAD
        bool "Load BIOS tables from ROM files"
        depends on QEMU_HARDWARE
        default y
        help
            Support loading BIOS firmware tables from ROM files.
            At the moment, only ACPI tables can be loaded in this way.
            Required for QEMU 1.7 and newer.
            This option can be disabled for QEMU 1.6 and older
            to save some space in the ROM file.
            If unsure, say Y.
    config ACPI_PARSE
        bool "Include ACPI DSDT parser."
        default y
        help
            Support parsing ACPI DSDT for device probing.
            Needed to find virtio-mmio devices.
            If unsure, say Y.
endmenu

source vgasrc/Kconfig

menu "Debugging"
    config DEBUG_LEVEL
        int "Debug level"
        default 1
        help
            Control how verbose debug output is.  The higher the
            number, the more verbose SeaBIOS will be.

            Set to zero to disable debugging.

    config DEBUG_SERIAL
        depends on DEBUG_LEVEL != 0
        bool "Serial port debugging"
        default n
        help
            Send debugging information to serial port.
    config DEBUG_SERIAL_PORT
        depends on DEBUG_SERIAL
        hex "Serial port base address"
        default 0x3f8
        help
            Base port for serial - generally 0x3f8, 0x2f8, 0x3e8, or 0x2e8.
   config DEBUG_SERIAL_MMIO
        depends on DEBUG_LEVEL != 0 && !DEBUG_SERIAL
        bool "Serial port debugging via memory mapped IO"
        default n
        help
            Send debugging information to serial port mapped in memory.
   config DEBUG_SERIAL_MEM_ADDRESS
        depends on DEBUG_SERIAL_MMIO
        hex "Serial port memory mapped IO address"
        help
            On some chipsets the serial port is memory mapped, in those cases
            provide the 32 bit address. E.g. 0xFEDC6000 for the AMD Kern
            (a.k.a Hudson UART).

    config DEBUG_IO
        depends on QEMU_HARDWARE && DEBUG_LEVEL != 0
        bool "Special IO port debugging"
        default y
        help
            Some emulators or hypervisors provide with a way to output debug
            information by outputing strings in a special port present in the
            IO space.

    config DEBUG_COREBOOT
        depends on COREBOOT && DEBUG_LEVEL != 0
        bool "coreboot cbmem debug logging"
        default y
        help
            Send debugging information to the coreboot cbmem console buffer.
            Needs CONFIG_CONSOLE_CBMEM in coreboot.  You can read the log
            after boot using 'cbmem -c'.  Only 32bit code (basically every-
            thing before booting the OS) writes to the log buffer.

endmenu
