Re: Unbalanced IRQ wake disable during resume from static suspend

Govindraj
2010-12-02T10:35:02Z

On Thu, Dec 2, 2010 at 2:38 PM, Santosh Shilimkar
<santosh.shilimkar@ti.com> wrote:
> Paul,
>> -----Original Message-----
>> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
>> owner@vger.kernel.org] On Behalf Of Paul Walmsley
>> Sent: Thursday, December 02, 2010 1:44 PM
>> To: linux-omap@vger.kernel.org; Govindraj
>> Cc: khilman@deeprootsystems.com
>> Subject: Re: Unbalanced IRQ wake disable during resume from static
> suspend
>>
>> On Thu, 2 Dec 2010, Paul Walmsley wrote:
>>
>> > On current linux-omap master (commit
>> > 7fd1cffc56ca9944fec583eb2ecda5ce88b36bff "Linux-omap rebuilt: Updated
> to
>> > -rc4"), when resuming from static suspend, several "Unbalanced IRQ
>> > wake disable" warnings are generated, one for each of the serial
> ports.
>> > This is on Beagle 35xx rev C2.
>>
>> Just to follow up on this, these messages are not logged when
>> /sys/devices/platform/omap/omap-hsuart.*/tty/ttyO*/power/wakeup are set
> to
>> 'disabled'.
>>
>> Also this is with omap2plus_defconfig.
>>
> Just a wild guess here but is this because the 'set_wake' is
> not setup and then fw might be returning some error whenever
> driver invoke this API as part of enable_irq_wake() callback
>
> If that being the case, below patch might might help. Can
> somebody try this out ?
>

Tested on 3630SDP.
The below patch helps to avoid the warnings.

--
Regards
Govindraj.R

> Regards,
> Santosh
>
> omap: irq: Dummy handler for enable_irq_wake
>
> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
> ---
>  arch/arm/mach-omap2/irq.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
> index 32eeabe..6a964d3 100644
> --- a/arch/arm/mach-omap2/irq.c
> +++ b/arch/arm/mach-omap2/irq.c
> @@ -143,11 +143,21 @@ static void omap_mask_ack_irq(unsigned int irq)
>        omap_ack_irq(irq);
>  }
>
> +#ifdef CONFIG_PM
> +static int omap_set_wake(unsigned int irq, unsigned int on)
> +{
> +       return 0;
> +}
> +#else
> +#define omap_set_wake NULL
> +#endif
> +
>  static struct irq_chip omap_irq_chip = {
>        .name   = "INTC",
>        .ack    = omap_mask_ack_irq,
>        .mask   = omap_mask_irq,
>        .unmask = omap_unmask_irq,
> +       .set_wake = omap_set_wake,
>  };
>
>  static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
> --
> 1.6.0.4
>

--
---
Regards,
Govindraj.R
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html