Revision 806b6024 hw/usb-hid.c

b/hw/usb-hid.c
846 846
    qemu_free(s);
847 847
}
848 848

  
849
USBDevice *usb_tablet_init(void)
849
static int usb_hid_initfn(USBDevice *dev, int kind)
850 850
{
851
    USBHIDState *s;
852

  
853
    s = qemu_mallocz(sizeof(USBHIDState));
851
    USBHIDState *s = DO_UPCAST(USBHIDState, dev, dev);
854 852
    s->dev.speed = USB_SPEED_FULL;
855
    s->dev.handle_packet = usb_generic_handle_packet;
856

  
857
    s->dev.handle_reset = usb_mouse_handle_reset;
858
    s->dev.handle_control = usb_hid_handle_control;
859
    s->dev.handle_data = usb_hid_handle_data;
860
    s->dev.handle_destroy = usb_hid_handle_destroy;
861
    s->kind = USB_TABLET;
853
    s->kind = kind;
862 854
    /* Force poll routine to be run and grab input the first time.  */
863 855
    s->changed = 1;
864

  
865
    pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Tablet");
866

  
867
    return (USBDevice *)s;
856
    return 0;
868 857
}
869 858

  
870
USBDevice *usb_mouse_init(void)
859
static int usb_tablet_initfn(USBDevice *dev)
871 860
{
872
    USBHIDState *s;
861
    return usb_hid_initfn(dev, USB_TABLET);
862
}
873 863

  
874
    s = qemu_mallocz(sizeof(USBHIDState));
875
    s->dev.speed = USB_SPEED_FULL;
876
    s->dev.handle_packet = usb_generic_handle_packet;
864
static int usb_mouse_initfn(USBDevice *dev)
865
{
866
    return usb_hid_initfn(dev, USB_MOUSE);
867
}
877 868

  
878
    s->dev.handle_reset = usb_mouse_handle_reset;
879
    s->dev.handle_control = usb_hid_handle_control;
880
    s->dev.handle_data = usb_hid_handle_data;
881
    s->dev.handle_destroy = usb_hid_handle_destroy;
882
    s->kind = USB_MOUSE;
883
    /* Force poll routine to be run and grab input the first time.  */
884
    s->changed = 1;
869
static int usb_keyboard_initfn(USBDevice *dev)
870
{
871
    return usb_hid_initfn(dev, USB_KEYBOARD);
872
}
885 873

  
886
    pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Mouse");
874
USBDevice *usb_tablet_init(void)
875
{
876
    return usb_create_simple(NULL /* FIXME */, "QEMU USB Tablet");
877
}
887 878

  
888
    return (USBDevice *)s;
879
USBDevice *usb_mouse_init(void)
880
{
881
    return usb_create_simple(NULL /* FIXME */, "QEMU USB Mouse");
889 882
}
890 883

  
891 884
USBDevice *usb_keyboard_init(void)
892 885
{
893
    USBHIDState *s;
894

  
895
    s = qemu_mallocz(sizeof(USBHIDState));
896
    s->dev.speed = USB_SPEED_FULL;
897
    s->dev.handle_packet = usb_generic_handle_packet;
898

  
899
    s->dev.handle_reset = usb_keyboard_handle_reset;
900
    s->dev.handle_control = usb_hid_handle_control;
901
    s->dev.handle_data = usb_hid_handle_data;
902
    s->dev.handle_destroy = usb_hid_handle_destroy;
903
    s->kind = USB_KEYBOARD;
904

  
905
    pstrcpy(s->dev.devname, sizeof(s->dev.devname), "QEMU USB Keyboard");
906

  
907
    return (USBDevice *) s;
886
    return usb_create_simple(NULL /* FIXME */, "QEMU USB Keyboard");
908 887
}
909 888

  
910 889
void usb_hid_datain_cb(USBDevice *dev, void *opaque, void (*datain)(void *))
......
914 893
    s->datain_opaque = opaque;
915 894
    s->datain = datain;
916 895
}
896

  
897
static struct USBDeviceInfo hid_info[] = {
898
    {
899
        .qdev.name      = "QEMU USB Tablet",
900
        .qdev.size      = sizeof(USBHIDState),
901
        .init           = usb_tablet_initfn,
902
        .handle_packet  = usb_generic_handle_packet,
903
        .handle_reset   = usb_mouse_handle_reset,
904
        .handle_control = usb_hid_handle_control,
905
        .handle_data    = usb_hid_handle_data,
906
        .handle_destroy = usb_hid_handle_destroy,
907
    },{
908
        .qdev.name      = "QEMU USB Mouse",
909
        .qdev.size      = sizeof(USBHIDState),
910
        .init           = usb_mouse_initfn,
911
        .handle_packet  = usb_generic_handle_packet,
912
        .handle_reset   = usb_mouse_handle_reset,
913
        .handle_control = usb_hid_handle_control,
914
        .handle_data    = usb_hid_handle_data,
915
        .handle_destroy = usb_hid_handle_destroy,
916
    },{
917
        .qdev.name      = "QEMU USB Keyboard",
918
        .qdev.size      = sizeof(USBHIDState),
919
        .init           = usb_keyboard_initfn,
920
        .handle_packet  = usb_generic_handle_packet,
921
        .handle_reset   = usb_keyboard_handle_reset,
922
        .handle_control = usb_hid_handle_control,
923
        .handle_data    = usb_hid_handle_data,
924
        .handle_destroy = usb_hid_handle_destroy,
925
    },{
926
        /* end of list */
927
    }
928
};
929

  
930
static void usb_hid_register_devices(void)
931
{
932
    usb_qdev_register_many(hid_info);
933
}
934
device_init(usb_hid_register_devices)

Also available in: Unified diff