lkml.org 
[lkml]   [2020]   [Mar]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v10 39/55] input: atmel_mxt_ts: export GPIO reset line via sysfs
    Date
    From: "George G. Davis" <george_davis@mentor.com>

    N.B. Modifying the atmel_mxt_ts GPIO reset line during operation will
    cause problems with normal driver operation. This feature is provided
    as a diagnostic debug aid. It does not take into consideration any
    pending operations which may be in progress. Modifying the atmel_mxt_ts
    GPIO reset line at any time will inevitably cause the driver to fail.

    Signed-off-by: George G. Davis <george_davis@mentor.com>
    Signed-off-by: Rajeev Kumar <rajeev_kumar@mentor.com>
    Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 21 +++++++++++++++++++++
    1 file changed, 21 insertions(+)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index 11e65f32b1a2..cfeeacdd4084 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -4091,6 +4091,19 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
    return error;
    }

    + if (data->reset_gpio) {
    + error = gpiod_export(data->reset_gpio, 0);
    + if (error)
    + return error;
    +
    + error = gpiod_export_link(&client->dev, "reset",
    + data->reset_gpio);
    + if (error) {
    + gpiod_unexport(data->reset_gpio);
    + return error;
    + }
    + }
    +
    if (data->suspend_mode == MXT_SUSPEND_REGULATOR) {
    error = mxt_acquire_irq(data);
    if (error)
    @@ -4123,6 +4136,10 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
    err_free_object:
    mxt_free_input_device(data);
    mxt_free_object_table(data);
    + if (data->reset_gpio) {
    + sysfs_remove_link(&client->dev.kobj, "reset");
    + gpiod_unexport(data->reset_gpio);
    + }
    return error;
    }

    @@ -4132,6 +4149,10 @@ static int mxt_remove(struct i2c_client *client)

    disable_irq(data->irq);
    sysfs_remove_group(&client->dev.kobj, &mxt_fw_attr_group);
    + if (data->reset_gpio) {
    + sysfs_remove_link(&client->dev.kobj, "reset");
    + gpiod_unexport(data->reset_gpio);
    + }
    mxt_debug_msg_remove(data);
    mxt_sysfs_remove(data);
    mxt_free_input_device(data);
    --
    2.17.1
    \
     
     \ /
      Last update: 2020-03-31 12:54    [W:4.068 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site