Revision db895a1e hw/char/parallel.c

b/hw/char/parallel.c
477 477
    PORTIO_END_OF_LIST(),
478 478
};
479 479

  
480
static int parallel_isa_initfn(ISADevice *dev)
480
static void parallel_isa_realizefn(DeviceState *dev, Error **errp)
481 481
{
482 482
    static int index;
483
    ISADevice *isadev = ISA_DEVICE(dev);
483 484
    ISAParallelState *isa = ISA_PARALLEL(dev);
484 485
    ParallelState *s = &isa->state;
485 486
    int base;
486 487
    uint8_t dummy;
487 488

  
488 489
    if (!s->chr) {
489
        fprintf(stderr, "Can't create parallel device, empty char device\n");
490
        exit(1);
490
        error_setg(errp, "Can't create parallel device, empty char device");
491
        return;
491 492
    }
492 493

  
493
    if (isa->index == -1)
494
    if (isa->index == -1) {
494 495
        isa->index = index;
495
    if (isa->index >= MAX_PARALLEL_PORTS)
496
        return -1;
497
    if (isa->iobase == -1)
496
    }
497
    if (isa->index >= MAX_PARALLEL_PORTS) {
498
        error_setg(errp, "Max. supported number of parallel ports is %d.",
499
                   MAX_PARALLEL_PORTS);
500
        return;
501
    }
502
    if (isa->iobase == -1) {
498 503
        isa->iobase = isa_parallel_io[isa->index];
504
    }
499 505
    index++;
500 506

  
501 507
    base = isa->iobase;
502
    isa_init_irq(dev, &s->irq, isa->isairq);
508
    isa_init_irq(isadev, &s->irq, isa->isairq);
503 509
    qemu_register_reset(parallel_reset, s);
504 510

  
505 511
    if (qemu_chr_fe_ioctl(s->chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) {
......
507 513
        s->status = dummy;
508 514
    }
509 515

  
510
    isa_register_portio_list(dev, base,
516
    isa_register_portio_list(isadev, base,
511 517
                             (s->hw_driver
512 518
                              ? &isa_parallel_portio_hw_list[0]
513 519
                              : &isa_parallel_portio_sw_list[0]),
514 520
                             s, "parallel");
515
    return 0;
516 521
}
517 522

  
518 523
/* Memory mapped interface */
......
599 604
static void parallel_isa_class_initfn(ObjectClass *klass, void *data)
600 605
{
601 606
    DeviceClass *dc = DEVICE_CLASS(klass);
602
    ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
603
    ic->init = parallel_isa_initfn;
607

  
608
    dc->realize = parallel_isa_realizefn;
604 609
    dc->props = parallel_isa_properties;
605 610
}
606 611

  

Also available in: Unified diff