On 18.08.21 17:49, Alistair Francis wrote: > Add support for the distance and tilt x/y. > > This is based on the out of tree rM2 driver. > > Signed-off-by: Alistair Francis <alistair@xxxxxxxxxxxxx> > --- > drivers/input/touchscreen/wacom_i2c.c | 35 +++++++++++++++++++++++++-- > 1 file changed, 33 insertions(+), 2 deletions(-) > > diff --git a/drivers/input/touchscreen/wacom_i2c.c b/drivers/input/touchscreen/wacom_i2c.c > index 28255c77d426..4d0c19fbada4 100644 > --- a/drivers/input/touchscreen/wacom_i2c.c > +++ b/drivers/input/touchscreen/wacom_i2c.c > + /* Signed */ > + tilt_x = le16_to_cpup((__le16 *)&data[11]); > + tilt_y = le16_to_cpup((__le16 *)&data[13]); > + > + distance = le16_to_cpup((__le16 *)&data[15]); Use get_unaligned_u16 for all three. The existing code doesn't need to do this, because with the current struct layout, the array is suitable aligned for 2 byte accesses. You are accessing data at odd indices though, so you need to use an unaligned accessor. Cheers, Ahmad > + > if (!wac_i2c->prox) > wac_i2c->tool = (data[3] & 0x0c) ? > BTN_TOOL_RUBBER : BTN_TOOL_PEN; > @@ -127,6 +151,9 @@ static irqreturn_t wacom_i2c_irq(int irq, void *dev_id) > input_report_abs(input, ABS_X, x); > input_report_abs(input, ABS_Y, y); > input_report_abs(input, ABS_PRESSURE, pressure); > + input_report_abs(input, ABS_DISTANCE, distance); > + input_report_abs(input, ABS_TILT_X, tilt_x); > + input_report_abs(input, ABS_TILT_Y, tilt_y); > input_sync(input); > > out: > @@ -202,7 +229,11 @@ static int wacom_i2c_probe(struct i2c_client *client, > input_set_abs_params(input, ABS_Y, 0, features->y_max, 0, 0); > input_set_abs_params(input, ABS_PRESSURE, > 0, features->pressure_max, 0, 0); > - > + input_set_abs_params(input, ABS_DISTANCE, 0, features->distance_max, 0, 0); > + input_set_abs_params(input, ABS_TILT_X, -features->tilt_x_max, > + features->tilt_x_max, 0, 0); > + input_set_abs_params(input, ABS_TILT_Y, -features->tilt_y_max, > + features->tilt_y_max, 0, 0); > input_set_drvdata(input, wac_i2c); > > error = devm_request_threaded_irq(dev, client->irq, NULL, wacom_i2c_irq, > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |