[PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines

William Breathitt Gray posted 3 patches 3 months, 3 weeks ago
[PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by William Breathitt Gray 3 months, 3 weeks ago
The direction of the IDIO-16 GPIO lines is fixed with the first 16 lines
as output and the remaining 16 lines as input. Set the gpio_config
fixed_direction_output member to represent the fixed direction of the
GPIO lines.

Fixes: db02247827ef ("gpio: idio-16: Migrate to the regmap API")
Reported-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Closes: https://lore.kernel.org/r/9b0375fd-235f-4ee1-a7fa-daca296ef6bf@nutanix.com
Suggested-by: Michael Walle <mwalle@kernel.org>
Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
Cc: stable@vger.kernel.org
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: William Breathitt Gray <wbg@kernel.org>
---
 drivers/gpio/gpio-idio-16.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpio/gpio-idio-16.c b/drivers/gpio/gpio-idio-16.c
index 0103be977c66bb8d165c1c92123368be6832d120..4fbae6f6a49727df40f2793b42ca207d78ec272b 100644
--- a/drivers/gpio/gpio-idio-16.c
+++ b/drivers/gpio/gpio-idio-16.c
@@ -6,6 +6,7 @@
 
 #define DEFAULT_SYMBOL_NAMESPACE "GPIO_IDIO_16"
 
+#include <linux/bitmap.h>
 #include <linux/bits.h>
 #include <linux/device.h>
 #include <linux/err.h>
@@ -107,6 +108,7 @@ int devm_idio_16_regmap_register(struct device *const dev,
 	struct idio_16_data *data;
 	struct regmap_irq_chip *chip;
 	struct regmap_irq_chip_data *chip_data;
+	DECLARE_BITMAP(fixed_direction_output, IDIO_16_NGPIO);
 
 	if (!config->parent)
 		return -EINVAL;
@@ -164,6 +166,9 @@ int devm_idio_16_regmap_register(struct device *const dev,
 	gpio_config.irq_domain = regmap_irq_get_domain(chip_data);
 	gpio_config.reg_mask_xlate = idio_16_reg_mask_xlate;
 
+	bitmap_from_u64(fixed_direction_output, GENMASK_U64(15, 0));
+	gpio_config.fixed_direction_output = fixed_direction_output;
+
 	return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
 }
 EXPORT_SYMBOL_GPL(devm_idio_16_regmap_register);

-- 
2.51.0
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by Bartosz Golaszewski 3 months, 2 weeks ago
On Mon, 20 Oct 2025 10:51:46 +0200, William Breathitt Gray
<wbg@kernel.org> said:
> The direction of the IDIO-16 GPIO lines is fixed with the first 16 lines
> as output and the remaining 16 lines as input. Set the gpio_config
> fixed_direction_output member to represent the fixed direction of the
> GPIO lines.
>
> Fixes: db02247827ef ("gpio: idio-16: Migrate to the regmap API")
> Reported-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
> Closes: https://lore.kernel.org/r/9b0375fd-235f-4ee1-a7fa-daca296ef6bf@nutanix.com
> Suggested-by: Michael Walle <mwalle@kernel.org>
> Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
> Cc: stable@vger.kernel.org
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Signed-off-by: William Breathitt Gray <wbg@kernel.org>
> ---
>  drivers/gpio/gpio-idio-16.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpio/gpio-idio-16.c b/drivers/gpio/gpio-idio-16.c
> index 0103be977c66bb8d165c1c92123368be6832d120..4fbae6f6a49727df40f2793b42ca207d78ec272b 100644
> --- a/drivers/gpio/gpio-idio-16.c
> +++ b/drivers/gpio/gpio-idio-16.c
> @@ -6,6 +6,7 @@
>
>  #define DEFAULT_SYMBOL_NAMESPACE "GPIO_IDIO_16"
>
> +#include <linux/bitmap.h>
>  #include <linux/bits.h>
>  #include <linux/device.h>
>  #include <linux/err.h>
> @@ -107,6 +108,7 @@ int devm_idio_16_regmap_register(struct device *const dev,
>  	struct idio_16_data *data;
>  	struct regmap_irq_chip *chip;
>  	struct regmap_irq_chip_data *chip_data;
> +	DECLARE_BITMAP(fixed_direction_output, IDIO_16_NGPIO);
>
>  	if (!config->parent)
>  		return -EINVAL;
> @@ -164,6 +166,9 @@ int devm_idio_16_regmap_register(struct device *const dev,
>  	gpio_config.irq_domain = regmap_irq_get_domain(chip_data);
>  	gpio_config.reg_mask_xlate = idio_16_reg_mask_xlate;
>
> +	bitmap_from_u64(fixed_direction_output, GENMASK_U64(15, 0));
> +	gpio_config.fixed_direction_output = fixed_direction_output;
> +
>  	return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
>  }
>  EXPORT_SYMBOL_GPL(devm_idio_16_regmap_register);
>
> --
> 2.51.0
>
>

Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
.fixed_direction_output configuration parameter") so I cannot queue it for
v6.18. What do you want me to do? Send the first two ones upstream and apply
this for v6.19?

Bartosz
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by William Breathitt Gray 3 months, 2 weeks ago
On Tue, Oct 21, 2025 at 09:21:38AM -0400, Bartosz Golaszewski wrote:
> On Mon, 20 Oct 2025 10:51:46 +0200, William Breathitt Gray
> <wbg@kernel.org> said:
> > The direction of the IDIO-16 GPIO lines is fixed with the first 16 lines
> > as output and the remaining 16 lines as input. Set the gpio_config
> > fixed_direction_output member to represent the fixed direction of the
> > GPIO lines.
> >
> > Fixes: db02247827ef ("gpio: idio-16: Migrate to the regmap API")
> > Reported-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
> > Closes: https://lore.kernel.org/r/9b0375fd-235f-4ee1-a7fa-daca296ef6bf@nutanix.com
> > Suggested-by: Michael Walle <mwalle@kernel.org>
> > Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
> > Cc: stable@vger.kernel.org
> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Signed-off-by: William Breathitt Gray <wbg@kernel.org>
> > ---
> >  drivers/gpio/gpio-idio-16.c | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/gpio/gpio-idio-16.c b/drivers/gpio/gpio-idio-16.c
> > index 0103be977c66bb8d165c1c92123368be6832d120..4fbae6f6a49727df40f2793b42ca207d78ec272b 100644
> > --- a/drivers/gpio/gpio-idio-16.c
> > +++ b/drivers/gpio/gpio-idio-16.c
> > @@ -6,6 +6,7 @@
> >
> >  #define DEFAULT_SYMBOL_NAMESPACE "GPIO_IDIO_16"
> >
> > +#include <linux/bitmap.h>
> >  #include <linux/bits.h>
> >  #include <linux/device.h>
> >  #include <linux/err.h>
> > @@ -107,6 +108,7 @@ int devm_idio_16_regmap_register(struct device *const dev,
> >  	struct idio_16_data *data;
> >  	struct regmap_irq_chip *chip;
> >  	struct regmap_irq_chip_data *chip_data;
> > +	DECLARE_BITMAP(fixed_direction_output, IDIO_16_NGPIO);
> >
> >  	if (!config->parent)
> >  		return -EINVAL;
> > @@ -164,6 +166,9 @@ int devm_idio_16_regmap_register(struct device *const dev,
> >  	gpio_config.irq_domain = regmap_irq_get_domain(chip_data);
> >  	gpio_config.reg_mask_xlate = idio_16_reg_mask_xlate;
> >
> > +	bitmap_from_u64(fixed_direction_output, GENMASK_U64(15, 0));
> > +	gpio_config.fixed_direction_output = fixed_direction_output;
> > +
> >  	return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(dev, &gpio_config));
> >  }
> >  EXPORT_SYMBOL_GPL(devm_idio_16_regmap_register);
> >
> > --
> > 2.51.0
> >
> >
> 
> Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
> .fixed_direction_output configuration parameter") so I cannot queue it for
> v6.18. What do you want me to do? Send the first two ones upstream and apply
> this for v6.19?
> 
> Bartosz

Sorry for the confusion this caused. It looks like `b4 prep --edit-deps`
will add explict dependencies, so I'll use that from now on to hopefully
prevent this kind of problem in the future.

So we'll need this fix in v6.18 as well because the IDIO-16 drivers are
completely broken right now. In theory we could revert the entire GPIO
regmap migration series [^1], but that would be a far more invasive
solution prone to further regressions. Instead, picking the commit
ae495810cffe dependency with the remaining patches is the cleanest
solution to this regression.

William Breathitt Gray

[^1] https://lore.kernel.org/r/cover.1680618405.git.william.gray@linaro.org
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by Bartosz Golaszewski 3 months, 2 weeks ago
On Wed, Oct 22, 2025 at 4:19 AM William Breathitt Gray <wbg@kernel.org> wrote:
> >
> > Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
> > .fixed_direction_output configuration parameter") so I cannot queue it for
> > v6.18. What do you want me to do? Send the first two ones upstream and apply
> > this for v6.19?
> >
> > Bartosz
>
> Sorry for the confusion this caused. It looks like `b4 prep --edit-deps`
> will add explict dependencies, so I'll use that from now on to hopefully
> prevent this kind of problem in the future.
>
> So we'll need this fix in v6.18 as well because the IDIO-16 drivers are
> completely broken right now. In theory we could revert the entire GPIO
> regmap migration series [^1], but that would be a far more invasive
> solution prone to further regressions. Instead, picking the commit
> ae495810cffe dependency with the remaining patches is the cleanest
> solution to this regression.
>
> William Breathitt Gray
>
> [^1] https://lore.kernel.org/r/cover.1680618405.git.william.gray@linaro.org

Eh... Ok I will pick ae495810cffe into fixes, send it upstream with
this series and then pull v6.18-rc3 back into gpio/for-next and
resolve the conflict.

Bartosz
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by Andy Shevchenko 3 months, 2 weeks ago
On Tue, Oct 21, 2025 at 09:21:38AM -0400, Bartosz Golaszewski wrote:
> On Mon, 20 Oct 2025 10:51:46 +0200, William Breathitt Gray
> <wbg@kernel.org> said:

...

> > Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter

> Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
> .fixed_direction_output configuration parameter") so I cannot queue it for
> v6.18. What do you want me to do? Send the first two ones upstream and apply
> this for v6.19?

Why can't this be pulled from some IB/IT as part of the fix?

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by Bartosz Golaszewski 3 months, 2 weeks ago
On Tue, Oct 21, 2025 at 4:41 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> On Tue, Oct 21, 2025 at 09:21:38AM -0400, Bartosz Golaszewski wrote:
> > On Mon, 20 Oct 2025 10:51:46 +0200, William Breathitt Gray
> > <wbg@kernel.org> said:
>
> ...
>
> > > Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
>
> > Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
> > .fixed_direction_output configuration parameter") so I cannot queue it for
> > v6.18. What do you want me to do? Send the first two ones upstream and apply
> > this for v6.19?
>
> Why can't this be pulled from some IB/IT as part of the fix?
>

These kinds of things should be signalled before applying the patches
that should go to an immutable branch. I would now have to rebase the
my for-next branch. Also: the commit in question brings in a new
feature, not a fix.

Bartosz
Re: [PATCH v2 3/3] gpio: idio-16: Define fixed direction of the GPIO lines
Posted by Andy Shevchenko 3 months, 2 weeks ago
On Tue, Oct 21, 2025 at 04:49:05PM +0200, Bartosz Golaszewski wrote:
> On Tue, Oct 21, 2025 at 4:41 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Tue, Oct 21, 2025 at 09:21:38AM -0400, Bartosz Golaszewski wrote:
> > > On Mon, 20 Oct 2025 10:51:46 +0200, William Breathitt Gray
> > > <wbg@kernel.org> said:

...

> > > > Cc: stable@vger.kernel.org # ae495810cffe: gpio: regmap: add the .fixed_direction_output configuration parameter
> >
> > > Turns out, this requires commit ae495810cffe ("gpio: regmap: add the
> > > .fixed_direction_output configuration parameter") so I cannot queue it for
> > > v6.18. What do you want me to do? Send the first two ones upstream and apply
> > > this for v6.19?
> >
> > Why can't this be pulled from some IB/IT as part of the fix?
> 
> These kinds of things should be signalled before applying the patches
> that should go to an immutable branch. I would now have to rebase the
> my for-next branch.

No objections on this one, this is unfortunate.

> Also: the commit in question brings in a new feature, not a fix.

I can argue that this is part of the fix.

-- 
With Best Regards,
Andy Shevchenko