Message ID | 20230207142952.51844-5-andriy.shevchenko@linux.intel.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Johannes Berg |
Headers | show |
Series | gpiolib cleanups | expand |
On Tue, Feb 07, 2023 at 04:29:44PM +0200, Andy Shevchenko wrote: > @@ -1010,14 +1009,21 @@ static int ads7846_setup_pendown(struct spi_device *spi, > } > > ts->gpio_pendown = pdata->gpio_pendown; > - > - if (pdata->gpio_pendown_debounce) > - gpio_set_debounce(pdata->gpio_pendown, > - pdata->gpio_pendown_debounce); Can we please change only this to: gpiod_set_debounce(gpio_to_desc(pdata->gpio_pendown), pdata->gpio_pendown_debounce); and not change anything else (i.e. drop the changes below)? > } else { > - dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); > - return -EINVAL; > + struct gpio_desc *desc; > + > + desc = devm_gpiod_get(&spi->dev, "pendown", GPIOD_IN); > + if (IS_ERR(desc)) { > + dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); > + return PTR_ERR(desc); > + } > + gpiod_set_consumer_name(desc, "ads7846_pendown"); > + > + ts->gpio_pendown = desc_to_gpio(desc); > } > + if (pdata->gpio_pendown_debounce) > + gpiod_set_debounce(gpio_to_desc(ts->gpio_pendown), > + pdata->gpio_pendown_debounce); > > return 0; Thanks.
On Tue, Feb 07, 2023 at 01:32:01PM -0800, Dmitry Torokhov wrote: > On Tue, Feb 07, 2023 at 04:29:44PM +0200, Andy Shevchenko wrote: > > @@ -1010,14 +1009,21 @@ static int ads7846_setup_pendown(struct spi_device *spi, > > } > > > > ts->gpio_pendown = pdata->gpio_pendown; > > - > > - if (pdata->gpio_pendown_debounce) > > - gpio_set_debounce(pdata->gpio_pendown, > > - pdata->gpio_pendown_debounce); > > Can we please change only this to: > > gpiod_set_debounce(gpio_to_desc(pdata->gpio_pendown), > pdata->gpio_pendown_debounce); > > and not change anything else (i.e. drop the changes below)? Probably. I can try rollback this. > > } else { > > - dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); > > - return -EINVAL; > > + struct gpio_desc *desc; > > + > > + desc = devm_gpiod_get(&spi->dev, "pendown", GPIOD_IN); > > + if (IS_ERR(desc)) { > > + dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); > > + return PTR_ERR(desc); > > + } > > + gpiod_set_consumer_name(desc, "ads7846_pendown"); > > + > > + ts->gpio_pendown = desc_to_gpio(desc); > > } > > + if (pdata->gpio_pendown_debounce) > > + gpiod_set_debounce(gpio_to_desc(ts->gpio_pendown), > > + pdata->gpio_pendown_debounce); > > > > return 0;
diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst index a0559d93efd1..e0306e78e34b 100644 --- a/Documentation/driver-api/gpio/legacy.rst +++ b/Documentation/driver-api/gpio/legacy.rst @@ -238,8 +238,6 @@ setup or driver probe/teardown code, so this is an easy constraint.):: ## gpio_free_array() gpio_free() - gpio_set_debounce() - Claiming and Releasing GPIOs diff --git a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst index 74fa473bb504..dee2a0517c1c 100644 --- a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst +++ b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst @@ -219,7 +219,6 @@ GPIO 值的命令需要等待其信息排到队首才发送命令,再获得其 ## gpio_free_array() gpio_free() - gpio_set_debounce() diff --git a/Documentation/translations/zh_TW/gpio.txt b/Documentation/translations/zh_TW/gpio.txt index 1b986bbb0909..dc608358d90a 100644 --- a/Documentation/translations/zh_TW/gpio.txt +++ b/Documentation/translations/zh_TW/gpio.txt @@ -226,7 +226,6 @@ GPIO 值的命令需要等待其信息排到隊首才發送命令,再獲得其 ## gpio_free_array() gpio_free() - gpio_set_debounce() diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index 17f11bce8113..a9a4a7f7d315 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -25,8 +25,8 @@ #include <linux/slab.h> #include <linux/pm.h> #include <linux/of.h> -#include <linux/of_gpio.h> #include <linux/of_device.h> +#include <linux/gpio/consumer.h> #include <linux/gpio.h> #include <linux/spi/spi.h> #include <linux/spi/ads7846.h> @@ -999,7 +999,6 @@ static int ads7846_setup_pendown(struct spi_device *spi, if (pdata->get_pendown_state) { ts->get_pendown_state = pdata->get_pendown_state; } else if (gpio_is_valid(pdata->gpio_pendown)) { - err = devm_gpio_request_one(&spi->dev, pdata->gpio_pendown, GPIOF_IN, "ads7846_pendown"); if (err) { @@ -1010,14 +1009,21 @@ static int ads7846_setup_pendown(struct spi_device *spi, } ts->gpio_pendown = pdata->gpio_pendown; - - if (pdata->gpio_pendown_debounce) - gpio_set_debounce(pdata->gpio_pendown, - pdata->gpio_pendown_debounce); } else { - dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); - return -EINVAL; + struct gpio_desc *desc; + + desc = devm_gpiod_get(&spi->dev, "pendown", GPIOD_IN); + if (IS_ERR(desc)) { + dev_err(&spi->dev, "no get_pendown_state nor gpio_pendown?\n"); + return PTR_ERR(desc); + } + gpiod_set_consumer_name(desc, "ads7846_pendown"); + + ts->gpio_pendown = desc_to_gpio(desc); } + if (pdata->gpio_pendown_debounce) + gpiod_set_debounce(gpio_to_desc(ts->gpio_pendown), + pdata->gpio_pendown_debounce); return 0; } @@ -1194,7 +1200,7 @@ static const struct ads7846_platform_data *ads7846_probe_dt(struct device *dev) pdata->wakeup = of_property_read_bool(node, "wakeup-source") || of_property_read_bool(node, "linux,wakeup"); - pdata->gpio_pendown = of_get_named_gpio(dev->of_node, "pendown-gpio", 0); + pdata->gpio_pendown = -ENOENT; return pdata; } diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 6719a82eeec5..220e8656f2ab 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h @@ -100,11 +100,6 @@ static inline int gpio_direction_output(unsigned gpio, int value) return gpiod_direction_output_raw(gpio_to_desc(gpio), value); } -static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) -{ - return gpiod_set_debounce(gpio_to_desc(gpio), debounce); -} - static inline int gpio_get_value_cansleep(unsigned gpio) { return gpiod_get_raw_value_cansleep(gpio_to_desc(gpio)); @@ -215,11 +210,6 @@ static inline int gpio_direction_output(unsigned gpio, int value) return -ENOSYS; } -static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) -{ - return -ENOSYS; -} - static inline int gpio_get_value(unsigned gpio) { /* GPIO can never have been requested or set as {in,out}put */