[PATCH v3 1/4] powerpc/mpic: add irq_set_wake support
Wang Dongsheng-B40534
B40534 at freescale.com
Tue Apr 16 20:58:52 EST 2013
Hi scott,
Could you ACK these patches?
[PATCH v3 2/4] powerpc/mpic: add global timer support
[PATCH v3 3/4] powerpc/mpic: create mpic subsystem object
[PATCH v3 4/4] powerpc/fsl: add MPIC timer wakeup support
Thanks.
> -----Original Message-----
> From: Wang Dongsheng-B40534
> Sent: Tuesday, April 09, 2013 10:22 AM
> To: Wood Scott-B07421
> Cc: linuxppc-dev at lists.ozlabs.org; Wang Dongsheng-B40534
> Subject: [PATCH v3 1/4] powerpc/mpic: add irq_set_wake support
>
> 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>
> ---
> v3:
> * Modify: Change "EINVAL" to "ENXIO" in mpic_irq_set_wake()
>
> v2:
> * Add: Check freescale chip in mpic_irq_set_wake().
> * Remove: Support mpic_irq_set_wake() in ht_chip.
>
> arch/powerpc/sysdev/mpic.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
> index 3b2efd4..ae709d2 100644
> --- a/arch/powerpc/sysdev/mpic.c
> +++ b/arch/powerpc/sysdev/mpic.c
> @@ -920,6 +920,22 @@ 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);
> + struct mpic *mpic = mpic_from_irq_data(d);
> +
> + if (!(mpic->flags & MPIC_FSL))
> + return -ENXIO;
> +
> + 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 +973,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 +988,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
> --
> 1.8.0
More information about the Linuxppc-dev
mailing list