bochs: add support for native graphics
Per our discussions with Gerd, qemu will now always do native graphics on coreboot. The VGA BIOS capability is not needed and will no longer be supported. Attempts to build without native graphics will result in an error. This code builds for both x86 emulation targets. I'm hitting an issue testing that is unrelated to coreboot; if someone can test, that would be helpful. Be sure to start qemu with -vga std. We also add a test for the PCI BAR being zero and return silently if it is. Change-Id: I66188f61e1bac7ad93c989cc10f3e0b55140e148 Signed-off-by: Ronald G. Minnich <rminnich@google.com> Reviewed-on: http://review.coreboot.org/4258 Tested-by: build bot (Jenkins) Reviewed-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
969553e574
commit
cae09e0bbe
|
@ -1,4 +1,6 @@
|
||||||
|
#include <stdint.h>
|
||||||
#include <delay.h>
|
#include <delay.h>
|
||||||
|
#include <edid.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
|
@ -64,8 +66,6 @@ static void bochs_init(device_t dev)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mem = bochs_read(VBE_DISPI_INDEX_VIDEO_MEMORY_64K) * 64 * 1024;
|
mem = bochs_read(VBE_DISPI_INDEX_VIDEO_MEMORY_64K) * 64 * 1024;
|
||||||
printk(BIOS_DEBUG, "QEMU VGA: bochs dispi interface found, "
|
|
||||||
"%d MiB video memory\n", mem / ( 1024 * 1024));
|
|
||||||
|
|
||||||
/* find lfb pci bar */
|
/* find lfb pci bar */
|
||||||
addr = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
addr = pci_read_config32(dev, PCI_BASE_ADDRESS_0);
|
||||||
|
@ -78,6 +78,12 @@ static void bochs_init(device_t dev)
|
||||||
bar = 1;
|
bar = 1;
|
||||||
}
|
}
|
||||||
addr &= ~PCI_BASE_ADDRESS_MEM_ATTR_MASK;
|
addr &= ~PCI_BASE_ADDRESS_MEM_ATTR_MASK;
|
||||||
|
|
||||||
|
if (!addr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "QEMU VGA: bochs dispi interface found, "
|
||||||
|
"%d MiB video memory\n", mem / ( 1024 * 1024));
|
||||||
printk(BIOS_DEBUG, "QEMU VGA: framebuffer @ %x (pci bar %d)\n",
|
printk(BIOS_DEBUG, "QEMU VGA: framebuffer @ %x (pci bar %d)\n",
|
||||||
addr, bar);
|
addr, bar);
|
||||||
|
|
||||||
|
@ -95,33 +101,11 @@ static void bochs_init(device_t dev)
|
||||||
VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED);
|
VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED);
|
||||||
|
|
||||||
outb(0x20, 0x3c0); /* disable blanking */
|
outb(0x20, 0x3c0); /* disable blanking */
|
||||||
}
|
struct edid edid;
|
||||||
|
edid.ha = width;
|
||||||
int vbe_mode_info_valid(void);
|
edid.va = height;
|
||||||
int vbe_mode_info_valid(void)
|
edid.bpp = 32;
|
||||||
{
|
set_vbe_mode_info_valid(&edid, addr);
|
||||||
return addr != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fill_lb_framebuffer(struct lb_framebuffer *framebuffer);
|
|
||||||
void fill_lb_framebuffer(struct lb_framebuffer *framebuffer)
|
|
||||||
{
|
|
||||||
printk(BIOS_DEBUG, "QEMU VGA: fill lb_framebuffer: %dx%d @ %x\n",
|
|
||||||
width, height, addr);
|
|
||||||
|
|
||||||
framebuffer->physical_address = addr;
|
|
||||||
framebuffer->x_resolution = width;
|
|
||||||
framebuffer->y_resolution = height;
|
|
||||||
framebuffer->bytes_per_line = width * 4;
|
|
||||||
framebuffer->bits_per_pixel = 32;
|
|
||||||
framebuffer->red_mask_pos = 16;
|
|
||||||
framebuffer->red_mask_size = 8;
|
|
||||||
framebuffer->green_mask_pos = 8;
|
|
||||||
framebuffer->green_mask_size = 8;
|
|
||||||
framebuffer->blue_mask_pos = 0;
|
|
||||||
framebuffer->blue_mask_size = 8;
|
|
||||||
framebuffer->reserved_mask_pos = 24;
|
|
||||||
framebuffer->reserved_mask_size = 8;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_operations qemu_graph_ops = {
|
static struct device_operations qemu_graph_ops = {
|
||||||
|
|
|
@ -13,6 +13,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select BOARD_ROMSIZE_KB_256
|
select BOARD_ROMSIZE_KB_256
|
||||||
select EARLY_CBMEM_INIT
|
select EARLY_CBMEM_INIT
|
||||||
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
||||||
|
select MAINBOARD_DO_NATIVE_VGA_INIT
|
||||||
|
|
||||||
config MAINBOARD_DIR
|
config MAINBOARD_DIR
|
||||||
string
|
string
|
||||||
|
|
|
@ -16,6 +16,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
|
||||||
select BOARD_ROMSIZE_KB_256
|
select BOARD_ROMSIZE_KB_256
|
||||||
select EARLY_CBMEM_INIT
|
select EARLY_CBMEM_INIT
|
||||||
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
select MAINBOARD_HAS_NATIVE_VGA_INIT
|
||||||
|
select MAINBOARD_DO_NATIVE_VGA_INIT
|
||||||
|
|
||||||
config MAINBOARD_DIR
|
config MAINBOARD_DIR
|
||||||
string
|
string
|
||||||
|
|
Loading…
Reference in New Issue