hw/usb: Regroup USB HID protocol values
Group some HID values that are used pretty much everywhere when dealing with HID devices. Signed-off-by: César Belley <cesar.belley@lse.epita.fr> Message-id: 20200812094135.20550-2-cesar.belley@lse.epita.fr Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
10b2d90c94
commit
84b6c23629
@ -32,21 +32,9 @@
|
||||
#include "qemu/module.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "hw/input/hid.h"
|
||||
#include "hw/usb/hid.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
|
||||
/* HID interface requests */
|
||||
#define GET_REPORT 0xa101
|
||||
#define GET_IDLE 0xa102
|
||||
#define GET_PROTOCOL 0xa103
|
||||
#define SET_REPORT 0x2109
|
||||
#define SET_IDLE 0x210a
|
||||
#define SET_PROTOCOL 0x210b
|
||||
|
||||
/* HID descriptor types */
|
||||
#define USB_DT_HID 0x21
|
||||
#define USB_DT_REPORT 0x22
|
||||
#define USB_DT_PHY 0x23
|
||||
|
||||
typedef struct USBHIDState {
|
||||
USBDevice dev;
|
||||
USBEndpoint *intr;
|
||||
@ -618,38 +606,38 @@ static void usb_hid_handle_control(USBDevice *dev, USBPacket *p,
|
||||
goto fail;
|
||||
}
|
||||
break;
|
||||
case GET_REPORT:
|
||||
case HID_GET_REPORT:
|
||||
if (hs->kind == HID_MOUSE || hs->kind == HID_TABLET) {
|
||||
p->actual_length = hid_pointer_poll(hs, data, length);
|
||||
} else if (hs->kind == HID_KEYBOARD) {
|
||||
p->actual_length = hid_keyboard_poll(hs, data, length);
|
||||
}
|
||||
break;
|
||||
case SET_REPORT:
|
||||
case HID_SET_REPORT:
|
||||
if (hs->kind == HID_KEYBOARD) {
|
||||
p->actual_length = hid_keyboard_write(hs, data, length);
|
||||
} else {
|
||||
goto fail;
|
||||
}
|
||||
break;
|
||||
case GET_PROTOCOL:
|
||||
case HID_GET_PROTOCOL:
|
||||
if (hs->kind != HID_KEYBOARD && hs->kind != HID_MOUSE) {
|
||||
goto fail;
|
||||
}
|
||||
data[0] = hs->protocol;
|
||||
p->actual_length = 1;
|
||||
break;
|
||||
case SET_PROTOCOL:
|
||||
case HID_SET_PROTOCOL:
|
||||
if (hs->kind != HID_KEYBOARD && hs->kind != HID_MOUSE) {
|
||||
goto fail;
|
||||
}
|
||||
hs->protocol = value;
|
||||
break;
|
||||
case GET_IDLE:
|
||||
case HID_GET_IDLE:
|
||||
data[0] = hs->idle;
|
||||
p->actual_length = 1;
|
||||
break;
|
||||
case SET_IDLE:
|
||||
case HID_SET_IDLE:
|
||||
hs->idle = (uint8_t) (value >> 8);
|
||||
hid_set_next_idle(hs);
|
||||
if (hs->kind == HID_MOUSE || hs->kind == HID_TABLET) {
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "ui/console.h"
|
||||
#include "hw/usb.h"
|
||||
#include "hw/usb/hid.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "qemu/module.h"
|
||||
#include "desc.h"
|
||||
@ -37,13 +38,6 @@
|
||||
#define WACOM_GET_REPORT 0x2101
|
||||
#define WACOM_SET_REPORT 0x2109
|
||||
|
||||
/* HID interface requests */
|
||||
#define HID_GET_REPORT 0xa101
|
||||
#define HID_GET_IDLE 0xa102
|
||||
#define HID_GET_PROTOCOL 0xa103
|
||||
#define HID_SET_IDLE 0x210a
|
||||
#define HID_SET_PROTOCOL 0x210b
|
||||
|
||||
typedef struct USBWacomState {
|
||||
USBDevice dev;
|
||||
USBEndpoint *intr;
|
||||
@ -86,11 +80,11 @@ static const USBDescIface desc_iface_wacom = {
|
||||
/* HID descriptor */
|
||||
.data = (uint8_t[]) {
|
||||
0x09, /* u8 bLength */
|
||||
0x21, /* u8 bDescriptorType */
|
||||
USB_DT_HID, /* u8 bDescriptorType */
|
||||
0x01, 0x10, /* u16 HID_class */
|
||||
0x00, /* u8 country_code */
|
||||
0x01, /* u8 num_descriptors */
|
||||
0x22, /* u8 type: Report */
|
||||
USB_DT_REPORT, /* u8 type: Report */
|
||||
0x6e, 0, /* u16 len */
|
||||
},
|
||||
},
|
||||
|
17
include/hw/usb/hid.h
Normal file
17
include/hw/usb/hid.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef HW_USB_HID_H
|
||||
#define HW_USB_HID_H
|
||||
|
||||
/* HID interface requests */
|
||||
#define HID_GET_REPORT 0xa101
|
||||
#define HID_GET_IDLE 0xa102
|
||||
#define HID_GET_PROTOCOL 0xa103
|
||||
#define HID_SET_REPORT 0x2109
|
||||
#define HID_SET_IDLE 0x210a
|
||||
#define HID_SET_PROTOCOL 0x210b
|
||||
|
||||
/* HID descriptor types */
|
||||
#define USB_DT_HID 0x21
|
||||
#define USB_DT_REPORT 0x22
|
||||
#define USB_DT_PHY 0x23
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user