* [PATCH 1/3] Add support for OMAP35x processors
@ 2008-09-01 19:57 Sanjeev Premi
2008-09-01 19:57 ` [PATCH 2/3] Runtime check for OMAP35x Sanjeev Premi
2008-09-01 19:57 ` [PATCH 3/3] Updates to OMAP3EVM defconfig Sanjeev Premi
0 siblings, 2 replies; 6+ messages in thread
From: Sanjeev Premi @ 2008-09-01 19:57 UTC (permalink / raw)
To: linux-omap; +Cc: Sanjeev Premi
This patch adds basic support for the OMAP35x Applications Processors.
(See: http://focus.ti.com/general/docs/gencontent.tsp?contentId=46725)
- OMAP3503
- OMAP3515
- OMAP3525
- OMAP3530
---
arch/arm/mach-omap2/Kconfig | 50 ++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 49 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 365b982..73e0726 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -25,6 +25,54 @@ config ARCH_OMAP3430
depends on ARCH_OMAP3 && ARCH_OMAP34XX
select ARCH_OMAP_OTG
+config ARCH_OMAP35XX
+ bool "OMAP35x Family"
+ select ARCH_OMAP3
+ select ARCH_OMAP34XX
+ select ARCH_OMAP3430
+ select OMAP3430_ES2
+ select NEON
+ help
+ OMAP35x family of processors based on ARM Cortex-A8
+ in combination with IVA2.2 core and OpenGL ES2.0
+ compatible graphics engine.
+
+ ARM Cortex-A8 contains NEON SIMD coprocessor.
+
+choice
+ prompt "Current choice"
+ default ARCH_OMAP3503
+
+config ARCH_OMAP3503
+ bool "OMAP3503"
+ depends on ARCH_OMAP35XX
+ help
+ Contains ARM Cortex-A8 processor.
+
+config ARCH_OMAP3515
+ bool "OMAP3515"
+ depends on ARCH_OMAP35XX
+ help
+ Contains ARM Cortex-A8 processor and SGX530 subsystem
+ for 2D and 3D graphics acceleration.
+
+config ARCH_OMAP3525
+ bool "OMAP3525"
+ depends on ARCH_OMAP35XX
+ help
+ Contains ARM Cortex-A8 processor and IVA2.2 subsystem
+ with a C64x+ DSP core.
+
+config ARCH_OMAP3530
+ bool "OMAP3530"
+ depends on ARCH_OMAP35XX
+ help
+ Contains ARM Cortex-A8 processor, IVA2.2 subsystem
+ with a C64x+ DSP Core and SGX530 subsystem for 2D
+ and 3D graphics acceleration.
+
+endchoice
+
comment "OMAP Board Type"
depends on ARCH_OMAP2 || ARCH_OMAP3
@@ -117,7 +165,7 @@ config MACH_OMAP_3430SDP
config MACH_OMAP3EVM
bool "OMAP 3530 EVM board"
- depends on ARCH_OMAP3 && ARCH_OMAP34XX
+ depends on ARCH_OMAP35XX
config MACH_OMAP3_BEAGLE
bool "OMAP3 BEAGLE board"
--
1.5.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] Runtime check for OMAP35x
2008-09-01 19:57 [PATCH 1/3] Add support for OMAP35x processors Sanjeev Premi
@ 2008-09-01 19:57 ` Sanjeev Premi
2008-09-01 20:10 ` Russell King - ARM Linux
2008-09-02 17:30 ` Premi, Sanjeev
2008-09-01 19:57 ` [PATCH 3/3] Updates to OMAP3EVM defconfig Sanjeev Premi
1 sibling, 2 replies; 6+ messages in thread
From: Sanjeev Premi @ 2008-09-01 19:57 UTC (permalink / raw)
To: linux-omap; +Cc: Sanjeev Premi
Based on earlier review comments, added runtime
check of the OMAP35x via omap2_set_globasl_3503() etc.
---
arch/arm/plat-omap/common.c | 76 ++++++++++++++++++++++++++++++++++
include/asm-arm/arch-omap/common.h | 4 ++
include/asm-arm/arch-omap/cpu.h | 79 ++++++++++++++++++++++++++++++++++++
3 files changed, 159 insertions(+), 0 deletions(-)
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
index 3a5f05e..f8b04cc 100644
--- a/arch/arm/plat-omap/common.c
+++ b/arch/arm/plat-omap/common.c
@@ -334,3 +334,79 @@ void __init omap2_set_globals_343x(void)
}
#endif
+#if defined(CONFIG_ARCH_OMAP3503)
+
+static struct omap_globals omap3503_globals = {
+ .class = OMAP35XX_CLASS,
+ .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
+ .sdrc = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
+ .sms = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
+ .ctrl = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
+ .prm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
+ .cm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
+};
+
+void __init omap2_set_globals_3503(void)
+{
+ omap2_globals = &omap3503_globals;
+ __omap2_set_globals();
+}
+#endif
+
+#if defined(CONFIG_ARCH_OMAP3515)
+
+static struct omap_globals omap3515_globals = {
+ .class = OMAP35XX_CLASS,
+ .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
+ .sdrc = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
+ .sms = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
+ .ctrl = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
+ .prm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
+ .cm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
+};
+
+void __init omap2_set_globals_3515(void)
+{
+ omap2_globals = &omap3515_globals;
+ __omap2_set_globals();
+}
+#endif
+
+#if defined(CONFIG_ARCH_OMAP3525)
+
+static struct omap_globals omap3525_globals = {
+ .class = OMAP35XX_CLASS,
+ .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
+ .sdrc = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
+ .sms = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
+ .ctrl = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
+ .prm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
+ .cm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
+};
+
+void __init omap2_set_globals_3525(void)
+{
+ omap2_globals = &omap3525_globals;
+ __omap2_set_globals();
+}
+#endif
+
+#if defined(CONFIG_ARCH_OMAP3530)
+
+static struct omap_globals omap3530_globals = {
+ .class = OMAP35XX_CLASS,
+ .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
+ .sdrc = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
+ .sms = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
+ .ctrl = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
+ .prm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
+ .cm = (__force void __iomem *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
+};
+
+void __init omap2_set_globals_3530(void)
+{
+ omap2_globals = &omap3530_globals;
+ __omap2_set_globals();
+}
+#endif
+
diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h
index 8a525ed..9bdb353 100644
--- a/include/asm-arm/arch-omap/common.h
+++ b/include/asm-arm/arch-omap/common.h
@@ -62,6 +62,10 @@ struct omap_globals {
void omap2_set_globals_242x(void);
void omap2_set_globals_243x(void);
void omap2_set_globals_343x(void);
+void omap2_set_globals_3503(void);
+void omap2_set_globals_3515(void);
+void omap2_set_globals_3525(void);
+void omap2_set_globals_3535(void);
/* These get called from omap2_set_globals_xxxx(), do not call these */
void omap2_set_globals_tap(struct omap_globals *);
diff --git a/include/asm-arm/arch-omap/cpu.h b/include/asm-arm/arch-omap/cpu.h
index 33f26e9..bbe69ce 100644
--- a/include/asm-arm/arch-omap/cpu.h
+++ b/include/asm-arm/arch-omap/cpu.h
@@ -97,6 +97,45 @@ extern unsigned int system_rev;
# endif
#endif
+#ifdef CONFIG_ARCH_OMAP35XX
+# ifdef CONFIG_ARCH_OMAP3503
+# ifdef OMAP_NAME
+# undef MULTI_OMAP2
+# define MULTI_OMAP2
+# else
+# define OMAP_NAME omap3503
+# endif
+# endif /* ifdef CONFIG_ARCH_OMAP3503 */
+
+# ifdef CONFIG_ARCH_OMAP3515
+# ifdef OMAP_NAME
+# undef MULTI_OMAP2
+# define MULTI_OMAP2
+# else
+# define OMAP_NAME omap3515
+# endif
+# endif /* ifdef CONFIG_ARCH_OMAP3515 */
+
+# ifdef CONFIG_ARCH_OMAP3525
+# ifdef OMAP_NAME
+# undef MULTI_OMAP2
+# define MULTI_OMAP2
+# else
+# define OMAP_NAME omap3525
+# endif
+# endif /* ifdef CONFIG_ARCH_OMAP3525 */
+
+# ifdef CONFIG_ARCH_OMAP3530
+# ifdef OMAP_NAME
+# undef MULTI_OMAP2
+# define MULTI_OMAP2
+# else
+# define OMAP_NAME omap3530
+# endif
+# endif /* ifdef CONFIG_ARCH_OMAP3530 */
+
+#endif /* ifdef CONFIG_ARCH_OMAP35XX */
+
/*
* Macros to group OMAP into cpu classes.
* These can be used in most places.
@@ -107,6 +146,7 @@ extern unsigned int system_rev;
* cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423
* cpu_is_omap243x(): True for OMAP2430
* cpu_is_omap343x(): True for OMAP3430
+ * cpu_is_omap35x(): True for OMAP35x
*/
#define GET_OMAP_CLASS ((system_rev >> 24) & 0xff)
@@ -142,6 +182,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
#define cpu_is_omap243x() 0
#define cpu_is_omap34xx() 0
#define cpu_is_omap343x() 0
+#define cpu_is_omap35xx() 0
#if defined(MULTI_OMAP1)
# if defined(CONFIG_ARCH_OMAP730)
@@ -186,6 +227,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
# define cpu_is_omap34xx() is_omap34xx()
# define cpu_is_omap343x() is_omap343x()
# endif
+# if defined(CONFIG_ARCH_OMAP35XX)
+# undef cpu_is_omap35xx
+# define cpu_is_omap35xx() is_omap35xx()
+# endif
#else
# if defined(CONFIG_ARCH_OMAP24XX)
# undef cpu_is_omap24xx
@@ -225,6 +270,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
* cpu_is_omap2423(): True for OMAP2423
* cpu_is_omap2430(): True for OMAP2430
* cpu_is_omap3430(): True for OMAP3430
+ * cpu_is_omap3503(): True for OMAP3503
+ * cpu_is_omap3515(): True for OMAP3515
+ * cpu_is_omap3525(): True for OMAP3525
+ * cpu_is_omap3530(): True for OMAP3530
*/
#define GET_OMAP_TYPE ((system_rev >> 16) & 0xffff)
@@ -247,6 +296,10 @@ IS_OMAP_TYPE(2422, 0x2422)
IS_OMAP_TYPE(2423, 0x2423)
IS_OMAP_TYPE(2430, 0x2430)
IS_OMAP_TYPE(3430, 0x3430)
+IS_OMAP_TYPE(3503, 0x3430)
+IS_OMAP_TYPE(3515, 0x3430)
+IS_OMAP_TYPE(3525, 0x3430)
+IS_OMAP_TYPE(3530, 0x3430)
#define cpu_is_omap310() 0
#define cpu_is_omap730() 0
@@ -261,6 +314,10 @@ IS_OMAP_TYPE(3430, 0x3430)
#define cpu_is_omap2423() 0
#define cpu_is_omap2430() 0
#define cpu_is_omap3430() 0
+#define cpu_is_omap3503() 0
+#define cpu_is_omap3515() 0
+#define cpu_is_omap3525() 0
+#define cpu_is_omap3530() 0
#if defined(MULTI_OMAP1)
# if defined(CONFIG_ARCH_OMAP730)
@@ -314,6 +371,26 @@ IS_OMAP_TYPE(3430, 0x3430)
# define cpu_is_omap3430() is_omap3430()
#endif
+#if defined(CONFIG_ARCH_OMAP35XX)
+# undef cpu_is_omap3503
+# undef cpu_is_omap3515
+# undef cpu_is_omap3525
+# undef cpu_is_omap3530
+
+# if defined(CONFIG_ARCH_OMAP3503)
+# define cpu_is_omap3503() 1
+# endif
+# if defined(CONFIG_ARCH_OMAP3515)
+# define cpu_is_omap3515() 1
+# endif
+# if defined(CONFIG_ARCH_OMAP3525)
+# define cpu_is_omap3525() 1
+# endif
+# if defined(CONFIG_ARCH_OMAP3525)
+# define cpu_is_omap3530() 1
+# endif
+#endif /* if defined(CONFIG_ARCH_OMAP35XX) */
+
/* Macros to detect if we have OMAP1 or OMAP2 */
#define cpu_class_is_omap1() (cpu_is_omap730() || cpu_is_omap15xx() || \
cpu_is_omap16xx())
@@ -359,6 +436,8 @@ IS_OMAP_TYPE(3430, 0x3430)
#define OMAP3430_REV_ES2_1 0x34302000
#define OMAP3430_REV_ES2_2 0x34303000
+#define OMAP35XX_CLASS 0x34300000
+
/*
* omap_chip bits
*
--
1.5.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] Updates to OMAP3EVM defconfig
2008-09-01 19:57 [PATCH 1/3] Add support for OMAP35x processors Sanjeev Premi
2008-09-01 19:57 ` [PATCH 2/3] Runtime check for OMAP35x Sanjeev Premi
@ 2008-09-01 19:57 ` Sanjeev Premi
1 sibling, 0 replies; 6+ messages in thread
From: Sanjeev Premi @ 2008-09-01 19:57 UTC (permalink / raw)
To: linux-omap; +Cc: Sanjeev Premi
---
arch/arm/configs/omap3_evm_defconfig | 15 ++++++++++++---
1 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/arch/arm/configs/omap3_evm_defconfig b/arch/arm/configs/omap3_evm_defconfig
index 718c914..cdf74e9 100644
--- a/arch/arm/configs/omap3_evm_defconfig
+++ b/arch/arm/configs/omap3_evm_defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.26-rc1-omap1
-# Thu May 8 08:18:45 2008
+# Linux kernel version: 2.6.26-omap1
+# Thu Sep 1 22:10:43 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -173,6 +173,7 @@ CONFIG_ARCH_OMAP3=y
CONFIG_OMAP_DEBUG_SRAM_PATCH=y
# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
+# CONFIG_OMAP_SMARTREFLEX is not set
# CONFIG_OMAP_RESET_CLOCKS is not set
CONFIG_OMAP_BOOT_TAG=y
CONFIG_OMAP_BOOT_REASON=y
@@ -191,6 +192,11 @@ CONFIG_OMAP_LL_DEBUG_UART1=y
# CONFIG_OMAP_LL_DEBUG_UART3 is not set
CONFIG_ARCH_OMAP34XX=y
CONFIG_ARCH_OMAP3430=y
+CONFIG_ARCH_OMAP35XX=y
+CONFIG_ARCH_OMAP3503=y
+# CONFIG_ARCH_OMAP3515 is not set
+# CONFIG_ARCH_OMAP3525 is not set
+# CONFIG_ARCH_OMAP3530 is not set
#
# OMAP Board Type
@@ -198,6 +204,8 @@ CONFIG_ARCH_OMAP3430=y
# CONFIG_MACH_OMAP_3430SDP is not set
CONFIG_MACH_OMAP3EVM=y
# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_OMAP_LDP is not set
+CONFIG_OMAP_TICK_GPTIMER=1
#
# Boot options
@@ -297,7 +305,7 @@ CONFIG_FPE_NWFPE=y
# CONFIG_FPE_FASTFPE is not set
CONFIG_VFP=y
CONFIG_VFPv3=y
-# CONFIG_NEON is not set
+CONFIG_NEON=y
#
# Userspace binary formats
@@ -778,6 +786,7 @@ CONFIG_SSB_POSSIBLE=y
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
+# CONFIG_VIDEO_MEDIA is not set
#
# Multimedia drivers
--
1.5.6
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] Runtime check for OMAP35x
2008-09-01 19:57 ` [PATCH 2/3] Runtime check for OMAP35x Sanjeev Premi
@ 2008-09-01 20:10 ` Russell King - ARM Linux
2008-09-02 6:29 ` Premi, Sanjeev
2008-09-02 17:30 ` Premi, Sanjeev
1 sibling, 1 reply; 6+ messages in thread
From: Russell King - ARM Linux @ 2008-09-01 20:10 UTC (permalink / raw)
To: Sanjeev Premi; +Cc: linux-omap
On Tue, Sep 02, 2008 at 01:27:46AM +0530, Sanjeev Premi wrote:
> Based on earlier review comments, added runtime
> check of the OMAP35x via omap2_set_globasl_3503() etc.
> ---
> arch/arm/plat-omap/common.c | 76 ++++++++++++++++++++++++++++++++++
> include/asm-arm/arch-omap/common.h | 4 ++
> include/asm-arm/arch-omap/cpu.h | 79 ++++++++++++++++++++++++++++++++++++
> 3 files changed, 159 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
> index 3a5f05e..f8b04cc 100644
> --- a/arch/arm/plat-omap/common.c
> +++ b/arch/arm/plat-omap/common.c
> @@ -334,3 +334,79 @@ void __init omap2_set_globals_343x(void)
> }
> #endif
>
> +#if defined(CONFIG_ARCH_OMAP3503)
> +
> +static struct omap_globals omap3503_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
See my comments elsewhere about why this is Really Bad. Any casts
outside of a few header files using __force are basically a bug.
In this case, you're being forced to use them because OMAP2_IO_ADDRESS
doesn't return the proper pointer values. (I produced a patch for
comment on this list last week over this issue.)
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 2/3] Runtime check for OMAP35x
2008-09-01 20:10 ` Russell King - ARM Linux
@ 2008-09-02 6:29 ` Premi, Sanjeev
0 siblings, 0 replies; 6+ messages in thread
From: Premi, Sanjeev @ 2008-09-02 6:29 UTC (permalink / raw)
To: Russell King - ARM Linux; +Cc: linux-omap@vger.kernel.org
-----Original Message-----
From: Russell King - ARM Linux [mailto:linux@arm.linux.org.uk]
Sent: Tuesday, September 02, 2008 1:41 AM
To: Premi, Sanjeev
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCH 2/3] Runtime check for OMAP35x
On Tue, Sep 02, 2008 at 01:27:46AM +0530, Sanjeev Premi wrote:
> Based on earlier review comments, added runtime check of the OMAP35x
> via omap2_set_globasl_3503() etc.
> ---
> arch/arm/plat-omap/common.c | 76 ++++++++++++++++++++++++++++++++++
> include/asm-arm/arch-omap/common.h | 4 ++
> include/asm-arm/arch-omap/cpu.h | 79 ++++++++++++++++++++++++++++++++++++
> 3 files changed, 159 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c
> index 3a5f05e..f8b04cc 100644
> --- a/arch/arm/plat-omap/common.c
> +++ b/arch/arm/plat-omap/common.c
> @@ -334,3 +334,79 @@ void __init omap2_set_globals_343x(void) }
> #endif
>
> +#if defined(CONFIG_ARCH_OMAP3503)
> +
> +static struct omap_globals omap3503_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
See my comments elsewhere about why this is Really Bad. Any casts outside of a few header files using __force are basically a bug.
In this case, you're being forced to use them because OMAP2_IO_ADDRESS doesn't return the proper pointer values. (I produced a patch for comment on this list last week over this issue.)
[sp] I was trying to be consistent/similar with current code in the file. Will make appropriate changes as you suggest.
^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 2/3] Runtime check for OMAP35x
2008-09-01 19:57 ` [PATCH 2/3] Runtime check for OMAP35x Sanjeev Premi
2008-09-01 20:10 ` Russell King - ARM Linux
@ 2008-09-02 17:30 ` Premi, Sanjeev
1 sibling, 0 replies; 6+ messages in thread
From: Premi, Sanjeev @ 2008-09-02 17:30 UTC (permalink / raw)
To: linux-omap@vger.kernel.org
> -----Original Message-----
> From: Premi, Sanjeev
> Sent: Tuesday, September 02, 2008 1:28 AM
> To: linux-omap@vger.kernel.org
> Cc: Premi, Sanjeev
> Subject: [PATCH 2/3] Runtime check for OMAP35x
>
> Based on earlier review comments, added runtime check of the
> OMAP35x via omap2_set_globasl_3503() etc.
> ---
> arch/arm/plat-omap/common.c | 76
> ++++++++++++++++++++++++++++++++++
> include/asm-arm/arch-omap/common.h | 4 ++
> include/asm-arm/arch-omap/cpu.h | 79
> ++++++++++++++++++++++++++++++++++++
> 3 files changed, 159 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/common.c
> b/arch/arm/plat-omap/common.c index 3a5f05e..f8b04cc 100644
> --- a/arch/arm/plat-omap/common.c
> +++ b/arch/arm/plat-omap/common.c
> @@ -334,3 +334,79 @@ void __init omap2_set_globals_343x(void)
> } #endif
>
> +#if defined(CONFIG_ARCH_OMAP3503)
> +
> +static struct omap_globals omap3503_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
> + .sdrc = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
> + .sms = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
> + .ctrl = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
> + .prm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
> + .cm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
> +};
> +
> +void __init omap2_set_globals_3503(void) {
> + omap2_globals = &omap3503_globals;
> + __omap2_set_globals();
> +}
> +#endif
> +
> +#if defined(CONFIG_ARCH_OMAP3515)
> +
> +static struct omap_globals omap3515_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
> + .sdrc = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
> + .sms = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
> + .ctrl = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
> + .prm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
> + .cm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
> +};
> +
> +void __init omap2_set_globals_3515(void) {
> + omap2_globals = &omap3515_globals;
> + __omap2_set_globals();
> +}
> +#endif
> +
> +#if defined(CONFIG_ARCH_OMAP3525)
> +
> +static struct omap_globals omap3525_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
> + .sdrc = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
> + .sms = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
> + .ctrl = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
> + .prm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
> + .cm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
> +};
> +
> +void __init omap2_set_globals_3525(void) {
> + omap2_globals = &omap3525_globals;
> + __omap2_set_globals();
> +}
> +#endif
> +
> +#if defined(CONFIG_ARCH_OMAP3530)
> +
> +static struct omap_globals omap3530_globals = {
> + .class = OMAP35XX_CLASS,
> + .tap = (__force void __iomem *)OMAP2_IO_ADDRESS(0x4830A000),
> + .sdrc = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SDRC_BASE),
> + .sms = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_SMS_BASE),
> + .ctrl = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP343X_CTRL_BASE),
> + .prm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_PRM_BASE),
> + .cm = (__force void __iomem
> *)OMAP2_IO_ADDRESS(OMAP3430_CM_BASE),
> +};
> +
> +void __init omap2_set_globals_3530(void) {
> + omap2_globals = &omap3530_globals;
> + __omap2_set_globals();
> +}
> +#endif
> +
> diff --git a/include/asm-arm/arch-omap/common.h
> b/include/asm-arm/arch-omap/common.h
> index 8a525ed..9bdb353 100644
> --- a/include/asm-arm/arch-omap/common.h
> +++ b/include/asm-arm/arch-omap/common.h
> @@ -62,6 +62,10 @@ struct omap_globals { void
> omap2_set_globals_242x(void); void
> omap2_set_globals_243x(void); void omap2_set_globals_343x(void);
> +void omap2_set_globals_3503(void);
> +void omap2_set_globals_3515(void);
> +void omap2_set_globals_3525(void);
> +void omap2_set_globals_3535(void);
>
> /* These get called from omap2_set_globals_xxxx(), do not
> call these */ void omap2_set_globals_tap(struct omap_globals
> *); diff --git a/include/asm-arm/arch-omap/cpu.h
> b/include/asm-arm/arch-omap/cpu.h index 33f26e9..bbe69ce 100644
> --- a/include/asm-arm/arch-omap/cpu.h
> +++ b/include/asm-arm/arch-omap/cpu.h
> @@ -97,6 +97,45 @@ extern unsigned int system_rev; # endif #endif
>
> +#ifdef CONFIG_ARCH_OMAP35XX
> +# ifdef CONFIG_ARCH_OMAP3503
> +# ifdef OMAP_NAME
> +# undef MULTI_OMAP2
> +# define MULTI_OMAP2
> +# else
> +# define OMAP_NAME omap3503
> +# endif
> +# endif /* ifdef CONFIG_ARCH_OMAP3503 */
> +
> +# ifdef CONFIG_ARCH_OMAP3515
> +# ifdef OMAP_NAME
> +# undef MULTI_OMAP2
> +# define MULTI_OMAP2
> +# else
> +# define OMAP_NAME omap3515
> +# endif
> +# endif /* ifdef CONFIG_ARCH_OMAP3515 */
> +
> +# ifdef CONFIG_ARCH_OMAP3525
> +# ifdef OMAP_NAME
> +# undef MULTI_OMAP2
> +# define MULTI_OMAP2
> +# else
> +# define OMAP_NAME omap3525
> +# endif
> +# endif /* ifdef CONFIG_ARCH_OMAP3525 */
> +
> +# ifdef CONFIG_ARCH_OMAP3530
> +# ifdef OMAP_NAME
> +# undef MULTI_OMAP2
> +# define MULTI_OMAP2
> +# else
> +# define OMAP_NAME omap3530
> +# endif
> +# endif /* ifdef CONFIG_ARCH_OMAP3530 */
> +
> +#endif /* ifdef CONFIG_ARCH_OMAP35XX */
> +
> /*
> * Macros to group OMAP into cpu classes.
> * These can be used in most places.
> @@ -107,6 +146,7 @@ extern unsigned int system_rev;
> * cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423
> * cpu_is_omap243x(): True for OMAP2430
> * cpu_is_omap343x(): True for OMAP3430
> + * cpu_is_omap35x(): True for OMAP35x
> */
> #define GET_OMAP_CLASS ((system_rev >> 24) & 0xff)
>
> @@ -142,6 +182,7 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> #define cpu_is_omap243x() 0
> #define cpu_is_omap34xx() 0
> #define cpu_is_omap343x() 0
> +#define cpu_is_omap35xx() 0
>
> #if defined(MULTI_OMAP1)
> # if defined(CONFIG_ARCH_OMAP730)
> @@ -186,6 +227,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> # define cpu_is_omap34xx() is_omap34xx()
> # define cpu_is_omap343x() is_omap343x()
> # endif
> +# if defined(CONFIG_ARCH_OMAP35XX)
> +# undef cpu_is_omap35xx
> +# define cpu_is_omap35xx() is_omap35xx()
> +# endif
> #else
> # if defined(CONFIG_ARCH_OMAP24XX)
> # undef cpu_is_omap24xx
> @@ -225,6 +270,10 @@ IS_OMAP_SUBCLASS(343x, 0x343)
> * cpu_is_omap2423(): True for OMAP2423
> * cpu_is_omap2430(): True for OMAP2430
> * cpu_is_omap3430(): True for OMAP3430
> + * cpu_is_omap3503(): True for OMAP3503
> + * cpu_is_omap3515(): True for OMAP3515
> + * cpu_is_omap3525(): True for OMAP3525
> + * cpu_is_omap3530(): True for OMAP3530
> */
> #define GET_OMAP_TYPE ((system_rev >> 16) & 0xffff)
>
> @@ -247,6 +296,10 @@ IS_OMAP_TYPE(2422, 0x2422)
> IS_OMAP_TYPE(2423, 0x2423) IS_OMAP_TYPE(2430, 0x2430)
> IS_OMAP_TYPE(3430, 0x3430)
> +IS_OMAP_TYPE(3503, 0x3430)
> +IS_OMAP_TYPE(3515, 0x3430)
> +IS_OMAP_TYPE(3525, 0x3430)
> +IS_OMAP_TYPE(3530, 0x3430)
>
> #define cpu_is_omap310() 0
> #define cpu_is_omap730() 0
> @@ -261,6 +314,10 @@ IS_OMAP_TYPE(3430, 0x3430)
> #define cpu_is_omap2423() 0
> #define cpu_is_omap2430() 0
> #define cpu_is_omap3430() 0
> +#define cpu_is_omap3503() 0
> +#define cpu_is_omap3515() 0
> +#define cpu_is_omap3525() 0
> +#define cpu_is_omap3530() 0
>
> #if defined(MULTI_OMAP1)
> # if defined(CONFIG_ARCH_OMAP730)
> @@ -314,6 +371,26 @@ IS_OMAP_TYPE(3430, 0x3430)
> # define cpu_is_omap3430() is_omap3430()
> #endif
>
> +#if defined(CONFIG_ARCH_OMAP35XX)
> +# undef cpu_is_omap3503
> +# undef cpu_is_omap3515
> +# undef cpu_is_omap3525
> +# undef cpu_is_omap3530
> +
> +# if defined(CONFIG_ARCH_OMAP3503)
> +# define cpu_is_omap3503() 1
> +# endif
> +# if defined(CONFIG_ARCH_OMAP3515)
> +# define cpu_is_omap3515() 1
> +# endif
> +# if defined(CONFIG_ARCH_OMAP3525)
> +# define cpu_is_omap3525() 1
> +# endif
> +# if defined(CONFIG_ARCH_OMAP3525)
> +# define cpu_is_omap3530() 1
> +# endif
> +#endif /* if defined(CONFIG_ARCH_OMAP35XX) */
> +
> /* Macros to detect if we have OMAP1 or OMAP2 */
> #define cpu_class_is_omap1() (cpu_is_omap730() ||
> cpu_is_omap15xx() || \
> cpu_is_omap16xx())
> @@ -359,6 +436,8 @@ IS_OMAP_TYPE(3430, 0x3430)
> #define OMAP3430_REV_ES2_1 0x34302000
> #define OMAP3430_REV_ES2_2 0x34303000
>
> +#define OMAP35XX_CLASS 0x34300000
> +
> /*
> * omap_chip bits
> *
> --
> 1.5.6
>
This patch is breaking the build at following location in (arch/arm/mach-omap2/usb-musb.c)
#ifdef CONFIG_USB_MUSB_SOC
static struct resource musb_resources[] = {
[0] = {
.start = cpu_is_omap34xx()
? OMAP34XX_HSUSB_OTG_BASE
: OMAP243X_HS_BASE,
.end = cpu_is_omap34xx()
? OMAP34XX_HSUSB_OTG_BASE + SZ_8K - 1
: OMAP243X_HS_BASE + SZ_8K -1,
.flags = IORESOURCE_MEM,
},
Here, cpu_is_omap34xx() is expected to be evaluated as constant by the compiler, but my earlier patch was eveluating as inline function causing the build to fail.
Did not catch is earlier as CONFIG_USB_MUSB_SOC was not set in my .config :(
I will be re-submitting this patch again.
~sanjeev
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-09-02 17:30 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-01 19:57 [PATCH 1/3] Add support for OMAP35x processors Sanjeev Premi
2008-09-01 19:57 ` [PATCH 2/3] Runtime check for OMAP35x Sanjeev Premi
2008-09-01 20:10 ` Russell King - ARM Linux
2008-09-02 6:29 ` Premi, Sanjeev
2008-09-02 17:30 ` Premi, Sanjeev
2008-09-01 19:57 ` [PATCH 3/3] Updates to OMAP3EVM defconfig Sanjeev Premi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox