diff options
Diffstat (limited to 'src/mainboard/emulation/qemu-i386/mainboard.c')
-rw-r--r-- | src/mainboard/emulation/qemu-i386/mainboard.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/mainboard/emulation/qemu-i386/mainboard.c b/src/mainboard/emulation/qemu-i386/mainboard.c new file mode 100644 index 0000000000..270e5df9eb --- /dev/null +++ b/src/mainboard/emulation/qemu-i386/mainboard.c @@ -0,0 +1,49 @@ +#include <console/console.h> +#include <device/device.h> +#include <device/pci.h> +#include <device/pci_ids.h> +#include <device/pci_ops.h> + +#include <arch/io.h> +#include <device/chip.h> +#include "chip.h" + +void cpufixup(unsigned long mem) +{ + printk_spew("Welcome to LinuxBIOS CPU fixup. done.\n"); +} + +static int mainboard_scan_bus(device_t root, int maxbus) +{ + int retval; + printk_spew("%s: root %p maxbus %d\n", __FUNCTION__, root, maxbus); + retval = pci_scan_bus(root->bus, 0, 0xff, maxbus); + printk_spew("DONE %s: return %d\n", __FUNCTION__, maxbus); + return maxbus; +} + +static struct device_operations mainboard_operations = { + .read_resources = root_dev_read_resources, + .set_resources = root_dev_set_resources, + .enable_resources = enable_childrens_resources, + .init = 0, + .scan_bus = mainboard_scan_bus, + .enable = 0, +}; + +static void enumerate(struct chip *chip) +{ + struct chip *child; + dev_root.ops = &mainboard_operations; + chip->dev = &dev_root; + chip->bus = 0; + for(child = chip->children; child; child = child->next) { + child->bus = &dev_root.link[0]; + } +} + +struct chip_control mainboard_emulation_qemu_i386_control = { + .enumerate = enumerate, + .name = "qemu mainboard ", +}; + |