diff options
Diffstat (limited to 'arch/powerpc/sysdev/ipic.c')
| -rw-r--r-- | arch/powerpc/sysdev/ipic.c | 31 | 
1 files changed, 6 insertions, 25 deletions
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c index 95da897f05a..b50f97811c2 100644 --- a/arch/powerpc/sysdev/ipic.c +++ b/arch/powerpc/sysdev/ipic.c @@ -672,13 +672,13 @@ static struct irq_chip ipic_edge_irq_chip = {  	.irq_set_type	= ipic_set_irq_type,  }; -static int ipic_host_match(struct irq_host *h, struct device_node *node) +static int ipic_host_match(struct irq_domain *h, struct device_node *node)  {  	/* Exact match, unless ipic node is NULL */  	return h->of_node == NULL || h->of_node == node;  } -static int ipic_host_map(struct irq_host *h, unsigned int virq, +static int ipic_host_map(struct irq_domain *h, unsigned int virq,  			 irq_hw_number_t hw)  {  	struct ipic *ipic = h->host_data; @@ -692,26 +692,10 @@ static int ipic_host_map(struct irq_host *h, unsigned int virq,  	return 0;  } -static int ipic_host_xlate(struct irq_host *h, struct device_node *ct, -			   const u32 *intspec, unsigned int intsize, -			   irq_hw_number_t *out_hwirq, unsigned int *out_flags) - -{ -	/* interrupt sense values coming from the device tree equal either -	 * LEVEL_LOW (low assertion) or EDGE_FALLING (high-to-low change) -	 */ -	*out_hwirq = intspec[0]; -	if (intsize > 1) -		*out_flags = intspec[1]; -	else -		*out_flags = IRQ_TYPE_NONE; -	return 0; -} - -static struct irq_host_ops ipic_host_ops = { +static struct irq_domain_ops ipic_host_ops = {  	.match	= ipic_host_match,  	.map	= ipic_host_map, -	.xlate	= ipic_host_xlate, +	.xlate	= irq_domain_xlate_onetwocell,  };  struct ipic * __init ipic_init(struct device_node *node, unsigned int flags) @@ -728,9 +712,8 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)  	if (ipic == NULL)  		return NULL; -	ipic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR, -				       NR_IPIC_INTS, -				       &ipic_host_ops, 0); +	ipic->irqhost = irq_domain_add_linear(node, NR_IPIC_INTS, +					      &ipic_host_ops, ipic);  	if (ipic->irqhost == NULL) {  		kfree(ipic);  		return NULL; @@ -738,8 +721,6 @@ struct ipic * __init ipic_init(struct device_node *node, unsigned int flags)  	ipic->regs = ioremap(res.start, resource_size(&res)); -	ipic->irqhost->host_data = ipic; -  	/* init hw */  	ipic_write(ipic->regs, IPIC_SICNR, 0x0);  |