Skip to content

Commit

Permalink
Input: ili210x - optionally show calibrate sysfs attribute
Browse files Browse the repository at this point in the history
Only show the 'calibrate' sysfs attribute on chip flavours
which support calibration by writing to a calibration register.

Do this by adding a flag to the chip operations structure.

Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
Link: https://lore.kernel.org/r/20191112210148.3535-2-TheSven73@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Sven Van Asbroeck authored and Dmitry Torokhov committed Nov 12, 2019
1 parent b32fbea commit cc12ba1
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions drivers/input/touchscreen/ili210x.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ struct ili2xxx_chip {
bool (*continue_polling)(const u8 *data, bool touch);
unsigned int max_touches;
unsigned int resolution;
bool has_calibrate_reg;
};

struct ili210x {
Expand Down Expand Up @@ -103,6 +104,7 @@ static const struct ili2xxx_chip ili210x_chip = {
.parse_touch_data = ili210x_touchdata_to_coords,
.continue_polling = ili210x_check_continue_polling,
.max_touches = 2,
.has_calibrate_reg = true,
};

static int ili211x_read_touch_data(struct i2c_client *client, u8 *data)
Expand Down Expand Up @@ -228,6 +230,7 @@ static const struct ili2xxx_chip ili251x_chip = {
.parse_touch_data = ili251x_touchdata_to_coords,
.continue_polling = ili251x_check_continue_polling,
.max_touches = 10,
.has_calibrate_reg = true,
};

static bool ili210x_report_events(struct ili210x *priv, u8 *touchdata)
Expand Down Expand Up @@ -311,8 +314,19 @@ static struct attribute *ili210x_attributes[] = {
NULL,
};

static umode_t ili210x_calibrate_visible(struct kobject *kobj,
struct attribute *attr, int index)
{
struct device *dev = kobj_to_dev(kobj);
struct i2c_client *client = to_i2c_client(dev);
struct ili210x *priv = i2c_get_clientdata(client);

return priv->chip->has_calibrate_reg;
}

static const struct attribute_group ili210x_attr_group = {
.attrs = ili210x_attributes,
.is_visible = ili210x_calibrate_visible,
};

static void ili210x_power_down(void *data)
Expand Down

0 comments on commit cc12ba1

Please sign in to comment.