public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: Jouni Hogander <jouni.hogander@nokia.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH 4/9] OMAP: Add new function to check wether there is irq pending
Date: Fri, 16 May 2008 08:44:25 -0700	[thread overview]
Message-ID: <20080516154425.GE23002@atomide.com> (raw)
In-Reply-To: <1210935435-27617-1-git-send-email-jouni.hogander@nokia.com>

Hi,

* Jouni Hogander <jouni.hogander@nokia.com> [080516 03:57]:
> Add common omap2/3 function to check wether there is irq pending.
> Switch to use it in omap2 pm code instead of its own.
> 
> Signed-off-by: Jouni Hogander <jouni.hogander@nokia.com>
> ---
>  arch/arm/mach-omap2/irq.c        |   29 +++++++++++++++++++++++------
>  arch/arm/mach-omap2/pm24xx.c     |   19 +++----------------
>  include/asm-arm/arch-omap/irqs.h |    1 +
>  3 files changed, 27 insertions(+), 22 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
> index ac062ee..f1e1e2e 100644
> --- a/arch/arm/mach-omap2/irq.c
> +++ b/arch/arm/mach-omap2/irq.c
> @@ -20,12 +20,13 @@
>  
>  /* selected INTC register offsets */
>  
> -#define INTC_REVISION	0x0000
> -#define INTC_SYSCONFIG	0x0010
> -#define INTC_SYSSTATUS	0x0014
> -#define INTC_CONTROL	0x0048
> -#define INTC_MIR_CLEAR0	0x0088
> -#define INTC_MIR_SET0	0x008c
> +#define INTC_REVISION		0x0000
> +#define INTC_SYSCONFIG		0x0010
> +#define INTC_SYSSTATUS		0x0014
> +#define INTC_CONTROL		0x0048
> +#define INTC_MIR_CLEAR0		0x0088
> +#define INTC_MIR_SET0		0x008c
> +#define INTC_PENDING_IRQ0	0x0098
>  
>  /*
>   * OMAP2 has a number of different interrupt controllers, each interrupt
> @@ -122,6 +123,22 @@ static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
>  	intc_bank_write_reg(1 << 0, bank, INTC_SYSCONFIG);
>  }
>  
> +int omap_irq_pending(void)
> +{
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
> +		struct omap_irq_bank *bank = irq_banks + i;
> +		int irq;
> +
> +		for (irq = 0; irq < bank->nr_irqs; irq += 32)
> +			if (intc_bank_read_reg(bank, INTC_PENDING_IRQ0 +
> +					       ((irq >> 5) << 5)))
> +				return 1;
> +	}
> +	return 0;
> +}
> +

In this case it should be enough to know if anything is set in the
bank registers, so you should be able to leave out the second for loop.
At most you need to read only the four bank registers. No need to check
for individual interrupts.


>  void __init omap_init_irq(void)
>  {
>  	unsigned long nr_irqs = 0;
> diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c
> index 7bb654f..8636f1c 100644
> --- a/arch/arm/mach-omap2/pm24xx.c
> +++ b/arch/arm/mach-omap2/pm24xx.c
> @@ -74,19 +74,6 @@ static int omap2_fclks_active(void)
>  	return 0;
>  }
>  
> -static int omap2_irq_pending(void)
> -{
> -	u32 pending_reg = 0x480fe098;
> -	int i;
> -
> -	for (i = 0; i < 4; i++) {
> -		if (omap_readl(pending_reg))
> -			return 1;
> -		pending_reg += 0x20;
> -	}
> -	return 0;
> -}
> -
>  static void omap2_enter_full_retention(void)
>  {
>  	u32 l, sleep_time = 0;
> @@ -121,7 +108,7 @@ static void omap2_enter_full_retention(void)
>  
>  	/* One last check for pending IRQs to avoid extra latency due
>  	 * to sleeping unnecessarily. */
> -	if (omap2_irq_pending())
> +	if (omap_irq_pending())
>  		goto no_sleep;
>  
>  	serial_console_sleep(1);
> @@ -272,7 +259,7 @@ static void omap2_pm_idle(void)
>  		 */
>  		if (atomic_read(&sleep_block) == 0) {
>  			timer_dyn_reprogram();
> -			if (omap2_irq_pending())
> +			if (omap_irq_pending())
>  				goto out;
>  		}
>  		omap2_enter_mpu_retention();
> @@ -286,7 +273,7 @@ static void omap2_pm_idle(void)
>  	 */
>  	timer_dyn_reprogram();
>  
> -	if (omap2_irq_pending())
> +	if (omap_irq_pending())
>  		goto out;
>  
>  	omap2_enter_full_retention();
> diff --git a/include/asm-arm/arch-omap/irqs.h b/include/asm-arm/arch-omap/irqs.h
> index c80e160..343e93e 100644
> --- a/include/asm-arm/arch-omap/irqs.h
> +++ b/include/asm-arm/arch-omap/irqs.h
> @@ -368,6 +368,7 @@
>  
>  #ifndef __ASSEMBLY__
>  extern void omap_init_irq(void);
> +extern int omap_irq_pending(void);
>  #endif
>  
>  #include <asm/hardware.h>
> -- 
> 1.5.5
> 
> --
> 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

  reply	other threads:[~2008-05-16 15:44 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-16 10:53 [PATCH 0/9] 34XX: PM: Support for retention on suspend and idle Högander Jouni
2008-05-16 10:57 ` [PATCH 1/9] 24XX: PM: Move pm.c to pm24xx.c and sleep.S to sleep24xx.S Jouni Hogander
2008-05-16 10:57 ` [PATCH 2/9] 24XX: PM: Move debugging related code to pm-debug.c Jouni Hogander
2008-05-16 10:57 ` [PATCH 3/9] PM: Add pm.c file for omap2 and omap3 common code Jouni Hogander
2008-05-16 10:57 ` [PATCH 4/9] OMAP: Add new function to check wether there is irq pending Jouni Hogander
2008-05-16 15:44   ` Tony Lindgren [this message]
2008-05-19  8:04     ` Högander Jouni
2008-05-19 18:54       ` Tony Lindgren
2008-05-20  6:27         ` Högander Jouni
2008-05-20 14:47           ` Tony Lindgren
2008-05-16 10:57 ` [PATCH 5/9] 34XX: Suspend: Take suspend sram code from ti cdp kernel Jouni Hogander
2008-05-16 10:57 ` [PATCH 6/9] 34XX: Suspend: Use same naming convention in sleep34xx.S as in sleep24XX.S Jouni Hogander
2008-05-16 10:58 ` [PATCH 7/9] 34XX: Add miscellaneous definitions related to 34xx Jouni Hogander
2008-05-16 10:58 ` [PATCH 8/9] 34XX: PM: Initial version of suspend and dynamic retention Jouni Hogander
2008-05-16 10:58 ` [PATCH 9/9] OMAP3430SDP: Enable config options CONFIG_OMAP_RESET_CLOCKS and CONFIG_SUSPEND Jouni Hogander
2008-05-20 22:13 ` [PATCH 0/9] 34XX: PM: Support for retention on suspend and idle Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080516154425.GE23002@atomide.com \
    --to=tony@atomide.com \
    --cc=jouni.hogander@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox