RE: [PATCH 2/3] Runtime check for OMAP35x

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: Premi, Sanjeev 
> Sent: Tuesday, September 02, 2008 1:28 AM
> To: linux-omap@xxxxxxxxxxxxxxx
> 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--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux