Commit dcd938f0 authored by Liran Alon's avatar Liran Alon Committed by Paolo Bonzini
Browse files

hw/i386/vmport: Define enum for all commands



No functional change.

Defining an enum for all VMPort commands have the following advantages:
* It gets rid of the error-prone requirement to update VMPORT_ENTRIES
when new VMPort commands are added to QEMU.
* It makes it clear to know by looking at one place at the source, what
are all the VMPort commands supported by QEMU.

Reviewed-by: default avatarNikita Leshenko <nikita.leshchenko@oracle.com>
Signed-off-by: default avatarLiran Alon <liran.alon@oracle.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20200312165431.82118-9-liran.alon@oracle.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent d8f23d61
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -34,12 +34,6 @@
/* debug only vmmouse */
//#define DEBUG_VMMOUSE

/* VMMouse Commands */
#define VMMOUSE_GETVERSION	10
#define VMMOUSE_DATA		39
#define VMMOUSE_STATUS		40
#define VMMOUSE_COMMAND		41

#define VMMOUSE_READ_ID			0x45414552
#define VMMOUSE_DISABLE			0x000000f5
#define VMMOUSE_REQUEST_RELATIVE	0x4c455252
@@ -217,10 +211,10 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
    command = data[2] & 0xFFFF;

    switch (command) {
    case VMMOUSE_STATUS:
    case VMPORT_CMD_VMMOUSE_STATUS:
        data[0] = vmmouse_get_status(s);
        break;
    case VMMOUSE_COMMAND:
    case VMPORT_CMD_VMMOUSE_COMMAND:
        switch (data[1]) {
        case VMMOUSE_DISABLE:
            vmmouse_disable(s);
@@ -239,7 +233,7 @@ static uint32_t vmmouse_ioport_read(void *opaque, uint32_t addr)
            break;
        }
        break;
    case VMMOUSE_DATA:
    case VMPORT_CMD_VMMOUSE_DATA:
        vmmouse_data(s, data, data[1]);
        break;
    default:
@@ -296,9 +290,9 @@ static void vmmouse_realizefn(DeviceState *dev, Error **errp)
        return;
    }

    vmport_register(VMMOUSE_STATUS, vmmouse_ioport_read, s);
    vmport_register(VMMOUSE_COMMAND, vmmouse_ioport_read, s);
    vmport_register(VMMOUSE_DATA, vmmouse_ioport_read, s);
    vmport_register(VMPORT_CMD_VMMOUSE_STATUS, vmmouse_ioport_read, s);
    vmport_register(VMPORT_CMD_VMMOUSE_COMMAND, vmmouse_ioport_read, s);
    vmport_register(VMPORT_CMD_VMMOUSE_DATA, vmmouse_ioport_read, s);
}

static Property vmmouse_properties[] = {
+2 −9
Original line number Diff line number Diff line
@@ -37,10 +37,6 @@
#include "cpu.h"
#include "trace.h"

#define VMPORT_CMD_GETVERSION 0x0a
#define VMPORT_CMD_GETRAMSIZE 0x14

#define VMPORT_ENTRIES 0x2c
#define VMPORT_MAGIC   0x564D5868

/* Compatibility flags for migration */
@@ -71,12 +67,9 @@ typedef struct VMPortState {

static VMPortState *port_state;

void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque)
void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque)
{
    if (command >= VMPORT_ENTRIES) {
        return;
    }

    assert(command < VMPORT_ENTRIES);
    trace_vmport_register(command, func, opaque);
    port_state->func[command] = func;
    port_state->opaque[command] = opaque;
+10 −1
Original line number Diff line number Diff line
@@ -6,11 +6,20 @@
#define TYPE_VMPORT "vmport"
typedef uint32_t (VMPortReadFunc)(void *opaque, uint32_t address);

typedef enum {
    VMPORT_CMD_GETVERSION       = 10,
    VMPORT_CMD_GETRAMSIZE       = 20,
    VMPORT_CMD_VMMOUSE_DATA     = 39,
    VMPORT_CMD_VMMOUSE_STATUS   = 40,
    VMPORT_CMD_VMMOUSE_COMMAND  = 41,
    VMPORT_ENTRIES
} VMPortCommand;

static inline void vmport_init(ISABus *bus)
{
    isa_create_simple(bus, TYPE_VMPORT);
}

void vmport_register(unsigned char command, VMPortReadFunc *func, void *opaque);
void vmport_register(VMPortCommand command, VMPortReadFunc *func, void *opaque);

#endif