Hi Grygorii, On Monday 05 August 2013 05:14 PM, Grygorii Strashko wrote: > On 08/04/2013 07:27 PM, Rajendra Nayak wrote: >> From: R Sricharan <r.sricharan@xxxxxx> >> >> The DRA7xx is a high-performance, infotainment application device, >> based on enhanced OMAP architecture integrated on a 28-nm technology. >> >> Since DRA7 is a platform supported only using DT, the cpu detection >> is based on the compatibles passed from DT blobs as suggested here >> http://lists.infradead.org/pipermail/linux-arm-kernel/2013-July/187712.html >> >> Suggested-by: Felipe Balbi <balbi@xxxxxx> >> Signed-off-by: R Sricharan <r.sricharan@xxxxxx> >> Signed-off-by: Rajendra Nayak <rnayak@xxxxxx> >> Acked-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx> >> --- >> arch/arm/mach-omap1/include/mach/soc.h | 1 + >> arch/arm/mach-omap2/id.c | 4 ++-- >> arch/arm/mach-omap2/soc.h | 17 +++++++++++++++++ >> 3 files changed, 20 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm/mach-omap1/include/mach/soc.h b/arch/arm/mach-omap1/include/mach/soc.h >> index 6cf9c1c..612bd1c 100644 >> --- a/arch/arm/mach-omap1/include/mach/soc.h >> +++ b/arch/arm/mach-omap1/include/mach/soc.h >> @@ -195,6 +195,7 @@ IS_OMAP_TYPE(1710, 0x1710) >> #define cpu_is_omap34xx() 0 >> #define cpu_is_omap44xx() 0 >> #define soc_is_omap54xx() 0 >> +#define soc_is_dra7xx() 0 >> #define soc_is_am33xx() 0 >> #define cpu_class_is_omap1() 1 >> #define cpu_class_is_omap2() 0 >> diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c >> index 2dc62a2..0289adc 100644 >> --- a/arch/arm/mach-omap2/id.c >> +++ b/arch/arm/mach-omap2/id.c >> @@ -61,7 +61,7 @@ int omap_type(void) >> val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); >> } else if (cpu_is_omap44xx()) { >> val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS); >> - } else if (soc_is_omap54xx()) { >> + } else if (soc_is_omap54xx() || soc_is_dra7xx()) { >> val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS); >> val &= OMAP5_DEVICETYPE_MASK; >> val >>= 6; >> @@ -116,7 +116,7 @@ static u16 tap_prod_id; >> >> void omap_get_die_id(struct omap_die_id *odi) >> { >> - if (cpu_is_omap44xx() || soc_is_omap54xx()) { >> + if (cpu_is_omap44xx() || soc_is_omap54xx() || soc_is_dra7xx()) { >> odi->id_0 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_0); >> odi->id_1 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_1); >> odi->id_2 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_2); >> diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h >> index 8c616e4..4588df1 100644 >> --- a/arch/arm/mach-omap2/soc.h >> +++ b/arch/arm/mach-omap2/soc.h >> @@ -8,6 +8,7 @@ >> * Written by Tony Lindgren <tony.lindgren@xxxxxxxxx> >> * >> * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@xxxxxx> >> + * Added DRA7xxx specific defines - Sricharan R<r.sricharan@xxxxxx> >> * >> * This program is free software; you can redistribute it and/or modify >> * it under the terms of the GNU General Public License as published by >> @@ -35,6 +36,7 @@ >> #ifndef __ASSEMBLY__ >> >> #include <linux/bitops.h> >> +#include <linux/of.h> >> >> /* >> * Test if multicore OMAP support is needed >> @@ -105,6 +107,15 @@ >> # endif >> #endif >> >> +#ifdef CONFIG_SOC_DRA7XX >> +# ifdef OMAP_NAME >> +# undef MULTI_OMAP2 >> +# define MULTI_OMAP2 >> +# else >> +# define OMAP_NAME DRA7XX >> +# endif >> +#endif >> + >> /* >> * Omap device type i.e. EMU/HS/TST/GP/BAD >> */ >> @@ -233,6 +244,7 @@ IS_AM_SUBCLASS(437x, 0x437) >> #define cpu_is_omap447x() 0 >> #define soc_is_omap54xx() 0 >> #define soc_is_omap543x() 0 >> +#define soc_is_dra7xx() 0 >> >> #if defined(MULTI_OMAP2) >> # if defined(CONFIG_ARCH_OMAP2) >> @@ -379,6 +391,11 @@ IS_OMAP_TYPE(3430, 0x3430) >> # define soc_is_omap543x() is_omap543x() >> #endif >> >> +#if defined(CONFIG_SOC_DRA7XX) >> +#undef soc_is_dra7xx >> +#define soc_is_dra7xx() (of_machine_is_compatible("ti,dra7")) > > Wouldn't that be too expensive to call of_machine_is_compatible every > time for DRA7 detection? Ideally these soc checks should happen only once at init (see PATCH 8/9 in the series for instance) so there should not be a 'every time' penalty. regards, Rajendra > > May be static variable can be used to store DRA7 presence status, > smth. like this: > > static inline int is_dra7xx(void) > { > static int is_dra7 = -1; > > if (is_dra7 < 0) > is_dra7 = of_machine_is_compatible("ti,dra7"); > > return !!is_dra7; > } > > (it's just an idea, not verified) > >> +#endif >> + >> /* Various silicon revisions for omap2 */ >> #define OMAP242X_CLASS 0x24200024 >> #define OMAP2420_REV_ES1_0 OMAP242X_CLASS >> > > > Regards, > -grygorii -- 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