forked from Minki/linux
HID: uclogic: Add support for UGEE v2 mouse frames
Add the required HID descriptors and the initialization function for UGEE v2 frames with a mouse in the frame. Tested-by: Jouke Witteveen <j.witteveen@gmail.com> Signed-off-by: José Expósito <jose.exposito89@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
b67439d7cd
commit
387dcab73f
@ -1189,6 +1189,28 @@ static int uclogic_params_ugee_v2_init_frame_dial(struct uclogic_params *p,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* uclogic_params_ugee_v2_init_frame_mouse() - initialize a UGEE v2 frame with a
|
||||
* mouse.
|
||||
* @p: Parameters to fill in, cannot be NULL.
|
||||
*
|
||||
* Returns:
|
||||
* Zero, if successful. A negative errno code on error.
|
||||
*/
|
||||
static int uclogic_params_ugee_v2_init_frame_mouse(struct uclogic_params *p)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
if (!p)
|
||||
return -EINVAL;
|
||||
|
||||
rc = uclogic_params_frame_init_with_desc(&p->frame_list[1],
|
||||
uclogic_rdesc_ugee_v2_frame_mouse_template_arr,
|
||||
uclogic_rdesc_ugee_v2_frame_mouse_template_size,
|
||||
UCLOGIC_RDESC_V1_FRAME_ID);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
* uclogic_params_ugee_v2_init() - initialize a UGEE graphics tablets by
|
||||
* discovering their parameters.
|
||||
@ -1232,6 +1254,15 @@ static int uclogic_params_ugee_v2_init(struct uclogic_params *params,
|
||||
|
||||
iface = to_usb_interface(hdev->dev.parent);
|
||||
bInterfaceNumber = iface->cur_altsetting->desc.bInterfaceNumber;
|
||||
|
||||
if (bInterfaceNumber == 0) {
|
||||
rc = uclogic_params_ugee_v2_init_frame_mouse(&p);
|
||||
if (rc)
|
||||
goto cleanup;
|
||||
|
||||
goto output;
|
||||
}
|
||||
|
||||
if (bInterfaceNumber != 2) {
|
||||
uclogic_params_init_invalid(&p);
|
||||
goto output;
|
||||
|
@ -1001,6 +1001,40 @@ const __u8 uclogic_rdesc_ugee_v2_frame_dial_template_arr[] = {
|
||||
const size_t uclogic_rdesc_ugee_v2_frame_dial_template_size =
|
||||
sizeof(uclogic_rdesc_ugee_v2_frame_dial_template_arr);
|
||||
|
||||
/* Fixed report descriptor template for UGEE v2 frame reports (mouse) */
|
||||
const __u8 uclogic_rdesc_ugee_v2_frame_mouse_template_arr[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
0x09, 0x02, /* Usage (Mouse), */
|
||||
0xA1, 0x01, /* Collection (Application), */
|
||||
0x85, 0x01, /* Report ID (1), */
|
||||
0x05, 0x01, /* Usage Page (Pointer), */
|
||||
0xA0, /* Collection (Physical), */
|
||||
0x75, 0x01, /* Report Size (1), */
|
||||
0x95, 0x02, /* Report Count (2), */
|
||||
0x05, 0x09, /* Usage Page (Button), */
|
||||
0x19, 0x01, /* Usage Minimum (01h), */
|
||||
0x29, 0x02, /* Usage Maximum (02h), */
|
||||
0x14, /* Logical Minimum (0), */
|
||||
0x25, 0x01, /* Logical Maximum (1), */
|
||||
0x81, 0x02, /* Input (Variable), */
|
||||
0x95, 0x06, /* Report Count (6), */
|
||||
0x81, 0x01, /* Input (Constant), */
|
||||
0x05, 0x01, /* Usage Page (Generic Desktop), */
|
||||
0x09, 0x30, /* Usage (X), */
|
||||
0x09, 0x31, /* Usage (Y), */
|
||||
0x75, 0x10, /* Report Size (16), */
|
||||
0x95, 0x02, /* Report Count (2), */
|
||||
0x16, 0x00, 0x80, /* Logical Minimum (-32768), */
|
||||
0x26, 0xFF, 0x7F, /* Logical Maximum (32767), */
|
||||
0x81, 0x06, /* Input (Variable, Relative), */
|
||||
0x95, 0x01, /* Report Count (1), */
|
||||
0x81, 0x01, /* Input (Constant), */
|
||||
0xC0, /* End Collection, */
|
||||
0xC0 /* End Collection */
|
||||
};
|
||||
const size_t uclogic_rdesc_ugee_v2_frame_mouse_template_size =
|
||||
sizeof(uclogic_rdesc_ugee_v2_frame_mouse_template_arr);
|
||||
|
||||
/* Fixed report descriptor for Ugee EX07 frame */
|
||||
const __u8 uclogic_rdesc_ugee_ex07_frame_arr[] = {
|
||||
0x05, 0x01, /* Usage Page (Desktop), */
|
||||
|
@ -173,6 +173,10 @@ extern const size_t uclogic_rdesc_ugee_v2_frame_btn_template_size;
|
||||
extern const __u8 uclogic_rdesc_ugee_v2_frame_dial_template_arr[];
|
||||
extern const size_t uclogic_rdesc_ugee_v2_frame_dial_template_size;
|
||||
|
||||
/* Fixed report descriptor template for UGEE v2 frame reports (mouse) */
|
||||
extern const __u8 uclogic_rdesc_ugee_v2_frame_mouse_template_arr[];
|
||||
extern const size_t uclogic_rdesc_ugee_v2_frame_mouse_template_size;
|
||||
|
||||
/* Fixed report descriptor for Ugee EX07 frame */
|
||||
extern const __u8 uclogic_rdesc_ugee_ex07_frame_arr[];
|
||||
extern const size_t uclogic_rdesc_ugee_ex07_frame_size;
|
||||
|
Loading…
Reference in New Issue
Block a user