Lines Matching refs:pen
25 * uclogic_params_pen_inrange_to_str() - Convert a pen in-range reporting type
49 * uclogic_params_pen_hid_dbg() - Dump tablet interface pen parameters
50 * @hdev: The HID device the pen parameters describe.
51 * @pen: The pen parameters to dump.
53 * Dump tablet interface pen parameters with hid_dbg(). The dump is indented
57 const struct uclogic_params_pen *pen)
62 (pen->usage_invalid ? "true" : "false"));
63 hid_dbg(hdev, "\t.desc_ptr = %p\n", pen->desc_ptr);
64 hid_dbg(hdev, "\t.desc_size = %u\n", pen->desc_size);
65 hid_dbg(hdev, "\t.id = %u\n", pen->id);
67 for (i = 0; i < ARRAY_SIZE(pen->subreport_list); i++) {
69 pen->subreport_list[i].value,
70 pen->subreport_list[i].id,
71 i < (ARRAY_SIZE(pen->subreport_list) - 1) ? "," : "");
75 uclogic_params_pen_inrange_to_str(pen->inrange));
77 (pen->fragmented_hires ? "true" : "false"));
79 (pen->tilt_y_flipped ? "true" : "false"));
84 * @hdev: The HID device the pen parameters describe.
124 hid_dbg(hdev, ".pen = {\n");
125 uclogic_params_pen_hid_dbg(hdev, ¶ms->pen);
203 * uclogic_params_pen (tablet interface's pen input parameters).
206 * @pen: Pen input parameters to cleanup. Cannot be NULL.
208 static void uclogic_params_pen_cleanup(struct uclogic_params_pen *pen)
210 kfree(pen->desc_ptr);
211 memset(pen, 0, sizeof(*pen));
215 * uclogic_params_pen_init_v1() - initialize tablet interface pen
218 * @pen: Pointer to the pen parameters to initialize (to be
230 static int uclogic_params_pen_init_v1(struct uclogic_params_pen *pen,
246 if (pen == NULL || pfound == NULL || hdev == NULL) {
252 * Read string descriptor containing pen input parameters.
260 "string descriptor with pen parameters not found, assuming not compatible\n");
263 hid_err(hdev, "failed retrieving pen parameters: %d\n", rc);
267 "string descriptor with pen parameters has invalid length (got %d, expected %d), assuming not compatible\n",
297 * Generate pen report descriptor
311 memset(pen, 0, sizeof(*pen));
312 pen->desc_ptr = desc_ptr;
314 pen->desc_size = uclogic_rdesc_v1_pen_template_size;
315 pen->id = UCLOGIC_RDESC_V1_PEN_ID;
316 pen->inrange = UCLOGIC_PARAMS_PEN_INRANGE_INVERTED;
343 * uclogic_params_pen_init_v2() - initialize tablet interface pen
346 * @pen: Pointer to the pen parameters to initialize (to be
368 static int uclogic_params_pen_init_v2(struct uclogic_params_pen *pen,
391 if (pen == NULL || pfound == NULL || hdev == NULL) {
397 * Read string descriptor containing pen input parameters.
405 "string descriptor with pen parameters not found, assuming not compatible\n");
408 hid_err(hdev, "failed retrieving pen parameters: %d\n", rc);
412 "string descriptor with pen parameters is too short (got %d, expected at least %d), assuming not compatible\n",
430 "string descriptor with pen parameters seems to contain only text, assuming not compatible\n");
457 * Generate pen report descriptor
471 memset(pen, 0, sizeof(*pen));
472 pen->desc_ptr = desc_ptr;
474 pen->desc_size = uclogic_rdesc_v2_pen_template_size;
475 pen->id = UCLOGIC_RDESC_V2_PEN_ID;
476 pen->inrange = UCLOGIC_PARAMS_PEN_INRANGE_NONE;
477 pen->fragmented_hires = true;
478 pen->tilt_y_flipped = true;
655 uclogic_params_pen_cleanup(¶ms->pen);
717 ADD_DESC(params->pen.desc_ptr, params->pen.desc_size);
863 /* Keep everything intact, but mark pen usage invalid */
864 p.pen.usage_invalid = true;
866 /* Else, if it's not a pen interface */
890 "transition firmware detected, not probing pen v2 parameters\n");
892 /* Try to probe v2 pen parameters */
893 rc = uclogic_params_pen_init_v2(&p.pen, &found,
898 "failed probing pen v2 parameters: %d\n", rc);
901 hid_dbg(hdev, "pen v2 parameters found\n");
915 /* Link from pen sub-report */
916 p.pen.subreport_list[0].value = 0xe0;
917 p.pen.subreport_list[0].id =
963 /* Link from pen sub-report */
964 p.pen.subreport_list[1].value = 0xf0;
965 p.pen.subreport_list[1].id =
985 /* Link from pen sub-report */
986 p.pen.subreport_list[2].value = 0xf1;
987 p.pen.subreport_list[2].id =
992 hid_dbg(hdev, "pen v2 parameters not found\n");
995 /* Try to probe v1 pen parameters */
996 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev);
999 "failed probing pen v1 parameters: %d\n", rc);
1002 hid_dbg(hdev, "pen v1 parameters found\n");
1013 /* Link frame button subreports from pen reports */
1014 p.pen.subreport_list[0].value = 0xe0;
1015 p.pen.subreport_list[0].id =
1020 hid_dbg(hdev, "pen v1 parameters not found\n");
1088 * pen and frame parameters returned by UGEE v2 devices.
1303 p->pen.subreport_list[1].value = 0xf2;
1304 p->pen.subreport_list[1].id = UCLOGIC_RDESC_UGEE_V2_BATTERY_ID;
1445 * Read the string descriptor containing pen and frame parameters.
1451 hid_err(hdev, "failed retrieving pen and frame parameters: %d\n", rc);
1466 /* Initialize the pen interface */
1476 p.pen.desc_ptr = rdesc_pen;
1477 p.pen.desc_size = uclogic_rdesc_ugee_v2_pen_template_size;
1478 p.pen.id = 0x02;
1479 p.pen.subreport_list[0].value = 0xf0;
1480 p.pen.subreport_list[0].id = UCLOGIC_RDESC_V1_FRAME_ID;
1616 /* Try to probe v1 pen parameters */
1617 rc = uclogic_params_pen_init_v1(&p.pen,
1621 "pen probing failed: %d\n",
1627 "pen parameters not found");
1726 /* If this is the pen interface */
1728 /* Probe v1 pen parameters */
1729 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev);
1731 hid_err(hdev, "pen probing failed: %d\n", rc);
1735 hid_warn(hdev, "pen parameters not found");
1744 /* If this is the pen and frame interface */
1746 /* Probe v1 pen parameters */
1747 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev);
1749 hid_err(hdev, "pen probing failed: %d\n", rc);
1784 /* Ignore non-pen interfaces */
1790 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev);
1792 hid_err(hdev, "pen probing failed: %d\n", rc);
1811 hid_warn(hdev, "pen parameters not found");
1818 /* Ignore non-pen interfaces */
1824 rc = uclogic_params_pen_init_v1(&p.pen, &found, hdev);
1826 hid_err(hdev, "pen probing failed: %d\n", rc);
1841 hid_warn(hdev, "pen parameters not found");