blob: 7e3273a43e306b3099b311fa0f11e31429fcb6d4 [file] [log] [blame]
Stefan Reinauerd56981f2007-10-22 10:07:46 +00001#include <console/console.h>
Stefan Reinauer4a3bb762004-06-28 11:57:31 +00002#include <device/device.h>
Stefan Reinauerd56981f2007-10-22 10:07:46 +00003#include <device/pci.h>
4#include <device/pci_ids.h>
5#include <device/pci_ops.h>
Stefan Reinauer65e9bc12009-03-13 17:00:46 +00006#include <pc80/keyboard.h>
Stefan Reinauerd56981f2007-10-22 10:07:46 +00007#include <arch/io.h>
Stefan Reinauer4a3bb762004-06-28 11:57:31 +00008#include "chip.h"
9
Stefan Reinauerd56981f2007-10-22 10:07:46 +000010static void vga_init(device_t dev)
11{
Stefan Reinauer65e9bc12009-03-13 17:00:46 +000012 /* The VGA OPROM already lives at 0xc0000,
13 * force coreboot to use it.
14 */
15 dev->on_mainboard = 1;
16 dev->rom_address = 0xc0000;
Stefan Reinauerd56981f2007-10-22 10:07:46 +000017
Stefan Reinauer65e9bc12009-03-13 17:00:46 +000018 /* Now do the usual initialization */
19 pci_dev_init(dev);
Aaron Lwe2342f8b2008-05-06 15:02:22 +000020
Stefan Reinauer65e9bc12009-03-13 17:00:46 +000021 /* This sneaked in here, because Qemu does not
22 * emulate a SuperIO chip
23 */
Aaron Lwe2342f8b2008-05-06 15:02:22 +000024 init_pc_keyboard(0x60, 0x64, 0);
Stefan Reinauerd56981f2007-10-22 10:07:46 +000025}
26
27static struct device_operations vga_operations = {
28 .read_resources = pci_dev_read_resources,
29 .set_resources = pci_dev_set_resources,
30 .enable_resources = pci_dev_enable_resources,
31 .init = vga_init,
32 .ops_pci = 0,
33};
34
Stefan Reinauerf1cf1f72007-10-24 09:08:58 +000035static const struct pci_driver vga_driver __pci_driver = {
Stefan Reinauerd56981f2007-10-22 10:07:46 +000036 .ops = &vga_operations,
37 .vendor = 0x1013,
38 .device = 0x00b8,
39};
40
Carl-Daniel Hailfinger7ad11e82009-02-18 20:41:57 +000041struct chip_operations mainboard_ops = {
Uwe Hermanna7aa29b2006-11-05 18:50:49 +000042 CHIP_NAME("QEMU Mainboard")
Stefan Reinauer4a3bb762004-06-28 11:57:31 +000043};
44