Update code for API changes
[qemu/ar7.git] / hw / arm / phycard-l.c
blob4afe95bba7dd10bb5eb2d2c79d9023951696f693
1 /*
2 * Phytec phyCARD-L
4 * Copyright (c) 2011, 2012 Stefan Weil
6 * ARM Cortex-A8, OMAP3530, similar to OMAP3430
8 */
10 #include "qemu/osdep.h"
11 #include "cpu.h"
12 #include "hw/sysbus.h"
13 #include "hw/boards.h"
14 #include "hw/arm/arm.h"
15 #include "exec/address-spaces.h" /* get_system_memory */
16 #include "net/net.h"
18 static struct arm_boot_info phycard_binfo;
20 static void phycard_init(MachineState *machine)
22 ARMCPU *cpu;
23 MemoryRegion *sysmem = get_system_memory();
24 MemoryRegion *ram = g_new(MemoryRegion, 1);
25 qemu_irq pic[64];
26 DeviceState *dev;
27 int i;
29 if (!machine->cpu_model) {
30 machine->cpu_model = "cortex-a8";
32 cpu = ARM_CPU(cpu_create(machine->cpu_type));
34 /* RAM at address zero. */
35 memory_region_allocate_system_memory(ram, NULL, "phycard.ram", ram_size);
36 memory_region_add_subregion(sysmem, 0, ram);
38 dev = sysbus_create_simple("syborg,interrupt", 0xC0000000,
39 qdev_get_gpio_in(DEVICE(cpu), ARM_CPU_IRQ));
40 for (i = 0; i < 64; i++) {
41 pic[i] = qdev_get_gpio_in(dev, i);
44 sysbus_create_simple("syborg,rtc", 0xC0001000, NULL);
46 dev = qdev_create(NULL, "syborg,timer");
47 qdev_prop_set_uint32(dev, "frequency", 1000000);
48 qdev_init_nofail(dev);
49 sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xC0002000);
50 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[1]);
52 sysbus_create_simple("syborg,keyboard", 0xC0003000, pic[2]);
53 sysbus_create_simple("syborg,pointer", 0xC0004000, pic[3]);
54 sysbus_create_simple("syborg,framebuffer", 0xC0005000, pic[4]);
55 sysbus_create_simple("syborg,serial", 0xC0006000, pic[5]);
56 sysbus_create_simple("syborg,serial", 0xC0007000, pic[6]);
57 sysbus_create_simple("syborg,serial", 0xC0008000, pic[7]);
58 sysbus_create_simple("syborg,serial", 0xC0009000, pic[8]);
60 if (nd_table[0].used || nd_table[0].netdev) {
61 DeviceState *dev;
62 SysBusDevice *s;
64 qemu_check_nic_model(&nd_table[0], "virtio");
65 dev = qdev_create(NULL, "syborg,virtio-net");
66 qdev_set_nic_properties(dev, &nd_table[0]);
67 qdev_init_nofail(dev);
68 s = SYS_BUS_DEVICE(dev);
69 sysbus_mmio_map(s, 0, 0xc000c000);
70 sysbus_connect_irq(s, 0, pic[9]);
73 phycard_binfo.ram_size = machine->ram_size;
74 phycard_binfo.kernel_filename = machine->kernel_filename;
75 phycard_binfo.kernel_cmdline = machine->kernel_cmdline;
76 phycard_binfo.initrd_filename = machine->initrd_filename;
77 phycard_binfo.board_id = 0;
78 arm_load_kernel(cpu, &phycard_binfo);
81 static void phycard_machine_init(MachineClass *mc)
83 mc->desc = "phyCARD-L (ARM Cortex-A8)";
84 mc->init = phycard_init;
87 DEFINE_MACHINE("phycard-l", phycard_machine_init)