Message ID | 1386345391-23482-2-git-send-email-rahul.sharma@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Rahul, On 6 December 2013 21:26, Rahul Sharma <rahul.sharma@samsung.com> wrote: > From: Pankaj Dubey <pankaj.dubey@samsung.com> > > This patch add basic arch side support for exynos5260 SoC. > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> > Signed-off-by: Arun Kumar K <arun.kk@samsung.com> Since you are posting the patch, your signed off is also required. [snip] > void exynos4_restart(enum reboot_mode mode, const char *cmd) > { > __raw_writel(0x1, S5P_SWRESET); > @@ -371,7 +387,8 @@ static void __init exynos4_map_io(void) > static void __init exynos5_map_io(void) > { > iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); > - > + if (soc_is_exynos5260()) > + iotable_init(exynos5260_iodesc, ARRAY_SIZE(exynos5260_iodesc)); Add this after 5250 to maintain numerical order. > if (soc_is_exynos5250()) > iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); > } [snip] > > #define S5P_VA_SYSRAM S3C_ADDR(0x02400000) > #define S5P_VA_SYSRAM_NS S3C_ADDR(0x02410000) > + Unnecessary blank line addition.
Thanks Sachin, On 9 December 2013 11:53, Sachin Kamat <sachin.kamat@linaro.org> wrote: > Hi Rahul, > > On 6 December 2013 21:26, Rahul Sharma <rahul.sharma@samsung.com> wrote: >> From: Pankaj Dubey <pankaj.dubey@samsung.com> >> >> This patch add basic arch side support for exynos5260 SoC. >> >> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> >> Signed-off-by: Arun Kumar K <arun.kk@samsung.com> > > Since you are posting the patch, your signed off is also required. > > [snip] > >> void exynos4_restart(enum reboot_mode mode, const char *cmd) >> { >> __raw_writel(0x1, S5P_SWRESET); >> @@ -371,7 +387,8 @@ static void __init exynos4_map_io(void) >> static void __init exynos5_map_io(void) >> { >> iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); >> - >> + if (soc_is_exynos5260()) >> + iotable_init(exynos5260_iodesc, ARRAY_SIZE(exynos5260_iodesc)); > > Add this after 5250 to maintain numerical order. > >> if (soc_is_exynos5250()) >> iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); >> } > > [snip] >> >> #define S5P_VA_SYSRAM S3C_ADDR(0x02400000) >> #define S5P_VA_SYSRAM_NS S3C_ADDR(0x02410000) >> + > Unnecessary blank line addition. > I will correct all these in next version. Regards, Rahul Sharma > > -- > With warm regards, > Sachin
Hi Pankaj, Rahul, Arun, In addition to issues already pointed by Sachin, please also see my comments inline. On Friday 06 of December 2013 21:26:25 Rahul Sharma wrote: > From: Pankaj Dubey <pankaj.dubey@samsung.com> > > This patch add basic arch side support for exynos5260 SoC. > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> > Signed-off-by: Arun Kumar K <arun.kk@samsung.com> > --- > arch/arm/mach-exynos/Kconfig | 9 +++++++++ > arch/arm/mach-exynos/common.c | 19 ++++++++++++++++++- > arch/arm/mach-exynos/cpuidle.c | 2 +- > arch/arm/mach-exynos/include/mach/map.h | 1 + > arch/arm/mach-exynos/include/mach/regs-pmu.h | 4 ++++ > arch/arm/mach-exynos/mach-exynos5-dt.c | 1 + > arch/arm/plat-samsung/include/plat/cpu.h | 8 ++++++++ > arch/arm/plat-samsung/include/plat/map-s5p.h | 1 + > 8 files changed, 43 insertions(+), 2 deletions(-) [snip] > diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c > index ddbfe87..405c11a 100644 > --- a/arch/arm/mach-exynos/cpuidle.c > +++ b/arch/arm/mach-exynos/cpuidle.c > @@ -120,7 +120,7 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev, > cpu_suspend(0, idle_finisher); > > #ifdef CONFIG_SMP > - if (!soc_is_exynos5250()) > + if (!soc_is_exynos5250() || soc_is_exynos5260()) The added OR condition doesn't affect the if condition in any way, because when running on Exynos5260, soc_is_exynos5250() will return false and make the whole condition evaluate to true. Shouldn't it be if (!soc_is_exynos5250() && !soc_is_exynos5260()) if Exynos5260 doesn't need scu_enable(), or left as is if it needs? > scu_enable(S5P_VA_SCU); > #endif > cpu_pm_exit(); > diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h > index 7b046b5..bd6fa02 100644 > --- a/arch/arm/mach-exynos/include/mach/map.h > +++ b/arch/arm/mach-exynos/include/mach/map.h > @@ -29,6 +29,7 @@ > #define EXYNOS4210_PA_SYSRAM_NS 0x0203F000 > #define EXYNOS4x12_PA_SYSRAM_NS 0x0204F000 > #define EXYNOS5250_PA_SYSRAM_NS 0x0204F000 > +#define EXYNOS5260_PA_SYSRAM_NS 0x02073000 > > #define EXYNOS_PA_CHIPID 0x10000000 > > diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h > index 2cdb63e..09ae29a 100644 > --- a/arch/arm/mach-exynos/include/mach/regs-pmu.h > +++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h > @@ -234,6 +234,10 @@ > > #define EXYNOS5_SYS_WDTRESET (1 << 20) > > +#define EXYNOS5260_A7_WDTRST (1 << 24) > +#define EXYNOS5260_A15_WDTRST (1 << 23) > +#define EXYNOS5260_SYS_WDTRESET (EXYNOS5260_A7_WDTRST || EXYNOS5260_A15_WDTRST) > + Are these definitions needed? I don't see any user in this patch. Best regards, Tomasz
Thanks Sachin, On 9 December 2013 11:53, Sachin Kamat <sachin.kamat@linaro.org> wrote: > Hi Rahul, > > On 6 December 2013 21:26, Rahul Sharma <rahul.sharma@samsung.com> wrote: >> From: Pankaj Dubey <pankaj.dubey@samsung.com> >> >> This patch add basic arch side support for exynos5260 SoC. >> >> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> >> Signed-off-by: Arun Kumar K <arun.kk@samsung.com> > > Since you are posting the patch, your signed off is also required. Right. I will add my Sign off. > > [snip] > >> void exynos4_restart(enum reboot_mode mode, const char *cmd) >> { >> __raw_writel(0x1, S5P_SWRESET); >> @@ -371,7 +387,8 @@ static void __init exynos4_map_io(void) >> static void __init exynos5_map_io(void) >> { >> iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); >> - >> + if (soc_is_exynos5260()) >> + iotable_init(exynos5260_iodesc, ARRAY_SIZE(exynos5260_iodesc)); > > Add this after 5250 to maintain numerical order. ok. > >> if (soc_is_exynos5250()) >> iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); >> } > > [snip] >> >> #define S5P_VA_SYSRAM S3C_ADDR(0x02400000) >> #define S5P_VA_SYSRAM_NS S3C_ADDR(0x02410000) >> + > Unnecessary blank line addition. I will remove this. Regards, Rahul Sharma. > > > -- > With warm regards, > Sachin
Hi Tomasz, Sorry for responding late. On 10 December 2013 21:27, Tomasz Figa <t.figa@samsung.com> wrote: > Hi Pankaj, Rahul, Arun, > > In addition to issues already pointed by Sachin, please also see my > comments inline. > > On Friday 06 of December 2013 21:26:25 Rahul Sharma wrote: >> From: Pankaj Dubey <pankaj.dubey@samsung.com> >> >> This patch add basic arch side support for exynos5260 SoC. >> >> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com> >> Signed-off-by: Arun Kumar K <arun.kk@samsung.com> >> --- >> arch/arm/mach-exynos/Kconfig | 9 +++++++++ >> arch/arm/mach-exynos/common.c | 19 ++++++++++++++++++- >> arch/arm/mach-exynos/cpuidle.c | 2 +- >> arch/arm/mach-exynos/include/mach/map.h | 1 + >> arch/arm/mach-exynos/include/mach/regs-pmu.h | 4 ++++ >> arch/arm/mach-exynos/mach-exynos5-dt.c | 1 + >> arch/arm/plat-samsung/include/plat/cpu.h | 8 ++++++++ >> arch/arm/plat-samsung/include/plat/map-s5p.h | 1 + >> 8 files changed, 43 insertions(+), 2 deletions(-) > [snip] >> diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c >> index ddbfe87..405c11a 100644 >> --- a/arch/arm/mach-exynos/cpuidle.c >> +++ b/arch/arm/mach-exynos/cpuidle.c >> @@ -120,7 +120,7 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev, >> cpu_suspend(0, idle_finisher); >> >> #ifdef CONFIG_SMP >> - if (!soc_is_exynos5250()) >> + if (!soc_is_exynos5250() || soc_is_exynos5260()) > > The added OR condition doesn't affect the if condition in any way, because > when running on Exynos5260, soc_is_exynos5250() will return false and make > the whole condition evaluate to true. > > Shouldn't it be > > if (!soc_is_exynos5250() && !soc_is_exynos5260()) > > if Exynos5260 doesn't need scu_enable(), or left as is if it needs? > Actually we don't need to call scu_enable() for 5260. Hence leaving it as it is. >> scu_enable(S5P_VA_SCU); >> #endif >> cpu_pm_exit(); >> diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h >> index 7b046b5..bd6fa02 100644 >> --- a/arch/arm/mach-exynos/include/mach/map.h >> +++ b/arch/arm/mach-exynos/include/mach/map.h >> @@ -29,6 +29,7 @@ >> #define EXYNOS4210_PA_SYSRAM_NS 0x0203F000 >> #define EXYNOS4x12_PA_SYSRAM_NS 0x0204F000 >> #define EXYNOS5250_PA_SYSRAM_NS 0x0204F000 >> +#define EXYNOS5260_PA_SYSRAM_NS 0x02073000 >> >> #define EXYNOS_PA_CHIPID 0x10000000 >> >> diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h >> index 2cdb63e..09ae29a 100644 >> --- a/arch/arm/mach-exynos/include/mach/regs-pmu.h >> +++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h >> @@ -234,6 +234,10 @@ >> >> #define EXYNOS5_SYS_WDTRESET (1 << 20) >> >> +#define EXYNOS5260_A7_WDTRST (1 << 24) >> +#define EXYNOS5260_A15_WDTRST (1 << 23) >> +#define EXYNOS5260_SYS_WDTRESET (EXYNOS5260_A7_WDTRST || EXYNOS5260_A15_WDTRST) >> + > > Are these definitions needed? I don't see any user in this patch. > Removed these definitions. Regards, Rahul Sharma. > Best regards, > Tomasz >
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index f9d67a0..dcae2ec 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig @@ -93,6 +93,15 @@ config SOC_EXYNOS5250 help Enable EXYNOS5250 SoC support +config SOC_EXYNOS5260 + bool "SAMSUNG EXYNOS5260" + default y + depends on ARCH_EXYNOS5 + select AUTO_ZRELADDR + select SAMSUNG_DMADEV + help + Enable EXYNOS5260 SoC support + config SOC_EXYNOS5420 bool "SAMSUNG EXYNOS5420" default y diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 61d2906..5eb77d1 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c @@ -52,6 +52,7 @@ static const char name_exynos4210[] = "EXYNOS4210"; static const char name_exynos4212[] = "EXYNOS4212"; static const char name_exynos4412[] = "EXYNOS4412"; static const char name_exynos5250[] = "EXYNOS5250"; +static const char name_exynos5260[] = "EXYNOS5260"; static const char name_exynos5420[] = "EXYNOS5420"; static const char name_exynos5440[] = "EXYNOS5440"; @@ -85,6 +86,12 @@ static struct cpu_table cpu_ids[] __initdata = { .init = exynos_init, .name = name_exynos5250, }, { + .idcode = EXYNOS5260_SOC_ID, + .idmask = EXYNOS5_SOC_MASK, + .map_io = exynos5_map_io, + .init = exynos_init, + .name = name_exynos5260, + }, { .idcode = EXYNOS5420_SOC_ID, .idmask = EXYNOS5_SOC_MASK, .map_io = exynos5_map_io, @@ -263,6 +270,15 @@ static struct map_desc exynos5_iodesc[] __initdata = { }, }; +static struct map_desc exynos5260_iodesc[] __initdata = { + { + .virtual = (unsigned long)S5P_VA_SYSRAM_NS, + .pfn = __phys_to_pfn(EXYNOS5260_PA_SYSRAM_NS), + .length = SZ_4K, + .type = MT_DEVICE, + }, +}; + void exynos4_restart(enum reboot_mode mode, const char *cmd) { __raw_writel(0x1, S5P_SWRESET); @@ -371,7 +387,8 @@ static void __init exynos4_map_io(void) static void __init exynos5_map_io(void) { iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc)); - + if (soc_is_exynos5260()) + iotable_init(exynos5260_iodesc, ARRAY_SIZE(exynos5260_iodesc)); if (soc_is_exynos5250()) iotable_init(exynos5250_iodesc, ARRAY_SIZE(exynos5250_iodesc)); } diff --git a/arch/arm/mach-exynos/cpuidle.c b/arch/arm/mach-exynos/cpuidle.c index ddbfe87..405c11a 100644 --- a/arch/arm/mach-exynos/cpuidle.c +++ b/arch/arm/mach-exynos/cpuidle.c @@ -120,7 +120,7 @@ static int exynos4_enter_core0_aftr(struct cpuidle_device *dev, cpu_suspend(0, idle_finisher); #ifdef CONFIG_SMP - if (!soc_is_exynos5250()) + if (!soc_is_exynos5250() || soc_is_exynos5260()) scu_enable(S5P_VA_SCU); #endif cpu_pm_exit(); diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h index 7b046b5..bd6fa02 100644 --- a/arch/arm/mach-exynos/include/mach/map.h +++ b/arch/arm/mach-exynos/include/mach/map.h @@ -29,6 +29,7 @@ #define EXYNOS4210_PA_SYSRAM_NS 0x0203F000 #define EXYNOS4x12_PA_SYSRAM_NS 0x0204F000 #define EXYNOS5250_PA_SYSRAM_NS 0x0204F000 +#define EXYNOS5260_PA_SYSRAM_NS 0x02073000 #define EXYNOS_PA_CHIPID 0x10000000 diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h index 2cdb63e..09ae29a 100644 --- a/arch/arm/mach-exynos/include/mach/regs-pmu.h +++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h @@ -234,6 +234,10 @@ #define EXYNOS5_SYS_WDTRESET (1 << 20) +#define EXYNOS5260_A7_WDTRST (1 << 24) +#define EXYNOS5260_A15_WDTRST (1 << 23) +#define EXYNOS5260_SYS_WDTRESET (EXYNOS5260_A7_WDTRST || EXYNOS5260_A15_WDTRST) + #define EXYNOS5_ARM_CORE0_SYS_PWR_REG S5P_PMUREG(0x1000) #define EXYNOS5_DIS_IRQ_ARM_CORE0_LOCAL_SYS_PWR_REG S5P_PMUREG(0x1004) #define EXYNOS5_DIS_IRQ_ARM_CORE0_CENTRAL_SYS_PWR_REG S5P_PMUREG(0x1008) diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index 1fe075a..d23cdc3 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c @@ -50,6 +50,7 @@ static void __init exynos5_dt_machine_init(void) static char const *exynos5_dt_compat[] __initdata = { "samsung,exynos5250", + "samsung,exynos5260", "samsung,exynos5420", "samsung,exynos5440", NULL diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index 335beb3..60687aa 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h @@ -46,6 +46,7 @@ extern unsigned long samsung_cpu_id; #define EXYNOS4_CPU_MASK 0xFFFE0000 #define EXYNOS5250_SOC_ID 0x43520000 +#define EXYNOS5260_SOC_ID 0xE5260000 #define EXYNOS5420_SOC_ID 0xE5420000 #define EXYNOS5440_SOC_ID 0xE5440000 #define EXYNOS5_SOC_MASK 0xFFFFF000 @@ -68,6 +69,7 @@ IS_SAMSUNG_CPU(exynos4210, EXYNOS4210_CPU_ID, EXYNOS4_CPU_MASK) IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK) IS_SAMSUNG_CPU(exynos4412, EXYNOS4412_CPU_ID, EXYNOS4_CPU_MASK) IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK) +IS_SAMSUNG_CPU(exynos5260, EXYNOS5260_SOC_ID, EXYNOS5_SOC_MASK) IS_SAMSUNG_CPU(exynos5420, EXYNOS5420_SOC_ID, EXYNOS5_SOC_MASK) IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK) @@ -148,6 +150,12 @@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK) # define soc_is_exynos5250() 0 #endif +#if defined(CONFIG_SOC_EXYNOS5260) +# define soc_is_exynos5260() is_samsung_exynos5260() +#else +# define soc_is_exynos5260() 0 +#endif + #if defined(CONFIG_SOC_EXYNOS5420) # define soc_is_exynos5420() is_samsung_exynos5420() #else diff --git a/arch/arm/plat-samsung/include/plat/map-s5p.h b/arch/arm/plat-samsung/include/plat/map-s5p.h index c186786..804597c 100644 --- a/arch/arm/plat-samsung/include/plat/map-s5p.h +++ b/arch/arm/plat-samsung/include/plat/map-s5p.h @@ -23,6 +23,7 @@ #define S5P_VA_SYSRAM S3C_ADDR(0x02400000) #define S5P_VA_SYSRAM_NS S3C_ADDR(0x02410000) + #define S5P_VA_DMC0 S3C_ADDR(0x02440000) #define S5P_VA_DMC1 S3C_ADDR(0x02480000) #define S5P_VA_SROMC S3C_ADDR(0x024C0000)