Re: [PATCH 2/5] Input: auo-pixcir-ts - switch to using gpiod API

From: Dmitry Torokhov
Date: Wed Sep 14 2022 - 11:15:33 EST


On Wed, Sep 14, 2022 at 05:04:14PM +0200, Heiko Stuebner wrote:
> Am Mittwoch, 14. September 2022, 16:14:25 CEST schrieb Dmitry Torokhov:
> > This switches the driver to gpiod API and drops uses of of_get_gpio() API.
> >
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> > ---
> > drivers/input/touchscreen/auo-pixcir-ts.c | 47 ++++++++++-------------
> > 1 file changed, 20 insertions(+), 27 deletions(-)
>
> [...]
>
> > @@ -578,23 +566,28 @@ static int auo_pixcir_probe(struct i2c_client *client,
> >
> > input_set_drvdata(ts->input, ts);
> >
> > - error = devm_gpio_request_one(&client->dev, ts->gpio_int,
> > - GPIOF_DIR_IN, "auo_pixcir_ts_int");
> > + ts->gpio_int = devm_gpiod_get_index(&client->dev, NULL, 0, GPIOD_IN);
> > + error = PTR_ERR_OR_ZERO(ts->gpio_int);
> > if (error) {
> > - dev_err(&client->dev, "request of gpio %d failed, %d\n",
> > - ts->gpio_int, error);
> > + dev_err(&client->dev,
> > + "request of int gpio failed: %d\n", error);
> > return error;
> > }
> >
> > - error = devm_gpio_request_one(&client->dev, ts->gpio_rst,
> > - GPIOF_DIR_OUT | GPIOF_INIT_HIGH,
> > - "auo_pixcir_ts_rst");
> > + gpiod_set_consumer_name(ts->gpio_int, "auo_pixcir_ts_int");
> > +
> > + /* Take the chip out of reset */
> > + ts->gpio_rst = devm_gpiod_get_index(&client->dev, NULL, 1,
> > + GPIOD_OUT_LOW);
>
> hmm, is this really equivalent? It looks like above we're startig
> with GPIOF_INIT_HIGH, while here it is LOW?

Yes, I believe the behavior will not change. You need to remember that
legacy gpio API operates on raw line states, whereas gpiod API is
normally logical state that gets converted to raw state (and the
conversion takes into account the polarity).

Here we are dealing with ACTIVE_LOW gpio, so setting it into logical
"low" (== inactive) means that the raw state is "high", as it was with
gpio_request_oneio_request_one(...GPIOF_DIR_OUT | GPIOF_INIT_HIGH, ...);

Thanks.

--
Dmitry