diff options
| author | Marc Zyngier <[email protected]> | 2015-10-13 12:51:35 +0100 | 
|---|---|---|
| committer | Thomas Gleixner <[email protected]> | 2015-10-13 19:01:24 +0200 | 
| commit | 1bf4ddc46c5d6123897a54cea4ffe3e90f30600b (patch) | |
| tree | 6a14bb9d75d3f6dc90fdfd032fcabfa8aa9823c6 /kernel | |
| parent | c0131f09de8c2d301814cac86d78f643b8ee0574 (diff) | |
irqdomain: Introduce irq_domain_create_{linear, tree}
Just like we have irq_domain_add_{linear,tree} to create a irq domain
identified by an of_node, introduce irq_domain_create_{linear,tree}
that do the same thing, except that they take a struct fwnode_handle.
Existing functions get rewritten in terms of the new ones so that
everything keeps working as before (and __irq_domain_add is now
fwnode_handle based as well).
Signed-off-by: Marc Zyngier <[email protected]>
Reviewed-and-tested-by: Hanjun Guo <[email protected]>
Tested-by: Lorenzo Pieralisi <[email protected]>
Cc: <[email protected]>
Cc: Tomasz Nowicki <[email protected]>
Cc: Suravee Suthikulpanit <[email protected]>
Cc: Graeme Gregory <[email protected]>
Cc: Jake Oshins <[email protected]>
Cc: Jiang Liu <[email protected]>
Cc: Jason Cooper <[email protected]>
Cc: Rafael J. Wysocki <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Thomas Gleixner <[email protected]>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/irqdomain.c | 11 | 
1 files changed, 6 insertions, 5 deletions
| diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index b1fda6dad467..de6d7493190b 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -40,13 +40,15 @@ static void irq_domain_check_hierarchy(struct irq_domain *domain);   * Allocates and initialize and irq_domain structure.   * Returns pointer to IRQ domain, or NULL on failure.   */ -struct irq_domain *__irq_domain_add(struct device_node *of_node, int size, +struct irq_domain *__irq_domain_add(struct fwnode_handle *fwnode, int size,  				    irq_hw_number_t hwirq_max, int direct_max,  				    const struct irq_domain_ops *ops,  				    void *host_data)  {  	struct irq_domain *domain; -	struct fwnode_handle *fwnode; +	struct device_node *of_node; + +	of_node = to_of_node(fwnode);  	domain = kzalloc_node(sizeof(*domain) + (sizeof(unsigned int) * size),  			      GFP_KERNEL, of_node_to_nid(of_node)); @@ -54,7 +56,6 @@ struct irq_domain *__irq_domain_add(struct device_node *of_node, int size,  		return NULL;  	of_node_get(of_node); -	fwnode = of_node ? &of_node->fwnode : NULL;  	/* Fill structure */  	INIT_RADIX_TREE(&domain->revmap_tree, GFP_KERNEL); @@ -137,7 +138,7 @@ struct irq_domain *irq_domain_add_simple(struct device_node *of_node,  {  	struct irq_domain *domain; -	domain = __irq_domain_add(of_node, size, size, 0, ops, host_data); +	domain = __irq_domain_add(of_node_to_fwnode(of_node), size, size, 0, ops, host_data);  	if (!domain)  		return NULL; @@ -181,7 +182,7 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,  {  	struct irq_domain *domain; -	domain = __irq_domain_add(of_node, first_hwirq + size, +	domain = __irq_domain_add(of_node_to_fwnode(of_node), first_hwirq + size,  				  first_hwirq + size, 0, ops, host_data);  	if (domain)  		irq_domain_associate_many(domain, first_irq, first_hwirq, size); |