>From 8d918be8c56adc099fe4a12e01c5fdfa735df349 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 7 Jul 2011 15:51:40 +0200 Subject: [PATCH 2/2] usb-hid: make migration support conditional --- hw/usb-hid.c | 23 ++++++++++++++++++++--- 1 files changed, 20 insertions(+), 3 deletions(-) diff --git a/hw/usb-hid.c b/hw/usb-hid.c index f30c96b..81dff27 100644 --- a/hw/usb-hid.c +++ b/hw/usb-hid.c @@ -80,6 +80,7 @@ typedef struct USBHIDState { int32_t protocol; uint8_t idle; int64_t next_idle_clock; + uint32_t migration; int changed; void *datain_opaque; void (*datain)(void *); @@ -928,6 +929,17 @@ static int usb_hid_initfn(USBDevice *dev, int kind) 1, "QEMU USB Tablet"); } + if (s->migration) { + if (s->kind == USB_KEYBOARD) { + vmstate_register(&dev->qdev, -1, &vmstate_usb_kbd, dev); + } else { + vmstate_register(&dev->qdev, -1, &vmstate_usb_ptr, dev); + } + } else { + /* disable remote-wakeup */ + usb_desc_set_string(dev, STR_SERIALNUMBER, "1"); + } + /* Force poll routine to be run and grab input the first time. */ s->changed = 1; return 0; @@ -956,13 +968,17 @@ void usb_hid_datain_cb(USBDevice *dev, void *opaque, void (*datain)(void *)) s->datain = datain; } +static struct Property hid_props[] = { + DEFINE_PROP_UINT32("migration", USBHIDState, migration, 1), + DEFINE_PROP_END_OF_LIST(), +}; + static struct USBDeviceInfo hid_info[] = { { .product_desc = "QEMU USB Tablet", .qdev.name = "usb-tablet", .usbdevice_name = "tablet", .qdev.size = sizeof(USBHIDState), - .qdev.vmsd = &vmstate_usb_ptr, .usb_desc = &desc_tablet, .init = usb_tablet_initfn, .handle_packet = usb_generic_handle_packet, @@ -970,12 +986,12 @@ static struct USBDeviceInfo hid_info[] = { .handle_control = usb_hid_handle_control, .handle_data = usb_hid_handle_data, .handle_destroy = usb_hid_handle_destroy, + .qdev.props = hid_props, },{ .product_desc = "QEMU USB Mouse", .qdev.name = "usb-mouse", .usbdevice_name = "mouse", .qdev.size = sizeof(USBHIDState), - .qdev.vmsd = &vmstate_usb_ptr, .usb_desc = &desc_mouse, .init = usb_mouse_initfn, .handle_packet = usb_generic_handle_packet, @@ -983,12 +999,12 @@ static struct USBDeviceInfo hid_info[] = { .handle_control = usb_hid_handle_control, .handle_data = usb_hid_handle_data, .handle_destroy = usb_hid_handle_destroy, + .qdev.props = hid_props, },{ .product_desc = "QEMU USB Keyboard", .qdev.name = "usb-kbd", .usbdevice_name = "keyboard", .qdev.size = sizeof(USBHIDState), - .qdev.vmsd = &vmstate_usb_kbd, .usb_desc = &desc_keyboard, .init = usb_keyboard_initfn, .handle_packet = usb_generic_handle_packet, @@ -996,6 +1012,7 @@ static struct USBDeviceInfo hid_info[] = { .handle_control = usb_hid_handle_control, .handle_data = usb_hid_handle_data, .handle_destroy = usb_hid_handle_destroy, + .qdev.props = hid_props, },{ /* end of list */ } -- 1.7.1