coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
bochs.c File Reference
#include <stdint.h>
#include <arch/io.h>
#include <arch/mmio.h>
#include <console/console.h>
#include <device/device.h>
#include <device/pci.h>
#include <device/pci_ops.h>
#include <device/pci_ids.h>
#include <pc80/vga.h>
#include <pc80/vga_io.h>
#include <framebuffer_info.h>
Include dependency graph for bochs.c:

Go to the source code of this file.

Macros

#define VBE_DISPI_IOPORT_INDEX   0x01CE
 
#define VBE_DISPI_IOPORT_DATA   0x01CF
 
#define VBE_DISPI_INDEX_ID   0x0
 
#define VBE_DISPI_INDEX_XRES   0x1
 
#define VBE_DISPI_INDEX_YRES   0x2
 
#define VBE_DISPI_INDEX_BPP   0x3
 
#define VBE_DISPI_INDEX_ENABLE   0x4
 
#define VBE_DISPI_INDEX_BANK   0x5
 
#define VBE_DISPI_INDEX_VIRT_WIDTH   0x6
 
#define VBE_DISPI_INDEX_VIRT_HEIGHT   0x7
 
#define VBE_DISPI_INDEX_X_OFFSET   0x8
 
#define VBE_DISPI_INDEX_Y_OFFSET   0x9
 
#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K   0xa
 
#define VBE_DISPI_ID0   0xB0C0
 
#define VBE_DISPI_ID1   0xB0C1
 
#define VBE_DISPI_ID2   0xB0C2
 
#define VBE_DISPI_ID4   0xB0C4
 
#define VBE_DISPI_ID5   0xB0C5
 
#define VBE_DISPI_DISABLED   0x00
 
#define VBE_DISPI_ENABLED   0x01
 
#define VBE_DISPI_LFB_ENABLED   0x40
 
#define VBE_DISPI_NOCLEARMEM   0x80
 

Functions

static void bochs_write (struct resource *res, int index, int val)
 
static int bochs_read (struct resource *res, int index)
 
static void bochs_vga_write (struct resource *res, int index, uint8_t val)
 
static void bochs_init_linear_fb (struct device *dev)
 
static void bochs_init_text_mode (struct device *dev)
 
static void bochs_init (struct device *dev)
 

Variables

static int width = CONFIG_DRIVERS_EMULATION_QEMU_BOCHS_XRES
 
static int height = CONFIG_DRIVERS_EMULATION_QEMU_BOCHS_YRES
 
static struct resource res_legacy
 
static struct device_operations qemu_graph_ops
 
static const struct pci_driver qemu_stdvga_driver __pci_driver
 

Macro Definition Documentation

◆ VBE_DISPI_DISABLED

#define VBE_DISPI_DISABLED   0x00

Definition at line 37 of file bochs.c.

◆ VBE_DISPI_ENABLED

#define VBE_DISPI_ENABLED   0x01

Definition at line 38 of file bochs.c.

◆ VBE_DISPI_ID0

#define VBE_DISPI_ID0   0xB0C0

Definition at line 31 of file bochs.c.

◆ VBE_DISPI_ID1

#define VBE_DISPI_ID1   0xB0C1

Definition at line 32 of file bochs.c.

◆ VBE_DISPI_ID2

#define VBE_DISPI_ID2   0xB0C2

Definition at line 33 of file bochs.c.

◆ VBE_DISPI_ID4

#define VBE_DISPI_ID4   0xB0C4

Definition at line 34 of file bochs.c.

◆ VBE_DISPI_ID5

#define VBE_DISPI_ID5   0xB0C5

Definition at line 35 of file bochs.c.

◆ VBE_DISPI_INDEX_BANK

#define VBE_DISPI_INDEX_BANK   0x5

Definition at line 24 of file bochs.c.

◆ VBE_DISPI_INDEX_BPP

#define VBE_DISPI_INDEX_BPP   0x3

Definition at line 22 of file bochs.c.

◆ VBE_DISPI_INDEX_ENABLE

#define VBE_DISPI_INDEX_ENABLE   0x4

Definition at line 23 of file bochs.c.

◆ VBE_DISPI_INDEX_ID

#define VBE_DISPI_INDEX_ID   0x0

Definition at line 19 of file bochs.c.

◆ VBE_DISPI_INDEX_VIDEO_MEMORY_64K

#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K   0xa

Definition at line 29 of file bochs.c.

