Re: [PATCH 1/3] pinctrl: airoha: limit GPIO interrupts to interrupt-capable pins

Ahmed Naseef <[email protected]>
Newsgroups org.infradead.lists.linux-mediatek,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel
Message-ID <aoPq5F8dVl/[email protected]>
> > +{
> > +	struct airoha_pinctrl *pinctrl = gpiochip_get_data(gc);
> > +	unsigned int num_irq_pins = pinctrl->num_irq_pins;
> > +
> > +	if (num_irq_pins < ngpios)
> > +		bitmap_clear(valid_mask, num_irq_pins, ngpios - num_irq_pins);
> > +}
> 
> I'm not sure if there is something that gives a sane error log if this
> trigger. Maybe make it explicit?
> 
> Either way:
> Reviewed-by: Benjamin Larsson <[email protected]>

Nothing logs the limit itself, the -ENXIO only surfaces at the consumer.

However Most of the  gpio_irq_chip::init_valid_mask implementations in the
tree log nothing at all. Only pinctrl-baytrail does, and not for the valid
range.

Happy to make it explicit if you prefer, at probe:

        if (pinctrl->num_irq_pins < AIROHA_NUM_PINS)
                dev_dbg(dev, "GPIO%u and above cannot be used as interrupts\n",
                        pinctrl->num_irq_pins);

Thanks for the review!

Linus, since  the merge window is open. Is this still worth taking for v7.3, or
would you rather it soaked in for v7.4? 2/3 has no DT ack yet either.

Ahmed
> 
> > +
> >   static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
> >   					struct platform_device *pdev)
> >   {
> > @@ -362,6 +383,7 @@ static int airoha_pinctrl_add_gpiochip(struct airoha_pinctrl *pinctrl,
> >   	girq->default_type = IRQ_TYPE_NONE;
> >   	girq->handler = handle_bad_irq;
> > +	girq->init_valid_mask = airoha_gpio_init_valid_mask;
> >   	gpio_irq_chip_set_chip(girq, &airoha_gpio_irq_chip);
> >   	irq = platform_get_irq(pdev, 0);
> > @@ -848,6 +870,7 @@ int airoha_pinctrl_probe(struct platform_device *pdev)
> >   	pinctrl->grps = data->grps;
> >   	pinctrl->funcs = data->funcs;
> >   	pinctrl->confs_info = data->confs_info;
> > +	pinctrl->num_irq_pins = data->num_irq_pins;
> >   	err = pinctrl_enable(pinctrl->ctrl);
> >   	if (err)
> > diff --git a/drivers/pinctrl/airoha/pinctrl-an7563.c b/drivers/pinctrl/airoha/pinctrl-an7563.c
> > index 40cbbe90cc46..f011c6c9ccce 100644
> > --- a/drivers/pinctrl/airoha/pinctrl-an7563.c
> > +++ b/drivers/pinctrl/airoha/pinctrl-an7563.c
> > @@ -1069,6 +1069,7 @@ static const struct airoha_pinctrl_match_data pinctrl_match_data = {
> >   	.num_grps = ARRAY_SIZE(pinctrl_groups),
> >   	.funcs = pinctrl_funcs,
> >   	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
> > +	.num_irq_pins = AIROHA_NUM_PINS,
> >   	.confs_info = {
> >   		[AIROHA_PINCTRL_CONFS_PULLUP] = {
> >   			.confs = pinctrl_pullup_conf,
> > diff --git a/drivers/pinctrl/airoha/pinctrl-an7581.c b/drivers/pinctrl/airoha/pinctrl-an7581.c
> > index 2fcf88106e11..bfb777594811 100644
> > --- a/drivers/pinctrl/airoha/pinctrl-an7581.c
> > +++ b/drivers/pinctrl/airoha/pinctrl-an7581.c
> > @@ -1441,6 +1441,7 @@ static const struct airoha_pinctrl_match_data pinctrl_match_data = {
> >   	.num_grps = ARRAY_SIZE(pinctrl_groups),
> >   	.funcs = pinctrl_funcs,
> >   	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
> > +	.num_irq_pins = AIROHA_NUM_PINS,
> >   	.confs_info = {
> >   		[AIROHA_PINCTRL_CONFS_PULLUP] = {
> >   			.confs = pinctrl_pullup_conf,
> > diff --git a/drivers/pinctrl/airoha/pinctrl-an7583.c b/drivers/pinctrl/airoha/pinctrl-an7583.c
> > index 2c3a75c35915..1cd0f442ddc1 100644
> > --- a/drivers/pinctrl/airoha/pinctrl-an7583.c
> > +++ b/drivers/pinctrl/airoha/pinctrl-an7583.c
> > @@ -1471,6 +1471,7 @@ static const struct airoha_pinctrl_match_data pinctrl_match_data = {
> >   	.num_grps = ARRAY_SIZE(pinctrl_groups),
> >   	.funcs = pinctrl_funcs,
> >   	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
> > +	.num_irq_pins = AIROHA_NUM_PINS,
> >   	.confs_info = {
> >   		[AIROHA_PINCTRL_CONFS_PULLUP] = {
> >   			.confs = pinctrl_pullup_conf,
> > diff --git a/drivers/pinctrl/airoha/pinctrl-en7523.c b/drivers/pinctrl/airoha/pinctrl-en7523.c
> > index 5aa39bacf460..b0c5e60f0aeb 100644
> > --- a/drivers/pinctrl/airoha/pinctrl-en7523.c
> > +++ b/drivers/pinctrl/airoha/pinctrl-en7523.c
> > @@ -1113,6 +1113,7 @@ static const struct airoha_pinctrl_match_data pinctrl_match_data = {
> >   	.num_grps = ARRAY_SIZE(pinctrl_groups),
> >   	.funcs = pinctrl_funcs,
> >   	.num_funcs = ARRAY_SIZE(pinctrl_funcs),
> > +	.num_irq_pins = AIROHA_NUM_PINS,
> >   	.confs_info = {
> >   		[AIROHA_PINCTRL_CONFS_PULLUP] = {
> >   			.confs = pinctrl_pullup_conf,
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.