Commit 6872ef61 authored by Blue Swirl's avatar Blue Swirl
Browse files

vmport: convert to qdev



Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent 7ba7e49e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1133,6 +1133,7 @@ void pc_basic_device_init(qemu_irq *isa_irq,
    a20_line = qemu_allocate_irqs(handle_a20_line_change, first_cpu, 2);
    i8042 = isa_create_simple("i8042");
    i8042_setup_a20_line(i8042, &a20_line[0]);
    vmport_init();
    vmmouse_init(i8042);
    port92 = isa_create_simple("port92");
    port92_init(port92, &a20_line[1]);
+4 −1
Original line number Diff line number Diff line
@@ -65,7 +65,10 @@ void hpet_pit_disable(void);
void hpet_pit_enable(void);

/* vmport.c */
void vmport_init(void);
static inline void vmport_init(void)
{
    isa_create_simple("vmport");
}
void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque);

/* vmmouse.c */
+0 −2
Original line number Diff line number Diff line
@@ -86,8 +86,6 @@ static void pc_init1(ram_addr_t ram_size,

    pc_cpus_init(cpu_model);

    vmport_init();

    /* allocate ram and load rom/bios */
    pc_memory_init(ram_size, kernel_filename, kernel_cmdline, initrd_filename,
                   &below_4g_mem_size, &above_4g_mem_size);
+21 −3
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include "pc.h"
#include "sysemu.h"
#include "kvm.h"
#include "qdev.h"

//#define VMPORT_DEBUG

@@ -37,6 +38,7 @@

typedef struct _VMPortState
{
    ISADevice dev;
    IOPortReadFunc *func[VMPORT_ENTRIES];
    void *opaque[VMPORT_ENTRIES];
} VMPortState;
@@ -100,12 +102,28 @@ static uint32_t vmport_cmd_ram_size(void *opaque, uint32_t addr)
    return ram_size;
}

void vmport_init(void)
static int vmport_initfn(ISADevice *dev)
{
    register_ioport_read(0x5658, 1, 4, vmport_ioport_read, &port_state);
    register_ioport_write(0x5658, 1, 4, vmport_ioport_write, &port_state);
    VMPortState *s = DO_UPCAST(VMPortState, dev, dev);

    register_ioport_read(0x5658, 1, 4, vmport_ioport_read, &s);
    register_ioport_write(0x5658, 1, 4, vmport_ioport_write, &s);
    isa_init_ioport(dev, 0x5658);
    /* Register some generic port commands */
    vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL);
    vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL);
    return 0;
}

static ISADeviceInfo vmport_info = {
    .qdev.name     = "vmport",
    .qdev.size     = sizeof(VMPortState),
    .qdev.no_user  = 1,
    .init          = vmport_initfn,
};

static void vmport_dev_register(void)
{
    isa_qdev_register(&vmport_info);
}
device_init(vmport_dev_register)