@@ -1007,17 +1007,22 @@ static int uclogic_params_huion_init(struct uclogic_params *params,
1007
1007
* @params: Parameters to fill in (to be cleaned with
1008
1008
* uclogic_params_cleanup()). Not modified in case of error.
1009
1009
* Cannot be NULL.
1010
+ * @init_packet: Magic packet to send on usb to activate device.
1011
+ * @packet_size: Size of the init packet.
1012
+ * @rdesc_pen_arr: Pen report descriptor array.
1013
+ * @rdesc_pen_size: Size of the pen array.
1014
+ * @rdesc_frame_arr: Frame report descriptor array.
1015
+ * @rdesc_frame_size: Size of the frame array.
1010
1016
*
1011
1017
* Returns:
1012
1018
* Zero, if successful. A negative errno code on error.
1013
1019
*/
1014
1020
static int uclogic_params_init_ugee_xppen_pro (struct hid_device * hdev ,
1015
- struct uclogic_params * p )
1021
+ struct uclogic_params * p ,
1022
+ const u8 init_packet [], const size_t packet_size ,
1023
+ const u8 rdesc_pen_arr [], const size_t rdesc_pen_size ,
1024
+ const u8 rdesc_frame_arr [], const size_t rdesc_frame_size )
1016
1025
{
1017
- static const u8 init_packet [] = {
1018
- 0x02 , 0xb0 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00
1019
- };
1020
- const size_t packet_size = sizeof (init_packet );
1021
1026
const size_t str_desc_len = 12 ;
1022
1027
struct usb_device * udev = hid_to_usb_dev (hdev );
1023
1028
u8 * buf = kmemdup (init_packet , packet_size , GFP_KERNEL );
@@ -1096,18 +1101,18 @@ static int uclogic_params_init_ugee_xppen_pro(struct hid_device *hdev,
1096
1101
);
1097
1102
1098
1103
p -> pen .desc_ptr = uclogic_rdesc_template_apply (
1099
- uclogic_rdesc_xppen_a156p_pen_arr ,
1100
- uclogic_rdesc_xppen_a156p_pen_size ,
1104
+ rdesc_pen_arr ,
1105
+ rdesc_pen_size ,
1101
1106
desc_params ,
1102
1107
ARRAY_SIZE (desc_params )
1103
1108
);
1104
- p -> pen .desc_size = uclogic_rdesc_xppen_a156p_pen_size ;
1109
+ p -> pen .desc_size = rdesc_pen_size ;
1105
1110
p -> pen .id = 0x02 ;
1106
1111
1107
1112
rc = uclogic_params_frame_init_with_desc (
1108
1113
& p -> frame_list [0 ],
1109
- uclogic_rdesc_xppen_a156p_frame_arr ,
1110
- uclogic_rdesc_xppen_a156p_frame_size ,
1114
+ rdesc_frame_arr ,
1115
+ rdesc_frame_size ,
1111
1116
UCLOGIC_RDESC_V1_FRAME_ID
1112
1117
);
1113
1118
if (rc < 0 ) {
@@ -1419,13 +1424,22 @@ int uclogic_params_init(struct uclogic_params *params,
1419
1424
break ;
1420
1425
case VID_PID (USB_VENDOR_ID_UGEE ,
1421
1426
USB_DEVICE_ID_UGEE_XPPEN_TABLET_A156P ):
1427
+ static const u8 init_packet [] = {
1428
+ 0x02 , 0xb0 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00
1429
+ };
1430
+ const size_t packet_size = sizeof (init_packet );
1431
+
1422
1432
/* Only use the uniform interface */
1423
1433
if (bInterfaceNumber != 2 ) {
1424
1434
uclogic_params_init_invalid (& p );
1425
1435
break ;
1426
1436
}
1427
1437
1428
- rc = uclogic_params_init_ugee_xppen_pro (hdev , & p );
1438
+ rc = uclogic_params_init_ugee_xppen_pro (hdev , & p , init_packet , packet_size ,
1439
+ uclogic_rdesc_xppen_a156p_pen_arr ,
1440
+ uclogic_rdesc_xppen_a156p_pen_size ,
1441
+ uclogic_rdesc_xppen_a156p_frame_arr ,
1442
+ uclogic_rdesc_xppen_a156p_frame_size );
1429
1443
if (rc != 0 ) {
1430
1444
hid_err (hdev , "a156p init failed: %d\n" , rc );
1431
1445
goto cleanup ;
0 commit comments