# Kconfig SeaBIOS VGA BIOS configuration

menu "VGA ROM"
    choice
        prompt "VGA Hardware Type"
        default NO_VGABIOS

        config NO_VGABIOS
            bool "None"
            help
                Do not build a VGA BIOS.

        config VGA_STANDARD_VGA
            depends on QEMU
            bool "QEMU/Bochs Original IBM 256K VGA"
            select VGA_STDVGA_PORTS
            help
                Build basic VGA BIOS support (pre Super-VGA) for use
                on emulators.

        config VGA_CIRRUS
            depends on QEMU
            bool "QEMU/Bochs Cirrus SVGA"
            select VGA_STDVGA_PORTS
            help
                Build support for Cirrus VGA emulation found on QEMU
                and Bochs emulators.  This is for emulators; it is not
                intended for use on real Cirrus hardware.

        config VGA_BOCHS
            depends on QEMU
            bool "QEMU/Bochs VBE SVGA"
            select VGA_STDVGA_PORTS
            help
                Build support for Bochs DISPI interface (a custom VBE
                protocol) found on QEMU and Bochs emulators.

        config VGA_GEODEGX2
            bool "GeodeGX2"
            select VGA_STDVGA_PORTS
            help
                Build support for Geode GX2 vga.

        config VGA_GEODELX
            bool "GeodeLX"
            select VGA_STDVGA_PORTS
            help
                Build support for Geode LX vga.

        config VGA_COREBOOT
            depends on COREBOOT
            bool "coreboot linear framebuffer"
            select VGA_EMULATE_TEXT
            help
                Build support for a vgabios wrapper around video
                devices initialized using coreboot native vga init.

    endchoice

    choice
        depends on VGA_BOCHS
        prompt "bochs vga variant"
        default VGA_BOCHS_STDVGA

        config VGA_BOCHS_STDVGA
            bool "qemu stdvga / bochs svga"

        config VGA_BOCHS_VMWARE
            bool "qemu vmware svga"

        config VGA_BOCHS_QXL
            bool "qemu qxl vga"

        config VGA_BOCHS_VIRTIO
            bool "qemu virtio vga"

    endchoice

    choice
        depends on VGA_GEODEGX2 || VGA_GEODELX
        prompt "Output Mode"
        default VGA_OUTPUT_CRT

        config VGA_OUTPUT_CRT
            bool "CRT"
            help
                Use CRT for output.

        config VGA_OUTPUT_PANEL
            bool "Flat Panel"
            help
                Use flat panel for output.

        config VGA_OUTPUT_CRT_PANEL
            bool "CRT and Flat Panel"
            help
                Use CRT and flat panel for output.
    endchoice

    config BUILD_VGABIOS
        bool
        default !NO_VGABIOS

    config VGA_STDVGA_PORTS
        bool
    config VGA_EMULATE_TEXT
        bool
        help
            Support emulating text mode features when only a
            framebuffer is available.

    config VGA_FIXUP_ASM
        depends on BUILD_VGABIOS
        bool "Fixup assembler to work with broken emulators"
        default y
        help
            This option will cause the build to attempt to avoid
            certain x86 machine instructions that are known to confuse
            some emulators.  In particular, it works around
            deficiencies in the Windows vgabios emulator and the
            x86emu vgabios emulator (frequently used in Xorg).

    config VGA_ALLOCATE_EXTRA_STACK
        depends on BUILD_VGABIOS
        bool "Allocate an internal stack for 16bit interrupt entry point"
        default y
        help
            Attempt to allocate (via BIOS PMM call) an internal stack
            for the legacy 16bit 0x10 interrupt entry point.  This
            reduces the amount of space on the caller's stack that
            SeaVGABIOS uses.

    config VGA_EXTRA_STACK_SIZE
        int
        default 512

    config VGA_VBE
        depends on BUILD_VGABIOS
        bool "Video BIOS Extensions (VBE)"
        default y
        help
            Support VBE.

    config VGA_PCI
        depends on BUILD_VGABIOS && !VGA_COREBOOT
        bool "PCI ROM Headers"
        default y
        help
            Build PCI ROM headers so the vga rom can be extracted from
            a PCI device.

    config OVERRIDE_PCI_ID
        depends on VGA_PCI
        bool "Override PCI Vendor and Device IDs"
        help
            Specify specific values for the PCI Vendor and Device IDs.

    config VGA_VID
        depends on VGA_PCI
        hex
        prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
        default 0x1013 if VGA_CIRRUS
        default 0x1234 if VGA_BOCHS_STDVGA
        default 0x15ad if VGA_BOCHS_VMWARE
        default 0x1b36 if VGA_BOCHS_QXL
        default 0x1af4 if VGA_BOCHS_VIRTIO
        default 0x100b if VGA_GEODEGX2
        default 0x1022 if VGA_GEODELX
        default 0x0000
        help
            Vendor ID for the PCI ROM

    config VGA_DID
        depends on VGA_PCI
        hex
        prompt "PCI Vendor ID" if OVERRIDE_PCI_ID
        default 0x00b8 if VGA_CIRRUS
        default 0x1111 if VGA_BOCHS_STDVGA
        default 0x0405 if VGA_BOCHS_VMWARE
        default 0x0100 if VGA_BOCHS_QXL
        default 0x1050 if VGA_BOCHS_VIRTIO
        default 0x0030 if VGA_GEODEGX2
        default 0x2081 if VGA_GEODELX
        default 0x0000
        help
            Device ID for the PCI ROM
endmenu
