public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: jason@lakedaemon.net (Jason Cooper)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: ixp4xx: Add "ask" handler for timer interrupts
Date: Sat, 1 Dec 2012 08:05:27 -0500	[thread overview]
Message-ID: <20121201130527.GD12509@titan.lakedaemon.net> (raw)
In-Reply-To: <1354347213-22237-1-git-send-email-shc_work@mail.ru>

Hi Alexander,

On Sat, Dec 01, 2012 at 11:33:33AM +0400, Alexander Shiyan wrote:
> Rather than modify the EOI flags directly in the timer interrupt,
> let's deal with these flags in the "ask" procedure.

Please specify the procedure name instead of "ask", eg ixp4xx_irq_ack().
Same goes for the Subject line.

What brought about this change, is this part of a larger series?

thx,

Jason.

> 
> Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
> ---
>  arch/arm/mach-ixp4xx/common.c      |   34 +++++++++++++++++++++++++---------
>  drivers/input/misc/ixp4xx-beeper.c |    3 ---
>  2 files changed, 25 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
> index 8c0c0e2..27046ec 100644
> --- a/arch/arm/mach-ixp4xx/common.c
> +++ b/arch/arm/mach-ixp4xx/common.c
> @@ -202,10 +202,28 @@ static void ixp4xx_irq_mask(struct irq_data *d)
>  
>  static void ixp4xx_irq_ack(struct irq_data *d)
>  {
> -	int line = (d->irq < 32) ? irq2gpio[d->irq] : -1;
> +	int line;
>  
> -	if (line >= 0)
> -		*IXP4XX_GPIO_GPISR = (1 << line);
> +	switch (d->irq) {
> +	case IRQ_IXP4XX_TIMER1:
> +		*IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
> +		break;
> +	case IRQ_IXP4XX_TIMER2:
> +		*IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
> +		break;
> +	case IRQ_IXP4XX_TIMESTAMP:
> +		*IXP4XX_OSST = IXP4XX_OSST_TIMER_TS_PEND;
> +		break;
> +	case IRQ_IXP4XX_WDOG:
> +		*IXP4XX_OSST = IXP4XX_OSST_TIMER_WDOG_PEND;
> +		break;
> +	default:
> +		line = (d->irq < 32) ? irq2gpio[d->irq] : -1;
> +
> +		if (line >= 0)
> +			*IXP4XX_GPIO_GPISR = (1 << line);
> +		break;
> +	}
>  }
>  
>  /*
> @@ -247,6 +265,10 @@ void __init ixp4xx_init_irq(void)
>  	/* Disable all interrupt */
>  	*IXP4XX_ICMR = 0x0; 
>  
> +	/* Clear Timer Pending Interrupts */
> +	*IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND | IXP4XX_OSST_TIMER_2_PEND |
> +		       IXP4XX_OSST_TIMER_TS_PEND | IXP4XX_OSST_TIMER_WDOG_PEND;
> +
>  	if (cpu_is_ixp46x() || cpu_is_ixp43x()) {
>  		/* Route upper 32 sources to IRQ instead of FIQ */
>  		*IXP4XX_ICLR2 = 0x00;
> @@ -274,9 +296,6 @@ static irqreturn_t ixp4xx_timer_interrupt(int irq, void *dev_id)
>  {
>  	struct clock_event_device *evt = dev_id;
>  
> -	/* Clear Pending Interrupt by writing '1' to it */
> -	*IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
> -
>  	evt->event_handler(evt);
>  
>  	return IRQ_HANDLED;
> @@ -294,9 +313,6 @@ void __init ixp4xx_timer_init(void)
>  	/* Reset/disable counter */
>  	*IXP4XX_OSRT1 = 0;
>  
> -	/* Clear Pending Interrupt by writing '1' to it */
> -	*IXP4XX_OSST = IXP4XX_OSST_TIMER_1_PEND;
> -
>  	/* Reset time-stamp counter */
>  	*IXP4XX_OSTS = 0;
>  
> diff --git a/drivers/input/misc/ixp4xx-beeper.c b/drivers/input/misc/ixp4xx-beeper.c
> index 6ab3dec..2923e47 100644
> --- a/drivers/input/misc/ixp4xx-beeper.c
> +++ b/drivers/input/misc/ixp4xx-beeper.c
> @@ -78,9 +78,6 @@ static int ixp4xx_spkr_event(struct input_dev *dev, unsigned int type, unsigned
>  
>  static irqreturn_t ixp4xx_spkr_interrupt(int irq, void *dev_id)
>  {
> -	/* clear interrupt */
> -	*IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
> -
>  	/* flip the beeper output */
>  	*IXP4XX_GPIO_GPOUTR ^= (1 << (unsigned int) dev_id);
>  
> -- 
> 1.7.8.6
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2012-12-01 13:05 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-01  7:33 [PATCH] ARM: ixp4xx: Add "ask" handler for timer interrupts Alexander Shiyan
2012-12-01 13:05 ` Jason Cooper [this message]
2012-12-01 13:14   ` Re[2]: " Alexander Shiyan
2012-12-01 15:41     ` Jason Cooper
2012-12-01 21:25 ` Arnd Bergmann
2012-12-01 21:45   ` Jason Cooper
2012-12-02  0:11     ` Arnd Bergmann
2012-12-02  6:02       ` Re[2]: " Alexander Shiyan
2012-12-02 13:13         ` Arnd Bergmann
2012-12-02 13:55           ` Re[4]: " Alexander Shiyan
2012-12-03 23:40             ` Arnd Bergmann
2012-12-02  8:09       ` [PATCH 1/2] ARM: ixp4xx: Moving the timer flags control in ixp4xx_irq_ack() procedure Alexander Shiyan
2012-12-02  8:09         ` [PATCH 2/2] ARM: ixp4xx: Using gpiolib rather than a private GPIO API Alexander Shiyan
2012-12-02 13:25           ` Arnd Bergmann
2012-12-02 13:24         ` [PATCH 1/2] ARM: ixp4xx: Moving the timer flags control in ixp4xx_irq_ack() procedure Arnd Bergmann
2012-12-02 13:37         ` Mikael Pettersson
2012-12-02 13:50           ` Re[2]: " Alexander Shiyan

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=20121201130527.GD12509@titan.lakedaemon.net \
    --to=jason@lakedaemon.net \
    --cc=linux-arm-kernel@lists.infradead.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