# Kconfig SeaBIOS configuration

mainmenu "SeaBIOS Configuration"

menu "General Features"

choice
    prompt "Build Target"
    default QEMU

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

    config QEMU
        bool "Build for QEMU"
        help
            Configure as QEMU bios.

endchoice

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

    config THREADS
        bool "Parallelize hardware init"
        default y
        help
            Support running hardware initialization in parallel.
    config THREAD_OPTIONROMS
        depends on THREADS
        bool "Hardware init during option ROM execution"
        default n
        help
            Allow hardware init to run in parallel with optionrom execution.

            This can reduce boot time, but can cause some timing
            variations during option ROM code execution.  It is not
            known if all option ROMs will behave properly with this
            option.

    config RELOCATE_INIT
        bool "Copy init code to high memory"
        default y
        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
        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 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
            algorighm.
    config FLASH_FLOPPY
        depends on COREBOOT_FLASH
        bool "Floppy images in CBFS"
        default y
        help
            Support floppy images in coreboot flash.

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 VIRTIO_BLK
        depends on DRIVES && QEMU
        bool "virtio-blk controllers"
        default y
        help
            Support boot from virtio-blk storage.
    config VIRTIO_SCSI
        depends on DRIVES && QEMU
        bool "virtio-scsi controllers"
        default y
        help
            Support boot from virtio-scsi storage.
    config ESP_SCSI
        depends on DRIVES && QEMU
        bool "AMD PCscsi controllers"
        default y
        help
            Support boot from AMD PCscsi storage.
    config LSI_SCSI
        depends on DRIVES && QEMU
        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 FLOPPY
        depends on DRIVES
        bool "Floppy controller"
        default y
        help
            Support floppy drive access.

    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_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 LPT
        bool "Parallel port"
        default y
        help
            Support parallel ports. This also enables int 17 parallel port calls.

    config USE_SMM
        depends on QEMU
        bool "System Management Mode (SMM)"
        default y
        help
            Support System Management Mode (on emulators).
    config MTRR_INIT
        depends on QEMU
        bool "Initialize MTRRs"
        default y
        help
            Initialize the Memory Type Range Registers (on emulators).
    config PMTIMER
        depends on QEMU
        bool "Use ACPI timer"
        default y
        help
            Use the ACPI timer instead of the TSC for timekeeping (on qemu).
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
        bool "Option ROMS"
        default y
        help
            Support finding and running option roms during POST.
    config OPTIONROMS_DEPLOYED
        depends on OPTIONROMS
        bool "Option roms are already at 0xc0000-0xf0000"
        default n
        help
            Select this if option ROMs are already copied to
            0xc0000-0xf0000.  This must only be selected when using
            Bochs or QEMU versions older than 0.12.
    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.
endmenu

menu "BIOS Tables"
    depends on QEMU
    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.
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_IO
        depends on QEMU && 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.

endmenu
