linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
@ 2024-03-07 13:49 Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 1/3] ARM: pxa: spitz: Open code gpio_request_array() Andy Shevchenko
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-07 13:49 UTC (permalink / raw)
  To: Andy Shevchenko, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Yanteng Si, Hu Haowen, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Russell King

There are only two users left of the gpio_free_array()/gpio_request_array().
Convert them to very basic legacy APIs (it requires much less work for
now) and drop no more used gpio_free_array()/gpio_request_array().

(Not tested)

Andy Shevchenko (3):
  ARM: pxa: spitz: Open code gpio_request_array()
  ARM: sa1100: Open code gpio_request_array()
  gpiolib: legacy: Remove unused gpio_request_array() and
    gpio_free_array()

 Documentation/driver-api/gpio/legacy.rst      | 16 -------
 .../zh_CN/driver-api/gpio/legacy.rst          | 16 -------
 Documentation/translations/zh_TW/gpio.txt     | 17 -------
 arch/arm/mach-pxa/spitz_pm.c                  | 22 +++++----
 arch/arm/mach-sa1100/h3600.c                  | 47 ++++++++++++++-----
 drivers/gpio/gpiolib-legacy.c                 | 39 ---------------
 include/linux/gpio.h                          | 15 ------
 7 files changed, 48 insertions(+), 124 deletions(-)

-- 
2.43.0.rc1.1.gbec44491f096


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v1 1/3] ARM: pxa: spitz: Open code gpio_request_array()
  2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
@ 2024-03-07 13:49 ` Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 2/3] ARM: sa1100: " Andy Shevchenko
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-07 13:49 UTC (permalink / raw)
  To: Andy Shevchenko, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Yanteng Si, Hu Haowen, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Russell King

In order to prerare for removal of gpio_request_array(), open code
the latter. Note, we are not using gpio_request_one() as it's also
deprecated, hence reducing legacy API usage to the very basic ones.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/arm/mach-pxa/spitz_pm.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
index 8bc4ea51a0c1..03b4b347f11a 100644
--- a/arch/arm/mach-pxa/spitz_pm.c
+++ b/arch/arm/mach-pxa/spitz_pm.c
@@ -35,18 +35,20 @@
 
 static int spitz_last_ac_status;
 
-static struct gpio spitz_charger_gpios[] = {
-	{ SPITZ_GPIO_KEY_INT,	GPIOF_IN, "Keyboard Interrupt" },
-	{ SPITZ_GPIO_SYNC,	GPIOF_IN, "Sync" },
-	{ SPITZ_GPIO_AC_IN,     GPIOF_IN, "Charger Detection" },
-	{ SPITZ_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" },
-	{ SPITZ_GPIO_JK_B,	  GPIOF_OUT_INIT_LOW, "JK B" },
-	{ SPITZ_GPIO_CHRG_ON,	  GPIOF_OUT_INIT_LOW, "Charger On" },
-};
-
 static void spitz_charger_init(void)
 {
-	gpio_request_array(ARRAY_AND_SIZE(spitz_charger_gpios));
+	gpio_request(SPITZ_GPIO_KEY_INT, "Keyboard Interrupt");
+	gpio_direction_input(SPITZ_GPIO_KEY_INT);
+	gpio_request(SPITZ_GPIO_SYNC, "Sync");
+	gpio_direction_input(SPITZ_GPIO_SYNC);
+	gpio_request(SPITZ_GPIO_AC_IN, "Charger Detection");
+	gpio_direction_input(SPITZ_GPIO_AC_IN);
+	gpio_request(SPITZ_GPIO_ADC_TEMP_ON, "ADC Temp On");
+	gpio_direction_output(SPITZ_GPIO_ADC_TEMP_ON, 0);
+	gpio_request(SPITZ_GPIO_JK_B, "JK B");
+	gpio_direction_output(SPITZ_GPIO_JK_B, 0);
+	gpio_request(SPITZ_GPIO_CHRG_ON, "Charger On");
+	gpio_direction_output(SPITZ_GPIO_CHRG_ON, 0);
 }
 
 static void spitz_measure_temp(int on)
-- 
2.43.0.rc1.1.gbec44491f096


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v1 2/3] ARM: sa1100: Open code gpio_request_array()
  2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 1/3] ARM: pxa: spitz: Open code gpio_request_array() Andy Shevchenko
@ 2024-03-07 13:49 ` Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array() Andy Shevchenko
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-07 13:49 UTC (permalink / raw)
  To: Andy Shevchenko, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Yanteng Si, Hu Haowen, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Russell King

