Revision db895a1e hw/audio/gus.c

b/hw/audio/gus.c
251 251
    PORTIO_END_OF_LIST (),
252 252
};
253 253

  
254
static int gus_initfn (ISADevice *dev)
254
static void gus_realizefn (DeviceState *dev, Error **errp)
255 255
{
256
    ISADevice *d = ISA_DEVICE(dev);
256 257
    GUSState *s = GUS (dev);
257 258
    struct audsettings as;
258 259

  
......
274 275

  
275 276
    if (!s->voice) {
276 277
        AUD_remove_card (&s->card);
277
        return -1;
278
        error_setg(errp, "No voice");
279
        return;
278 280
    }
279 281

  
280 282
    s->shift = 2;
281 283
    s->samples = AUD_get_buffer_size_out (s->voice) >> s->shift;
282 284
    s->mixbuf = g_malloc0 (s->samples << s->shift);
283 285

  
284
    isa_register_portio_list (dev, s->port, gus_portio_list1, s, "gus");
285
    isa_register_portio_list (dev, (s->port + 0x100) & 0xf00,
286
    isa_register_portio_list (d, s->port, gus_portio_list1, s, "gus");
287
    isa_register_portio_list (d, (s->port + 0x100) & 0xf00,
286 288
                              gus_portio_list2, s, "gus");
287 289

  
288 290
    DMA_register_channel (s->emu.gusdma, GUS_read_DMA, s);
289 291
    s->emu.himemaddr = s->himem;
290 292
    s->emu.gusdatapos = s->emu.himemaddr + 1024 * 1024 + 32;
291 293
    s->emu.opaque = s;
292
    isa_init_irq (dev, &s->pic, s->emu.gusirq);
294
    isa_init_irq (d, &s->pic, s->emu.gusirq);
293 295

  
294 296
    AUD_set_active_out (s->voice, 1);
295

  
296
    return 0;
297 297
}
298 298

  
299 299
static int GUS_init (ISABus *bus)
......
313 313
static void gus_class_initfn (ObjectClass *klass, void *data)
314 314
{
315 315
    DeviceClass *dc = DEVICE_CLASS (klass);
316
    ISADeviceClass *ic = ISA_DEVICE_CLASS (klass);
317
    ic->init = gus_initfn;
316

  
317
    dc->realize = gus_realizefn;
318 318
    dc->desc = "Gravis Ultrasound GF1";
319 319
    dc->vmsd = &vmstate_gus;
320 320
    dc->props = gus_properties;

Also available in: Unified diff