irqdomain: Allow domain matching on irq_fwspec
authorMarc Zyngier <marc.zyngier@arm.com>
Mon, 11 Apr 2016 08:57:51 +0000 (09:57 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Mon, 2 May 2016 11:42:50 +0000 (13:42 +0200)
commit651e8b54abdeeaa36f5f54ffa05c18707a3cc1d0
tree61c85560b32b720e5f1ec99b1c8980ea02d346bd
parent7cec18a3906b52e855c9386650c0226bbe594a4c
irqdomain: Allow domain matching on irq_fwspec

When iterating over the irq domain list, we try to match a domain
either by calling a match() function or by comparing a number
of fields passed as parameters.

Both approaches are a bit restrictive:
- match() is DT specific and only takes a device node
- the fallback case only deals with the fwnode_handle

It would be useful if we had a per-domain function that would
actually perform the matching check on the whole of the
irq_fwspec structure. This would allow for a domain to triage
matching attempts that need to extend beyond the fwnode.

Let's introduce irq_find_matching_fwspec(), which takes a full
blown irq_fwspec structure, and call into a select() function
implemented by the irqdomain. irq_find_matching_fwnode() is
made a wrapper around irq_find_matching_fwspec in order to
preserve compatibility.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: devicetree@vger.kernel.org
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Rob Herring <robh+dt@kernel.org>
Link: http://lkml.kernel.org/r/1460365075-7316-2-git-send-email-marc.zyngier@arm.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
include/linux/irqdomain.h
kernel/irq/irqdomain.c