All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.