irq_create_fwspec_mapping() in 4.8-rc2

Marc Zyngier marc.zyngier at arm.com
Fri Sep 2 08:31:09 PDT 2016


+Linus, Jean-Christophe, Jon

On 02/09/16 16:15, Andras Szemzo wrote:
> Hi,
> 
>> On 02 Sep 2016, at 17:09, Marc Zyngier <marc.zyngier at arm.com> wrote:
>>
>> So something has already configured the interrupt to be
>> IRQ_TYPE_EDGE_BOTH, and this clashes with your
>> IRQ_TYPE_EDGE_FALLING.
>>
>> My bet is on this one:
>>
>> diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
>> index 80daead..9f09041 100644
>> --- a/drivers/pinctrl/pinctrl-at91.c
>> +++ b/drivers/pinctrl/pinctrl-at91.c
>> @@ -1614,7 +1614,7 @@ static int at91_gpio_of_irq_setup(struct platform_device *pdev,
>> 				   &gpio_irqchip,
>> 				   0,
>> 				   handle_edge_irq,
>> -				   IRQ_TYPE_EDGE_BOTH);
>> +				   IRQ_TYPE_NONE);
>> 	if (ret) {
>> 		dev_err(&pdev->dev, "at91_gpio.%d: Couldn't add irqchip to gpiochip.\n",
>> 			at91_gpio->pioc_idx);
>>
>> Can you give it a go and let me know what happens?
> 
> yes, this fixed the problem. Thank you, it was fast!

Right. So the at91 pinctlr seems to enforce a default configuration. The
question is *why*? All interrupts connected to it should provide their
own trigger coming from DT.

As we now actually check that we have some consistency between what is
configured and what is requested, it is bound to fail, unless you happen
to match the default.

What am I missing?

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...



More information about the linux-arm-kernel mailing list