[PATCH 1/1] of/irq: store IRQ trigger/level in struct resource flags

Javier Martinez Canillas javier.martinez at collabora.co.uk
Thu Jun 6 04:47:55 EDT 2013


On 06/06/2013 01:34 AM, Grant Likely wrote:
> On Fri,  5 Apr 2013 09:48:08 +0200, Javier Martinez Canillas <javier.martinez at collabora.co.uk> wrote:
> [...]
>> irq_of_parse_and_map() calls to irq_create_of_mapping() which calls to
>> the correct xlate function handler according to "#interrupt-cells"
>> (irq_domain_xlate_onecell or irq_domain_xlate_twocell) and to
>> irq_set_irq_type() to set the IRQ type.
>> 
>> But the type is never returned so it can't be saved on the IRQ struct
>> resource flags member.
>> 
>> This means that drivers that need the IRQ type/level flags defined in
>> the DT won't be able to get it.
>> 
>> Signed-off-by: Javier Martinez Canillas <javier.martinez at collabora.co.uk>
> [...]
>> diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h
>> index 535cecf..98aec57 100644
>> --- a/include/linux/of_irq.h
>> +++ b/include/linux/of_irq.h
>> @@ -66,6 +66,10 @@ extern int of_irq_map_one(struct device_node *device, int index,
>>  extern unsigned int irq_create_of_mapping(struct device_node *controller,
>>  					  const u32 *intspec,
>>  					  unsigned int intsize);
>> +extern unsigned int irq_create_of_mapping_type(struct device_node *controller,
>> +					       const u32 *intspec,
>> +					       unsigned int intsize,
>> +					       unsigned int *otype);

Hi Grant, thanks a lot for your feedback.

> 
> I count 11 users of irq_create_of_mapping(). That's a managable number
> to update.

Yes, but since of_irq_to_resource() doesn't call irq_create_of_mapping()
directly but it does though irq_of_parse_and_map(), then this function signature
has to be modified too.

I'm counting 223 users of irq_of_parse_and_map() so the change is not that small
anymore. Another approach is to call of_irq_map_one() and
irq_create_of_mapping() directly from of_irq_to_resource() instead of using
irq_of_parse_and_map() but I don't like that...

> Instead of creating a new function, please modify the
> existing one and split it off into a separate patch.

But that won't break git bisect-ability? or do you mean to first just change the
functions signatures by adding an argument and update its users and then in a
separate patch do the actual change to the functions to store the IRQ?

> Otherwise the patch looks fine to me.
> 
> g.
> 

Best regards,
Javier



More information about the linux-arm-kernel mailing list