// SPDX-License-Identifier: GPL-2.0-only /* * Generic helper functions for touchscreens and other two-dimensional * pointing devices * * Copyright (c) 2014 Sebastian Reichel <[email protected]> */ #include <linux/property.h> #include <linux/input.h> #include <linux/input/mt.h> #include <linux/input/touchscreen.h> #include <linux/module.h> static bool touchscreen_get_prop_u32(struct device *dev, const char *property, unsigned int default_value, unsigned int *value) { … } static void touchscreen_set_params(struct input_dev *dev, unsigned long axis, int min, int max, int fuzz) { … } /** * touchscreen_parse_properties - parse common touchscreen properties * @input: input device that should be parsed * @multitouch: specifies whether parsed properties should be applied to * single-touch or multi-touch axes * @prop: pointer to a struct touchscreen_properties into which to store * axis swap and invert info for use with touchscreen_report_x_y(); * or %NULL * * This function parses common properties for touchscreens and sets up the * input device accordingly. The function keeps previously set up default * values if no value is specified. */ void touchscreen_parse_properties(struct input_dev *input, bool multitouch, struct touchscreen_properties *prop) { … } EXPORT_SYMBOL(…); static void touchscreen_apply_prop_to_x_y(const struct touchscreen_properties *prop, unsigned int *x, unsigned int *y) { … } /** * touchscreen_set_mt_pos - Set input_mt_pos coordinates * @pos: input_mt_pos to set coordinates of * @prop: pointer to a struct touchscreen_properties * @x: X coordinate to store in pos * @y: Y coordinate to store in pos * * Adjust the passed in x and y values applying any axis inversion and * swapping requested in the passed in touchscreen_properties and store * the result in a struct input_mt_pos. */ void touchscreen_set_mt_pos(struct input_mt_pos *pos, const struct touchscreen_properties *prop, unsigned int x, unsigned int y) { … } EXPORT_SYMBOL(…); /** * touchscreen_report_pos - Report touchscreen coordinates * @input: input_device to report coordinates for * @prop: pointer to a struct touchscreen_properties * @x: X coordinate to report * @y: Y coordinate to report * @multitouch: Report coordinates on single-touch or multi-touch axes * * Adjust the passed in x and y values applying any axis inversion and * swapping requested in the passed in touchscreen_properties and then * report the resulting coordinates on the input_dev's x and y axis. */ void touchscreen_report_pos(struct input_dev *input, const struct touchscreen_properties *prop, unsigned int x, unsigned int y, bool multitouch) { … } EXPORT_SYMBOL(…); MODULE_LICENSE(…) …; MODULE_DESCRIPTION(…) …;