
This series adds a graphics driver and support for execution of the VGA option ROM. This option ROM is required on ivybridge for the graphics to work, at least until someone creates the equivalent source code.
Option ROMs can be run using U-Boot's BIOS emulator, but on x86 it is also possible to run then natively. This is something of a pain to arrange due to all the environment that is required (16-bit to 32-bit calls, etc.) but it can be done, so this series adds that feature too.
Video mode selection is useful as it allows different resolutions to be selected. This series adds support for VESA modes and a way of selecting the mode to use in U-Boot.
These options are enabled for chromebook_link, which now boots to a prompt complete with a functioning LCD. A resolution 0f 1280x1024 is selected by default.
While the Chrome OS EC works correctly, the keyboard does not as yet. Also U-Boot is currently very slow, taking about 2 seconds to boot to a prompt when video is enabled. These problems will be the subject of future work.
Simon Glass (19): x86: Add a definition of asmlinkage Introduce a header file for the BIOS emulator x86: Add GDT descriptors for option ROMs x86: Add vesa mode configuration options Add support for Vesa BIOS extensions x86: Add support for running option ROMs natively pci: Add general support for execution of video ROMs x86: video: Add video driver for bare x86 boards x86: Allow an option ROM to be built into U-Boot x86: Add initial video device init for Intel GMA x86: dts: Add video information to the device tree x86: config: Enable video support for chromebook_link bios_emulator: Allow x86 to use the emulator bios_emulator: Add vesa support and allow ROMs to be passed in as data bios_emulator: Allow a custom interrupt handler to be installed bios_emulator: Add an option to enable debugging bios_emulator: Always print errors when opcode decode fails x86: chromebook_link: Enable the x86 emulator x86: chromebook_link: Enable the Chrome OS EC
Makefile | 3 + arch/x86/Kconfig | 149 +++++ arch/x86/cpu/cpu.c | 9 +- arch/x86/cpu/ivybridge/Makefile | 1 + arch/x86/cpu/ivybridge/bd82x6x.c | 13 +- arch/x86/cpu/ivybridge/gma.c | 756 ++++++++++++++++++++++++++ arch/x86/cpu/ivybridge/gma.h | 157 ++++++ arch/x86/dts/link.dts | 13 + arch/x86/include/asm/arch-ivybridge/bd82x6x.h | 2 + arch/x86/include/asm/processor.h | 31 +- arch/x86/lib/Makefile | 3 + arch/x86/lib/bios.c | 348 ++++++++++++ arch/x86/lib/bios.h | 98 ++++ arch/x86/lib/bios_asm.S | 281 ++++++++++ arch/x86/lib/bios_interrupts.c | 219 ++++++++ board/google/chromebook_link/link.c | 4 + doc/device-tree-bindings/video/intel-gma.txt | 40 ++ drivers/bios_emulator/Makefile | 2 +- drivers/bios_emulator/atibios.c | 198 +++++-- drivers/bios_emulator/besys.c | 100 ++-- drivers/bios_emulator/bios.c | 4 +- drivers/bios_emulator/biosemui.h | 2 +- drivers/bios_emulator/include/biosemu.h | 53 +- drivers/bios_emulator/include/x86emu.h | 7 +- drivers/bios_emulator/include/x86emu/debug.h | 20 +- drivers/bios_emulator/include/x86emu/regs.h | 2 +- drivers/bios_emulator/x86emu/debug.c | 10 +- drivers/bios_emulator/x86emu/decode.c | 24 +- drivers/bios_emulator/x86emu/ops.c | 58 +- drivers/bios_emulator/x86emu/ops2.c | 4 +- drivers/bios_emulator/x86emu/sys.c | 5 + drivers/pci/Makefile | 2 +- drivers/pci/pci_rom.c | 276 ++++++++++ drivers/video/Makefile | 1 + drivers/video/ati_radeon_fb.c | 2 +- drivers/video/x86_fb.c | 37 ++ include/bios_emul.h | 65 +++ include/common.h | 3 + include/configs/chromebook_link.h | 19 +- include/fdtdec.h | 1 + include/pci_rom.h | 58 ++ include/vbe.h | 103 ++++ include/video_fb.h | 2 +- lib/fdtdec.c | 1 + 44 files changed, 2950 insertions(+), 236 deletions(-) create mode 100644 arch/x86/cpu/ivybridge/gma.c create mode 100644 arch/x86/cpu/ivybridge/gma.h create mode 100644 arch/x86/lib/bios.c create mode 100644 arch/x86/lib/bios.h create mode 100644 arch/x86/lib/bios_asm.S create mode 100644 arch/x86/lib/bios_interrupts.c create mode 100644 doc/device-tree-bindings/video/intel-gma.txt create mode 100644 drivers/pci/pci_rom.c create mode 100644 drivers/video/x86_fb.c create mode 100644 include/bios_emul.h create mode 100644 include/pci_rom.h create mode 100644 include/vbe.h