In order to prerare for removal of gpio_request_array(), open code
the latter. Note, we are not using gpio_request_one() as it's also
deprecated, hence reducing legacy API usage to the very basic ones.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/arm/mach-sa1100/h3600.c | 47 +++++++++++++++++++++++++++---------
 1 file changed, 36 insertions(+), 11 deletions(-)

diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index 5e25dfa752e9..1cfc0b1fa41c 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -20,16 +20,6 @@
 
 #include "generic.h"
 
-/*
- * helper for sa1100fb
- */
-static struct gpio h3600_lcd_gpio[] = {
-	{ H3XXX_EGPIO_LCD_ON,	GPIOF_OUT_INIT_LOW,	"LCD power" },
-	{ H3600_EGPIO_LCD_PCI,	GPIOF_OUT_INIT_LOW,	"LCD control" },
-	{ H3600_EGPIO_LCD_5V_ON, GPIOF_OUT_INIT_LOW,	"LCD 5v" },
-	{ H3600_EGPIO_LVDD_ON,	GPIOF_OUT_INIT_LOW,	"LCD 9v/-6.5v" },
-};
-
 static bool h3600_lcd_request(void)
 {
 	static bool h3600_lcd_ok;
@@ -38,7 +28,42 @@ static bool h3600_lcd_request(void)
 	if (h3600_lcd_ok)
 		return true;
 
-	rc = gpio_request_array(h3600_lcd_gpio, ARRAY_SIZE(h3600_lcd_gpio));
+	rc = gpio_request(H3XXX_EGPIO_LCD_ON, "LCD power");
+	if (rc)
+		goto out;
+	rc = gpio_direction_output(H3XXX_EGPIO_LCD_ON, 0);
+	if (rc)
+		goto out_free_on;
+	rc = gpio_request(H3600_EGPIO_LCD_PCI, "LCD control");
+	if (rc)
+		goto out_free_on;
+	rc = gpio_direction_output(H3600_EGPIO_LCD_PCI, 0);
+	if (rc)
+		goto out_free_pci;
+	rc = gpio_request(H3600_EGPIO_LCD_5V_ON, "LCD 5v");
+	if (rc)
+		goto out_free_pci;
+	rc = gpio_direction_output(H3600_EGPIO_LCD_5V_ON, 0);
+	if (rc)
+		goto out_free_5v_on;
+	rc = gpio_request(H3600_EGPIO_LVDD_ON, "LCD 9v/-6.5v");
+	if (rc)
+		goto out_free_5v_on;
+	rc = gpio_direction_output(H3600_EGPIO_LVDD_ON, 0);
+	if (rc)
+		goto out_free_lvdd_on;
+
+	goto out;
+
+out_free_lvdd_on:
+	gpio_free(H3600_EGPIO_LVDD_ON);
+out_free_5v_on:
+	gpio_free(H3600_EGPIO_LCD_5V_ON);
+out_free_pci:
+	gpio_free(H3600_EGPIO_LCD_PCI);
+out_free_on:
+	gpio_free(H3XXX_EGPIO_LCD_ON);
+out:
 	if (rc)
 		pr_err("%s: can't request GPIOs\n", __func__);
 	else
-- 
2.43.0.rc1.1.gbec44491f096


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array()
  2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 1/3] ARM: pxa: spitz: Open code gpio_request_array() Andy Shevchenko
  2024-03-07 13:49 ` [PATCH v1 2/3] ARM: sa1100: " Andy Shevchenko
@ 2024-03-07 13:49 ` Andy Shevchenko
  2024-03-08  1:14   ` Yanteng Si
  2024-03-07 14:36 ` [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Linus Walleij
  2024-04-02 18:43 ` Andy Shevchenko
  4 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-07 13:49 UTC (permalink / raw)
  To: Andy Shevchenko, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Yanteng Si, Hu Haowen, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Russell King

No more users.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 Documentation/driver-api/gpio/legacy.rst      | 16 --------
 .../zh_CN/driver-api/gpio/legacy.rst          | 16 --------
 Documentation/translations/zh_TW/gpio.txt     | 17 --------
 drivers/gpio/gpiolib-legacy.c                 | 39 -------------------
 include/linux/gpio.h                          | 15 -------
 5 files changed, 103 deletions(-)

diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst
index b6505914791c..534dfe95d128 100644
--- a/Documentation/driver-api/gpio/legacy.rst
+++ b/Documentation/driver-api/gpio/legacy.rst
@@ -225,8 +225,6 @@ setup or driver probe/teardown code, so this is an easy constraint.)::
                 gpio_request()
 
         ## 	gpio_request_one()
-        ##	gpio_request_array()
-        ## 	gpio_free_array()
 
                 gpio_free()
 
@@ -295,14 +293,6 @@ are claimed, three additional calls are defined::
 	 */
 	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
 
-	/* request multiple GPIOs in a single call
-	 */
-	int gpio_request_array(struct gpio *array, size_t num);
-
-	/* release multiple GPIOs in a single call
-	 */
-	void gpio_free_array(struct gpio *array, size_t num);
-
 where 'flags' is currently defined to specify the following properties:
 
 	* GPIOF_DIR_IN		- to configure direction as input
@@ -341,12 +331,6 @@ A typical example of usage::
 	if (err)
 		...
 
-	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-	if (err)
-		...
-
-	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-
 
 GPIOs mapped to IRQs
 --------------------
diff --git a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
index aeccff777170..0faf042001d2 100644
--- a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
+++ b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
@@ -208,8 +208,6 @@ GPIO 值的命令需要等待其信息排到队首才发送命令,再获得其
                 gpio_request()
 
         ## 	gpio_request_one()
-        ##	gpio_request_array()
-        ## 	gpio_free_array()
 
                 gpio_free()
 
@@ -272,14 +270,6 @@ gpio_request()前将这类细节配置好,例如使用引脚控制子系统的
 	 */
 	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
 
-	/* 在单个函数中申请多个 GPIO
-	 */
-	int gpio_request_array(struct gpio *array, size_t num);
-
-	/* 在单个函数中释放多个 GPIO
-	 */
-	void gpio_free_array(struct gpio *array, size_t num);
-
 这里 'flags' 当前定义可指定以下属性:
 
 	* GPIOF_DIR_IN		- 配置方向为输入
@@ -317,12 +307,6 @@ gpio_request()前将这类细节配置好,例如使用引脚控制子系统的
 	if (err)
 		...
 
-	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-	if (err)
-		...
-
-	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-
 
 GPIO 映射到 IRQ
 ----------------
diff --git a/Documentation/translations/zh_TW/gpio.txt b/Documentation/translations/zh_TW/gpio.txt
index b9b48012c62e..77d69d381316 100644
--- a/Documentation/translations/zh_TW/gpio.txt
+++ b/Documentation/translations/zh_TW/gpio.txt
@@ -215,13 +215,10 @@ GPIO 值的命令需要等待其信息排到隊首才發送命令,再獲得其
 	gpio_request()
 
 ## 	gpio_request_one()
-##	gpio_request_array()
-## 	gpio_free_array()
 
 	gpio_free()
 
 
-
 聲明和釋放 GPIO
 ----------------------------
 爲了有助於捕獲系統配置錯誤,定義了兩個函數。
@@ -278,14 +275,6 @@ gpio_request()前將這類細節配置好,例如使用 pinctrl 子系統的映
 	 */
 	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
 
-	/* 在單個函數中申請多個 GPIO
-	 */
-	int gpio_request_array(struct gpio *array, size_t num);
-
-	/* 在單個函數中釋放多個 GPIO
-	 */
-	void gpio_free_array(struct gpio *array, size_t num);
-
 這裡 'flags' 當前定義可指定以下屬性:
 
 	* GPIOF_DIR_IN		- 配置方向爲輸入
@@ -323,12 +312,6 @@ gpio_request()前將這類細節配置好,例如使用 pinctrl 子系統的映
 	if (err)
 		...
 
-	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-	if (err)
-		...
-
-	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
-
 
 GPIO 映射到 IRQ
 --------------------
diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c
index 3392e758d36f..5a9911ae9125 100644
--- a/drivers/gpio/gpiolib-legacy.c
+++ b/drivers/gpio/gpiolib-legacy.c
@@ -72,42 +72,3 @@ int gpio_request(unsigned gpio, const char *label)
 	return gpiod_request(desc, label);
 }
 EXPORT_SYMBOL_GPL(gpio_request);
-
-/**
- * gpio_request_array - request multiple GPIOs in a single call
- * @array:	array of the 'struct gpio'
- * @num:	how many GPIOs in the array
- *
- * **DEPRECATED** This function is deprecated and must not be used in new code.
- */
-int gpio_request_array(const struct gpio *array, size_t num)
-{
-	int i, err;
-
-	for (i = 0; i < num; i++, array++) {
-		err = gpio_request_one(array->gpio, array->flags, array->label);
-		if (err)
-			goto err_free;
-	}
-	return 0;
-
-err_free:
-	while (i--)
-		gpio_free((--array)->gpio);
-	return err;
-}
-EXPORT_SYMBOL_GPL(gpio_request_array);
-
-/**
- * gpio_free_array - release multiple GPIOs in a single call
- * @array:	array of the 'struct gpio'
- * @num:	how many GPIOs in the array
- *
- * **DEPRECATED** This function is deprecated and must not be used in new code.
- */
-void gpio_free_array(const struct gpio *array, size_t num)
-{
-	while (num--)
-		gpio_free((array++)->gpio);
-}
-EXPORT_SYMBOL_GPL(gpio_free_array);
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index f4e5406554bb..56ac7e7a2889 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -120,8 +120,6 @@ static inline int gpio_to_irq(unsigned gpio)
 }
 
 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
-int gpio_request_array(const struct gpio *array, size_t num);
-void gpio_free_array(const struct gpio *array, size_t num);
 
 /* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */
 
@@ -152,11 +150,6 @@ static inline int gpio_request_one(unsigned gpio,
 	return -ENOSYS;
 }
 
-static inline int gpio_request_array(const struct gpio *array, size_t num)
-{
-	return -ENOSYS;
-}
-
 static inline void gpio_free(unsigned gpio)
 {
 	might_sleep();
@@ -165,14 +158,6 @@ static inline void gpio_free(unsigned gpio)
 	WARN_ON(1);
 }
 
-static inline void gpio_free_array(const struct gpio *array, size_t num)
-{
-	might_sleep();
-
-	/* GPIO can never have been requested */
-	WARN_ON(1);
-}
-
 static inline int gpio_direction_input(unsigned gpio)
 {
 	return -ENOSYS;
-- 
2.43.0.rc1.1.gbec44491f096


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
                   ` (2 preceding siblings ...)
  2024-03-07 13:49 ` [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array() Andy Shevchenko
@ 2024-03-07 14:36 ` Linus Walleij
  2024-03-13 11:14   ` Andy Shevchenko
  2024-04-02 18:43 ` Andy Shevchenko
  4 siblings, 1 reply; 12+ messages in thread
From: Linus Walleij @ 2024-03-07 14:36 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-gpio, linux-doc, linux-kernel, linux-arm-kernel,
	Bartosz Golaszewski, Jonathan Corbet, Alex Shi, Yanteng Si,
	Hu Haowen, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Russell King

On Thu, Mar 7, 2024 at 2:51 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:

> There are only two users left of the gpio_free_array()/gpio_request_array().
> Convert them to very basic legacy APIs (it requires much less work for
> now) and drop no more used gpio_free_array()/gpio_request_array().

That's reasonable and makes the kernel a better place.
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array()
  2024-03-07 13:49 ` [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array() Andy Shevchenko
@ 2024-03-08  1:14   ` Yanteng Si
  0 siblings, 0 replies; 12+ messages in thread
From: Yanteng Si @ 2024-03-08  1:14 UTC (permalink / raw)
  To: Andy Shevchenko, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Hu Haowen, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Russell King


在 2024/3/7 21:49, Andy Shevchenko 写道:
> No more users.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>   Documentation/driver-api/gpio/legacy.rst      | 16 --------
>   .../zh_CN/driver-api/gpio/legacy.rst          | 16 --------

For Chinese:


Reviewed-by: Yanteng Si <siyanteng@loongson.cn>


Thanks,

Yanteng

>   Documentation/translations/zh_TW/gpio.txt     | 17 --------
>   drivers/gpio/gpiolib-legacy.c                 | 39 -------------------
>   include/linux/gpio.h                          | 15 -------
>   5 files changed, 103 deletions(-)
>
> diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst
> index b6505914791c..534dfe95d128 100644
> --- a/Documentation/driver-api/gpio/legacy.rst
> +++ b/Documentation/driver-api/gpio/legacy.rst
> @@ -225,8 +225,6 @@ setup or driver probe/teardown code, so this is an easy constraint.)::
>                   gpio_request()
>   
>           ## 	gpio_request_one()
> -        ##	gpio_request_array()
> -        ## 	gpio_free_array()
>   
>                   gpio_free()
>   
> @@ -295,14 +293,6 @@ are claimed, three additional calls are defined::
>   	 */
>   	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
>   
> -	/* request multiple GPIOs in a single call
> -	 */
> -	int gpio_request_array(struct gpio *array, size_t num);
> -
> -	/* release multiple GPIOs in a single call
> -	 */
> -	void gpio_free_array(struct gpio *array, size_t num);
> -
>   where 'flags' is currently defined to specify the following properties:
>   
>   	* GPIOF_DIR_IN		- to configure direction as input
> @@ -341,12 +331,6 @@ A typical example of usage::
>   	if (err)
>   		...
>   
> -	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -	if (err)
> -		...
> -
> -	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -
>   
>   GPIOs mapped to IRQs
>   --------------------
> diff --git a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
> index aeccff777170..0faf042001d2 100644
> --- a/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
> +++ b/Documentation/translations/zh_CN/driver-api/gpio/legacy.rst
> @@ -208,8 +208,6 @@ GPIO 值的命令需要等待其信息排到队首才发送命令,再获得其
>                   gpio_request()
>   
>           ## 	gpio_request_one()
> -        ##	gpio_request_array()
> -        ## 	gpio_free_array()
>   
>                   gpio_free()
>   
> @@ -272,14 +270,6 @@ gpio_request()前将这类细节配置好,例如使用引脚控制子系统的
>   	 */
>   	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
>   
> -	/* 在单个函数中申请多个 GPIO
> -	 */
> -	int gpio_request_array(struct gpio *array, size_t num);
> -
> -	/* 在单个函数中释放多个 GPIO
> -	 */
> -	void gpio_free_array(struct gpio *array, size_t num);
> -
>   这里 'flags' 当前定义可指定以下属性:
>   
>   	* GPIOF_DIR_IN		- 配置方向为输入
> @@ -317,12 +307,6 @@ gpio_request()前将这类细节配置好,例如使用引脚控制子系统的
>   	if (err)
>   		...
>   
> -	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -	if (err)
> -		...
> -
> -	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -
>   
>   GPIO 映射到 IRQ
>   ----------------
> diff --git a/Documentation/translations/zh_TW/gpio.txt b/Documentation/translations/zh_TW/gpio.txt
> index b9b48012c62e..77d69d381316 100644
> --- a/Documentation/translations/zh_TW/gpio.txt
> +++ b/Documentation/translations/zh_TW/gpio.txt
> @@ -215,13 +215,10 @@ GPIO 值的命令需要等待其信息排到隊首才發送命令,再獲得其
>   	gpio_request()
>   
>   ## 	gpio_request_one()
> -##	gpio_request_array()
> -## 	gpio_free_array()
>   
>   	gpio_free()
>   
>   
> -
>   聲明和釋放 GPIO
>   ----------------------------
>   爲了有助於捕獲系統配置錯誤,定義了兩個函數。
> @@ -278,14 +275,6 @@ gpio_request()前將這類細節配置好,例如使用 pinctrl 子系統的映
>   	 */
>   	int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
>   
> -	/* 在單個函數中申請多個 GPIO
> -	 */
> -	int gpio_request_array(struct gpio *array, size_t num);
> -
> -	/* 在單個函數中釋放多個 GPIO
> -	 */
> -	void gpio_free_array(struct gpio *array, size_t num);
> -
>   這裡 'flags' 當前定義可指定以下屬性:
>   
>   	* GPIOF_DIR_IN		- 配置方向爲輸入
> @@ -323,12 +312,6 @@ gpio_request()前將這類細節配置好,例如使用 pinctrl 子系統的映
>   	if (err)
>   		...
>   
> -	err = gpio_request_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -	if (err)
> -		...
> -
> -	gpio_free_array(leds_gpios, ARRAY_SIZE(leds_gpios));
> -
>   
>   GPIO 映射到 IRQ
>   --------------------
> diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c
> index 3392e758d36f..5a9911ae9125 100644
> --- a/drivers/gpio/gpiolib-legacy.c
> +++ b/drivers/gpio/gpiolib-legacy.c
> @@ -72,42 +72,3 @@ int gpio_request(unsigned gpio, const char *label)
>   	return gpiod_request(desc, label);
>   }
>   EXPORT_SYMBOL_GPL(gpio_request);
> -
> -/**
> - * gpio_request_array - request multiple GPIOs in a single call
> - * @array:	array of the 'struct gpio'
> - * @num:	how many GPIOs in the array
> - *
> - * **DEPRECATED** This function is deprecated and must not be used in new code.
> - */
> -int gpio_request_array(const struct gpio *array, size_t num)
> -{
> -	int i, err;
> -
> -	for (i = 0; i < num; i++, array++) {
> -		err = gpio_request_one(array->gpio, array->flags, array->label);
> -		if (err)
> -			goto err_free;
> -	}
> -	return 0;
> -
> -err_free:
> -	while (i--)
> -		gpio_free((--array)->gpio);
> -	return err;
> -}
> -EXPORT_SYMBOL_GPL(gpio_request_array);
> -
> -/**
> - * gpio_free_array - release multiple GPIOs in a single call
> - * @array:	array of the 'struct gpio'
> - * @num:	how many GPIOs in the array
> - *
> - * **DEPRECATED** This function is deprecated and must not be used in new code.
> - */
> -void gpio_free_array(const struct gpio *array, size_t num)
> -{
> -	while (num--)
> -		gpio_free((array++)->gpio);
> -}
> -EXPORT_SYMBOL_GPL(gpio_free_array);
> diff --git a/include/linux/gpio.h b/include/linux/gpio.h
> index f4e5406554bb..56ac7e7a2889 100644
> --- a/include/linux/gpio.h
> +++ b/include/linux/gpio.h
> @@ -120,8 +120,6 @@ static inline int gpio_to_irq(unsigned gpio)
>   }
>   
>   int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);
> -int gpio_request_array(const struct gpio *array, size_t num);
> -void gpio_free_array(const struct gpio *array, size_t num);
>   
>   /* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */
>   
> @@ -152,11 +150,6 @@ static inline int gpio_request_one(unsigned gpio,
>   	return -ENOSYS;
>   }
>   
> -static inline int gpio_request_array(const struct gpio *array, size_t num)
> -{
> -	return -ENOSYS;
> -}
> -
>   static inline void gpio_free(unsigned gpio)
>   {
>   	might_sleep();
> @@ -165,14 +158,6 @@ static inline void gpio_free(unsigned gpio)
>   	WARN_ON(1);
>   }
>   
> -static inline void gpio_free_array(const struct gpio *array, size_t num)
> -{
> -	might_sleep();
> -
> -	/* GPIO can never have been requested */
> -	WARN_ON(1);
> -}
> -
>   static inline int gpio_direction_input(unsigned gpio)
>   {
>   	return -ENOSYS;


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-03-07 14:36 ` [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Linus Walleij
@ 2024-03-13 11:14   ` Andy Shevchenko
  2024-03-13 11:47     ` Bartosz Golaszewski
  0 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-13 11:14 UTC (permalink / raw)
  To: Linus Walleij
  Cc: linux-gpio, linux-doc, linux-kernel, linux-arm-kernel,
	Bartosz Golaszewski, Jonathan Corbet, Alex Shi, Yanteng Si,
	Hu Haowen, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Russell King

On Thu, Mar 07, 2024 at 03:36:18PM +0100, Linus Walleij wrote:
> On Thu, Mar 7, 2024 at 2:51 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> 
> > There are only two users left of the gpio_free_array()/gpio_request_array().
> > Convert them to very basic legacy APIs (it requires much less work for
> > now) and drop no more used gpio_free_array()/gpio_request_array().
> 
> That's reasonable and makes the kernel a better place.
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Thank you!

Bart, do you want me to take it via my tree or you want to take directly?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-03-13 11:14   ` Andy Shevchenko
@ 2024-03-13 11:47     ` Bartosz Golaszewski
  2024-03-14 13:21       ` Andy Shevchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Bartosz Golaszewski @ 2024-03-13 11:47 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Linus Walleij, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel, Jonathan Corbet, Alex Shi, Yanteng Si,
	Hu Haowen, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Russell King

On Wed, Mar 13, 2024 at 12:14 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Thu, Mar 07, 2024 at 03:36:18PM +0100, Linus Walleij wrote:
> > On Thu, Mar 7, 2024 at 2:51 PM Andy Shevchenko
> > <andriy.shevchenko@linux.intel.com> wrote:
> >
> > > There are only two users left of the gpio_free_array()/gpio_request_array().
> > > Convert them to very basic legacy APIs (it requires much less work for
> > > now) and drop no more used gpio_free_array()/gpio_request_array().
> >
> > That's reasonable and makes the kernel a better place.
> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>
> Thank you!
>
> Bart, do you want me to take it via my tree or you want to take directly?
>

We don't have Acks from the relevant arch maintainers yet. I can pick
it up but I won't do it before the end of the merge window anyway.

Bart

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-03-13 11:47     ` Bartosz Golaszewski
@ 2024-03-14 13:21       ` Andy Shevchenko
  0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2024-03-14 13:21 UTC (permalink / raw)
  To: Bartosz Golaszewski, Arnd Bergmann
  Cc: Linus Walleij, linux-gpio, linux-doc, linux-kernel,
	linux-arm-kernel, Jonathan Corbet, Alex Shi, Yanteng Si,
	Hu Haowen, Daniel Mack, Haojian Zhuang, Robert Jarzmik,
	Russell King

On Wed, Mar 13, 2024 at 12:47:58PM +0100, Bartosz Golaszewski wrote:
> On Wed, Mar 13, 2024 at 12:14 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Thu, Mar 07, 2024 at 03:36:18PM +0100, Linus Walleij wrote:
> > > On Thu, Mar 7, 2024 at 2:51 PM Andy Shevchenko
> > > <andriy.shevchenko@linux.intel.com> wrote:
> > >
> > > > There are only two users left of the gpio_free_array()/gpio_request_array().
> > > > Convert them to very basic legacy APIs (it requires much less work for
> > > > now) and drop no more used gpio_free_array()/gpio_request_array().
> > >
> > > That's reasonable and makes the kernel a better place.
> > > Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> >
> > Thank you!
> >
> > Bart, do you want me to take it via my tree or you want to take directly?
> 
> We don't have Acks from the relevant arch maintainers yet.

True. But I haven't noticed much maintainer's activity WRT PXA code.
I dunno who can be the best to Ack these. Arnd?

> I can pick it up but I won't do it before the end of the merge window anyway.

Sure.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
                   ` (3 preceding siblings ...)
  2024-03-07 14:36 ` [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Linus Walleij
@ 2024-04-02 18:43 ` Andy Shevchenko
  2024-04-03 11:09   ` Bartosz Golaszewski
  4 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2024-04-02 18:43 UTC (permalink / raw)
  To: linux-gpio, linux-doc, linux-kernel, linux-arm-kernel
  Cc: Linus Walleij, Bartosz Golaszewski, Jonathan Corbet, Alex Shi,
	Yanteng Si, Hu Haowen, Daniel Mack, Haojian Zhuang,
	Robert Jarzmik, Russell King

On Thu, Mar 07, 2024 at 03:49:02PM +0200, Andy Shevchenko wrote:
> There are only two users left of the gpio_free_array()/gpio_request_array().
> Convert them to very basic legacy APIs (it requires much less work for
> now) and drop no more used gpio_free_array()/gpio_request_array().

Any comments on this? We really want to get rid of the legacy APIs.

While at here, would be also good to have a comment/tag for
https://lore.kernel.org/r/20240327193138.2385910-7-andriy.shevchenko@linux.intel.com

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-04-02 18:43 ` Andy Shevchenko
@ 2024-04-03 11:09   ` Bartosz Golaszewski
  2024-04-03 13:05     ` Andy Shevchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Bartosz Golaszewski @ 2024-04-03 11:09 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: linux-gpio, linux-doc, linux-kernel, linux-arm-kernel,
	Linus Walleij, Jonathan Corbet, Alex Shi, Yanteng Si, Hu Haowen,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Russell King

On Tue, Apr 2, 2024 at 8:43 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Thu, Mar 07, 2024 at 03:49:02PM +0200, Andy Shevchenko wrote:
> > There are only two users left of the gpio_free_array()/gpio_request_array().
> > Convert them to very basic legacy APIs (it requires much less work for
> > now) and drop no more used gpio_free_array()/gpio_request_array().
>
> Any comments on this? We really want to get rid of the legacy APIs.
>

I applied the patches, they only touch the GPIO part in legacy
platform code. It's not very controversial IMO.

Bart

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array()
  2024-04-03 11:09   ` Bartosz Golaszewski
@ 2024-04-03 13:05     ` Andy Shevchenko
  0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2024-04-03 13:05 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: linux-gpio, linux-doc, linux-kernel, linux-arm-kernel,
	Linus Walleij, Jonathan Corbet, Alex Shi, Yanteng Si, Hu Haowen,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Russell King

On Wed, Apr 03, 2024 at 01:09:13PM +0200, Bartosz Golaszewski wrote:
> On Tue, Apr 2, 2024 at 8:43 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > On Thu, Mar 07, 2024 at 03:49:02PM +0200, Andy Shevchenko wrote:
> > > There are only two users left of the gpio_free_array()/gpio_request_array().
> > > Convert them to very basic legacy APIs (it requires much less work for
> > > now) and drop no more used gpio_free_array()/gpio_request_array().
> >
> > Any comments on this? We really want to get rid of the legacy APIs.
> 
> I applied the patches, they only touch the GPIO part in legacy
> platform code. It's not very controversial IMO.

Thank you!

FWIW, In case of issue(s) I would like to help to fix, but I don't think
it will be even one.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-04-03 13:05 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-07 13:49 [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Andy Shevchenko
2024-03-07 13:49 ` [PATCH v1 1/3] ARM: pxa: spitz: Open code gpio_request_array() Andy Shevchenko
2024-03-07 13:49 ` [PATCH v1 2/3] ARM: sa1100: " Andy Shevchenko
2024-03-07 13:49 ` [PATCH v1 3/3] gpiolib: legacy: Remove unused gpio_request_array() and gpio_free_array() Andy Shevchenko
2024-03-08  1:14   ` Yanteng Si
2024-03-07 14:36 ` [PATCH v1 0/3] gpiolib: Get rid of gpio_free_array()/gpio_request_array() Linus Walleij
2024-03-13 11:14   ` Andy Shevchenko
2024-03-13 11:47     ` Bartosz Golaszewski
2024-03-14 13:21       ` Andy Shevchenko
2024-04-02 18:43 ` Andy Shevchenko
2024-04-03 11:09   ` Bartosz Golaszewski
2024-04-03 13:05     ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).