All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.