public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1
@ 2026-03-12  8:42 Junhui Liu
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Junhui Liu @ 2026-03-12  8:42 UTC (permalink / raw)
  To: Linus Walleij, Yixun Lan, Bartosz Golaszewski
  Cc: linux-gpio, linux-riscv, spacemit, linux-kernel, Junhui Liu

This add GPIO pin configuration support for the Spacemit K1 SoC. Some
use cases require configuring pin attributes like pull-up/down when using
GPIO lines.

A practical example is the SD card detection pin on the Banana Pi BPI-F3
board. Since it lacks an external pull-up circuit, the pin must be
configured with an internal pull-up to function correctly. Such
configurations can be specified directly in the devicetree:

    cd-gpios = <&gpio K1_GPIO(80) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;

To address this, add the set_config() callback to the gpio-spacemit-k1
driver to enable pin configuration through pinctrl, and modify the
pinctrl driver to return -ENOTSUPP instead of -EINVAL for unsupported
parameters, allowing the GPIO subsystem to gracefully handle them.

---
Junhui Liu (2):
      pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
      gpio: spacemit-k1: Add set_config callback support

 drivers/gpio/gpio-spacemit-k1.c       |  1 +
 drivers/pinctrl/spacemit/pinctrl-k1.c | 21 ++++++++++++---------
 2 files changed, 13 insertions(+), 9 deletions(-)
---
base-commit: b29fb8829bff243512bb8c8908fd39406f9fd4c3
change-id: 20260312-k1-gpio-set-config-f0873e92ebac

Best regards,
-- 
Junhui Liu <junhui.liu@pigmoral.tech>


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

* [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
  2026-03-12  8:42 [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Junhui Liu
@ 2026-03-12  8:42 ` Junhui Liu
  2026-03-13 13:37   ` Yao Zi
                     ` (2 more replies)
  2026-03-12  8:42 ` [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support Junhui Liu
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 11+ messages in thread
From: Junhui Liu @ 2026-03-12  8:42 UTC (permalink / raw)
  To: Linus Walleij, Yixun Lan, Bartosz Golaszewski
  Cc: linux-gpio, linux-riscv, spacemit, linux-kernel, Junhui Liu

Return -ENOTSUPP instead of -EINVAL when encountering unsupported pin
configuration parameters. This is more logical and allows the GPIO
subsystem to gracefully handle unsupported parameters via functions like
gpio_set_config_with_argument_optional(), which specifically ignores
-ENOTSUPP but treats others as failure.

Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
---
 drivers/pinctrl/spacemit/pinctrl-k1.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/pinctrl/spacemit/pinctrl-k1.c b/drivers/pinctrl/spacemit/pinctrl-k1.c
index 62cab6f6cd0a..b0be62b1c816 100644
--- a/drivers/pinctrl/spacemit/pinctrl-k1.c
+++ b/drivers/pinctrl/spacemit/pinctrl-k1.c
@@ -674,7 +674,7 @@ static int spacemit_pinconf_get(struct pinctrl_dev *pctldev,
 			arg = 0;
 		break;
 	default:
-		return -EINVAL;
+		return -ENOTSUPP;
 	}
 
 	*config = pinconf_to_config_packed(param, arg);
@@ -740,7 +740,7 @@ static int spacemit_pinconf_generate_config(struct spacemit_pinctrl *pctrl,
 			}
 			break;
 		default:
-			return -EINVAL;
+			return -ENOTSUPP;
 		}
 	}
 
@@ -814,10 +814,12 @@ static int spacemit_pinconf_set(struct pinctrl_dev *pctldev,
 	struct spacemit_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
 	const struct spacemit_pin *spin = spacemit_get_pin(pctrl, pin);
 	u32 value;
+	int ret;
 
-	if (spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
-					     configs, num_configs, &value))
-		return -EINVAL;
+	ret = spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
+					       configs, num_configs, &value);
+	if (ret)
+		return ret;
 
 	return spacemit_pin_set_config(pctrl, pin, value);
 }
@@ -831,16 +833,17 @@ static int spacemit_pinconf_group_set(struct pinctrl_dev *pctldev,
 	const struct spacemit_pin *spin;
 	const struct group_desc *group;
 	u32 value;
-	int i;
+	int i, ret;
 
 	group = pinctrl_generic_get_group(pctldev, gsel);
 	if (!group)
 		return -EINVAL;
 
 	spin = spacemit_get_pin(pctrl, group->grp.pins[0]);
-	if (spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
-					     configs, num_configs, &value))
-		return -EINVAL;
+	ret = spacemit_pinconf_generate_config(pctrl, spin, pctrl->data->dconf,
+					       configs, num_configs, &value);
+	if (ret)
+		return ret;
 
 	for (i = 0; i < group->grp.npins; i++)
 		spacemit_pin_set_config(pctrl, group->grp.pins[i], value);

