diff options
Diffstat (limited to 'arch/arm/mach-omap2/prm_common.c')
| -rw-r--r-- | arch/arm/mach-omap2/prm_common.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c index 779940cb6e56..dea2833ca627 100644 --- a/arch/arm/mach-omap2/prm_common.c +++ b/arch/arm/mach-omap2/prm_common.c @@ -187,6 +187,7 @@ int omap_prcm_event_to_irq(const char *name)   */  void omap_prcm_irq_cleanup(void)  { +	unsigned int irq;  	int i;  	if (!prcm_irq_setup) { @@ -211,7 +212,11 @@ void omap_prcm_irq_cleanup(void)  	kfree(prcm_irq_setup->priority_mask);  	prcm_irq_setup->priority_mask = NULL; -	irq_set_chained_handler(prcm_irq_setup->irq, NULL); +	if (prcm_irq_setup->xlate_irq) +		irq = prcm_irq_setup->xlate_irq(prcm_irq_setup->irq); +	else +		irq = prcm_irq_setup->irq; +	irq_set_chained_handler(irq, NULL);  	if (prcm_irq_setup->base_irq > 0)  		irq_free_descs(prcm_irq_setup->base_irq, @@ -259,6 +264,7 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)  	int offset, i;  	struct irq_chip_generic *gc;  	struct irq_chip_type *ct; +	unsigned int irq;  	if (!irq_setup)  		return -EINVAL; @@ -298,7 +304,11 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)  				1 << (offset & 0x1f);  	} -	irq_set_chained_handler(irq_setup->irq, omap_prcm_irq_handler); +	if (irq_setup->xlate_irq) +		irq = irq_setup->xlate_irq(irq_setup->irq); +	else +		irq = irq_setup->irq; +	irq_set_chained_handler(irq, omap_prcm_irq_handler);  	irq_setup->base_irq = irq_alloc_descs(-1, 0, irq_setup->nr_regs * 32,  		0);  |