HID: uclogic: Move param printing to a function
Move parameter printing from a format string/argument list to a function to allow printing the full parameters, which now wouldn't fit into a single print call. Signed-off-by: Nikolai Kondrashov <spbnick@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
4c60bc7d1f
commit
a228809fa6
@ -209,8 +209,8 @@ static int uclogic_probe(struct hid_device *hdev,
|
|||||||
goto failure;
|
goto failure;
|
||||||
}
|
}
|
||||||
params_initialized = true;
|
params_initialized = true;
|
||||||
hid_dbg(hdev, "parameters:\n" UCLOGIC_PARAMS_FMT_STR,
|
hid_dbg(hdev, "parameters:\n");
|
||||||
UCLOGIC_PARAMS_FMT_ARGS(&drvdata->params));
|
uclogic_params_hid_dbg(hdev, &drvdata->params);
|
||||||
if (drvdata->params.invalid) {
|
if (drvdata->params.invalid) {
|
||||||
hid_info(hdev, "interface is invalid, ignoring\n");
|
hid_info(hdev, "interface is invalid, ignoring\n");
|
||||||
rc = -ENODEV;
|
rc = -ENODEV;
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
* Returns:
|
* Returns:
|
||||||
* The string representing the type, or NULL if the type is unknown.
|
* The string representing the type, or NULL if the type is unknown.
|
||||||
*/
|
*/
|
||||||
const char *uclogic_params_pen_inrange_to_str(
|
static const char *uclogic_params_pen_inrange_to_str(
|
||||||
enum uclogic_params_pen_inrange inrange)
|
enum uclogic_params_pen_inrange inrange)
|
||||||
{
|
{
|
||||||
switch (inrange) {
|
switch (inrange) {
|
||||||
case UCLOGIC_PARAMS_PEN_INRANGE_NORMAL:
|
case UCLOGIC_PARAMS_PEN_INRANGE_NORMAL:
|
||||||
@ -44,6 +44,91 @@ const char *uclogic_params_pen_inrange_to_str(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dump tablet interface pen parameters with hid_dbg(), indented with one tab.
|
||||||
|
*
|
||||||
|
* @hdev: The HID device the pen parameters describe.
|
||||||
|
* @pen: The pen parameters to dump.
|
||||||
|
*/
|
||||||
|
static void uclogic_params_pen_hid_dbg(const struct hid_device *hdev,
|
||||||
|
const struct uclogic_params_pen *pen)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
hid_dbg(hdev, "\t.usage_invalid = %s\n",
|
||||||
|
(pen->usage_invalid ? "true" : "false"));
|
||||||
|
hid_dbg(hdev, "\t.desc_ptr = %p\n", pen->desc_ptr);
|
||||||
|
hid_dbg(hdev, "\t.desc_size = %u\n", pen->desc_size);
|
||||||
|
hid_dbg(hdev, "\t.id = %u\n", pen->id);
|
||||||
|
hid_dbg(hdev, "\t.subreport_list = {\n");
|
||||||
|
for (i = 0; i < ARRAY_SIZE(pen->subreport_list); i++) {
|
||||||
|
hid_dbg(hdev, "\t\t{0x%02hhx, %hhu}%s\n",
|
||||||
|
pen->subreport_list[i].value,
|
||||||
|
pen->subreport_list[i].id,
|
||||||
|
i < (ARRAY_SIZE(pen->subreport_list) - 1) ? "," : "");
|
||||||
|
}
|
||||||
|
hid_dbg(hdev, "\t}\n");
|
||||||
|
hid_dbg(hdev, "\t.inrange = %s\n",
|
||||||
|
uclogic_params_pen_inrange_to_str(pen->inrange));
|
||||||
|
hid_dbg(hdev, "\t.fragmented_hires = %s\n",
|
||||||
|
(pen->fragmented_hires ? "true" : "false"));
|
||||||
|
hid_dbg(hdev, "\t.tilt_y_flipped = %s\n",
|
||||||
|
(pen->tilt_y_flipped ? "true" : "false"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dump tablet interface frame parameters with hid_dbg(), indented with two
|
||||||
|
* tabs.
|
||||||
|
*
|
||||||
|
* @hdev: The HID device the pen parameters describe.
|
||||||
|
* @frame: The frame parameters to dump.
|
||||||
|
*/
|
||||||
|
static void uclogic_params_frame_hid_dbg(
|
||||||
|
const struct hid_device *hdev,
|
||||||
|
const struct uclogic_params_frame *frame)
|
||||||
|
{
|
||||||
|
hid_dbg(hdev, "\t\t.desc_ptr = %p\n", frame->desc_ptr);
|
||||||
|
hid_dbg(hdev, "\t\t.desc_size = %u\n", frame->desc_size);
|
||||||
|
hid_dbg(hdev, "\t\t.id = %u\n", frame->id);
|
||||||
|
hid_dbg(hdev, "\t\t.suffix = %s\n", frame->suffix);
|
||||||
|
hid_dbg(hdev, "\t\t.re_lsb = %u\n", frame->re_lsb);
|
||||||
|
hid_dbg(hdev, "\t\t.dev_id_byte = %u\n", frame->dev_id_byte);
|
||||||
|
hid_dbg(hdev, "\t\t.touch_ring_byte = %u\n", frame->touch_ring_byte);
|
||||||
|
hid_dbg(hdev, "\t\t.touch_ring_max = %hhd\n", frame->touch_ring_max);
|
||||||
|
hid_dbg(hdev, "\t\t.touch_ring_flip_at = %hhd\n",
|
||||||
|
frame->touch_ring_flip_at);
|
||||||
|
hid_dbg(hdev, "\t\t.bitmap_dial_byte = %u\n",
|
||||||
|
frame->bitmap_dial_byte);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dump tablet interface parameters with hid_dbg().
|
||||||
|
*
|
||||||
|
* @hdev: The HID device the parameters describe.
|
||||||
|
* @params: The parameters to dump.
|
||||||
|
*/
|
||||||
|
void uclogic_params_hid_dbg(const struct hid_device *hdev,
|
||||||
|
const struct uclogic_params *params)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
hid_dbg(hdev, ".invalid = %s\n",
|
||||||
|
params->invalid ? "true" : "false");
|
||||||
|
hid_dbg(hdev, ".desc_ptr = %p\n", params->desc_ptr);
|
||||||
|
hid_dbg(hdev, ".desc_size = %u\n", params->desc_size);
|
||||||
|
hid_dbg(hdev, ".pen = {\n");
|
||||||
|
uclogic_params_pen_hid_dbg(hdev, ¶ms->pen);
|
||||||
|
hid_dbg(hdev, "\t}\n");
|
||||||
|
hid_dbg(hdev, ".frame_list = {\n");
|
||||||
|
for (i = 0; i < ARRAY_SIZE(params->frame_list); i++) {
|
||||||
|
hid_dbg(hdev, "\t{\n");
|
||||||
|
uclogic_params_frame_hid_dbg(hdev, ¶ms->frame_list[i]);
|
||||||
|
hid_dbg(hdev, "\t}%s\n",
|
||||||
|
i < (ARRAY_SIZE(params->frame_list) - 1) ? "," : "");
|
||||||
|
}
|
||||||
|
hid_dbg(hdev, "}\n");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* uclogic_params_get_str_desc - retrieve a string descriptor from a HID
|
* uclogic_params_get_str_desc - retrieve a string descriptor from a HID
|
||||||
* device interface, putting it into a kmalloc-allocated buffer as is, without
|
* device interface, putting it into a kmalloc-allocated buffer as is, without
|
||||||
|
@ -29,11 +29,6 @@ enum uclogic_params_pen_inrange {
|
|||||||
UCLOGIC_PARAMS_PEN_INRANGE_NONE,
|
UCLOGIC_PARAMS_PEN_INRANGE_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Convert a pen in-range reporting type to a string */
|
|
||||||
extern const char *uclogic_params_pen_inrange_to_str(
|
|
||||||
enum uclogic_params_pen_inrange inrange);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pen report's subreport data.
|
* Pen report's subreport data.
|
||||||
*/
|
*/
|
||||||
@ -213,113 +208,6 @@ struct uclogic_params {
|
|||||||
extern int uclogic_params_init(struct uclogic_params *params,
|
extern int uclogic_params_init(struct uclogic_params *params,
|
||||||
struct hid_device *hdev);
|
struct hid_device *hdev);
|
||||||
|
|
||||||
/* Tablet interface parameters *printf format string */
|
|
||||||
#define UCLOGIC_PARAMS_FMT_STR \
|
|
||||||
".invalid = %s\n" \
|
|
||||||
".desc_ptr = %p\n" \
|
|
||||||
".desc_size = %u\n" \
|
|
||||||
".pen = {\n" \
|
|
||||||
"\t.usage_invalid = %s\n" \
|
|
||||||
"\t.desc_ptr = %p\n" \
|
|
||||||
"\t.desc_size = %u\n" \
|
|
||||||
"\t.id = %u\n" \
|
|
||||||
"\t.subreport_list = {\n" \
|
|
||||||
"\t\t{0x%02hhx, %hhu},\n" \
|
|
||||||
"\t\t{0x%02hhx, %hhu},\n" \
|
|
||||||
"\t\t{0x%02hhx, %hhu},\n" \
|
|
||||||
"\t}\n" \
|
|
||||||
"\t.inrange = %s\n" \
|
|
||||||
"\t.fragmented_hires = %s\n" \
|
|
||||||
"\t.tilt_y_flipped = %s\n" \
|
|
||||||
"}\n" \
|
|
||||||
".frame_list = {\n" \
|
|
||||||
"\t{\n" \
|
|
||||||
"\t\t.desc_ptr = %p\n" \
|
|
||||||
"\t\t.desc_size = %u\n" \
|
|
||||||
"\t\t.id = %u\n" \
|
|
||||||
"\t\t.suffix = %s\n" \
|
|
||||||
"\t\t.re_lsb = %u\n" \
|
|
||||||
"\t\t.dev_id_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_max = %hhd\n" \
|
|
||||||
"\t\t.touch_ring_flip_at = %hhd\n" \
|
|
||||||
"\t\t.bitmap_dial_byte = %u\n" \
|
|
||||||
"\t},\n" \
|
|
||||||
"\t{\n" \
|
|
||||||
"\t\t.desc_ptr = %p\n" \
|
|
||||||
"\t\t.desc_size = %u\n" \
|
|
||||||
"\t\t.id = %u\n" \
|
|
||||||
"\t\t.suffix = %s\n" \
|
|
||||||
"\t\t.re_lsb = %u\n" \
|
|
||||||
"\t\t.dev_id_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_max = %hhd\n" \
|
|
||||||
"\t\t.touch_ring_flip_at = %hhd\n" \
|
|
||||||
"\t\t.bitmap_dial_byte = %u\n" \
|
|
||||||
"\t},\n" \
|
|
||||||
"\t{\n" \
|
|
||||||
"\t\t.desc_ptr = %p\n" \
|
|
||||||
"\t\t.desc_size = %u\n" \
|
|
||||||
"\t\t.id = %u\n" \
|
|
||||||
"\t\t.suffix = %s\n" \
|
|
||||||
"\t\t.re_lsb = %u\n" \
|
|
||||||
"\t\t.dev_id_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_byte = %u\n" \
|
|
||||||
"\t\t.touch_ring_max = %hhd\n" \
|
|
||||||
"\t\t.touch_ring_flip_at = %hhd\n" \
|
|
||||||
"\t\t.bitmap_dial_byte = %u\n" \
|
|
||||||
"\t},\n" \
|
|
||||||
"}\n"
|
|
||||||
|
|
||||||
/* Tablet interface parameters *printf format arguments */
|
|
||||||
#define UCLOGIC_PARAMS_FMT_ARGS(_params) \
|
|
||||||
((_params)->invalid ? "true" : "false"), \
|
|
||||||
(_params)->desc_ptr, \
|
|
||||||
(_params)->desc_size, \
|
|
||||||
((_params)->pen.usage_invalid ? "true" : "false"), \
|
|
||||||
(_params)->pen.desc_ptr, \
|
|
||||||
(_params)->pen.desc_size, \
|
|
||||||
(_params)->pen.id, \
|
|
||||||
(_params)->pen.subreport_list[0].value, \
|
|
||||||
(_params)->pen.subreport_list[0].id, \
|
|
||||||
(_params)->pen.subreport_list[1].value, \
|
|
||||||
(_params)->pen.subreport_list[1].id, \
|
|
||||||
(_params)->pen.subreport_list[2].value, \
|
|
||||||
(_params)->pen.subreport_list[2].id, \
|
|
||||||
uclogic_params_pen_inrange_to_str((_params)->pen.inrange), \
|
|
||||||
((_params)->pen.fragmented_hires ? "true" : "false"), \
|
|
||||||
((_params)->pen.tilt_y_flipped ? "true" : "false"), \
|
|
||||||
(_params)->frame_list[0].desc_ptr, \
|
|
||||||
(_params)->frame_list[0].desc_size, \
|
|
||||||
(_params)->frame_list[0].id, \
|
|
||||||
(_params)->frame_list[0].suffix, \
|
|
||||||
(_params)->frame_list[0].re_lsb, \
|
|
||||||
(_params)->frame_list[0].dev_id_byte, \
|
|
||||||
(_params)->frame_list[0].touch_ring_byte, \
|
|
||||||
(_params)->frame_list[0].touch_ring_max, \
|
|
||||||
(_params)->frame_list[0].touch_ring_flip_at, \
|
|
||||||
(_params)->frame_list[0].bitmap_dial_byte, \
|
|
||||||
(_params)->frame_list[1].desc_ptr, \
|
|
||||||
(_params)->frame_list[1].desc_size, \
|
|
||||||
(_params)->frame_list[1].id, \
|
|
||||||
(_params)->frame_list[1].suffix, \
|
|
||||||
(_params)->frame_list[1].re_lsb, \
|
|
||||||
(_params)->frame_list[1].dev_id_byte, \
|
|
||||||
(_params)->frame_list[1].touch_ring_byte, \
|
|
||||||
(_params)->frame_list[1].touch_ring_max, \
|
|
||||||
(_params)->frame_list[1].touch_ring_flip_at, \
|
|
||||||
(_params)->frame_list[1].bitmap_dial_byte, \
|
|
||||||
(_params)->frame_list[2].desc_ptr, \
|
|
||||||
(_params)->frame_list[2].desc_size, \
|
|
||||||
(_params)->frame_list[2].id, \
|
|
||||||
(_params)->frame_list[2].suffix, \
|
|
||||||
(_params)->frame_list[2].re_lsb, \
|
|
||||||
(_params)->frame_list[2].dev_id_byte, \
|
|
||||||
(_params)->frame_list[2].touch_ring_byte, \
|
|
||||||
(_params)->frame_list[2].touch_ring_max, \
|
|
||||||
(_params)->frame_list[2].touch_ring_flip_at, \
|
|
||||||
(_params)->frame_list[2].bitmap_dial_byte
|
|
||||||
|
|
||||||
/* Get a replacement report descriptor for a tablet's interface. */
|
/* Get a replacement report descriptor for a tablet's interface. */
|
||||||
extern int uclogic_params_get_desc(const struct uclogic_params *params,
|
extern int uclogic_params_get_desc(const struct uclogic_params *params,
|
||||||
__u8 **pdesc,
|
__u8 **pdesc,
|
||||||
@ -328,4 +216,8 @@ extern int uclogic_params_get_desc(const struct uclogic_params *params,
|
|||||||
/* Free resources used by tablet interface's parameters */
|
/* Free resources used by tablet interface's parameters */
|
||||||
extern void uclogic_params_cleanup(struct uclogic_params *params);
|
extern void uclogic_params_cleanup(struct uclogic_params *params);
|
||||||
|
|
||||||
|
/* Dump tablet interface parameters with hid_dbg() */
|
||||||
|
extern void uclogic_params_hid_dbg(const struct hid_device *hdev,
|
||||||
|
const struct uclogic_params *params);
|
||||||
|
|
||||||
#endif /* _HID_UCLOGIC_PARAMS_H */
|
#endif /* _HID_UCLOGIC_PARAMS_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user