diff options
Diffstat (limited to 'kernel/irq/irqdomain.c')
| -rw-r--r-- | kernel/irq/irqdomain.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 706724e9835..eb5e10e32e0 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -10,6 +10,7 @@  #include <linux/mutex.h>  #include <linux/of.h>  #include <linux/of_address.h> +#include <linux/of_irq.h>  #include <linux/topology.h>  #include <linux/seq_file.h>  #include <linux/slab.h> @@ -26,14 +27,14 @@ static struct irq_domain *irq_default_domain;   * __irq_domain_add() - Allocate a new irq_domain data structure   * @of_node: optional device-tree node of the interrupt controller   * @size: Size of linear map; 0 for radix mapping only + * @hwirq_max: Maximum number of interrupts supported by controller   * @direct_max: Maximum value of direct maps; Use ~0 for no limit; 0 for no   *              direct mapping   * @ops: map/unmap domain callbacks   * @host_data: Controller private data pointer   * - * Allocates and initialize and irq_domain structure.  Caller is expected to - * register allocated irq_domain with irq_domain_register().  Returns pointer - * to IRQ domain, or NULL on failure. + * 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,  				    irq_hw_number_t hwirq_max, int direct_max, @@ -465,27 +466,26 @@ int irq_create_strict_mappings(struct irq_domain *domain, unsigned int irq_base,  }  EXPORT_SYMBOL_GPL(irq_create_strict_mappings); -unsigned int irq_create_of_mapping(struct device_node *controller, -				   const u32 *intspec, unsigned int intsize) +unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)  {  	struct irq_domain *domain;  	irq_hw_number_t hwirq;  	unsigned int type = IRQ_TYPE_NONE;  	unsigned int virq; -	domain = controller ? irq_find_host(controller) : irq_default_domain; +	domain = irq_data->np ? irq_find_host(irq_data->np) : irq_default_domain;  	if (!domain) {  		pr_warn("no irq domain found for %s !\n", -			of_node_full_name(controller)); +			of_node_full_name(irq_data->np));  		return 0;  	}  	/* If domain has no translation, then we assume interrupt line */  	if (domain->ops->xlate == NULL) -		hwirq = intspec[0]; +		hwirq = irq_data->args[0];  	else { -		if (domain->ops->xlate(domain, controller, intspec, intsize, -				     &hwirq, &type)) +		if (domain->ops->xlate(domain, irq_data->np, irq_data->args, +					irq_data->args_count, &hwirq, &type))  			return 0;  	}  | 
