linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: s.hauer@pengutronix.de (Sascha Hauer)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM i.MX gic: add handle_irq function
Date: Mon, 26 Sep 2011 10:41:41 +0200	[thread overview]
Message-ID: <20110926084141.GP31404@pengutronix.de> (raw)
In-Reply-To: <1316797284-21010-1-git-send-email-shawn.guo@linaro.org>

On Sat, Sep 24, 2011 at 01:01:24AM +0800, Shawn Guo wrote:
> This is a plain translation of assembly gic irq handler to C function
> for CONFIG_MULTI_IRQ_HANDLER support on imx family.
> 
> As the speed of gic_handle_irq() is much more important than code
> clean, the patch chooses to plug the ifdef in the function to compile
> out the corresponding codes.
> 
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> ---
> Right, ideally the arch/arm/plat-mxc/gic.c should be merged into
> arch/arm/common/gic.c.  But before rmk asks me to do that, I would
> let it stay in imx platform.
> 
>  arch/arm/plat-mxc/Makefile                   |    2 +-
>  arch/arm/plat-mxc/gic.c                      |   47 ++++++++++++++++++++++++++
>  arch/arm/plat-mxc/include/mach/common.h      |    2 +
>  arch/arm/plat-mxc/include/mach/entry-macro.S |    6 +++
>  4 files changed, 56 insertions(+), 1 deletions(-)
>  create mode 100644 arch/arm/plat-mxc/gic.c
> 
> diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile
> index d53c35f..b9f0f5f 100644
> --- a/arch/arm/plat-mxc/Makefile
> +++ b/arch/arm/plat-mxc/Makefile
> @@ -5,7 +5,7 @@
>  # Common support
>  obj-y := clock.o time.o devices.o cpu.o system.o irq-common.o
>  
> -# MX51 uses the TZIC interrupt controller, older platforms use AVIC
> +obj-$(CONFIG_ARM_GIC) += gic.o
>  obj-$(CONFIG_MXC_TZIC) += tzic.o
>  obj-$(CONFIG_MXC_AVIC) += avic.o
>  
> diff --git a/arch/arm/plat-mxc/gic.c b/arch/arm/plat-mxc/gic.c
> new file mode 100644
> index 0000000..487d12c
> --- /dev/null
> +++ b/arch/arm/plat-mxc/gic.c
> @@ -0,0 +1,47 @@
> +/*
> + * Copyright 2011 Freescale Semiconductor, Inc.
> + * Copyright 2011 Linaro Ltd.
> + *
> + * The code contained herein is licensed under the GNU General Public
> + * License. You may obtain a copy of the GNU General Public License
> + * Version 2 or later at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +#include <linux/io.h>
> +#include <asm/localtimer.h>
> +#include <asm/hardware/gic.h>
> +#ifdef CONFIG_SMP
> +#include <asm/smp.h>
> +#endif
> +
> +asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
> +{
> +	u32 irqstat, irqnr;
> +
> +	do {
> +		irqstat = readl_relaxed(gic_cpu_base_addr + GIC_CPU_INTACK);
> +		irqnr = irqstat & 0x3ff;
> +		if (irqnr == 1023)
> +			break;
> +
> +		if (irqnr > 29 && irqnr < 1021)
> +			handle_IRQ(irqnr, regs);
> +#ifdef CONFIG_SMP
> +		else if (irqnr < 16) {
> +			writel_relaxed(irqstat, gic_cpu_base_addr +
> +						GIC_CPU_EOI);
> +			do_IPI(irqnr, regs);
> +		}
> +#endif
> +#ifdef CONFIG_LOCAL_TIMERS
> +		else if (irqnr == 29) {
> +			writel_relaxed(irqstat, gic_cpu_base_addr +
> +						GIC_CPU_EOI);
> +			do_local_timer(regs);
> +		}
> +#endif
> +	} while (1);
> +}

Shouldn't this code go to arch/arm/common/gic.c instead? The
corresponding assembly code is generic so I see no reason to make
this i.MX specific.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

  reply	other threads:[~2011-09-26  8:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-20 12:49 [PATCH] i.MX: use CONFIG_MULTI_IRQ_HANDLER Sascha Hauer
2011-09-20 12:49 ` [PATCH 1/4] ARM i.MX avic: add handle_irq function Sascha Hauer
2011-09-20 12:49 ` [PATCH 2/4] ARM i.MX tzic: " Sascha Hauer
2011-09-23 17:16   ` Shawn Guo
2011-09-20 12:49 ` [PATCH 3/4] ARM i.MX boards: use CONFIG_MULTI_IRQ_HANDLER Sascha Hauer
2011-09-20 12:49 ` [PATCH 4/4] ARM i.MX entry-macro.S: remove now unused code Sascha Hauer
2011-09-23 17:01 ` [PATCH] ARM i.MX gic: add handle_irq function Shawn Guo
2011-09-26  8:41   ` Sascha Hauer [this message]
2011-09-26 13:16     ` Shawn Guo
2011-09-26 13:10   ` Russell King - ARM Linux
2011-09-26 13:55     ` Shawn Guo
2011-09-23 17:11 ` [PATCH] i.MX: use CONFIG_MULTI_IRQ_HANDLER Shawn Guo

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=20110926084141.GP31404@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --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;
as well as URLs for NNTP newsgroup(s).