Revision 806b6024 hw/usb-serial.c

b/hw/usb-serial.c
524 524
    }
525 525
}
526 526

  
527
static int usb_serial_initfn(USBDevice *dev)
528
{
529
    USBSerialState *s = DO_UPCAST(USBSerialState, dev, dev);
530
    s->dev.speed = USB_SPEED_FULL;
531
    return 0;
532
}
533

  
527 534
USBDevice *usb_serial_init(const char *filename)
528 535
{
536
    USBDevice *dev;
529 537
    USBSerialState *s;
530 538
    CharDriverState *cdrv;
531 539
    unsigned short vendorid = 0x0403, productid = 0x6001;
......
561 569
        return NULL;
562 570
    }
563 571
    filename++;
564
    s = qemu_mallocz(sizeof(USBSerialState));
565 572

  
566 573
    snprintf(label, sizeof(label), "usbserial%d", index++);
567 574
    cdrv = qemu_chr_open(label, filename, NULL);
568 575
    if (!cdrv)
569
        goto fail;
570
    s->cs = cdrv;
571
    qemu_chr_add_handlers(cdrv, usb_serial_can_read, usb_serial_read, usb_serial_event, s);
572

  
573
    s->dev.speed = USB_SPEED_FULL;
574
    s->dev.handle_packet = usb_generic_handle_packet;
575

  
576
    s->dev.handle_reset = usb_serial_handle_reset;
577
    s->dev.handle_control = usb_serial_handle_control;
578
    s->dev.handle_data = usb_serial_handle_data;
579
    s->dev.handle_destroy = usb_serial_handle_destroy;
576
        return NULL;
580 577

  
578
    dev = usb_create_simple(NULL /* FIXME */, "QEMU USB Serial");
579
    s = DO_UPCAST(USBSerialState, dev, dev);
580
    s->cs = cdrv;
581 581
    s->vendorid = vendorid;
582 582
    s->productid = productid;
583

  
584 583
    snprintf(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Serial(%.16s)",
585 584
             filename);
586 585

  
586
    qemu_chr_add_handlers(cdrv, usb_serial_can_read, usb_serial_read,
587
                          usb_serial_event, s);
588

  
587 589
    usb_serial_handle_reset((USBDevice *)s);
588 590
    return (USBDevice *)s;
589
 fail:
590
    qemu_free(s);
591
    return NULL;
592 591
}
592

  
593
static struct USBDeviceInfo serial_info = {
594
    .qdev.name      = "QEMU USB Serial",
595
    .qdev.size      = sizeof(USBSerialState),
596
    .init           = usb_serial_initfn,
597
    .handle_packet  = usb_generic_handle_packet,
598
    .handle_reset   = usb_serial_handle_reset,
599
    .handle_control = usb_serial_handle_control,
600
    .handle_data    = usb_serial_handle_data,
601
    .handle_destroy = usb_serial_handle_destroy,
602
};
603

  
604
static void usb_serial_register_devices(void)
605
{
606
    usb_qdev_register(&serial_info);
607
}
608
device_init(usb_serial_register_devices)

Also available in: Unified diff