*_traces are the number of antennas. width_* is thus the space between 2 antennas. Which means, we should subtract 1 to the number of antennas to divide the touchpad by the number of holes between each antenna. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx> -- new in v2 --- drivers/input/mouse/elan_i2c_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c index 6f4feedb7765..3375eaa9a72e 100644 --- a/drivers/input/mouse/elan_i2c_core.c +++ b/drivers/input/mouse/elan_i2c_core.c @@ -398,8 +398,8 @@ static int elan_query_device_parameters(struct elan_tp_data *data) if (error) return error; } - data->width_x = data->max_x / x_traces; - data->width_y = data->max_y / y_traces; + data->width_x = data->max_x / (x_traces - 1); + data->width_y = data->max_y / (y_traces - 1); if (device_property_read_u32(&client->dev, "touchscreen-x-mm", &x_mm) || -- 2.21.0