[PATCH][UPSTEAM] powerpc/mpic: add irq_set_wake support

Kumar Gala galak at kernel.crashing.org
Tue Feb 19 06:43:11 EST 2013


On Jan 30, 2013, at 9:10 PM, Wang Dongsheng wrote:

> Add irq_set_wake support. Just add IRQF_NO_SUSPEND to desc->action->flag.
> So the wake up interrupt will not be disable in suspend_device_irqs.
> 
> Signed-off-by: Wang Dongsheng <dongsheng.wang at freescale.com>
> ---
> arch/powerpc/sysdev/mpic.c |   15 +++++++++++++++
> 1 files changed, 15 insertions(+), 0 deletions(-)

Why are we doing this globally for all interrupts?  Don't we only have some specific interrupts that wake us up?

Also, I'm guessing the wake behavior for interrupts is FSL specific so should not apply to ALL users of MPIC.

- k

> 
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index 9c6e535..2ed0220 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -920,6 +920,18 @@ int mpic_set_irq_type(struct irq_data *d, unsigned int flow_type)
> 	return IRQ_SET_MASK_OK_NOCOPY;
> }
> 
> +static int mpic_irq_set_wake(struct irq_data *d, unsigned int on)
> +{
> +	struct irq_desc *desc = container_of(d, struct irq_desc, irq_data);
> +
> +	if (on)
> +		desc->action->flags |= IRQF_NO_SUSPEND;
> +	else
> +		desc->action->flags &= ~IRQF_NO_SUSPEND;
> +
> +	return 0;
> +}
> +
> void mpic_set_vector(unsigned int virq, unsigned int vector)
> {
> 	struct mpic *mpic = mpic_from_irq(virq);
> @@ -957,6 +969,7 @@ static struct irq_chip mpic_irq_chip = {
> 	.irq_unmask	= mpic_unmask_irq,
> 	.irq_eoi	= mpic_end_irq,
> 	.irq_set_type	= mpic_set_irq_type,
> +	.irq_set_wake	= mpic_irq_set_wake,
> };
> 
> #ifdef CONFIG_SMP
> @@ -971,6 +984,7 @@ static struct irq_chip mpic_tm_chip = {
> 	.irq_mask	= mpic_mask_tm,
> 	.irq_unmask	= mpic_unmask_tm,
> 	.irq_eoi	= mpic_end_irq,
> +	.irq_set_wake	= mpic_irq_set_wake,
> };
> 
> #ifdef CONFIG_MPIC_U3_HT_IRQS
> @@ -981,6 +995,7 @@ static struct irq_chip mpic_irq_ht_chip = {
> 	.irq_unmask	= mpic_unmask_ht_irq,
> 	.irq_eoi	= mpic_end_ht_irq,
> 	.irq_set_type	= mpic_set_irq_type,
> +	.irq_set_wake	= mpic_irq_set_wake,
> };
> #endif /* CONFIG_MPIC_U3_HT_IRQS */
> 
> --
> 1.7.5.1
> 
> 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev



More information about the Linuxppc-dev mailing list