Re: [linux-yocto][v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g][PATCH] gpio: s32: make irq_chip immutable

2023-11-29 Thread Bruce Ashfield
In message: 
[linux-yocto][v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g][PATCH] gpio: s32: 
make irq_chip immutable
on 28/11/2023 quanyang.w...@windriver.com wrote:

> From: Quanyang Wang 
> 
> The kernel requires that the flag IRQCHIP_IMMUTABLE is set for irqchip
> structure in gpio driver, or else it complains with:
> 
> gpio gpiochip0: (4009d700.siul2-gpio): not an immutable chip, please consider 
> fixing it!
> 
> Signed-off-by: Quanyang Wang 
> ---
> Hi Bruce,
> Would you please help merge this patch to the branches:
>   v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g
>   v6.1/standard/nxp-sdk-5.15/nxp-s32g

merged.

Bruce

> Thanks,
> Quanyang
> ---
>  drivers/gpio/gpio-siul2-s32cc.c | 25 +++--
>  1 file changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-siul2-s32cc.c b/drivers/gpio/gpio-siul2-s32cc.c
> index 668eab91859f2..5db92ad73772d 100644
> --- a/drivers/gpio/gpio-siul2-s32cc.c
> +++ b/drivers/gpio/gpio-siul2-s32cc.c
> @@ -153,7 +153,6 @@ struct siul2_gpio_dev {
>   struct regmap *irqmap;
>   struct regmap *eirqimcrsmap;
>   struct gpio_chip gc;
> - struct irq_chip irq;
>  
>   /* Mutual access to SIUL2 registers. */
>   raw_spinlock_t lock;
> @@ -473,6 +472,8 @@ static void siul2_gpio_irq_unmask(struct irq_data *data)
>   return;
>   }
>  
> + gpiochip_enable_irq(gc, gpio);
> +
>   /* Disable interrupt */
>   regmap_update_bits(gpio_dev->irqmap, SIUL2_DIRER0, mask, 0);
>  
> @@ -526,6 +527,8 @@ static void siul2_gpio_irq_mask(struct irq_data *data)
>   regmap_write(gpio_dev->eirqimcrsmap,
>SIUL2_EIRQ_REG(platdata->irqs[index].eirq),
>0);
> +
> + gpiochip_disable_irq(gc, gpio);
>  }
>  
>  static const struct regmap_config siul2_regmap_conf = {
> @@ -1101,6 +1104,16 @@ static int siul2_gpio_populate_names(struct device 
> *dev,
>   return 0;
>  }
>  
> +static const struct irq_chip siul2_irqchip = {
> + .name   = "gpio-siul2",
> + .irq_ack= siul2_gpio_irq_mask,
> + .irq_mask   = siul2_gpio_irq_mask,
> + .irq_unmask = siul2_gpio_irq_unmask,
> + .irq_set_type   = siul2_gpio_irq_set_type,
> + .flags = IRQCHIP_IMMUTABLE,
> + GPIOCHIP_IRQ_RESOURCE_HELPERS,
> +};
> +
>  static int siul2_gpio_probe(struct platform_device *pdev)
>  {
>   int err = 0;
> @@ -1173,14 +1186,6 @@ static int siul2_gpio_probe(struct platform_device 
> *pdev)
>   sizeof(*gpio_dev->pin_dir_bitmap);
>   gpio_dev->pin_dir_bitmap = devm_kzalloc(dev, bitmap_size,
>   GFP_KERNEL);
> - gpio_dev->irq = (struct irq_chip) {
> - .name   = dev_name(dev),
> - .irq_ack= siul2_gpio_irq_mask,
> - .irq_mask   = siul2_gpio_irq_mask,
> - .irq_unmask = siul2_gpio_irq_unmask,
> - .irq_set_type   = siul2_gpio_irq_set_type,
> - };
> -
>   gc->parent = dev;
>   gc->label = dev_name(dev);
>  
> @@ -1195,7 +1200,7 @@ static int siul2_gpio_probe(struct platform_device 
> *pdev)
>   gc->owner = THIS_MODULE;
>  
>   girq = >irq;
> - girq->chip = _dev->irq;
> + gpio_irq_chip_set_chip(girq, _irqchip);
>   girq->parent_handler = NULL;
>   girq->num_parents = 0;
>   girq->parents = NULL;
> -- 
> 2.36.1
> 

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13330): 
https://lists.yoctoproject.org/g/linux-yocto/message/13330
Mute This Topic: https://lists.yoctoproject.org/mt/102847614/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: 
https://lists.yoctoproject.org/g/linux-yocto/leave/6687884/21656/624485779/xyzzy
 [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



Re: [linux-yocto][v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g][PATCH] gpio: s32: make irq_chip immutable

2023-11-28 Thread Bruce Ashfield
FYI. I'll be a bit slow in merging these changes, I'm experiencing a
disk failure on my build machine, and I need to get it
fixed/replaced/another machine.

Bruce

On Tue, Nov 28, 2023 at 4:16 AM  wrote:
>
> From: Quanyang Wang 
>
> The kernel requires that the flag IRQCHIP_IMMUTABLE is set for irqchip
> structure in gpio driver, or else it complains with:
>
> gpio gpiochip0: (4009d700.siul2-gpio): not an immutable chip, please consider 
> fixing it!
>
> Signed-off-by: Quanyang Wang 
> ---
> Hi Bruce,
> Would you please help merge this patch to the branches:
> v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g
> v6.1/standard/nxp-sdk-5.15/nxp-s32g
> Thanks,
> Quanyang
> ---
>  drivers/gpio/gpio-siul2-s32cc.c | 25 +++--
>  1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpio/gpio-siul2-s32cc.c b/drivers/gpio/gpio-siul2-s32cc.c
> index 668eab91859f2..5db92ad73772d 100644
> --- a/drivers/gpio/gpio-siul2-s32cc.c
> +++ b/drivers/gpio/gpio-siul2-s32cc.c
> @@ -153,7 +153,6 @@ struct siul2_gpio_dev {
> struct regmap *irqmap;
> struct regmap *eirqimcrsmap;
> struct gpio_chip gc;
> -   struct irq_chip irq;
>
> /* Mutual access to SIUL2 registers. */
> raw_spinlock_t lock;
> @@ -473,6 +472,8 @@ static void siul2_gpio_irq_unmask(struct irq_data *data)
> return;
> }
>
> +   gpiochip_enable_irq(gc, gpio);
> +
> /* Disable interrupt */
> regmap_update_bits(gpio_dev->irqmap, SIUL2_DIRER0, mask, 0);
>
> @@ -526,6 +527,8 @@ static void siul2_gpio_irq_mask(struct irq_data *data)
> regmap_write(gpio_dev->eirqimcrsmap,
>  SIUL2_EIRQ_REG(platdata->irqs[index].eirq),
>  0);
> +
> +   gpiochip_disable_irq(gc, gpio);
>  }
>
>  static const struct regmap_config siul2_regmap_conf = {
> @@ -1101,6 +1104,16 @@ static int siul2_gpio_populate_names(struct device 
> *dev,
> return 0;
>  }
>
> +static const struct irq_chip siul2_irqchip = {
> +   .name   = "gpio-siul2",
> +   .irq_ack= siul2_gpio_irq_mask,
> +   .irq_mask   = siul2_gpio_irq_mask,
> +   .irq_unmask = siul2_gpio_irq_unmask,
> +   .irq_set_type   = siul2_gpio_irq_set_type,
> +   .flags = IRQCHIP_IMMUTABLE,
> +   GPIOCHIP_IRQ_RESOURCE_HELPERS,
> +};
> +
>  static int siul2_gpio_probe(struct platform_device *pdev)
>  {
> int err = 0;
> @@ -1173,14 +1186,6 @@ static int siul2_gpio_probe(struct platform_device 
> *pdev)
> sizeof(*gpio_dev->pin_dir_bitmap);
> gpio_dev->pin_dir_bitmap = devm_kzalloc(dev, bitmap_size,
> GFP_KERNEL);
> -   gpio_dev->irq = (struct irq_chip) {
> -   .name   = dev_name(dev),
> -   .irq_ack= siul2_gpio_irq_mask,
> -   .irq_mask   = siul2_gpio_irq_mask,
> -   .irq_unmask = siul2_gpio_irq_unmask,
> -   .irq_set_type   = siul2_gpio_irq_set_type,
> -   };
> -
> gc->parent = dev;
> gc->label = dev_name(dev);
>
> @@ -1195,7 +1200,7 @@ static int siul2_gpio_probe(struct platform_device 
> *pdev)
> gc->owner = THIS_MODULE;
>
> girq = >irq;
> -   girq->chip = _dev->irq;
> +   gpio_irq_chip_set_chip(girq, _irqchip);
> girq->parent_handler = NULL;
> girq->num_parents = 0;
> girq->parents = NULL;
> --
> 2.36.1
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13319): 
https://lists.yoctoproject.org/g/linux-yocto/message/13319
Mute This Topic: https://lists.yoctoproject.org/mt/102847614/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: 
https://lists.yoctoproject.org/g/linux-yocto/leave/6687884/21656/624485779/xyzzy
 [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-



[linux-yocto][v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g][PATCH] gpio: s32: make irq_chip immutable

2023-11-28 Thread quanyang.wang via lists.yoctoproject.org
From: Quanyang Wang 

The kernel requires that the flag IRQCHIP_IMMUTABLE is set for irqchip
structure in gpio driver, or else it complains with:

gpio gpiochip0: (4009d700.siul2-gpio): not an immutable chip, please consider 
fixing it!

Signed-off-by: Quanyang Wang 
---
Hi Bruce,
Would you please help merge this patch to the branches:
v6.1/standard/preempt-rt/nxp-sdk-5.15/nxp-s32g
v6.1/standard/nxp-sdk-5.15/nxp-s32g
Thanks,
Quanyang
---
 drivers/gpio/gpio-siul2-s32cc.c | 25 +++--
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/gpio/gpio-siul2-s32cc.c b/drivers/gpio/gpio-siul2-s32cc.c
index 668eab91859f2..5db92ad73772d 100644
--- a/drivers/gpio/gpio-siul2-s32cc.c
+++ b/drivers/gpio/gpio-siul2-s32cc.c
@@ -153,7 +153,6 @@ struct siul2_gpio_dev {
struct regmap *irqmap;
struct regmap *eirqimcrsmap;
struct gpio_chip gc;
-   struct irq_chip irq;
 
/* Mutual access to SIUL2 registers. */
raw_spinlock_t lock;
@@ -473,6 +472,8 @@ static void siul2_gpio_irq_unmask(struct irq_data *data)
return;
}
 
+   gpiochip_enable_irq(gc, gpio);
+
/* Disable interrupt */
regmap_update_bits(gpio_dev->irqmap, SIUL2_DIRER0, mask, 0);
 
@@ -526,6 +527,8 @@ static void siul2_gpio_irq_mask(struct irq_data *data)
regmap_write(gpio_dev->eirqimcrsmap,
 SIUL2_EIRQ_REG(platdata->irqs[index].eirq),
 0);
+
+   gpiochip_disable_irq(gc, gpio);
 }
 
 static const struct regmap_config siul2_regmap_conf = {
@@ -1101,6 +1104,16 @@ static int siul2_gpio_populate_names(struct device *dev,
return 0;
 }
 
+static const struct irq_chip siul2_irqchip = {
+   .name   = "gpio-siul2",
+   .irq_ack= siul2_gpio_irq_mask,
+   .irq_mask   = siul2_gpio_irq_mask,
+   .irq_unmask = siul2_gpio_irq_unmask,
+   .irq_set_type   = siul2_gpio_irq_set_type,
+   .flags = IRQCHIP_IMMUTABLE,
+   GPIOCHIP_IRQ_RESOURCE_HELPERS,
+};
+
 static int siul2_gpio_probe(struct platform_device *pdev)
 {
int err = 0;
@@ -1173,14 +1186,6 @@ static int siul2_gpio_probe(struct platform_device *pdev)
sizeof(*gpio_dev->pin_dir_bitmap);
gpio_dev->pin_dir_bitmap = devm_kzalloc(dev, bitmap_size,
GFP_KERNEL);
-   gpio_dev->irq = (struct irq_chip) {
-   .name   = dev_name(dev),
-   .irq_ack= siul2_gpio_irq_mask,
-   .irq_mask   = siul2_gpio_irq_mask,
-   .irq_unmask = siul2_gpio_irq_unmask,
-   .irq_set_type   = siul2_gpio_irq_set_type,
-   };
-
gc->parent = dev;
gc->label = dev_name(dev);
 
@@ -1195,7 +1200,7 @@ static int siul2_gpio_probe(struct platform_device *pdev)
gc->owner = THIS_MODULE;
 
girq = >irq;
-   girq->chip = _dev->irq;
+   gpio_irq_chip_set_chip(girq, _irqchip);
girq->parent_handler = NULL;
girq->num_parents = 0;
girq->parents = NULL;
-- 
2.36.1


-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13318): 
https://lists.yoctoproject.org/g/linux-yocto/message/13318
Mute This Topic: https://lists.yoctoproject.org/mt/102847614/21656
Group Owner: linux-yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-