◆ VBE_DISPI_INDEX_VIRT_HEIGHT

#define VBE_DISPI_INDEX_VIRT_HEIGHT   0x7

Definition at line 26 of file bochs.c.

◆ VBE_DISPI_INDEX_VIRT_WIDTH

#define VBE_DISPI_INDEX_VIRT_WIDTH   0x6

Definition at line 25 of file bochs.c.

◆ VBE_DISPI_INDEX_X_OFFSET

#define VBE_DISPI_INDEX_X_OFFSET   0x8

Definition at line 27 of file bochs.c.

◆ VBE_DISPI_INDEX_XRES

#define VBE_DISPI_INDEX_XRES   0x1

Definition at line 20 of file bochs.c.

◆ VBE_DISPI_INDEX_Y_OFFSET

#define VBE_DISPI_INDEX_Y_OFFSET   0x9

Definition at line 28 of file bochs.c.

◆ VBE_DISPI_INDEX_YRES

#define VBE_DISPI_INDEX_YRES   0x2

Definition at line 21 of file bochs.c.

◆ VBE_DISPI_IOPORT_DATA

#define VBE_DISPI_IOPORT_DATA   0x01CF

Definition at line 17 of file bochs.c.

◆ VBE_DISPI_IOPORT_INDEX

#define VBE_DISPI_IOPORT_INDEX   0x01CE

Definition at line 16 of file bochs.c.

◆ VBE_DISPI_LFB_ENABLED

#define VBE_DISPI_LFB_ENABLED   0x40

Definition at line 39 of file bochs.c.

◆ VBE_DISPI_NOCLEARMEM

#define VBE_DISPI_NOCLEARMEM   0x80

Definition at line 40 of file bochs.c.

Function Documentation

◆ bochs_init()

static void bochs_init ( struct device dev)
static

Definition at line 152 of file bochs.c.

◆ bochs_init_linear_fb()

◆ bochs_init_text_mode()

static void bochs_init_text_mode ( struct device dev)
static

Definition at line 146 of file bochs.c.

References vga_misc_write(), and vga_textmode_init().

Here is the call graph for this function:

◆ bochs_read()

static int bochs_read ( struct resource res,
int  index 
)
static

Definition at line 55 of file bochs.c.

References resource::base, resource::flags, inw(), IORESOURCE_IO, outw(), read16(), and res2mmio().

Referenced by bochs_init_linear_fb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bochs_vga_write()

static void bochs_vga_write ( struct resource res,
int  index,
uint8_t  val 
)
static

Definition at line 65 of file bochs.c.

References resource::flags, IORESOURCE_IO, outb(), res2mmio(), val, and write8().

Referenced by bochs_init_linear_fb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bochs_write()

static void bochs_write ( struct resource res,
int  index,
int  val 
)
static

Definition at line 45 of file bochs.c.

References resource::base, resource::flags, IORESOURCE_IO, outw(), res2mmio(), val, and write16().

Referenced by bochs_init_linear_fb().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ __pci_driver

static const struct pci_driver qemu_qxl_driver __pci_driver
static
Initial value:
= {
.ops = &qemu_graph_ops,
.vendor = 0x1234,
.device = 0x1111,
}
static struct device_operations qemu_graph_ops
Definition: bochs.c:160

Definition at line 152 of file bochs.c.

◆ height

int height = CONFIG_DRIVERS_EMULATION_QEMU_BOCHS_YRES
static

Definition at line 43 of file bochs.c.

Referenced by bochs_init_linear_fb().

◆ qemu_graph_ops

struct device_operations qemu_graph_ops
static
Initial value:
= {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = bochs_init,
}
static void bochs_init(struct device *dev)
Definition: bochs.c:152
void pci_dev_enable_resources(struct device *dev)
Definition: pci_device.c:721
void pci_dev_read_resources(struct device *dev)
Definition: pci_device.c:534
void pci_dev_set_resources(struct device *dev)
Definition: pci_device.c:691

Definition at line 152 of file bochs.c.

◆ res_legacy

struct resource res_legacy
static
Initial value:
= {
0,
1,
1
}
#define VBE_DISPI_IOPORT_INDEX
Definition: bochs.c:16
#define VBE_DISPI_IOPORT_DATA
Definition: bochs.c:17
#define IORESOURCE_IO
Definition: resource.h:9
#define NULL
Definition: stddef.h:19

Definition at line 65 of file bochs.c.

Referenced by bochs_init_linear_fb().

◆ width