Revision e3914e3a

b/hw/misc/applesmc.c
73 73
struct AppleSMCState {
74 74
    ISADevice parent_obj;
75 75

  
76
    MemoryRegion io_data;
77
    MemoryRegion io_cmd;
76 78
    uint32_t iobase;
77 79
    uint8_t cmd;
78 80
    uint8_t status;
......
86 88
    QLIST_HEAD(, AppleSMCData) data_def;
87 89
};
88 90

  
89
static void applesmc_io_cmd_writeb(void *opaque, uint32_t addr, uint32_t val)
91
static void applesmc_io_cmd_write(void *opaque, hwaddr addr, uint64_t val,
92
                                  unsigned size)
90 93
{
91 94
    AppleSMCState *s = opaque;
92 95

  
......
115 118
    }
116 119
}
117 120

  
118
static void applesmc_io_data_writeb(void *opaque, uint32_t addr, uint32_t val)
121
static void applesmc_io_data_write(void *opaque, hwaddr addr, uint64_t val,
122
                                   unsigned size)
119 123
{
120 124
    AppleSMCState *s = opaque;
121 125

  
......
138 142
    }
139 143
}
140 144

  
141
static uint32_t applesmc_io_data_readb(void *opaque, uint32_t addr1)
145
static uint64_t applesmc_io_data_read(void *opaque, hwaddr addr1,
146
                                      unsigned size)
142 147
{
143 148
    AppleSMCState *s = opaque;
144 149
    uint8_t retval = 0;
......
162 167
    return retval;
163 168
}
164 169

  
165
static uint32_t applesmc_io_cmd_readb(void *opaque, uint32_t addr1)
170
static uint64_t applesmc_io_cmd_read(void *opaque, hwaddr addr1, unsigned size)
166 171
{
167 172
    AppleSMCState *s = opaque;
168 173

  
......
201 206
    applesmc_add_key(s, "MSSD", 1, "\0x3");
202 207
}
203 208

  
209
static const MemoryRegionOps applesmc_data_io_ops = {
210
    .write = applesmc_io_data_write,
211
    .read = applesmc_io_data_read,
212
    .endianness = DEVICE_NATIVE_ENDIAN,
213
    .impl = {
214
        .min_access_size = 1,
215
        .max_access_size = 1,
216
    },
217
};
218

  
219
static const MemoryRegionOps applesmc_cmd_io_ops = {
220
    .write = applesmc_io_cmd_write,
221
    .read = applesmc_io_cmd_read,
222
    .endianness = DEVICE_NATIVE_ENDIAN,
223
    .impl = {
224
        .min_access_size = 1,
225
        .max_access_size = 1,
226
    },
227
};
228

  
204 229
static void applesmc_isa_realize(DeviceState *dev, Error **errp)
205 230
{
206 231
    AppleSMCState *s = APPLE_SMC(dev);
207 232

  
208
    register_ioport_read(s->iobase + APPLESMC_DATA_PORT, 4, 1,
209
                         applesmc_io_data_readb, s);
210
    register_ioport_read(s->iobase + APPLESMC_CMD_PORT, 4, 1,
211
                         applesmc_io_cmd_readb, s);
212
    register_ioport_write(s->iobase + APPLESMC_DATA_PORT, 4, 1,
213
                          applesmc_io_data_writeb, s);
214
    register_ioport_write(s->iobase + APPLESMC_CMD_PORT, 4, 1,
215
                          applesmc_io_cmd_writeb, s);
233
    memory_region_init_io(&s->io_data, &applesmc_data_io_ops, s,
234
                          "applesmc-data", 4);
235
    isa_register_ioport(&s->parent_obj, &s->io_data,
236
                        s->iobase + APPLESMC_DATA_PORT);
237

  
238
    memory_region_init_io(&s->io_cmd, &applesmc_cmd_io_ops, s,
239
                          "applesmc-cmd", 4);
240
    isa_register_ioport(&s->parent_obj, &s->io_cmd,
241
                        s->iobase + APPLESMC_CMD_PORT);
216 242

  
217 243
    if (!s->osk || (strlen(s->osk) != 64)) {
218 244
        fprintf(stderr, "WARNING: Using AppleSMC with invalid key\n");

Also available in: Unified diff