From: Rajendra Nayak <rnayak@ti.com>
To: Tony Lindgren <tony@atomide.com>, Nicolas Pitre <nico@fluxnic.net>
Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: RE: [PATCH 3/3] omap2+: Initialize omap_irq_base for entry-macro.Sfrom platform code
Date: Mon, 13 Dec 2010 17:27:08 +0530 [thread overview]
Message-ID: <774b6f8f3fa4cae7210bfdb317c68e12@mail.gmail.com> (raw)
In-Reply-To: <20101208014921.GM17435@atomide.com>
Hi Tony,
> -----Original Message-----
> From: linux-arm-kernel-bounces@lists.infradead.org
[mailto:linux-arm-kernel-bounces@lists.infradead.org] On Behalf
> Of Tony Lindgren
> Sent: Wednesday, December 08, 2010 7:19 AM
> To: Nicolas Pitre
> Cc: linux-omap@vger.kernel.org; linux-arm-kernel@lists.infradead.org
> Subject: [PATCH 3/3] omap2+: Initialize omap_irq_base for
entry-macro.Sfrom platform code
>
> This way we can use the generic omap SoC detection code instead.
>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
>
> diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S
b/arch/arm/mach-omap2/include/mach/entry-macro.S
> index 06e64e1..6032941 100644
> --- a/arch/arm/mach-omap2/include/mach/entry-macro.S
> +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S
> @@ -38,41 +38,27 @@
> */
>
> #ifdef MULTI_OMAP2
> +
> +/*
> + * We use __glue to avoid errors with multiple definitions of
> + * .globl omap_irq_base as it's included from entry-armv.S but not
> + * from entry-common.S.
> + */
> +#ifdef __glue
> .pushsection .data
> -omap_irq_base: .word 0
> + .globl omap_irq_base
> +omap_irq_base:
> + .word 0
> .popsection
> +#endif
>
> - /* Configure the interrupt base on the first interrupt */
> + /*
> + * Configure the interrupt base on the first interrupt.
> + * See also omap_irq_base_init for setting omap_irq_base.
> + */
> .macro get_irqnr_preamble, base, tmp
> -9:
> ldr \base, =omap_irq_base @ irq base address
> ldr \base, [\base, #0] @ irq base value
> - cmp \base, #0 @ already configured?
> - bne 9997f @ nothing to do
> -
> - mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
> - and \tmp, \tmp, #0x000f0000 @ only check architecture
> - cmp \tmp, #0x00070000 @ is v6?
> - beq 2400f @ found v6 so it's
omap24xx
> - mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
> - and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9
> - cmp \tmp, #0x00000080 @ cortex A-8?
> - beq 3400f @ found A-8 so it's
omap34xx
> - cmp \tmp, #0x00000090 @ cortex A-9?
> - beq 4400f @ found A-9 so it's
omap44xx
> -2400: ldr \base, =OMAP2_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -3400: ldr \base, =OMAP3_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -4400: ldr \base, =OMAP4_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -9997:
> .endm
>
> /* Check the pending interrupts. Note that base already
set */
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 40562dd..3d18349 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -46,6 +46,7 @@
> #include "clockdomains.h"
>
> #include <plat/omap_hwmod.h>
> +#include <plat/multi.h>
>
> /*
> * The machine specific code may provide the extra mapping besides the
> @@ -311,6 +312,25 @@ static int __init _omap2_init_reprogram_sdrc(void)
> return v;
> }
>
> +/*
> + * Initialize asm_irq_base for entry-macro.S
> + */
> +static inline void omap_irq_base_init(void)
> +{
> + extern void __iomem *omap_irq_base;
> +
> +#ifdef MULTI_OMAP2
> + if (cpu_is_omap242x())
Looks like this should be a cpu_is_omap24xx(). The
current master is broken on a 2430sdp and a git-bisect
pointed me to this patch.
Regards,
Rajendra
> + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE);
> + else if (cpu_is_omap34xx())
> + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP34XX_IC_BASE);
> + else if (cpu_is_omap44xx())
> + omap_irq_base =
OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE);
> + else
> + pr_err("Could not initialize omap_irq_base\n");
> +#endif
> +}
> +
> void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
> struct omap_sdrc_params *sdrc_cs1)
> {
> @@ -352,4 +372,6 @@ void __init omap2_init_common_hw(struct
omap_sdrc_params *sdrc_cs0,
> _omap2_init_reprogram_sdrc();
> }
> gpmc_init();
> +
> + omap_irq_base_init();
> }
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/3] omap2+: Initialize omap_irq_base for entry-macro.Sfrom platform code
Date: Mon, 13 Dec 2010 17:27:08 +0530 [thread overview]
Message-ID: <774b6f8f3fa4cae7210bfdb317c68e12@mail.gmail.com> (raw)
In-Reply-To: <20101208014921.GM17435@atomide.com>
Hi Tony,
> -----Original Message-----
> From: linux-arm-kernel-bounces at lists.infradead.org
[mailto:linux-arm-kernel-bounces at lists.infradead.org] On Behalf
> Of Tony Lindgren
> Sent: Wednesday, December 08, 2010 7:19 AM
> To: Nicolas Pitre
> Cc: linux-omap at vger.kernel.org; linux-arm-kernel at lists.infradead.org
> Subject: [PATCH 3/3] omap2+: Initialize omap_irq_base for
entry-macro.Sfrom platform code
>
> This way we can use the generic omap SoC detection code instead.
>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
>
> diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S
b/arch/arm/mach-omap2/include/mach/entry-macro.S
> index 06e64e1..6032941 100644
> --- a/arch/arm/mach-omap2/include/mach/entry-macro.S
> +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S
> @@ -38,41 +38,27 @@
> */
>
> #ifdef MULTI_OMAP2
> +
> +/*
> + * We use __glue to avoid errors with multiple definitions of
> + * .globl omap_irq_base as it's included from entry-armv.S but not
> + * from entry-common.S.
> + */
> +#ifdef __glue
> .pushsection .data
> -omap_irq_base: .word 0
> + .globl omap_irq_base
> +omap_irq_base:
> + .word 0
> .popsection
> +#endif
>
> - /* Configure the interrupt base on the first interrupt */
> + /*
> + * Configure the interrupt base on the first interrupt.
> + * See also omap_irq_base_init for setting omap_irq_base.
> + */
> .macro get_irqnr_preamble, base, tmp
> -9:
> ldr \base, =omap_irq_base @ irq base address
> ldr \base, [\base, #0] @ irq base value
> - cmp \base, #0 @ already configured?
> - bne 9997f @ nothing to do
> -
> - mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
> - and \tmp, \tmp, #0x000f0000 @ only check architecture
> - cmp \tmp, #0x00070000 @ is v6?
> - beq 2400f @ found v6 so it's
omap24xx
> - mrc p15, 0, \tmp, c0, c0, 0 @ get processor revision
> - and \tmp, \tmp, #0x000000f0 @ check cortex 8 or 9
> - cmp \tmp, #0x00000080 @ cortex A-8?
> - beq 3400f @ found A-8 so it's
omap34xx
> - cmp \tmp, #0x00000090 @ cortex A-9?
> - beq 4400f @ found A-9 so it's
omap44xx
> -2400: ldr \base, =OMAP2_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -3400: ldr \base, =OMAP3_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -4400: ldr \base, =OMAP4_IRQ_BASE
> - ldr \tmp, =omap_irq_base
> - str \base, [\tmp, #0]
> - b 9b
> -9997:
> .endm
>
> /* Check the pending interrupts. Note that base already
set */
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 40562dd..3d18349 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -46,6 +46,7 @@
> #include "clockdomains.h"
>
> #include <plat/omap_hwmod.h>
> +#include <plat/multi.h>
>
> /*
> * The machine specific code may provide the extra mapping besides the
> @@ -311,6 +312,25 @@ static int __init _omap2_init_reprogram_sdrc(void)
> return v;
> }
>
> +/*
> + * Initialize asm_irq_base for entry-macro.S
> + */
> +static inline void omap_irq_base_init(void)
> +{
> + extern void __iomem *omap_irq_base;
> +
> +#ifdef MULTI_OMAP2
> + if (cpu_is_omap242x())
Looks like this should be a cpu_is_omap24xx(). The
current master is broken on a 2430sdp and a git-bisect
pointed me to this patch.
Regards,
Rajendra
> + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE);
> + else if (cpu_is_omap34xx())
> + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP34XX_IC_BASE);
> + else if (cpu_is_omap44xx())
> + omap_irq_base =
OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE);
> + else
> + pr_err("Could not initialize omap_irq_base\n");
> +#endif
> +}
> +
> void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
> struct omap_sdrc_params *sdrc_cs1)
> {
> @@ -352,4 +372,6 @@ void __init omap2_init_common_hw(struct
omap_sdrc_params *sdrc_cs0,
> _omap2_init_reprogram_sdrc();
> }
> gpmc_init();
> +
> + omap_irq_base_init();
> }
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2010-12-13 11:57 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-04 0:20 [PATCH 0/4] Patches to make multi-soc handling in entry-armv.S easier Tony Lindgren
2010-12-04 0:20 ` Tony Lindgren
2010-12-04 0:20 ` [PATCH 1/4] ARM: Add asm_irq_base and asm_irq_flags for entry-armv.S macros Tony Lindgren
2010-12-04 0:20 ` Tony Lindgren
2010-12-04 0:20 ` [PATCH 2/4] omap2+: Use asm_irq_base for entry-macro.S Tony Lindgren
2010-12-04 0:20 ` Tony Lindgren
2010-12-04 0:20 ` [PATCH 3/4] omap1: Use asm_irq_flags " Tony Lindgren
2010-12-04 0:20 ` Tony Lindgren
2010-12-04 0:20 ` [PATCH 4/4] omap1: Use get_irqnr_preamble Tony Lindgren
2010-12-04 0:20 ` Tony Lindgren
2010-12-04 5:49 ` [PATCH 0/4] Patches to make multi-soc handling in entry-armv.S easier Nicolas Pitre
2010-12-04 5:49 ` Nicolas Pitre
2010-12-04 18:05 ` Tony Lindgren
2010-12-04 18:05 ` Tony Lindgren
2010-12-05 2:36 ` Nicolas Pitre
2010-12-05 2:36 ` Nicolas Pitre
2010-12-05 3:10 ` Tony Lindgren
2010-12-05 3:10 ` Tony Lindgren
2010-12-08 1:45 ` Tony Lindgren
2010-12-08 1:45 ` Tony Lindgren
2010-12-08 1:47 ` [PATCH 1/3] omap1: Use asm_irq_flags for entry-macro.S Tony Lindgren
2010-12-08 1:47 ` Tony Lindgren
2010-12-10 16:06 ` Janusz Krzysztofik
2010-12-10 16:06 ` Janusz Krzysztofik
2010-12-10 17:44 ` Tony Lindgren
2010-12-10 17:44 ` Tony Lindgren
2010-12-08 1:48 ` [PATCH 2/3] omap1: Use get_irqnr_preamble Tony Lindgren
2010-12-08 1:48 ` Tony Lindgren
2010-12-08 1:49 ` [PATCH 3/3] omap2+: Initialize omap_irq_base for entry-macro.S from platform code Tony Lindgren
2010-12-08 1:49 ` Tony Lindgren
2010-12-13 11:57 ` Rajendra Nayak [this message]
2010-12-13 11:57 ` [PATCH 3/3] omap2+: Initialize omap_irq_base for entry-macro.Sfrom " Rajendra Nayak
2010-12-15 3:25 ` Tony Lindgren
2010-12-15 3:25 ` 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=774b6f8f3fa4cae7210bfdb317c68e12@mail.gmail.com \
--to=rnayak@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=nico@fluxnic.net \
--cc=tony@atomide.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.