Lines Matching full:pen
26 * uclogic_params_pen_inrange_to_str() - Convert a pen in-range reporting type
50 * uclogic_params_pen_hid_dbg() - Dump tablet interface pen parameters
51 * @hdev: The HID device the pen parameters describe.
52 * @pen: The pen parameters to dump.
54 * Dump tablet interface pen parameters with hid_dbg(). The dump is indented
58 const struct uclogic_params_pen *pen) in uclogic_params_pen_hid_dbg() argument
63 str_true_false(pen->usage_invalid)); in uclogic_params_pen_hid_dbg()
64 hid_dbg(hdev, "\t.desc_ptr = %p\n", pen->desc_ptr); in uclogic_params_pen_hid_dbg()
65 hid_dbg(hdev, "\t.desc_size = %u\n", pen->desc_size); in uclogic_params_pen_hid_dbg()
66 hid_dbg(hdev, "\t.id = %u\n", pen->id); in uclogic_params_pen_hid_dbg()
68 for (i = 0; i < ARRAY_SIZE(pen->subreport_list); i++) { in uclogic_params_pen_hid_dbg()
70 pen->subreport_list[i].value, in uclogic_params_pen_hid_dbg()
71 pen->subreport_list[i].id, in uclogic_params_pen_hid_dbg()
72 i < (ARRAY_SIZE(pen->subreport_list) - 1) ? "," : ""); in uclogic_params_pen_hid_dbg()
76 uclogic_params_pen_inrange_to_str(pen->inrange)); in uclogic_params_pen_hid_dbg()
78 str_true_false(pen->fragmented_hires)); in uclogic_params_pen_hid_dbg()
80 str_true_false(pen->tilt_y_flipped)); in uclogic_params_pen_hid_dbg()
85 * @hdev: The HID device the pen parameters describe.
126 hid_dbg(hdev, ".pen = {\n"); in uclogic_params_hid_dbg()
127 uclogic_params_pen_hid_dbg(hdev, ¶ms->pen); in uclogic_params_hid_dbg()
205 * uclogic_params_pen (tablet interface's pen input parameters).
208 * @pen: Pen input parameters to cleanup. Cannot be NULL.
210 static void uclogic_params_pen_cleanup(struct uclogic_params_pen *pen) in uclogic_params_pen_cleanup() argument
212 kfree(pen->desc_ptr); in uclogic_params_pen_cleanup()
213 memset(pen, 0, sizeof(*pen)); in uclogic_params_pen_cleanup()
217 * uclogic_params_pen_init_v1() - initialize tablet interface pen
220 * @pen: Pointer to the pen parameters to initialize (to be
232 static int uclogic_params_pen_init_v1(struct uclogic_params_pen *pen, in uclogic_params_pen_init_v1() argument
243 /* Pen report descriptor template parameters */ in uclogic_params_pen_init_v1()
248 if (pen == NULL || pfound == NULL || hdev == NULL) { in uclogic_params_pen_init_v1()
254 * Read string descriptor containing pen input parameters. in uclogic_params_pen_init_v1()
262 "string descriptor with pen parameters not found, assuming not compatible\n"); in uclogic_params_pen_init_v1()
265 hid_err(hdev, "failed retrieving pen parameters: %d\n", rc); in uclogic_params_pen_init_v1()
269 …"string descriptor with pen parameters has invalid length (got %d, expected %d), assuming not comp… in uclogic_params_pen_init_v1()
299 * Generate pen report descriptor in uclogic_params_pen_init_v1()
313 memset(pen, 0, sizeof(*pen)); in uclogic_params_pen_init_v1()
314 pen->desc_ptr = desc_ptr; in uclogic_params_pen_init_v1()
316 pen->desc_size = uclogic_rdesc_v1_pen_template_size; in uclogic_params_pen_init_v1()
317 pen->id = UCLOGIC_RDESC_V1_PEN_ID; in uclogic_params_pen_init_v1()
318 pen->inrange = UCLOGIC_PARAMS_PEN_INRANGE_INVERTED; in uclogic_params_pen_init_v1()
345 * uclogic_params_pen_init_v2() - initialize tablet interface pen
348 * @pen: Pointer to the pen parameters to initialize (to be
370 static int uclogic_params_pen_init_v2(struct uclogic_params_pen *pen, in uclogic_params_pen_init_v2() argument
388 /* Pen report descriptor template parameters */ in uclogic_params_pen_init_v2()
393 if (pen == NULL || pfound == NULL || hdev == NULL) { in uclogic_params_pen_init_v2()
399 * Read string descriptor containing pen input parameters. in uclogic_params_pen_init_v2()
407 "string descriptor with pen parameters not found, assuming not compatible\n"); in uclogic_params_pen_init_v2()
410 hid_err(hdev, "failed retrieving pen parameters: %d\n", rc); in uclogic_params_pen_init_v2()
414 …"string descriptor with pen parameters is too short (got %d, expected at least %d), assuming not c… in uclogic_params_pen_init_v2()
432 "string descriptor with pen parameters seems to contain only text, assuming not compatible\n"); in uclogic_params_pen_init_v2()
459 * Generate pen report descriptor in uclogic_params_pen_init_v2()
473 memset(pen, 0, sizeof(*pen)); in uclogic_params_pen_init_v2()
474 pen->desc_ptr = desc_ptr; in uclogic_params_pen_init_v2()
476 pen->desc_size = uclogic_rdesc_v2_pen_template_size; in uclogic_params_pen_init_v2()
477 pen->id = UCLOGIC_RDESC_V2_PEN_ID; in uclogic_params_pen_init_v2()
478 pen->inrange = UCLOGIC_PARAMS_PEN_INRANGE_NONE; in uclogic_params_pen_init_v2()
479 pen->fragmented_hires = true; in uclogic_params_pen_init_v2()
480 pen->tilt_y_flipped = true; in uclogic_params_pen_init_v2()
657 uclogic_params_pen_cleanup(¶ms->pen); in uclogic_params_cleanup()
719 ADD_DESC(params->pen.desc_ptr, params->pen.desc_size); in uclogic_params_get_desc()
865 /* Keep everything intact, but mark pen usage invalid */ in uclogic_params_huion_init()
866 p.pen.usage_invalid = true; in uclogic_params_huion_init()
868 /* Else, if it's not a pen interface */ in uclogic_params_huion_init()
895 "transition firmware detected, not probing pen v2 parameters\n"); in uclogic_params_huion_init()
897 /* Try to probe v2 pen parameters */ in uclogic_params_huion_init()
898 rc = uclogic_params_pen_init_v2(&p.pen, &found, in uclogic_params_huion_init()
903 "failed probing pen v2 parameters: %d\n", rc); in uclogic_params_huion_init()
906 hid_dbg(hdev, "pen v2 parameters found\n"); in uclogic_params_huion_init()
920 /* Link from pen sub-report */ in uclogic_params_huion_init()
921 p.pen.subreport_list[0].value = 0xe0; in uclogic_params_huion_init()
922 p.pen.subreport_list[0].id = in uclogic_params_huion_init()
968 /* Link from pen sub-report */ in uclogic_params_huion_init()
969 p.pen.subreport_list[1].value = 0xf0; in uclogic_params_huion_init()
970 p.pen.subreport_list[1].id = in uclogic_params_huion_init()
990 /* Link from pen sub-report */ in uclogic_params_huion_init()
991 p.pen.subreport_list[2].value = 0xf1; in uclogic_params_huion_init()
992 p.pen.subreport_list[2].id = in uclogic_params_huion_init()
997 hid_dbg(hdev, "pen v2 parameters not found\n"); in uclogic_params_huion_init()
1000 /* Try to probe v1 pen parameters */ in uclogic_params_huion_init()
1001 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev); in uclogic_params_huion_init()
1004 "failed probing pen v1 parameters: %d\n", rc); in uclogic_params_huion_init()
1007 hid_dbg(hdev, "pen v1 parameters found\n"); in uclogic_params_huion_init()
1018 /* Link frame button subreports from pen reports */ in uclogic_params_huion_init()
1019 p.pen.subreport_list[0].value = 0xe0; in uclogic_params_huion_init()
1020 p.pen.subreport_list[0].id = in uclogic_params_huion_init()
1025 hid_dbg(hdev, "pen v1 parameters not found\n"); in uclogic_params_huion_init()
1043 * the XP-PEN Deco Mini 7, need to be initialized by sending them magic data.
1093 * pen and frame parameters returned by UGEE v2 devices.
1264 /* The XP-PEN Deco LW vendor, product and version are identical to the in uclogic_params_ugee_v2_has_battery()
1311 p->pen.subreport_list[1].value = 0xf2; in uclogic_params_ugee_v2_init_battery()
1312 p->pen.subreport_list[1].id = UCLOGIC_RDESC_UGEE_V2_BATTERY_ID; in uclogic_params_ugee_v2_init_battery()
1455 * Read the string descriptor containing pen and frame parameters. in uclogic_params_ugee_v2_init()
1461 hid_err(hdev, "failed retrieving pen and frame parameters: %d\n", rc); in uclogic_params_ugee_v2_init()
1476 /* Initialize the pen interface */ in uclogic_params_ugee_v2_init()
1486 p.pen.desc_ptr = rdesc_pen; in uclogic_params_ugee_v2_init()
1487 p.pen.desc_size = uclogic_rdesc_ugee_v2_pen_template_size; in uclogic_params_ugee_v2_init()
1488 p.pen.id = 0x02; in uclogic_params_ugee_v2_init()
1489 p.pen.subreport_list[0].value = 0xf0; in uclogic_params_ugee_v2_init()
1490 p.pen.subreport_list[0].id = UCLOGIC_RDESC_V1_FRAME_ID; in uclogic_params_ugee_v2_init()
1540 * uclogic_params_init_ugee_xppen_pro() - Initializes a UGEE XP-Pen Pro tablet device.
1577 /* Ignore non-pen interfaces */ in uclogic_params_init_ugee_xppen_pro()
1598 * Read the string descriptor containing pen and frame parameters. in uclogic_params_init_ugee_xppen_pro()
1604 hid_err(hdev, "failed retrieving pen and frame parameters: %d\n", rc); in uclogic_params_init_ugee_xppen_pro()
1622 /* Initialize the pen interface */ in uclogic_params_init_ugee_xppen_pro()
1632 p.pen.desc_ptr = rdesc_pen; in uclogic_params_init_ugee_xppen_pro()
1633 p.pen.desc_size = rdesc_pen_size; in uclogic_params_init_ugee_xppen_pro()
1634 p.pen.id = 0x02; in uclogic_params_init_ugee_xppen_pro()
1635 p.pen.subreport_list[0].value = 0xf0; in uclogic_params_init_ugee_xppen_pro()
1636 p.pen.subreport_list[0].id = UCLOGIC_RDESC_V1_FRAME_ID; in uclogic_params_init_ugee_xppen_pro()
1748 /* Try to probe v1 pen parameters */ in uclogic_params_init()
1749 rc = uclogic_params_pen_init_v1(&p.pen, in uclogic_params_init()
1753 "pen probing failed: %d\n", in uclogic_params_init()
1759 "pen parameters not found"); in uclogic_params_init()
1858 /* If this is the pen interface */ in uclogic_params_init()
1860 /* Probe v1 pen parameters */ in uclogic_params_init()
1861 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev); in uclogic_params_init()
1863 hid_err(hdev, "pen probing failed: %d\n", rc); in uclogic_params_init()
1867 hid_warn(hdev, "pen parameters not found"); in uclogic_params_init()
1876 /* If this is the pen and frame interface */ in uclogic_params_init()
1878 /* Probe v1 pen parameters */ in uclogic_params_init()
1879 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev); in uclogic_params_init()
1881 hid_err(hdev, "pen probing failed: %d\n", rc); in uclogic_params_init()
1916 /* Ignore non-pen interfaces */ in uclogic_params_init()
1922 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev); in uclogic_params_init()
1924 hid_err(hdev, "pen probing failed: %d\n", rc); in uclogic_params_init()
1943 hid_warn(hdev, "pen parameters not found"); in uclogic_params_init()
1950 /* Ignore non-pen interfaces */ in uclogic_params_init()
1956 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev); in uclogic_params_init()
1958 hid_err(hdev, "pen probing failed: %d\n", rc); in uclogic_params_init()
1973 hid_warn(hdev, "pen parameters not found"); in uclogic_params_init()
2002 p.pen.fragmented_hires2 = true; in uclogic_params_init()