# Kconfig SeaBIOS configuration

mainmenu "SeaBIOS Configuration"

menu "General Features"

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

    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.

    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 BOOTMENU_WAIT
        depends on BOOTMENU
        int "Bootmenu delay"
        default 2500
        help
            Amount of time (in ms) to wait at menu before selecting normal boot.
    config BOOTSPLASH
        depends on BOOTMENU
        bool "Graphical boot splash screen"
        default y
        help
            Support showing a graphical boot splash screen.

    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 n
        help
            Support for AHCI disk code.
    config VIRTIO_BLK
        depends on DRIVES && !COREBOOT
        bool "VirtIO controllers"
        default y
        help
            Support boot from virtio 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 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 EXTRA_PCI_ROOTS
        bool "Extra root buses"
        default n
        help
            If the target machine has multiple independent root buses,
            the extra buses may be specified here.
    config PCI_ROOT1
        depends on EXTRA_PCI_ROOTS
        hex "Extra primary PCI root bus number"
        default 0x00
    config PCI_ROOT2
        depends on EXTRA_PCI_ROOTS
        hex "Extra secondary PCI root bus number"
        default 0x00

    config USE_SMM
        depends on !COREBOOT
        bool "System Management Mode (SMM)"
        default y
        help
            Support System Management Mode (on emulators).
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 S3_RESUME_VGA_INIT
        depends on S3_RESUME
        bool "Run VGA rom on S3 resume"
        default n
        help
            Run the vga rom during S3 resume.

    config VGAHOOKS
        depends on COREBOOT
        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"
    config PIRTABLE
        depends on !COREBOOT
        bool "PIR table"
        default y
        help
            Support generation of a PIR table in 0xf000 segment.
    config MPTABLE
        depends on !COREBOOT
        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
        depends on !COREBOOT
        bool "ACPI"
        default y
        help
            Support generation of ACPI tables.
endmenu

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 SCREEN_AND_DEBUG
        depends on DEBUG_LEVEL != 0
        bool "Show screen writes on debug ports"
        default y
        help
            Send characters that SeaBIOS writes to the screen to the
            debug ports.
endmenu
