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 <quanyang.w...@windriver.com> > > 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 <quanyang.w...@windriver.com> > --- > 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 = &gc->irq; > - girq->chip = &gpio_dev->irq; > + gpio_irq_chip_set_chip(girq, &siul2_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] -=-=-=-=-=-=-=-=-=-=-=-