* [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration @ 2014-02-16 5:41 Jan Vesely 2014-02-16 5:41 ` [Qemu-devel] [PATCH 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely 2014-02-17 12:10 ` [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Gerd Hoffmann 0 siblings, 2 replies; 12+ messages in thread From: Jan Vesely @ 2014-02-16 5:41 UTC (permalink / raw) To: qemu-devel Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- Tested on Ubuntu, Fedora, and HelenOS. hw/usb/dev-hid.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 2966066..954cde1 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -55,9 +55,10 @@ enum { STR_PRODUCT_TABLET, STR_PRODUCT_KEYBOARD, STR_SERIALNUMBER, - STR_CONFIG_MOUSE, STR_CONFIG_TABLET, STR_CONFIG_KEYBOARD, + STR_CONFIG_MOUSE_FULL, + STR_CONFIG_MOUSE_HIGH, }; static const USBDescStrings desc_strings = { @@ -66,12 +67,13 @@ static const USBDescStrings desc_strings = { [STR_PRODUCT_TABLET] = "QEMU USB Tablet", [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ - [STR_CONFIG_MOUSE] = "HID Mouse", [STR_CONFIG_TABLET] = "HID Tablet", [STR_CONFIG_KEYBOARD] = "HID Keyboard", + [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", + [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", }; -static const USBDescIface desc_iface_mouse = { +static const USBDescIface desc_iface_mouse_full = { .bInterfaceNumber = 0, .bNumEndpoints = 1, .bInterfaceClass = USB_CLASS_HID, @@ -102,6 +104,37 @@ static const USBDescIface desc_iface_mouse = { }, }; +static const USBDescIface desc_iface_mouse_high = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x02, + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x01, 0x00, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 52, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 4, + .bInterval = 0x06, + }, + }, +}; + static const USBDescIface desc_iface_tablet = { .bInterfaceNumber = 0, .bNumEndpoints = 1, @@ -193,19 +226,36 @@ static const USBDescIface desc_iface_keyboard = { }, }; -static const USBDescDevice desc_device_mouse = { - .bcdUSB = 0x0100, +static const USBDescDevice desc_device_mouse_full = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 8, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_MOUSE_FULL, + .bmAttributes = 0xa0, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_mouse_full, + }, + }, +}; + +static const USBDescDevice desc_device_mouse_high = { + .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, .bNumConfigurations = 1, .confs = (USBDescConfig[]) { { .bNumInterfaces = 1, .bConfigurationValue = 1, - .iConfiguration = STR_CONFIG_MOUSE, + .iConfiguration = STR_CONFIG_MOUSE_HIGH, .bmAttributes = 0xa0, .bMaxPower = 50, .nif = 1, - .ifs = &desc_iface_mouse, + .ifs = &desc_iface_mouse_high, }, }, }; @@ -274,7 +324,8 @@ static const USBDesc desc_mouse = { .iProduct = STR_PRODUCT_MOUSE, .iSerialNumber = STR_SERIALNUMBER, }, - .full = &desc_device_mouse, + .full = &desc_device_mouse_full, + .high = &desc_device_mouse_high, .str = desc_strings, .msos = &desc_msos_suspend, }; -- 1.8.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 2/2] usb-hid: Add high speed keyboard configuration 2014-02-16 5:41 [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Jan Vesely @ 2014-02-16 5:41 ` Jan Vesely 2014-02-17 12:10 ` [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Gerd Hoffmann 1 sibling, 0 replies; 12+ messages in thread From: Jan Vesely @ 2014-02-16 5:41 UTC (permalink / raw) To: qemu-devel Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- Tested on Ubuntu, Fedora, and HelenOS. hw/usb/dev-hid.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 954cde1..53e7bd3 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -56,7 +56,8 @@ enum { STR_PRODUCT_KEYBOARD, STR_SERIALNUMBER, STR_CONFIG_TABLET, - STR_CONFIG_KEYBOARD, + STR_CONFIG_KEYBOARD_FULL, + STR_CONFIG_KEYBOARD_HIGH, STR_CONFIG_MOUSE_FULL, STR_CONFIG_MOUSE_HIGH, }; @@ -68,7 +69,8 @@ static const USBDescStrings desc_strings = { [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ [STR_CONFIG_TABLET] = "HID Tablet", - [STR_CONFIG_KEYBOARD] = "HID Keyboard", + [STR_CONFIG_KEYBOARD_FULL] = "HID Keyboard Full speed configuration (usb 1.1)", + [STR_CONFIG_KEYBOARD_HIGH] = "HID Keyboard High speed configuration (usb 2.0)", [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", }; @@ -195,7 +197,7 @@ static const USBDescIface desc_iface_tablet2 = { }, }; -static const USBDescIface desc_iface_keyboard = { +static const USBDescIface desc_iface_keyboard_full = { .bInterfaceNumber = 0, .bNumEndpoints = 1, .bInterfaceClass = USB_CLASS_HID, @@ -226,6 +228,37 @@ static const USBDescIface desc_iface_keyboard = { }, }; +static const USBDescIface desc_iface_keyboard_high = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x01, /* keyboard */ + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x11, 0x01, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 0x3f, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 8, + .bInterval = 0x06, + }, + }, +}; + static const USBDescDevice desc_device_mouse_full = { .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, @@ -294,19 +327,36 @@ static const USBDescDevice desc_device_tablet2 = { }, }; -static const USBDescDevice desc_device_keyboard = { - .bcdUSB = 0x0100, +static const USBDescDevice desc_device_keyboard_full = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 8, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_KEYBOARD_FULL, + .bmAttributes = 0xa0, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_keyboard_full, + }, + }, +}; + +static const USBDescDevice desc_device_keyboard_high = { + .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, .bNumConfigurations = 1, .confs = (USBDescConfig[]) { { .bNumInterfaces = 1, .bConfigurationValue = 1, - .iConfiguration = STR_CONFIG_KEYBOARD, + .iConfiguration = STR_CONFIG_KEYBOARD_HIGH, .bmAttributes = 0xa0, .bMaxPower = 50, .nif = 1, - .ifs = &desc_iface_keyboard, + .ifs = &desc_iface_keyboard_high, }, }, }; @@ -368,7 +418,8 @@ static const USBDesc desc_keyboard = { .iProduct = STR_PRODUCT_KEYBOARD, .iSerialNumber = STR_SERIALNUMBER, }, - .full = &desc_device_keyboard, + .full = &desc_device_keyboard_full, + .high = &desc_device_keyboard_high, .str = desc_strings, .msos = &desc_msos_suspend, }; -- 1.8.3.2 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration 2014-02-16 5:41 [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Jan Vesely 2014-02-16 5:41 ` [Qemu-devel] [PATCH 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely @ 2014-02-17 12:10 ` Gerd Hoffmann 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 " Jan Vesely 1 sibling, 1 reply; 12+ messages in thread From: Gerd Hoffmann @ 2014-02-17 12:10 UTC (permalink / raw) To: Jan Vesely; +Cc: qemu-devel On So, 2014-02-16 at 00:41 -0500, Jan Vesely wrote: > Signed-off-by: Jan Vesely <jano.vesely@gmail.com> This should have a usb_version property, like usb-tablet has. cheers, Gerd ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration 2014-02-17 12:10 ` [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Gerd Hoffmann @ 2014-02-23 7:37 ` Jan Vesely 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely 2014-03-17 17:53 ` [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration Ján Veselý 0 siblings, 2 replies; 12+ messages in thread From: Jan Vesely @ 2014-02-23 7:37 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel v2: add usb_mouse_properties use macros for bmAttributes Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- hw/usb/dev-hid.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index f36e617..70c2c5f 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -55,9 +55,10 @@ enum { STR_PRODUCT_TABLET, STR_PRODUCT_KEYBOARD, STR_SERIALNUMBER, - STR_CONFIG_MOUSE, STR_CONFIG_TABLET, STR_CONFIG_KEYBOARD, + STR_CONFIG_MOUSE_FULL, + STR_CONFIG_MOUSE_HIGH, }; static const USBDescStrings desc_strings = { @@ -66,12 +67,13 @@ static const USBDescStrings desc_strings = { [STR_PRODUCT_TABLET] = "QEMU USB Tablet", [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ - [STR_CONFIG_MOUSE] = "HID Mouse", [STR_CONFIG_TABLET] = "HID Tablet", [STR_CONFIG_KEYBOARD] = "HID Keyboard", + [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", + [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", }; -static const USBDescIface desc_iface_mouse = { +static const USBDescIface desc_iface_mouse_full = { .bInterfaceNumber = 0, .bNumEndpoints = 1, .bInterfaceClass = USB_CLASS_HID, @@ -102,6 +104,37 @@ static const USBDescIface desc_iface_mouse = { }, }; +static const USBDescIface desc_iface_mouse_high = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x02, + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x01, 0x00, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 52, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 4, + .bInterval = 0x06, + }, + }, +}; + static const USBDescIface desc_iface_tablet = { .bInterfaceNumber = 0, .bNumEndpoints = 1, @@ -193,19 +226,36 @@ static const USBDescIface desc_iface_keyboard = { }, }; -static const USBDescDevice desc_device_mouse = { - .bcdUSB = 0x0100, +static const USBDescDevice desc_device_mouse_full = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 8, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_MOUSE_FULL, + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_mouse_full, + }, + }, +}; + +static const USBDescDevice desc_device_mouse_high = { + .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, .bNumConfigurations = 1, .confs = (USBDescConfig[]) { { .bNumInterfaces = 1, .bConfigurationValue = 1, - .iConfiguration = STR_CONFIG_MOUSE, + .iConfiguration = STR_CONFIG_MOUSE_HIGH, .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, .bMaxPower = 50, .nif = 1, - .ifs = &desc_iface_mouse, + .ifs = &desc_iface_mouse_high, }, }, }; @@ -274,7 +324,8 @@ static const USBDesc desc_mouse = { .iProduct = STR_PRODUCT_MOUSE, .iSerialNumber = STR_SERIALNUMBER, }, - .full = &desc_device_mouse, + .full = &desc_device_mouse_full, + .high = &desc_device_mouse_high, .str = desc_strings, .msos = &desc_msos_suspend, }; @@ -676,6 +727,11 @@ static const TypeInfo usb_tablet_info = { .class_init = usb_tablet_class_initfn, }; +static Property usb_mouse_properties[] = { + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), + DEFINE_PROP_END_OF_LIST(), +}; + static void usb_mouse_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -686,6 +742,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "QEMU USB Mouse"; uc->usb_desc = &desc_mouse; dc->vmsd = &vmstate_usb_ptr; + dc->props = usb_mouse_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); } -- 1.9.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] usb-hid: Add high speed keyboard configuration 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 " Jan Vesely @ 2014-02-23 7:37 ` Jan Vesely 2014-03-17 17:53 ` [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration Ján Veselý 1 sibling, 0 replies; 12+ messages in thread From: Jan Vesely @ 2014-02-23 7:37 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel v2: add usb_keyboard_properties use macros for bmAttributes Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- hw/usb/dev-hid.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 70c2c5f..6ead61c 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -56,7 +56,8 @@ enum { STR_PRODUCT_KEYBOARD, STR_SERIALNUMBER, STR_CONFIG_TABLET, - STR_CONFIG_KEYBOARD, + STR_CONFIG_KEYBOARD_FULL, + STR_CONFIG_KEYBOARD_HIGH, STR_CONFIG_MOUSE_FULL, STR_CONFIG_MOUSE_HIGH, }; @@ -68,7 +69,8 @@ static const USBDescStrings desc_strings = { [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ [STR_CONFIG_TABLET] = "HID Tablet", - [STR_CONFIG_KEYBOARD] = "HID Keyboard", + [STR_CONFIG_KEYBOARD_FULL] = "HID Keyboard Full speed configuration (usb 1.1)", + [STR_CONFIG_KEYBOARD_HIGH] = "HID Keyboard High speed configuration (usb 2.0)", [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", }; @@ -195,7 +197,7 @@ static const USBDescIface desc_iface_tablet2 = { }, }; -static const USBDescIface desc_iface_keyboard = { +static const USBDescIface desc_iface_keyboard_full = { .bInterfaceNumber = 0, .bNumEndpoints = 1, .bInterfaceClass = USB_CLASS_HID, @@ -226,6 +228,37 @@ static const USBDescIface desc_iface_keyboard = { }, }; +static const USBDescIface desc_iface_keyboard_high = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x01, /* keyboard */ + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x11, 0x01, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 0x3f, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 8, + .bInterval = 0x06, + }, + }, +}; + static const USBDescDevice desc_device_mouse_full = { .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, @@ -294,19 +327,36 @@ static const USBDescDevice desc_device_tablet2 = { }, }; -static const USBDescDevice desc_device_keyboard = { - .bcdUSB = 0x0100, +static const USBDescDevice desc_device_keyboard_full = { + .bcdUSB = 0x0200, .bMaxPacketSize0 = 8, .bNumConfigurations = 1, .confs = (USBDescConfig[]) { { .bNumInterfaces = 1, .bConfigurationValue = 1, - .iConfiguration = STR_CONFIG_KEYBOARD, + .iConfiguration = STR_CONFIG_KEYBOARD_FULL, .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, .bMaxPower = 50, .nif = 1, - .ifs = &desc_iface_keyboard, + .ifs = &desc_iface_keyboard_full, + }, + }, +}; + +static const USBDescDevice desc_device_keyboard_high = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 8, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_KEYBOARD_HIGH, + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_keyboard_high, }, }, }; @@ -368,7 +418,8 @@ static const USBDesc desc_keyboard = { .iProduct = STR_PRODUCT_KEYBOARD, .iSerialNumber = STR_SERIALNUMBER, }, - .full = &desc_device_keyboard, + .full = &desc_device_keyboard_full, + .high = &desc_device_keyboard_high, .str = desc_strings, .msos = &desc_msos_suspend, }; @@ -753,6 +804,11 @@ static const TypeInfo usb_mouse_info = { .class_init = usb_mouse_class_initfn, }; +static Property usb_keyboard_properties[] = { + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), + DEFINE_PROP_END_OF_LIST(), +}; + static void usb_keyboard_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -763,6 +819,7 @@ static void usb_keyboard_class_initfn(ObjectClass *klass, void *data) uc->product_desc = "QEMU USB Keyboard"; uc->usb_desc = &desc_keyboard; dc->vmsd = &vmstate_usb_kbd; + dc->props = usb_keyboard_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); } -- 1.9.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 " Jan Vesely 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely @ 2014-03-17 17:53 ` Ján Veselý 2014-04-03 5:27 ` Ján Veselý 1 sibling, 1 reply; 12+ messages in thread From: Ján Veselý @ 2014-03-17 17:53 UTC (permalink / raw) To: QEMU; +Cc: Gerd Hoffmann ping any problem with v2? regards, Jan On Sun, Feb 23, 2014 at 2:37 AM, Jan Vesely <jano.vesely@gmail.com> wrote: > v2: add usb_mouse_properties > use macros for bmAttributes > > Signed-off-by: Jan Vesely <jano.vesely@gmail.com> > --- > hw/usb/dev-hid.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++------- > 1 file changed, 65 insertions(+), 8 deletions(-) > > diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c > index f36e617..70c2c5f 100644 > --- a/hw/usb/dev-hid.c > +++ b/hw/usb/dev-hid.c > @@ -55,9 +55,10 @@ enum { > STR_PRODUCT_TABLET, > STR_PRODUCT_KEYBOARD, > STR_SERIALNUMBER, > - STR_CONFIG_MOUSE, > STR_CONFIG_TABLET, > STR_CONFIG_KEYBOARD, > + STR_CONFIG_MOUSE_FULL, > + STR_CONFIG_MOUSE_HIGH, > }; > > static const USBDescStrings desc_strings = { > @@ -66,12 +67,13 @@ static const USBDescStrings desc_strings = { > [STR_PRODUCT_TABLET] = "QEMU USB Tablet", > [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", > [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ > - [STR_CONFIG_MOUSE] = "HID Mouse", > [STR_CONFIG_TABLET] = "HID Tablet", > [STR_CONFIG_KEYBOARD] = "HID Keyboard", > + [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", > + [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", > }; > > -static const USBDescIface desc_iface_mouse = { > +static const USBDescIface desc_iface_mouse_full = { > .bInterfaceNumber = 0, > .bNumEndpoints = 1, > .bInterfaceClass = USB_CLASS_HID, > @@ -102,6 +104,37 @@ static const USBDescIface desc_iface_mouse = { > }, > }; > > +static const USBDescIface desc_iface_mouse_high = { > + .bInterfaceNumber = 0, > + .bNumEndpoints = 1, > + .bInterfaceClass = USB_CLASS_HID, > + .bInterfaceSubClass = 0x01, /* boot */ > + .bInterfaceProtocol = 0x02, > + .ndesc = 1, > + .descs = (USBDescOther[]) { > + { > + /* HID descriptor */ > + .data = (uint8_t[]) { > + 0x09, /* u8 bLength */ > + USB_DT_HID, /* u8 bDescriptorType */ > + 0x01, 0x00, /* u16 HID_class */ > + 0x00, /* u8 country_code */ > + 0x01, /* u8 num_descriptors */ > + USB_DT_REPORT, /* u8 type: Report */ > + 52, 0, /* u16 len */ > + }, > + }, > + }, > + .eps = (USBDescEndpoint[]) { > + { > + .bEndpointAddress = USB_DIR_IN | 0x01, > + .bmAttributes = USB_ENDPOINT_XFER_INT, > + .wMaxPacketSize = 4, > + .bInterval = 0x06, > + }, > + }, > +}; > + > static const USBDescIface desc_iface_tablet = { > .bInterfaceNumber = 0, > .bNumEndpoints = 1, > @@ -193,19 +226,36 @@ static const USBDescIface desc_iface_keyboard = { > }, > }; > > -static const USBDescDevice desc_device_mouse = { > - .bcdUSB = 0x0100, > +static const USBDescDevice desc_device_mouse_full = { > + .bcdUSB = 0x0200, > + .bMaxPacketSize0 = 8, > + .bNumConfigurations = 1, > + .confs = (USBDescConfig[]) { > + { > + .bNumInterfaces = 1, > + .bConfigurationValue = 1, > + .iConfiguration = STR_CONFIG_MOUSE_FULL, > + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, > + .bMaxPower = 50, > + .nif = 1, > + .ifs = &desc_iface_mouse_full, > + }, > + }, > +}; > + > +static const USBDescDevice desc_device_mouse_high = { > + .bcdUSB = 0x0200, > .bMaxPacketSize0 = 8, > .bNumConfigurations = 1, > .confs = (USBDescConfig[]) { > { > .bNumInterfaces = 1, > .bConfigurationValue = 1, > - .iConfiguration = STR_CONFIG_MOUSE, > + .iConfiguration = STR_CONFIG_MOUSE_HIGH, > .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, > .bMaxPower = 50, > .nif = 1, > - .ifs = &desc_iface_mouse, > + .ifs = &desc_iface_mouse_high, > }, > }, > }; > @@ -274,7 +324,8 @@ static const USBDesc desc_mouse = { > .iProduct = STR_PRODUCT_MOUSE, > .iSerialNumber = STR_SERIALNUMBER, > }, > - .full = &desc_device_mouse, > + .full = &desc_device_mouse_full, > + .high = &desc_device_mouse_high, > .str = desc_strings, > .msos = &desc_msos_suspend, > }; > @@ -676,6 +727,11 @@ static const TypeInfo usb_tablet_info = { > .class_init = usb_tablet_class_initfn, > }; > > +static Property usb_mouse_properties[] = { > + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), > + DEFINE_PROP_END_OF_LIST(), > +}; > + > static void usb_mouse_class_initfn(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > @@ -686,6 +742,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) > uc->product_desc = "QEMU USB Mouse"; > uc->usb_desc = &desc_mouse; > dc->vmsd = &vmstate_usb_ptr; > + dc->props = usb_mouse_properties; > set_bit(DEVICE_CATEGORY_INPUT, dc->categories); > } > > -- > 1.9.0 > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration 2014-03-17 17:53 ` [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration Ján Veselý @ 2014-04-03 5:27 ` Ján Veselý 2014-04-07 8:02 ` Gerd Hoffmann 0 siblings, 1 reply; 12+ messages in thread From: Ján Veselý @ 2014-04-03 5:27 UTC (permalink / raw) To: QEMU; +Cc: Gerd Hoffmann ping2 is there anything I can do to help these patches get merged? Jan On Mon, Mar 17, 2014 at 1:53 PM, Ján Veselý <jano.vesely@gmail.com> wrote: > ping > > any problem with v2? > > regards, > Jan > > On Sun, Feb 23, 2014 at 2:37 AM, Jan Vesely <jano.vesely@gmail.com> wrote: >> v2: add usb_mouse_properties >> use macros for bmAttributes >> >> Signed-off-by: Jan Vesely <jano.vesely@gmail.com> >> --- >> hw/usb/dev-hid.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++------- >> 1 file changed, 65 insertions(+), 8 deletions(-) >> >> diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c >> index f36e617..70c2c5f 100644 >> --- a/hw/usb/dev-hid.c >> +++ b/hw/usb/dev-hid.c >> @@ -55,9 +55,10 @@ enum { >> STR_PRODUCT_TABLET, >> STR_PRODUCT_KEYBOARD, >> STR_SERIALNUMBER, >> - STR_CONFIG_MOUSE, >> STR_CONFIG_TABLET, >> STR_CONFIG_KEYBOARD, >> + STR_CONFIG_MOUSE_FULL, >> + STR_CONFIG_MOUSE_HIGH, >> }; >> >> static const USBDescStrings desc_strings = { >> @@ -66,12 +67,13 @@ static const USBDescStrings desc_strings = { >> [STR_PRODUCT_TABLET] = "QEMU USB Tablet", >> [STR_PRODUCT_KEYBOARD] = "QEMU USB Keyboard", >> [STR_SERIALNUMBER] = "42", /* == remote wakeup works */ >> - [STR_CONFIG_MOUSE] = "HID Mouse", >> [STR_CONFIG_TABLET] = "HID Tablet", >> [STR_CONFIG_KEYBOARD] = "HID Keyboard", >> + [STR_CONFIG_MOUSE_FULL]= "HID Mouse Full speed configuration (usb 1.1)", >> + [STR_CONFIG_MOUSE_HIGH]= "HID Mouse High speed configuration (usb 2.0)", >> }; >> >> -static const USBDescIface desc_iface_mouse = { >> +static const USBDescIface desc_iface_mouse_full = { >> .bInterfaceNumber = 0, >> .bNumEndpoints = 1, >> .bInterfaceClass = USB_CLASS_HID, >> @@ -102,6 +104,37 @@ static const USBDescIface desc_iface_mouse = { >> }, >> }; >> >> +static const USBDescIface desc_iface_mouse_high = { >> + .bInterfaceNumber = 0, >> + .bNumEndpoints = 1, >> + .bInterfaceClass = USB_CLASS_HID, >> + .bInterfaceSubClass = 0x01, /* boot */ >> + .bInterfaceProtocol = 0x02, >> + .ndesc = 1, >> + .descs = (USBDescOther[]) { >> + { >> + /* HID descriptor */ >> + .data = (uint8_t[]) { >> + 0x09, /* u8 bLength */ >> + USB_DT_HID, /* u8 bDescriptorType */ >> + 0x01, 0x00, /* u16 HID_class */ >> + 0x00, /* u8 country_code */ >> + 0x01, /* u8 num_descriptors */ >> + USB_DT_REPORT, /* u8 type: Report */ >> + 52, 0, /* u16 len */ >> + }, >> + }, >> + }, >> + .eps = (USBDescEndpoint[]) { >> + { >> + .bEndpointAddress = USB_DIR_IN | 0x01, >> + .bmAttributes = USB_ENDPOINT_XFER_INT, >> + .wMaxPacketSize = 4, >> + .bInterval = 0x06, >> + }, >> + }, >> +}; >> + >> static const USBDescIface desc_iface_tablet = { >> .bInterfaceNumber = 0, >> .bNumEndpoints = 1, >> @@ -193,19 +226,36 @@ static const USBDescIface desc_iface_keyboard = { >> }, >> }; >> >> -static const USBDescDevice desc_device_mouse = { >> - .bcdUSB = 0x0100, >> +static const USBDescDevice desc_device_mouse_full = { >> + .bcdUSB = 0x0200, >> + .bMaxPacketSize0 = 8, >> + .bNumConfigurations = 1, >> + .confs = (USBDescConfig[]) { >> + { >> + .bNumInterfaces = 1, >> + .bConfigurationValue = 1, >> + .iConfiguration = STR_CONFIG_MOUSE_FULL, >> + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, >> + .bMaxPower = 50, >> + .nif = 1, >> + .ifs = &desc_iface_mouse_full, >> + }, >> + }, >> +}; >> + >> +static const USBDescDevice desc_device_mouse_high = { >> + .bcdUSB = 0x0200, >> .bMaxPacketSize0 = 8, >> .bNumConfigurations = 1, >> .confs = (USBDescConfig[]) { >> { >> .bNumInterfaces = 1, >> .bConfigurationValue = 1, >> - .iConfiguration = STR_CONFIG_MOUSE, >> + .iConfiguration = STR_CONFIG_MOUSE_HIGH, >> .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, >> .bMaxPower = 50, >> .nif = 1, >> - .ifs = &desc_iface_mouse, >> + .ifs = &desc_iface_mouse_high, >> }, >> }, >> }; >> @@ -274,7 +324,8 @@ static const USBDesc desc_mouse = { >> .iProduct = STR_PRODUCT_MOUSE, >> .iSerialNumber = STR_SERIALNUMBER, >> }, >> - .full = &desc_device_mouse, >> + .full = &desc_device_mouse_full, >> + .high = &desc_device_mouse_high, >> .str = desc_strings, >> .msos = &desc_msos_suspend, >> }; >> @@ -676,6 +727,11 @@ static const TypeInfo usb_tablet_info = { >> .class_init = usb_tablet_class_initfn, >> }; >> >> +static Property usb_mouse_properties[] = { >> + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), >> + DEFINE_PROP_END_OF_LIST(), >> +}; >> + >> static void usb_mouse_class_initfn(ObjectClass *klass, void *data) >> { >> DeviceClass *dc = DEVICE_CLASS(klass); >> @@ -686,6 +742,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) >> uc->product_desc = "QEMU USB Mouse"; >> uc->usb_desc = &desc_mouse; >> dc->vmsd = &vmstate_usb_ptr; >> + dc->props = usb_mouse_properties; >> set_bit(DEVICE_CATEGORY_INPUT, dc->categories); >> } >> >> -- >> 1.9.0 >> ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration 2014-04-03 5:27 ` Ján Veselý @ 2014-04-07 8:02 ` Gerd Hoffmann [not found] ` <CA+K+NcQZf-__sqSBTewBooUTUWMDP_m34iDVQX7YsHtUzAwb6g@mail.gmail.com> 0 siblings, 1 reply; 12+ messages in thread From: Gerd Hoffmann @ 2014-04-07 8:02 UTC (permalink / raw) To: Ján Veselý; +Cc: QEMU On Do, 2014-04-03 at 01:27 -0400, Ján Veselý wrote: > ping2 > > is there anything I can do to help these patches get merged? Well, v2 is a step into the right direction but not complete yet. The usb_ver property hasn't any effect for mouse and keyboard. Also we'll need a compat property so older machine types continue to have usb1 mouse+keyboard. The compat property stuff is a bit tricky so my plan was to just do that myself, but I havn't found the time yet. If you wanna tackle the challenge have a look at 427e3aa151c749225364d0c30640e2e3c1756d9d (tablet patch). keyboard+mouse need to do the same. Also some cleanups can be done, such as moving the "switch (us->usb_version) { ... }" from usb_tablet_initfn to usb_hid_initfn to avoid duplicating it. cheers, Gerd ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <CA+K+NcQZf-__sqSBTewBooUTUWMDP_m34iDVQX7YsHtUzAwb6g@mail.gmail.com>]
[parent not found: <1397629640.23535.7.camel@nilsson.home.kraxel.org>]
* Re: [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration [not found] ` <1397629640.23535.7.camel@nilsson.home.kraxel.org> @ 2014-09-11 4:57 ` Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH 1/3] usb-hid: Move descriptor decision to usb-hid initfn Jan Vesely 0 siblings, 1 reply; 12+ messages in thread From: Jan Vesely @ 2014-09-11 4:57 UTC (permalink / raw) To: Gerd Hoffmann; +Cc: QEMU [-- Attachment #1: Type: text/plain, Size: 1784 bytes --] Hi Gerd, sorry for taking so long to get back to this. My schedule has been super busy past couple of months. I have rebased the patches and moved the usb version desc selection to hid_initfn as you suggested. I also made the changes follow the tablet example as closely as possible I tested the patches on ubuntu 64 and fedora 64 liveCDs and both mouse and keyboard still work ok. thanks, jan On Wed, 2014-04-16 at 08:27 +0200, Gerd Hoffmann wrote: > On Di, 2014-04-15 at 19:33 -0400, Ján Veselý wrote: > > Hi, > > > > I found some more time to work on this. However, I'm not sure I > > understand the purpose of compat property: > > I noticed that the only place it's set is in PC_COMPAT_1_3 (is this > > what you meant by older devices?), > > Older machine types, yes. This switches the tablet to usb1 by default > if you start qemu with -M pc-1.3 (or older), because it was usb1 only in > qemu 1.3 & older. > > > I guess same setting for FS mouse and kbd should be added there as well. > > They need to go to the (probably not added yet) PC_COMPAT_2_0. > > > The switch statement in usb_tablet_initfn selects between two > > descriptor structures, however, these structures are almost identical > > with the sole exception of .high field being set in the HS version > > (desc_tablet2). > > > > So changing the switch statement to: > > if (us->usb_version < 2) > > dev->usb_desc->high = NULL; > > > > should be OK for all usb hid devices, right? > > No. That struct is shared between all device instances, so if you muck > with it all devices are affected, i.e. this ... > > qemu -device usb-tablet,usb_ver=1 -device usb_tablet,usb_ver=2 > > will not work correctly. > > cheers, > Gerd > > [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/3] usb-hid: Move descriptor decision to usb-hid initfn 2014-09-11 4:57 ` Jan Vesely @ 2014-09-11 4:58 ` Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH v3 2/3] usb-hid: Add high speed mouse configuration Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH 3/3] usb-hid: Add high speed keyboard configuration Jan Vesely 0 siblings, 2 replies; 12+ messages in thread From: Jan Vesely @ 2014-09-11 4:58 UTC (permalink / raw) To: Gerd Hoffmann, QEMU Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- hw/usb/dev-hid.c | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 67a57f1..b3d02b2 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -566,9 +566,22 @@ static void usb_hid_handle_destroy(USBDevice *dev) hid_free(&us->hid); } -static int usb_hid_initfn(USBDevice *dev, int kind) +static int usb_hid_initfn(USBDevice *dev, int kind, + const USBDesc *usb1, const USBDesc *usb2) { USBHIDState *us = DO_UPCAST(USBHIDState, dev, dev); + switch (us->usb_version) { + case 1: + dev->usb_desc = usb1; + break; + case 2: + dev->usb_desc = usb2; + break; + default: + error_report("Invalid usb version %d for hid device (must be 1 or 2)", + us->usb_version); + return -1; + } if (dev->serial) { usb_desc_set_string(dev, STR_SERIALNUMBER, dev->serial); @@ -584,32 +597,17 @@ static int usb_hid_initfn(USBDevice *dev, int kind) static int usb_tablet_initfn(USBDevice *dev) { - USBHIDState *us = DO_UPCAST(USBHIDState, dev, dev); - - switch (us->usb_version) { - case 1: - dev->usb_desc = &desc_tablet; - break; - case 2: - dev->usb_desc = &desc_tablet2; - break; - default: - error_report("Invalid usb version %d for usb-tabler (must be 1 or 2)", - us->usb_version); - return -1; - } - - return usb_hid_initfn(dev, HID_TABLET); + return usb_hid_initfn(dev, HID_TABLET, &desc_tablet, &desc_tablet2); } static int usb_mouse_initfn(USBDevice *dev) { - return usb_hid_initfn(dev, HID_MOUSE); + return usb_hid_initfn(dev, HID_MOUSE, &desc_mouse, &desc_mouse); } static int usb_keyboard_initfn(USBDevice *dev) { - return usb_hid_initfn(dev, HID_KEYBOARD); + return usb_hid_initfn(dev, HID_KEYBOARD, &desc_keyboard, &desc_keyboard); } static int usb_ptr_post_load(void *opaque, int version_id) @@ -691,7 +689,6 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) usb_hid_class_initfn(klass, data); uc->init = usb_mouse_initfn; uc->product_desc = "QEMU USB Mouse"; - uc->usb_desc = &desc_mouse; dc->vmsd = &vmstate_usb_ptr; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); } @@ -716,7 +713,6 @@ static void usb_keyboard_class_initfn(ObjectClass *klass, void *data) usb_hid_class_initfn(klass, data); uc->init = usb_keyboard_initfn; uc->product_desc = "QEMU USB Keyboard"; - uc->usb_desc = &desc_keyboard; dc->vmsd = &vmstate_usb_kbd; dc->props = usb_keyboard_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); -- 1.9.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 2/3] usb-hid: Add high speed mouse configuration 2014-09-11 4:58 ` [Qemu-devel] [PATCH 1/3] usb-hid: Move descriptor decision to usb-hid initfn Jan Vesely @ 2014-09-11 4:58 ` Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH 3/3] usb-hid: Add high speed keyboard configuration Jan Vesely 1 sibling, 0 replies; 12+ messages in thread From: Jan Vesely @ 2014-09-11 4:58 UTC (permalink / raw) To: Gerd Hoffmann, QEMU v2: add usb_mouse_properties use macros for bmAttributes v3: rebase Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- hw/usb/dev-hid.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index b3d02b2..643b013 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -104,6 +104,37 @@ static const USBDescIface desc_iface_mouse = { }, }; +static const USBDescIface desc_iface_mouse2 = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x02, + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x01, 0x00, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 52, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 4, + .bInterval = 7, /* 2 ^ (8-1) * 125 usecs = 8 ms */ + }, + }, +}; + static const USBDescIface desc_iface_tablet = { .bInterfaceNumber = 0, .bNumEndpoints = 1, @@ -212,6 +243,23 @@ static const USBDescDevice desc_device_mouse = { }, }; +static const USBDescDevice desc_device_mouse2 = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 64, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_MOUSE, + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_mouse2, + }, + }, +}; + static const USBDescDevice desc_device_tablet = { .bcdUSB = 0x0100, .bMaxPacketSize0 = 8, @@ -281,6 +329,21 @@ static const USBDesc desc_mouse = { .msos = &desc_msos_suspend, }; +static const USBDesc desc_mouse2 = { + .id = { + .idVendor = 0x0627, + .idProduct = 0x0001, + .bcdDevice = 0, + .iManufacturer = STR_MANUFACTURER, + .iProduct = STR_PRODUCT_MOUSE, + .iSerialNumber = STR_SERIALNUMBER, + }, + .full = &desc_device_mouse, + .high = &desc_device_mouse2, + .str = desc_strings, + .msos = &desc_msos_suspend, +}; + static const USBDesc desc_tablet = { .id = { .idVendor = 0x0627, @@ -602,7 +665,7 @@ static int usb_tablet_initfn(USBDevice *dev) static int usb_mouse_initfn(USBDevice *dev) { - return usb_hid_initfn(dev, HID_MOUSE, &desc_mouse, &desc_mouse); + return usb_hid_initfn(dev, HID_MOUSE, &desc_mouse, &desc_mouse2); } static int usb_keyboard_initfn(USBDevice *dev) @@ -681,6 +744,11 @@ static const TypeInfo usb_tablet_info = { .class_init = usb_tablet_class_initfn, }; +static Property usb_mouse_properties[] = { + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), + DEFINE_PROP_END_OF_LIST(), +}; + static void usb_mouse_class_initfn(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -690,6 +758,7 @@ static void usb_mouse_class_initfn(ObjectClass *klass, void *data) uc->init = usb_mouse_initfn; uc->product_desc = "QEMU USB Mouse"; dc->vmsd = &vmstate_usb_ptr; + dc->props = usb_mouse_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); } -- 1.9.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 3/3] usb-hid: Add high speed keyboard configuration 2014-09-11 4:58 ` [Qemu-devel] [PATCH 1/3] usb-hid: Move descriptor decision to usb-hid initfn Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH v3 2/3] usb-hid: Add high speed mouse configuration Jan Vesely @ 2014-09-11 4:58 ` Jan Vesely 1 sibling, 0 replies; 12+ messages in thread From: Jan Vesely @ 2014-09-11 4:58 UTC (permalink / raw) To: Gerd Hoffmann, QEMU Signed-off-by: Jan Vesely <jano.vesely@gmail.com> --- hw/usb/dev-hid.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c index 643b013..ac7e393 100644 --- a/hw/usb/dev-hid.c +++ b/hw/usb/dev-hid.c @@ -226,6 +226,37 @@ static const USBDescIface desc_iface_keyboard = { }, }; +static const USBDescIface desc_iface_keyboard2 = { + .bInterfaceNumber = 0, + .bNumEndpoints = 1, + .bInterfaceClass = USB_CLASS_HID, + .bInterfaceSubClass = 0x01, /* boot */ + .bInterfaceProtocol = 0x01, /* keyboard */ + .ndesc = 1, + .descs = (USBDescOther[]) { + { + /* HID descriptor */ + .data = (uint8_t[]) { + 0x09, /* u8 bLength */ + USB_DT_HID, /* u8 bDescriptorType */ + 0x11, 0x01, /* u16 HID_class */ + 0x00, /* u8 country_code */ + 0x01, /* u8 num_descriptors */ + USB_DT_REPORT, /* u8 type: Report */ + 0x3f, 0, /* u16 len */ + }, + }, + }, + .eps = (USBDescEndpoint[]) { + { + .bEndpointAddress = USB_DIR_IN | 0x01, + .bmAttributes = USB_ENDPOINT_XFER_INT, + .wMaxPacketSize = 8, + .bInterval = 7, /* 2 ^ (8-1) * 125 usecs = 8 ms */ + }, + }, +}; + static const USBDescDevice desc_device_mouse = { .bcdUSB = 0x0100, .bMaxPacketSize0 = 8, @@ -311,6 +342,23 @@ static const USBDescDevice desc_device_keyboard = { }, }; +static const USBDescDevice desc_device_keyboard2 = { + .bcdUSB = 0x0200, + .bMaxPacketSize0 = 64, + .bNumConfigurations = 1, + .confs = (USBDescConfig[]) { + { + .bNumInterfaces = 1, + .bConfigurationValue = 1, + .iConfiguration = STR_CONFIG_KEYBOARD, + .bmAttributes = USB_CFG_ATT_ONE | USB_CFG_ATT_WAKEUP, + .bMaxPower = 50, + .nif = 1, + .ifs = &desc_iface_keyboard2, + }, + }, +}; + static const USBDescMSOS desc_msos_suspend = { .SelectiveSuspendEnabled = true, }; @@ -387,6 +435,21 @@ static const USBDesc desc_keyboard = { .msos = &desc_msos_suspend, }; +static const USBDesc desc_keyboard2 = { + .id = { + .idVendor = 0x0627, + .idProduct = 0x0001, + .bcdDevice = 0, + .iManufacturer = STR_MANUFACTURER, + .iProduct = STR_PRODUCT_KEYBOARD, + .iSerialNumber = STR_SERIALNUMBER, + }, + .full = &desc_device_keyboard, + .high = &desc_device_keyboard2, + .str = desc_strings, + .msos = &desc_msos_suspend, +}; + static const uint8_t qemu_mouse_hid_report_descriptor[] = { 0x05, 0x01, /* Usage Page (Generic Desktop) */ 0x09, 0x02, /* Usage (Mouse) */ @@ -670,7 +733,7 @@ static int usb_mouse_initfn(USBDevice *dev) static int usb_keyboard_initfn(USBDevice *dev) { - return usb_hid_initfn(dev, HID_KEYBOARD, &desc_keyboard, &desc_keyboard); + return usb_hid_initfn(dev, HID_KEYBOARD, &desc_keyboard, &desc_keyboard2); } static int usb_ptr_post_load(void *opaque, int version_id) @@ -770,6 +833,7 @@ static const TypeInfo usb_mouse_info = { }; static Property usb_keyboard_properties[] = { + DEFINE_PROP_UINT32("usb_version", USBHIDState, usb_version, 2), DEFINE_PROP_STRING("display", USBHIDState, display), DEFINE_PROP_END_OF_LIST(), }; -- 1.9.3 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-09-11 4:59 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-02-16 5:41 [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Jan Vesely 2014-02-16 5:41 ` [Qemu-devel] [PATCH 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely 2014-02-17 12:10 ` [Qemu-devel] [PATCH 1/2] usb-hid: Add high speed mouse configuration Gerd Hoffmann 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 " Jan Vesely 2014-02-23 7:37 ` [Qemu-devel] [PATCH v2 2/2] usb-hid: Add high speed keyboard configuration Jan Vesely 2014-03-17 17:53 ` [Qemu-devel] [PATCH v2 1/2] usb-hid: Add high speed mouse configuration Ján Veselý 2014-04-03 5:27 ` Ján Veselý 2014-04-07 8:02 ` Gerd Hoffmann [not found] ` <CA+K+NcQZf-__sqSBTewBooUTUWMDP_m34iDVQX7YsHtUzAwb6g@mail.gmail.com> [not found] ` <1397629640.23535.7.camel@nilsson.home.kraxel.org> 2014-09-11 4:57 ` Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH 1/3] usb-hid: Move descriptor decision to usb-hid initfn Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH v3 2/3] usb-hid: Add high speed mouse configuration Jan Vesely 2014-09-11 4:58 ` [Qemu-devel] [PATCH 3/3] usb-hid: Add high speed keyboard configuration Jan Vesely
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).