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.w...@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@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to