-- 
2.53.0


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

* [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support
  2026-03-12  8:42 [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Junhui Liu
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
@ 2026-03-12  8:42 ` Junhui Liu
  2026-03-13 14:05   ` Bartosz Golaszewski
  2026-03-14  8:20   ` Anand Moon
  2026-03-12 11:21 ` [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Yixun Lan
  2026-03-19 12:53 ` Linus Walleij
  3 siblings, 2 replies; 11+ messages in thread
From: Junhui Liu @ 2026-03-12  8:42 UTC (permalink / raw)
  To: Linus Walleij, Yixun Lan, Bartosz Golaszewski
  Cc: linux-gpio, linux-riscv, spacemit, linux-kernel, Junhui Liu

Assign gpiochip_generic_config() to the set_config() callback to support
pin configuration through the GPIO subsystem. This allows users to
configure GPIO pin attributes like pull-up/down when specifying a GPIO
line in the Device Tree.

Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
---
 drivers/gpio/gpio-spacemit-k1.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpio/gpio-spacemit-k1.c b/drivers/gpio/gpio-spacemit-k1.c
index dbd2e81094b9..5fe813b7f9bb 100644
--- a/drivers/gpio/gpio-spacemit-k1.c
+++ b/drivers/gpio/gpio-spacemit-k1.c
@@ -228,6 +228,7 @@ static int spacemit_gpio_add_bank(struct spacemit_gpio *sg,
 	gc->label		= dev_name(dev);
 	gc->request		= gpiochip_generic_request;
 	gc->free		= gpiochip_generic_free;
+	gc->set_config		= gpiochip_generic_config;
 	gc->ngpio		= SPACEMIT_NR_GPIOS_PER_BANK;
 	gc->base		= -1;
 	gc->of_gpio_n_cells	= 3;

-- 
2.53.0


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

* Re: [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1
  2026-03-12  8:42 [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Junhui Liu
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
  2026-03-12  8:42 ` [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support Junhui Liu
@ 2026-03-12 11:21 ` Yixun Lan
  2026-03-19 12:53 ` Linus Walleij
  3 siblings, 0 replies; 11+ messages in thread
From: Yixun Lan @ 2026-03-12 11:21 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Linus Walleij, Bartosz Golaszewski, linux-gpio, linux-riscv,
	spacemit, linux-kernel

Hi Junhui, 

On 16:42 Thu 12 Mar     , Junhui Liu wrote:
> This add GPIO pin configuration support for the Spacemit K1 SoC. Some
> use cases require configuring pin attributes like pull-up/down when using
> GPIO lines.
> 
> A practical example is the SD card detection pin on the Banana Pi BPI-F3
> board. Since it lacks an external pull-up circuit, the pin must be
> configured with an internal pull-up to function correctly. Such
> configurations can be specified directly in the devicetree:
> 
>     cd-gpios = <&gpio K1_GPIO(80) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
> 
> To address this, add the set_config() callback to the gpio-spacemit-k1
> driver to enable pin configuration through pinctrl, and modify the
> pinctrl driver to return -ENOTSUPP instead of -EINVAL for unsupported
> parameters, allowing the GPIO subsystem to gracefully handle them.
> 
Thanks for working on this, for the series

Reviewed-by: Yixun Lan <dlan@kernel.org>

> ---
> Junhui Liu (2):
>       pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
>       gpio: spacemit-k1: Add set_config callback support
> 
>  drivers/gpio/gpio-spacemit-k1.c       |  1 +
>  drivers/pinctrl/spacemit/pinctrl-k1.c | 21 ++++++++++++---------
>  2 files changed, 13 insertions(+), 9 deletions(-)
> ---
> base-commit: b29fb8829bff243512bb8c8908fd39406f9fd4c3
> change-id: 20260312-k1-gpio-set-config-f0873e92ebac
> 
> Best regards,
> -- 
> Junhui Liu <junhui.liu@pigmoral.tech>
> 

-- 
Yixun Lan (dlan)

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

* Re: [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
@ 2026-03-13 13:37   ` Yao Zi
  2026-03-13 13:52   ` Bartosz Golaszewski
  2026-03-14  8:20   ` Anand Moon
  2 siblings, 0 replies; 11+ messages in thread
From: Yao Zi @ 2026-03-13 13:37 UTC (permalink / raw)
  To: Junhui Liu, Linus Walleij, Yixun Lan, Bartosz Golaszewski
  Cc: linux-gpio, linux-riscv, spacemit, linux-kernel

On Thu, Mar 12, 2026 at 04:42:42PM +0800, Junhui Liu wrote:
> Return -ENOTSUPP instead of -EINVAL when encountering unsupported pin
> configuration parameters. This is more logical and allows the GPIO
> subsystem to gracefully handle unsupported parameters via functions like
> gpio_set_config_with_argument_optional(), which specifically ignores
> -ENOTSUPP but treats others as failure.

This sounds like a fix and deserves Fixes tag, though I'm not sure
whether backporting is appropriate since no existing system should be
affected...

Regards,
Yao Zi

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

* Re: [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
  2026-03-13 13:37   ` Yao Zi
@ 2026-03-13 13:52   ` Bartosz Golaszewski
  2026-03-14  8:20   ` Anand Moon
  2 siblings, 0 replies; 11+ messages in thread
From: Bartosz Golaszewski @ 2026-03-13 13:52 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Linus Walleij, Yixun Lan, linux-gpio, linux-riscv, spacemit,
	linux-kernel

On Thu, Mar 12, 2026 at 9:43 AM Junhui Liu <junhui.liu@pigmoral.tech> wrote:
>
> Return -ENOTSUPP instead of -EINVAL when encountering unsupported pin
> configuration parameters. This is more logical and allows the GPIO
> subsystem to gracefully handle unsupported parameters via functions like
> gpio_set_config_with_argument_optional(), which specifically ignores
> -ENOTSUPP but treats others as failure.
>
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---

Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>

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

* Re: [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support
  2026-03-12  8:42 ` [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support Junhui Liu
@ 2026-03-13 14:05   ` Bartosz Golaszewski
  2026-03-19 12:54     ` Linus Walleij
  2026-03-14  8:20   ` Anand Moon
  1 sibling, 1 reply; 11+ messages in thread
From: Bartosz Golaszewski @ 2026-03-13 14:05 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Linus Walleij, Yixun Lan, linux-gpio, linux-riscv, spacemit,
	linux-kernel

On Thu, Mar 12, 2026 at 9:43 AM Junhui Liu <junhui.liu@pigmoral.tech> wrote:
>
> Assign gpiochip_generic_config() to the set_config() callback to support
> pin configuration through the GPIO subsystem. This allows users to
> configure GPIO pin attributes like pull-up/down when specifying a GPIO
> line in the Device Tree.
>
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---
>  drivers/gpio/gpio-spacemit-k1.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpio/gpio-spacemit-k1.c b/drivers/gpio/gpio-spacemit-k1.c
> index dbd2e81094b9..5fe813b7f9bb 100644
> --- a/drivers/gpio/gpio-spacemit-k1.c
> +++ b/drivers/gpio/gpio-spacemit-k1.c
> @@ -228,6 +228,7 @@ static int spacemit_gpio_add_bank(struct spacemit_gpio *sg,
>         gc->label               = dev_name(dev);
>         gc->request             = gpiochip_generic_request;
>         gc->free                = gpiochip_generic_free;
> +       gc->set_config          = gpiochip_generic_config;
>         gc->ngpio               = SPACEMIT_NR_GPIOS_PER_BANK;
>         gc->base                = -1;
>         gc->of_gpio_n_cells     = 3;
>
> --
> 2.53.0
>

Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>

Linus, please take it through the pinctrl tree.

Bart

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

* Re: [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
  2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
  2026-03-13 13:37   ` Yao Zi
  2026-03-13 13:52   ` Bartosz Golaszewski
@ 2026-03-14  8:20   ` Anand Moon
  2 siblings, 0 replies; 11+ messages in thread
From: Anand Moon @ 2026-03-14  8:20 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Linus Walleij, Yixun Lan, Bartosz Golaszewski, linux-gpio,
	linux-riscv, spacemit, linux-kernel

Hi Junhui,

On Thu, 12 Mar 2026 at 14:14, Junhui Liu <junhui.liu@pigmoral.tech> wrote:
>
> Return -ENOTSUPP instead of -EINVAL when encountering unsupported pin
> configuration parameters. This is more logical and allows the GPIO
> subsystem to gracefully handle unsupported parameters via functions like
> gpio_set_config_with_argument_optional(), which specifically ignores
> -ENOTSUPP but treats others as failure.
>
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---
Reviewed-by: Anand Moon <linux.amoon@gmail.com>

Thanks
-Anand

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

* Re: [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support
  2026-03-12  8:42 ` [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support Junhui Liu
  2026-03-13 14:05   ` Bartosz Golaszewski
@ 2026-03-14  8:20   ` Anand Moon
  1 sibling, 0 replies; 11+ messages in thread
From: Anand Moon @ 2026-03-14  8:20 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Linus Walleij, Yixun Lan, Bartosz Golaszewski, linux-gpio,
	linux-riscv, spacemit, linux-kernel

Hi Junhui,

On Thu, 12 Mar 2026 at 14:14, Junhui Liu <junhui.liu@pigmoral.tech> wrote:
>
> Assign gpiochip_generic_config() to the set_config() callback to support
> pin configuration through the GPIO subsystem. This allows users to
> configure GPIO pin attributes like pull-up/down when specifying a GPIO
> line in the Device Tree.
>
> Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>
> ---

Reviewed-by: Anand Moon <linux.amoon@gmail.com>

Thanks
-Anand

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

* Re: [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1
  2026-03-12  8:42 [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Junhui Liu
                   ` (2 preceding siblings ...)
  2026-03-12 11:21 ` [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Yixun Lan
@ 2026-03-19 12:53 ` Linus Walleij
  3 siblings, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2026-03-19 12:53 UTC (permalink / raw)
  To: Junhui Liu
  Cc: Yixun Lan, Bartosz Golaszewski, linux-gpio, linux-riscv, spacemit,
	linux-kernel

Thank Junhui,

On Thu, Mar 12, 2026 at 9:43 AM Junhui Liu <junhui.liu@pigmoral.tech> wrote:

> This add GPIO pin configuration support for the Spacemit K1 SoC. Some
> use cases require configuring pin attributes like pull-up/down when using
> GPIO lines.
>
> A practical example is the SD card detection pin on the Banana Pi BPI-F3
> board. Since it lacks an external pull-up circuit, the pin must be
> configured with an internal pull-up to function correctly. Such
> configurations can be specified directly in the devicetree:
>
>     cd-gpios = <&gpio K1_GPIO(80) (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
>
> To address this, add the set_config() callback to the gpio-spacemit-k1
> driver to enable pin configuration through pinctrl, and modify the
> pinctrl driver to return -ENOTSUPP instead of -EINVAL for unsupported
> parameters, allowing the GPIO subsystem to gracefully handle them.
>
> ---
> Junhui Liu (2):
>       pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations
>       gpio: spacemit-k1: Add set_config callback support

Both patches applied to the pinctrl tree.

Yours,
Linus Walleij

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

* Re: [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support
  2026-03-13 14:05   ` Bartosz Golaszewski
@ 2026-03-19 12:54     ` Linus Walleij
  0 siblings, 0 replies; 11+ messages in thread
From: Linus Walleij @ 2026-03-19 12:54 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Junhui Liu, Yixun Lan, linux-gpio, linux-riscv, spacemit,
	linux-kernel

On Fri, Mar 13, 2026 at 3:05 PM Bartosz Golaszewski <brgl@kernel.org> wrote:
> On Thu, Mar 12, 2026 at 9:43 AM Junhui Liu <junhui.liu@pigmoral.tech> wrote:
> >
> > Assign gpiochip_generic_config() to the set_config() callback to support
> > pin configuration through the GPIO subsystem. This allows users to
> > configure GPIO pin attributes like pull-up/down when specifying a GPIO
> > line in the Device Tree.
> >
> > Signed-off-by: Junhui Liu <junhui.liu@pigmoral.tech>

> Acked-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
>
> Linus, please take it through the pinctrl tree.

OK done.

Yours,
Linus Walleij

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

end of thread, other threads:[~2026-03-19 12:54 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12  8:42 [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Junhui Liu
2026-03-12  8:42 ` [PATCH 1/2] pinctrl: spacemit: return -ENOTSUPP for unsupported pin configurations Junhui Liu
2026-03-13 13:37   ` Yao Zi
2026-03-13 13:52   ` Bartosz Golaszewski
2026-03-14  8:20   ` Anand Moon
2026-03-12  8:42 ` [PATCH 2/2] gpio: spacemit-k1: Add set_config callback support Junhui Liu
2026-03-13 14:05   ` Bartosz Golaszewski
2026-03-19 12:54     ` Linus Walleij
2026-03-14  8:20   ` Anand Moon
2026-03-12 11:21 ` [PATCH 0/2] gpio/pinctrl: spacemit: Add GPIO pin configuration support for K1 Yixun Lan
2026-03-19 12:53 ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox