lkml.org 
[lkml]   [2020]   [Feb]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 44/48] Input: atmel_mxt_ts: use gpiod_set_value_cansleep for reset pin
    Date
    From: Balasubramani Vivekanandan <balasubramani_vivekanandan@mentor.com>

    In case of remote display, touch controller will be also remote.
    In such cases, the reset pin of the touch controller will be
    controlled through bridging ICs like Deserilizer and Serializer.
    Therefore accessing the gpio pins require transactions with the
    external IC. Using the function gpiod_set_value will print a
    warning like below

    WARNING: CPU: 0 PID: 576 at drivers/gpio/gpiolib.c:1441 gpiod_set_value+0x34/0x60()
    CPU: 0 PID: 576 Comm: modprobe Not tainted 3.14.79-08377-g84ea22f-dirty #4
    Backtrace:
    [<80011c58>] (dump_backtrace) from [<80011e60>] (show_stack+0x18/0x1c)
    [<80011e48>] (show_stack) from [<8052d7ac>] (dump_stack+0x7c/0x9c)
    [<8052d730>] (dump_stack) from [<800241bc>] (warn_slowpath_common+0x74/0x9c)
    [<80024148>] (warn_slowpath_common) from [<80024288>] (warn_slowpath_null+0x24/0x2c)
    [<80024264>] (warn_slowpath_null) from [<8029e070>] (gpiod_set_value+0x34/0x60)
    [<8029e03c>] (gpiod_set_value) from [<7f492e98>] (mxt_probe+0x1e0/0x718 [atmel_mxt_ts])
    [<7f492cb8>] (mxt_probe [atmel_mxt_ts]) from [<803c4d34>] (i2c_device_probe+0xcc/0xec)
    [<803c4c68>] (i2c_device_probe) from [<803252a0>] (driver_probe_device+0xc0/0x200)

    Signed-off-by: Balasubramani Vivekanandan <balasubramani_vivekanandan@mentor.com>
    Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
    Signed-off-by: Sanjeev Chugh <sanjeev_chugh@mentor.com>
    Signed-off-by: George G. Davis <george_davis@mentor.com>
    Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
    ---
    drivers/input/touchscreen/atmel_mxt_ts.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
    index fb0941b5bd47..3784182d896f 100644
    --- a/drivers/input/touchscreen/atmel_mxt_ts.c
    +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
    @@ -2487,7 +2487,7 @@ static void mxt_regulator_enable(struct mxt_data *data)
    if (!data->reg_vdd || !data->reg_avdd)
    return;

    - gpiod_set_value(data->reset_gpio, 0);
    + gpiod_set_value_cansleep(data->reset_gpio, 0);

    error = regulator_enable(data->reg_vdd);
    if (error)
    @@ -2505,7 +2505,7 @@ static void mxt_regulator_enable(struct mxt_data *data)
    * voltage
    */
    msleep(MXT_REGULATOR_DELAY);
    - gpiod_set_value(data->reset_gpio, 1);
    + gpiod_set_value_cansleep(data->reset_gpio, 1);
    msleep(MXT_CHG_DELAY);

    retry_wait:
    @@ -4310,7 +4310,7 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
    disable_irq(data->irq);
    } else if (data->reset_gpio) {
    msleep(MXT_RESET_GPIO_TIME);
    - gpiod_set_value(data->reset_gpio, 1);
    + gpiod_set_value_cansleep(data->reset_gpio, 1);
    msleep(MXT_RESET_INVALID_CHG);
    } else {
    dev_dbg(&client->dev,
    --
    2.17.1
    \
     
     \ /
      Last update: 2020-02-12 09:49    [W:4.113 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site