Support new Exynos3250 SoC based on Cortex-A7 dual core
Subsystems (6)
Chanwoo Choi
maintainerv2 cover Support new Exynos3250 SoC based on Cortex-A7 dual core
This patchset support new Exynos3250 Samsung SoC based on Cortex-A7 dual core. Exynos3250 is a System-On-Chip (SoC) that is based on 32-bit RISC processor for Smartphone. It is desigend with the 28nm low-power high-K metal gate process and provides the best performance features.
This patchset include some patches such as:
- Support secondary CPU of Exynos3250 (cpu up/down)
- Supoort uart/mct/adc/gic/i2c/spi/power-domain/pmu/mshc/pwm/amba
- Support the clock control for Exynos3250 using common clk framework
This patchset is completely tested and is based on following git repo/branch.
- git repo : git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
- branch : for-next (Linux 3.15-rc1)
Additional patch description about static memory mapping:
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161
So, I'm going to re-implement following patches related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for non-secure SYSRAM of Exynos3250
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Changes from v1:
- Add new "samsung,exynos3" compatible name
- Add comment about exynos_cpu_boot in Exynos4212
- Remove unnecessary 'goto' statement in firmware.c
- Use read_cpuid_part_number() function instead of assembler directly
- Post separated pinctrl patch from this patchset
: https://lkml.org/lkml/2014/4/13/156
- Remove unused pmu interrupts due to Exynos3250 dual-core
- Cosolidate all the patches related to exynos3250.dtsi into one patch
- Fix gic compatible name to "cortex-a15-gic" because Cortex-A7 GIC is same
- Add sign-off of sender to all this patches
- Fix minor typo
Chanwoo Choi (5):
ARM: EXYNOS: Add Exynos3250 SoC ID
ARM: EXYNOS: Add IO mapping for non-secure SYSRAM of Exynos3250
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
ARM: EXYNOS: Support secondary CPU boot of Exynos3250
ARM: EXYNOS: Enter a15 lowpower mode for Exynos3250 based on Cortex-a7
Kyungmin Park (1):
ARM: EXYNOS: Support secondary CPU boot of Exynos4212
Tomasz Figa (2):
clk: samsung: exynos3250: Add clocks using common clock framework
ARM: dts: Add device tree sources for Exynos3250
arch/arm/boot/dts/exynos3250-pinctrl.dtsi | 477 ++++++++++++++++++ arch/arm/boot/dts/exynos3250.dtsi | 410 ++++++++++++++++ arch/arm/mach-exynos/Kconfig | 22 + arch/arm/mach-exynos/exynos.c | 19 + arch/arm/mach-exynos/firmware.c | 18 +- arch/arm/mach-exynos/hotplug.c | 16 +- arch/arm/mach-exynos/include/mach/map.h | 2 + arch/arm/plat-samsung/include/plat/cpu.h | 10 + drivers/clk/samsung/Makefile | 1 + drivers/clk/samsung/clk-exynos3250.c | 785 ++++++++++++++++++++++++++++++ include/dt-bindings/clock/exynos3250.h | 256 ++++++++++ 11 files changed, 2010 insertions(+), 6 deletions(-) create mode 100644 arch/arm/boot/dts/exynos3250-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/exynos3250.dtsi create mode 100644 drivers/clk/samsung/clk-exynos3250.c create mode 100644 include/dt-bindings/clock/exynos3250.h
Signature · 1 line
1.8.0
Chanwoo Choi
maintainerPATCH v2 1/8 ARM: EXYNOS: Add Exynos3250 SoC ID
This patch add Exynos3250's SoC ID. Exynos 3250 is System-On-Chip(SoC) that is based on the 32-bit RISC processor for Smartphone. Exynos3250 uses Cortex-A7 dual cores and has a target speed of 1.0GHz.
--- arch/arm/mach-exynos/Kconfig | 22 ++++++++++++++++++++++ arch/arm/mach-exynos/exynos.c | 2 ++ arch/arm/plat-samsung/include/plat/cpu.h | 10 ++++++++++ 3 files changed, 34 insertions(+)
arch/arm/mach-exynos/Kconfig +22 -0
@@ -11,6 +11,17 @@ if ARCH_EXYNOS menu "SAMSUNG EXYNOS SoCs Support" +config ARCH_EXYNOS3 + bool "SAMSUNG EXYNOS3" + select ARM_AMBA + select CLKSRC_OF + select HAVE_ARM_SCU if SMP + select HAVE_SMP + select PINCTRL + select PM_GENERIC_DOMAINS if PM_RUNTIME + help + Samsung EXYNOS3 SoCs based systems + config ARCH_EXYNOS4 bool "SAMSUNG EXYNOS4" default y
@@ -41,6 +52,17 @@ config ARCH_EXYNOS5 comment "EXYNOS SoCs" +config SOC_EXYNOS3250 + bool "SAMSUNG EXYNOS3250" + default y + depends on ARCH_EXYNOS3 + select ARCH_HAS_BANDGAP + select ARM_CPU_SUSPEND if PM + select PINCTRL_EXYNOS + select SAMSUNG_DMADEV + help + Enable EXYNOS3250 CPU support + config CPU_EXYNOS4210 bool "SAMSUNG EXYNOS4210" default y
arch/arm/mach-exynos/exynos.c +2 -0
@@ -370,6 +370,8 @@ static void __init exynos_dt_machine_init(void) }static char const *exynos_dt_compat[]__initconst = { +"samsung,exynos3" , +"samsung,exynos3250" ,"samsung,exynos4" ,"samsung,exynos4210" ,"samsung,exynos4212" ,
arch/arm/plat-samsung/include/plat/cpu.h +10 -0
@@ -43,6 +43,9 @@ extern unsigned long samsung_cpu_id;#define S5PV210_CPU_ID 0x43110000#define S5PV210_CPU_MASK 0xFFFFF000 +#define EXYNOS3250_SOC_ID 0xE3472000 +#define EXYNOS3_SOC_MASK 0xFFFFF000 +#define EXYNOS4210_CPU_ID 0x43210000#define EXYNOS4212_CPU_ID 0x43220000#define EXYNOS4412_CPU_ID 0xE4412200
@@ -68,6 +71,7 @@ IS_SAMSUNG_CPU(s5p6440, S5P6440_CPU_ID, S5P64XX_CPU_MASK) IS_SAMSUNG_CPU(s5p6450, S5P6450_CPU_ID, S5P64XX_CPU_MASK) IS_SAMSUNG_CPU(s5pc100, S5PC100_CPU_ID, S5PC100_CPU_MASK) IS_SAMSUNG_CPU(s5pv210, S5PV210_CPU_ID, S5PV210_CPU_MASK) +IS_SAMSUNG_CPU(exynos3250, EXYNOS3250_SOC_ID, EXYNOS3_SOC_MASK) 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 )
@@ -126,6 +130,12 @@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK)# define soc_is_s5pv210 () 0#endif +#if defined(CONFIG_SOC_EXYNOS3250 ) +# define soc_is_exynos3250 () is_samsung_exynos3250() +#else +# define soc_is_exynos3250 () 0 +#endif +#if defined(CONFIG_CPU_EXYNOS4210 )# define soc_is_exynos4210 () is_samsung_exynos4210()#else
Signature · 1 line
1.8.0
Chanwoo Choi
maintainerPATCH v2 2/8 ARM: EXYNOS: Add IO mapping for non-secure SYSRAM of Exynos3250
In reply to Chanwoo ChoiThe non-secure SYSRAM is used for secondary CPU bring-up. This patch add IO mapping for non-scure SYSRAM.
---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for non-secure SYSRAM of Exynos3250
arch/arm/mach-exynos/exynos.c | 12 ++++++++++++ arch/arm/mach-exynos/include/mach/map.h | 1 + 2 files changed, 13 insertions(+)
arch/arm/mach-exynos/exynos.c +12 -0
@@ -35,6 +35,15 @@#define L2_AUX_VAL 0x7C470001#define L2_AUX_MASK 0xC200ffff +static struct map_desc exynos3250_iodesc[]__initdata = { + { + .virtual = (unsigned long )S5P_VA_SYSRAM_NS , + .pfn =__phys_to_pfn (EXYNOS3_PA_SYSRAM_NS ), + .length =SZ_4K , + .type =MT_DEVICE , + }, +}; +static struct map_desc exynos4_iodesc[]__initdata = { { .virtual = (unsigned long )S3C_VA_SYS ,
@@ -275,6 +284,9 @@ static int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,*/ static void __init exynos_map_io (void ) { +if (soc_is_exynos3250 ()) +iotable_init (exynos3250_iodesc,ARRAY_SIZE (exynos3250_iodesc)); +if (soc_is_exynos4 ())iotable_init (exynos4_iodesc,ARRAY_SIZE (exynos4_iodesc));
arch/arm/mach-exynos/include/mach/map.h +1 -0
@@ -26,6 +26,7 @@#define EXYNOS4_PA_SYSRAM0 0x02025000#define EXYNOS4_PA_SYSRAM1 0x02020000#define EXYNOS5_PA_SYSRAM 0x02020000 +#define EXYNOS3_PA_SYSRAM_NS 0x0205F000#define EXYNOS4210_PA_SYSRAM_NS 0x0203F000#define EXYNOS4x12_PA_SYSRAM_NS 0x0204F000#define EXYNOS5250_PA_SYSRAM_NS 0x0204F000
Signature · 1 line
1.8.0
Chanwoo Choi
maintainerPATCH v2 3/8 ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
In reply to Chanwoo ChoiThis patch add memory mapping for PMU (Power Management Unit) which is used for power control of Exynos3250.
---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
arch/arm/mach-exynos/exynos.c | 5 +++++ arch/arm/mach-exynos/include/mach/map.h | 1 + 2 files changed, 6 insertions(+)
arch/arm/mach-exynos/exynos.c +5 -0
@@ -41,6 +41,11 @@ static struct map_desc exynos3250_iodesc[] __initdata = { .pfn = __phys_to_pfn(EXYNOS3_PA_SYSRAM_NS), .length = SZ_4K, .type = MT_DEVICE, + }, { + .virtual = (unsigned long)S5P_VA_PMU, + .pfn = __phys_to_pfn(EXYNOS3_PA_PMU), + .length = SZ_64K, + .type = MT_DEVICE, }, };
arch/arm/mach-exynos/include/mach/map.h +1 -0
@@ -36,6 +36,7 @@#define EXYNOS4_PA_SYSCON 0x10010000#define EXYNOS5_PA_SYSCON 0x10050100 +#define EXYNOS3_PA_PMU 0x10020000#define EXYNOS4_PA_PMU 0x10020000#define EXYNOS5_PA_PMU 0x10040000
Signature · 1 line
1.8.0
Re: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Quoted 12 lines · On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
This patch add memory mapping for PMU (Power Management Unit) which is used for power control of Exynos3250.
Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161
Quoted 3 lines
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
Arnd
Chanwoo Choi
maintainerRe: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Hi,
Quoted 13 lines · Arnd Bergmann
Quoted 12 lines · On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
This patch add memory mapping for PMU (Power Management Unit) which is used for power control of Exynos3250.
Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161
Quoted 6 lines
Quoted 3 lines
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
You are right. Sachin's patch only included the solution of SYSRAM memory mapping. I set out the plan that I would implment proper driver for PMU memory mapping instead of static method after merged Sachin's patch for SYSRAM.
But,
If you'd like me to implment PMU memory mapping instead of static mapping right now, I'll implement it for PMU such as Sachin's patch on next posting(v3).
Thanks for your review.
Best Regards,
Chanwoo Choi
Re: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Hi,
Quoted 23 lines · Chanwoo Choi
Hi,
Quoted 13 lines · Arnd Bergmann
Quoted 12 lines · On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
This patch add memory mapping for PMU (Power Management Unit) which is used for power control of Exynos3250.
Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161Quoted 6 lines
Quoted 3 lines
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
Quoted 8 lines
You are right. Sachin's patch only included the solution of SYSRAM memory mapping. I set out the plan that I would implment proper driver for PMU memory mapping instead of static method after merged Sachin's patch for SYSRAM.
But,
If you'd like me to implment PMU memory mapping instead of static mapping right now, I'll implement it for PMU such as Sachin's patch on next posting(v3).
I have already posted patch[1] for mapping PMU through DT as part of my PMU series for exynos5260.
You can rebase on the same.
[1] http://www.spinics.net/lists/arm-kernel/msg316013.html
Quoted 11 lines
Thanks for your review.
Best Regards,
Chanwoo Choi--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Chanwoo Choi
maintainerRe: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Hi,
Quoted 35 lines · Vikas Sajjan
Hi,
Quoted 23 lines · Chanwoo Choi
Hi,
Quoted 13 lines · Arnd Bergmann
Quoted 12 lines · On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
This patch add memory mapping for PMU (Power Management Unit) which is used for power control of Exynos3250.
Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>---
Arnd Bergmann suggested that need proper driver instead of static memory mapping. As Chanho Park reply[2], Sachin Kamat already posted the DT support patch[1] for memory mapping for SYSRAM.
[1] http://www.spinics.net/lists/linux-samsung-soc/msg27647.html
[2] https://lkml.org/lkml/2014/4/10/161Quoted 6 lines
Quoted 3 lines
So, I'm going to re-implement following patch related to static memory mapping after merged Sachin Kamat patch[1].
ARM: EXYNOS: Add IO mapping for PMU of Exynos3250I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
Quoted 8 lines
You are right. Sachin's patch only included the solution of SYSRAM memory mapping. I set out the plan that I would implment proper driver for PMU memory mapping instead of static method after merged Sachin's patch for SYSRAM.
But,
If you'd like me to implment PMU memory mapping instead of static mapping right now, I'll implement it for PMU such as Sachin's patch on next posting(v3).
Quoted 6 lines
I have already posted patch[1] for mapping PMU through DT as part of my PMU series for exynos5260.
You can rebase on the same.
OK, I'll rebase it after merged PMU mapping patch[1].
Thanks,
Chanwoo Choi
Re: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
In reply to Chanwoo ChoiQuoted 6 lines · On Tuesday 15 April 2014 17:32:40 Chanwoo Choi wrote:
Quoted 4 lines · Arnd Bergmann
On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
Quoted 7 lines
You are right. Sachin's patch only included the solution of SYSRAM memory mapping. I set out the plan that I would implment proper driver for PMU memory mapping instead of static method after merged Sachin's patch for SYSRAM.
But,
If you'd like me to implment PMU memory mapping instead of static mapping right now, I'll implement it for PMU such as Sachin's patch on next posting(v3).
I don't really want to merge a new SoC type until these are resolved, so it would definitely be better to implement this for v3.
Arnd
Chanwoo Choi
maintainerRe: [PATCHv2 3/8] ARM: EXYNOS: Add IO mapping for PMU of Exynos3250
Quoted 11 lines · Arnd Bergmann
Quoted 10 lines · On Tuesday 15 April 2014 17:32:40 Chanwoo Choi wrote:
Quoted 4 lines · Arnd Bergmann
On Tuesday 15 April 2014 10:59:47 Chanwoo Choi wrote:
I don't think we have a patch for the PMU yet, Sachin was looking at the SYSRAM only.
You are right. Sachin's patch only included the solution of SYSRAM memory mapping. I set out the plan that I would implment proper driver for PMU memory mapping instead of static method after merged Sachin's patch for SYSRAM.
Quoted 7 lines
Quoted 3 lines
But,
If you'd like me to implment PMU memory mapping instead of static mapping right now, I'll implement it for PMU such as Sachin's patch on next posting(v3).I don't really want to merge a new SoC type until these are resolved, so it would definitely be better to implement this for v3.
OK,
I'll rebase this patch on following patch which support PMU memory mapping through DT.
[1] http://www.spinics.net/lists/arm-kernel/msg316013.html
Thanks for your review.
Best Regards,
Chanwoo Choi
Chanwoo Choi
maintainerPATCH v2 4/8 ARM: EXYNOS: Support secondary CPU boot of Exynos4212
In reply to Chanwoo ChoiFrom: Kyungmin Park <[email protected]>
This patch fix the offset of CPU boot address and change parameter of smc call of SMC_CMD_CPU1BOOT command for Exynos4212.
--- arch/arm/mach-exynos/firmware.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
arch/arm/mach-exynos/firmware.c +14 -1
@@ -18,6 +18,8 @@#include <mach/map.h> +#include <plat/cpu.h> +#include "smc.h" static int exynos_do_idle (void )
@@ -28,13 +30,24 @@ static int exynos_do_idle(void)static int exynos_cpu_boot (int cpu) { +/* +* The second parameter of SMC_CMD_CPU1BOOT command means CPU id. +* But, Exynos4212 has only one secondary CPU so second parameter +* isn't used for informing secure firmware about CPU id. +*/ +if (soc_is_exynos4212 ()) + cpu =0 ; +exynos_smc (SMC_CMD_CPU1BOOT , cpu,0 ,0 );return 0 ; }static int exynos_set_cpu_boot_addr (int cpu,unsigned long boot_addr) { -void __iomem *boot_reg =S5P_VA_SYSRAM_NS +0x1c +4 *cpu; +void __iomem *boot_reg =S5P_VA_SYSRAM_NS +0x1c ; + +if (!soc_is_exynos4212 ()) + boot_reg +=4 *cpu;__raw_writel (boot_addr, boot_reg);return 0 ;
Signature · 1 line
1.8.0
Chanwoo Choi
maintainerPATCH v2 5/8 ARM: EXYNOS: Support secondary CPU boot of Exynos3250
In reply to Chanwoo ChoiThis patch fix the offset of CPU boot address and don't operate smc call of SMC_CMD_CPU1BOOT command for Exynos3250.
--- arch/arm/mach-exynos/firmware.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
arch/arm/mach-exynos/firmware.c +5 -2
@@ -30,13 +30,16 @@ static int exynos_do_idle(void)static int exynos_cpu_boot (int cpu) { +if (soc_is_exynos3250 ()) { +return 0 ;/* * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. * But, Exynos4212 has only one secondary CPU so second parameter * isn't used for informing secure firmware about CPU id. */ -if (soc_is_exynos4212 ()) + }else if (soc_is_exynos4212 ()) { cpu =0 ; + }exynos_smc (SMC_CMD_CPU1BOOT , cpu,0 ,0 );return 0 ;
@@ -46,7 +49,7 @@ static int exynos_set_cpu_boot_addr(int cpu, unsigned long boot_addr) {void __iomem *boot_reg =S5P_VA_SYSRAM_NS +0x1c ; -if (!soc_is_exynos4212 ()) +if (!soc_is_exynos4212 () && !soc_is_exynos3250 ()) boot_reg +=4 *cpu;__raw_writel (boot_addr, boot_reg);
Signature · 1 line
1.8.0
Re: [PATCHv2 5/8] ARM: EXYNOS: Support secondary CPU boot of Exynos3250
Quoted 19 lines · Chanwoo Choi
This patch fix the offset of CPU boot address and don't operate smc call of
SMC_CMD_CPU1BOOTcommand for Exynos3250.Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/firmware.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)arch/arm/mach-exynos/firmware.c +2
-0@@ -30,13 +30,16 @@ static int exynos_do_idle(void)static int exynos_cpu_boot (int cpu) { +if (soc_is_exynos3250 ()) { +return 0 ;
arch/arm/mach-exynos/firmware.c static int exynos_do_idle(void) · line 43
Quoted 10 lines
arch/arm/mach-exynos/firmware.c +2
-1/* * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. * But, Exynos4212 has only one secondary CPU so second parameter * isn't used for informing secure firmware about CPU id. */ -if (soc_is_exynos4212 ()) + }else if (soc_is_exynos4212 ()) { cpu =0 ; + }
As you already return in case of Exynos3250, you need not change this. First commit hunk without the opening brace should be sufficient.
Quoted 18 lines
arch/arm/mach-exynos/firmware.c +1
-2exynos_smc (SMC_CMD_CPU1BOOT , cpu,0 ,0 );return 0 ;@@ -46,7 +49,7 @@ static int exynos_set_cpu_boot_addr(int cpu, unsigned long boot_addr) {void __iomem *boot_reg =S5P_VA_SYSRAM_NS +0x1c ; -if (!soc_is_exynos4212 ()) +if (!soc_is_exynos4212 () && !soc_is_exynos3250 ()) boot_reg +=4 *cpu;__raw_writel (boot_addr, boot_reg); --1.8.0
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 1 line
Tushar Behera
Chanwoo Choi
maintainerRe: [PATCHv2 5/8] ARM: EXYNOS: Support secondary CPU boot of Exynos3250
Hi Tushar,
Quoted 25 lines · Tushar Behera
Quoted 24 lines · Chanwoo Choi
This patch fix the offset of CPU boot address and don't operate smc call of
SMC_CMD_CPU1BOOTcommand for Exynos3250.Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/firmware.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)arch/arm/mach-exynos/firmware.c +2
-0@@ -30,13 +30,16 @@ static int exynos_do_idle(void)static int exynos_cpu_boot (int cpu) { +if (soc_is_exynos3250 ()) { +return 0 ;/* * The second parameter of SMC_CMD_CPU1BOOT command means CPU id. * But, Exynos4212 has only one secondary CPU so second parameter * isn't used for informing secure firmware about CPU id. */
Quoted 8 lines
arch/arm/mach-exynos/firmware.c static int exynos_do_idle(void) · line 43
Quoted 5 lines
arch/arm/mach-exynos/firmware.c +2
-1-if (soc_is_exynos4212 ()) + }else if (soc_is_exynos4212 ()) { cpu =0 ; + }As you already return in case of Exynos3250, you need not change this. First commit hunk without the opening brace should be sufficient.
OK, I'll remove brace.
Best Regards,
Chanwoo Choi
Re: [PATCHv2 5/8] ARM: EXYNOS: Support secondary CPU boot of Exynos3250
In reply to Chanwoo ChoiHi Chanwoo,
Quoted 14 lines · Chanwoo Choi
This patch fix the offset of CPU boot address and don't operate smc call of
SMC_CMD_CPU1BOOTcommand for Exynos3250.Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/firmware.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)arch/arm/mach-exynos/firmware.c +0
-0
arch/arm/mach-exynos/firmware.c static int exynos_do_idle(void) · line 34
Quoted 5 lines
arch/arm/mach-exynos/firmware.c +2
-0@@ -30,13 +30,16 @@ static int exynos_do_idle(void)static int exynos_cpu_boot (int cpu) { +if (soc_is_exynos3250 ()) { +return 0 ;
This is strange. How the firmware knows when to boot the CPU then, if CPU1BOOT command is not called?
Best regards,
Tomasz
Chanwoo Choi
maintainerRe: [PATCHv2 5/8] ARM: EXYNOS: Support secondary CPU boot of Exynos3250
Hi Tomasz,
Quoted 18 lines · Tomasz Figa
Hi Chanwoo,
Quoted 15 lines · Chanwoo Choi
This patch fix the offset of CPU boot address and don't operate smc call of
SMC_CMD_CPU1BOOTcommand for Exynos3250.Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/firmware.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)arch/arm/mach-exynos/firmware.c +0
-0@@ -30,13 +30,16 @@ static int exynos_do_idle(void)
Quoted 6 lines
arch/arm/mach-exynos/firmware.c static int exynos_do_idle(void) · line 34
Quoted 4 lines
arch/arm/mach-exynos/firmware.c +2
-0static int exynos_cpu_boot (int cpu) { +if (soc_is_exynos3250 ()) { +return 0 ;This is strange. How the firmware knows when to boot the CPU then, if CPU1BOOT command is not called?
As I knew, Exynos3250 doesn't need smc for secondary boot
because WFE in secure mode for Exynos3250 is removed.
So, Exynos3250 doesn't need to send IPI_WAKEUP after call_firmware_op(cpu_boot, ...).
Best Regards,
Chanwoo Choi
Chanwoo Choi
maintainerPATCH v2 6/8 ARM: EXYNOS: Enter a15 lowpower mode for Exynos3250 based on Cortex-a7
In reply to Chanwoo ChoiThis patch decide proper lowpower mode of either a15 or a9 according to own ID from Main ID register.
--- arch/arm/mach-exynos/hotplug.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
arch/arm/mach-exynos/hotplug.c +11 -5
@@ -135,16 +135,22 @@ void __ref exynos_cpu_die(unsigned int cpu)int primary_part =0 ;/* -* we're ready for shutdown now, so do it. -* Exynos4 is A9 based while Exynos5 is A15; check the CPU part +* we're ready for shutdown now, so do it. Exynos4 is A9 based +* while Exynos5 is A15/Exynos3 is A7; check the CPU part * number by reading the Main ID register and then perform the * appropriate sequence for entering low power. */ - asm("mrc p15, 0, %0, c0, c0, 0" :"=r" (primary_part) : :"cc" ); -if ((primary_part &0xfff0 ) ==0xc0f0 ) + primary_part =read_cpuid_part_number (); + +switch (primary_part) { +case ARM_CPU_PART_CORTEX_A7 : +case ARM_CPU_PART_CORTEX_A15 :cpu_enter_lowpower_a15 (); -else +break ; +default :cpu_enter_lowpower_a9 (); +break ; + }platform_do_lowpower (cpu, &spurious);
Signature · 1 line
1.8.0
Re: [PATCHv2 6/8] ARM: EXYNOS: Enter a15 lowpower mode for Exynos3250 based on Cortex-a7
Hi Chanwoo,
Quoted 14 lines · Chanwoo Choi
This patch decide proper lowpower mode of either a15 or a9 according to own ID from Main ID register.
Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/hotplug.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)arch/arm/mach-exynos/hotplug.c +0
-0
arch/arm/mach-exynos/hotplug.c void __ref exynos_cpu_die(unsigned int cpu) · line 141
Quoted 9 lines
arch/arm/mach-exynos/hotplug.c +2
-2@@ -135,16 +135,22 @@ void __ref exynos_cpu_die(unsigned int cpu)int primary_part =0 ;/* -* we're ready for shutdown now, so do it. -* Exynos4 is A9 based while Exynos5 is A15; check the CPU part +* we're ready for shutdown now, so do it. Exynos4 is A9 based +* while Exynos5 is A15/Exynos3 is A7; check the CPU part * number by reading the Main ID register and then perform the * appropriate sequence for entering low power.
If changing this comment anyway, I'd suggest removing particular SoC series from it and also correct writing style. My suggestion is:
/*
* Prepare the CPU for shutting down. The required sequence of
* operations depends on core type. CPUID part number can be used to
* determine the right way.
*/
Best regards,
Tomasz
Re: [PATCHv2 6/8] ARM: EXYNOS: Enter a15 lowpower mode for Exynos3250 based on Cortex-a7
Hi Tomasz,
Quoted 23 lines · Tomasz Figa
Hi Chanwoo,
Quoted 19 lines · Chanwoo Choi
This patch decide proper lowpower mode of either a15 or a9 according to own ID
from Main ID register.Signed-off-by Chanwoo Choi <[email protected]>Acked-by Kyungmin Park <[email protected]>--- arch/arm/mach-exynos/hotplug.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)arch/arm/mach-exynos/hotplug.c +0
-0@@ -135,16 +135,22 @@ void __ref exynos_cpu_die(unsigned int cpu)int primary_part =0 ;
Quoted 11 lines
arch/arm/mach-exynos/hotplug.c void __ref exynos_cpu_die(unsigned int cpu) · line 141
Quoted 7 lines
arch/arm/mach-exynos/hotplug.c +2
-2/* -* we're ready for shutdown now, so do it. -* Exynos4 is A9 based while Exynos5 is A15; check the CPU part +* we're ready for shutdown now, so do it. Exynos4 is A9 based +* while Exynos5 is A15/Exynos3 is A7; check the CPU part * number by reading the Main ID register and then perform the * appropriate sequence for entering low power. If changing this comment anyway, I'd suggest removing particular SoC series from it and also correct writing style. My suggestion is:
OK, I'll fix it.
Best regards,
Chanwoo Choi
Quoted 14 lines
/*
* Prepare the CPU for shutting down. The required sequence of
* operations depends on core type. CPUID part number can be used to
* determine the right way.
*/Best regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Chanwoo Choi
maintainerPATCH v2 7/8 clk: samsung: exynos3250: Add clocks using common clock framework
In reply to Chanwoo ChoiFrom: Tomasz Figa <[email protected]>
This patch add new the clock drvier of Exynos3250 SoC based on Cortex-A7 using common clock framework. The CMU (Clock Management Unit) of Exynos3250 control PLLs(Phase Locked Loops) and generate system clocks for CPU, buses, and function clocks for individual IPs.
The CMU of Exynos3250 includes following clock doamins:
- CPU block for Cortex-A7 MPCore processor
- LEFTBUS/RIGHTBUS block
- TOP block for G3D/MFC/LCD0/ISP/CAM/FSYS/MFC/PERIL/PERIR
Changes from v1:
- None
--- drivers/clk/samsung/Makefile | 1 + drivers/clk/samsung/clk-exynos3250.c | 785 +++++++++++++++++++++++++++++++++ include/dt-bindings/clock/exynos3250.h | 256 +++++++++++ 3 files changed, 1042 insertions(+) create mode 100644 drivers/clk/samsung/clk-exynos3250.c create mode 100644 include/dt-bindings/clock/exynos3250.h
drivers/clk/samsung/Makefile +1 -0
@@ -3,6 +3,7 @@ # obj-$(CONFIG_COMMON_CLK) += clk.o clk-pll.o +obj-$(CONFIG_SOC_EXYNOS3250) += clk-exynos3250.o obj-$(CONFIG_ARCH_EXYNOS4) += clk-exynos4.o obj-$(CONFIG_SOC_EXYNOS5250) += clk-exynos5250.o obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5420.o
drivers/clk/samsung/clk-exynos3250.c new file +785 -0
785 lines not on this page · raw message
include/dt-bindings/clock/exynos3250.h new file +256 -0
256 lines not on this page · raw message
Signature · 1 line
1.8.0
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
In reply to Chanwoo ChoiFrom: Tomasz Figa <[email protected]>
This patch add new exynos3250.dtsi to support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:
- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus
--- arch/arm/boot/dts/exynos3250-pinctrl.dtsi | 477 ++++++++++++++++++++++++++++++ arch/arm/boot/dts/exynos3250.dtsi | 410 +++++++++++++++++++++++++ 2 files changed, 887 insertions(+) create mode 100644 arch/arm/boot/dts/exynos3250-pinctrl.dtsi create mode 100644 arch/arm/boot/dts/exynos3250.dtsi
arch/arm/boot/dts/exynos3250-pinctrl.dtsi new file +477 -0
@@ -0,0 +1,477 @@ +/* + * Samsung's Exynos3250 SoCs pin-mux and pin-config device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * Samsung's Exynos3250 SoCs pin-mux and pin-config optiosn are listed as device + * tree nodes are listed in this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + pinctrl at 11400000 { + gpa0: gpa0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpa1: gpa1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpb: gpb { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc0: gpc0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc1: gpc1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd0: gpd0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd1: gpd1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + uart0_data: uart0-data { + samsung,pins = "gpa0-0", "gpa0-1"; + samsung,pin-function = <0x2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + uart0_fctl: uart0-fctl { + samsung,pins = "gpa0-2", "gpa0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + uart1_data: uart1-data { + samsung,pins = "gpa0-4", "gpa0-5"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + uart1_fctl: uart1-fctl { + samsung,pins = "gpa0-6", "gpa0-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2c2_bus: i2c2-bus { + samsung,pins = "gpa0-6", "gpa0-7"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + i2c3_bus: i2c3-bus { + samsung,pins = "gpa1-2", "gpa1-3"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi0_bus: spi0-bus { + samsung,pins = "gpb-0", "gpb-2", "gpb-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + i2c4_bus: i2c4-bus { + samsung,pins = "gpb-0", "gpb-1"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi1_bus: spi1-bus { + samsung,pins = "gpb-4", "gpb-6", "gpb-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + i2c5_bus: i2c5-bus { + samsung,pins = "gpb-2", "gpb-3"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + i2s2_bus: i2s2-bus { + samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3", + "gpc1-4"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + pcm2_bus: pcm2-bus { + samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3", + "gpc1-4"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2c6_bus: i2c6-bus { + samsung,pins = "gpc1-3", "gpc1-4"; + samsung,pin-function = <4>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + pwm0_out: pwm0-out { + samsung,pins = "gpd0-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + pwm1_out: pwm1-out { + samsung,pins = "gpd0-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2c7_bus: i2c7-bus { + samsung,pins = "gpd0-2", "gpd0-3"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + pwm2_out: pwm2-out { + samsung,pins = "gpd0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + pwm3_out: pwm3-out { + samsung,pins = "gpd0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2c0_bus: i2c0-bus { + samsung,pins = "gpd1-0", "gpd1-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + mipi0_clk: mipi0-clk { + samsung,pins = "gpd1-0", "gpd1-1"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2c1_bus: i2c1-bus { + samsung,pins = "gpd1-2", "gpd1-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl at 11000000 { + gpe0: gpe0 { + gpio-controller; + #gpio-cells = <2>; + }; + + gpe1: gpe1 { + gpio-controller; + #gpio-cells = <2>; + }; + + gpe2: gpe2 { + gpio-controller; + #gpio-cells = <2>; + }; + + gpk0: gpk0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpk1: gpk1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpk2: gpk2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpl0: gpl0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpm0: gpm0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpm1: gpm1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpm2: gpm2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpm3: gpm3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpm4: gpm4 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpx0: gpx0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + interrupt-parent = <&gic>; + interrupts = <0 32 0>, <0 33 0>, <0 34 0>, <0 35 0>, + <0 36 0>, <0 37 0>, <0 38 0>, <0 39 0>; + #interrupt-cells = <2>; + }; + + gpx1: gpx1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + interrupt-parent = <&gic>; + interrupts = <0 40 0>, <0 41 0>, <0 42 0>, <0 43 0>, + <0 44 0>, <0 45 0>, <0 46 0>, <0 47 0>; + #interrupt-cells = <2>; + }; + + gpx2: gpx2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpx3: gpx3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + sd0_clk: sd0-clk { + samsung,pins = "gpk0-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + sd0_cmd: sd0-cmd { + samsung,pins = "gpk0-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + sd0_cd: sd0-cd { + samsung,pins = "gpk0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd0_rdqs: sd0-rdqs { + samsung,pins = "gpk0-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + sd0_bus1: sd0-bus-width1 { + samsung,pins = "gpk0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd0_bus4: sd0-bus-width4 { + samsung,pins = "gpk0-4", "gpk0-5", "gpk0-6"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd0_bus8: sd0-bus-width8 { + samsung,pins = "gpl0-0", "gpl0-1", "gpl0-2", "gpl0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd1_clk: sd1-clk { + samsung,pins = "gpk1-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + sd1_cmd: sd1-cmd { + samsung,pins = "gpk1-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + sd1_cd: sd1-cd { + samsung,pins = "gpk1-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd1_bus1: sd1-bus-width1 { + samsung,pins = "gpk1-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + sd1_bus4: sd1-bus-width4 { + samsung,pins = "gpk1-4", "gpk1-5", "gpk1-6"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + cam_port_b_io: cam-port-b-io { + samsung,pins = "gpm0-0", "gpm0-1", "gpm0-2", "gpm0-3", + "gpm0-4", "gpm0-5", "gpm0-6", "gpm0-7", + "gpm1-0", "gpm1-1", "gpm2-0", "gpm2-1"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + cam_port_b_clk_active: cam-port-b-clk-active { + samsung,pins = "gpm2-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + + cam_port_b_clk_idle: cam-port-b-clk-idle { + samsung,pins = "gpm2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_i2c0: fimc-is-i2c0 { + samsung,pins = "gpm4-0", "gpm4-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_i2c1: fimc-is-i2c1 { + samsung,pins = "gpm4-2", "gpm4-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_uart: fimc-is-uart { + samsung,pins = "gpm3-5", "gpm3-7"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; +};
arch/arm/boot/dts/exynos3250.dtsi new file +410 -0
410 lines not on this page · raw message
Signature · 1 line
1.8.0
PATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Quoted 5 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:
Quoted 13 lines
- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus
[...]
Where is the arch timer node?
M.
Signature · 1 line
Jazz is not dead. It just smells funny...
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Hi,
Quoted 20 lines · Marc Zyngier
Quoted 5 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:Quoted 13 lines
- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus
Quoted 3 lines
[...]
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of ARM_ARCH_TIMER.
- in drivers/clocksource/exynos_mct.c
Best Regards,
Chanwoo Choi
PATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Quoted 23 lines · Chanwoo Choi
Hi,
Quoted 20 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus
Quoted 6 lines
Quoted 3 lines
[...]
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.c
Don't you have a Cortex-A7? If so, you have the arch timer.
M.
Signature · 1 line
Jazz is not dead. It just smells funny...
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Quoted 24 lines · Marc Zyngier
Quoted 23 lines · Chanwoo Choi
Hi,
Quoted 20 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus
Quoted 8 lines
Quoted 6 lines
Quoted 3 lines
[...]
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is ARM_ARCH_TIMER?
As I knew, ARM_ARCH_TIMER is clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.
Exynos dts file didn't include arch timer node but only include mct node.
Best Regards,
Chanwoo Choi
PATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Quoted 27 lines · Chanwoo Choi
Quoted 26 lines · Marc Zyngier
Quoted 25 lines · Chanwoo Choi
Hi,
Quoted 22 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus[...]
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is
ARM_ARCH_TIMER?
Yes.
Quoted 4 lines
As I knew,
ARM_ARCH_TIMERis clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.Exynos dts file didn't include arch timer node but only include mct node.
Well, it is a bug, and a recurrent one. A Cortex-A7 has the arch timers implemented. Always.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BABFEBJJ.html
All Cortex-A7 have it, and so do A12, A15, A17, A53, A57.
Cheers,
M.
Signature · 1 line
Jazz is not dead. It just smells funny...
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Hi Marc,
Quoted 42 lines · Marc Zyngier
Quoted 27 lines · Chanwoo Choi
Quoted 26 lines · Marc Zyngier
Quoted 25 lines · Chanwoo Choi
Hi,
Quoted 22 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus[...]
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is
ARM_ARCH_TIMER?Yes.
Quoted 3 lines
As I knew,
ARM_ARCH_TIMERis clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.
Quoted 8 lines
Quoted 1 line
Exynos dts file didn't include arch timer node but only include mct node.
Well, it is a bug, and a recurrent one. A Cortex-A7 has the arch timers implemented. Always.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BABFEBJJ.html
All Cortex-A7 have it, and so do A12, A15, A17, A53, A57.
I tested 'arch_timer'(drivers/clocksource/arm_arch_timer.c) on Exynos3250 based on Cortex-A7.
To test arch timer, I used the clocksource of arch_timer for timekeeping instead of clocksource of Exynos MCT. But, I faced with issue. The following function return only same value(zero) as following kernel log:
- arch_counter_get_cntvct() in arch/arm/include/asm/arch_timer.h
Uncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.15.0-rc1-00020-gf452826-dirty ... [ 0.000000] CPU: ARMv7 Processor ... ... [ 0.000000] Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns
...
Could you give me a solution to resolve this issue or a expected cause?
Best Regards,
Chanwoo Choi
PATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Quoted 71 lines · Chanwoo Choi
Hi Marc,
Quoted 42 lines · Marc Zyngier
Quoted 27 lines · Chanwoo Choi
Quoted 26 lines · Marc Zyngier
Quoted 25 lines · Chanwoo Choi
Hi,
Quoted 22 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus[...]
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is
ARM_ARCH_TIMER?Yes.
Quoted 3 lines
As I knew,
ARM_ARCH_TIMERis clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.Quoted 8 lines
Quoted 1 line
Exynos dts file didn't include arch timer node but only include mct node.
Well, it is a bug, and a recurrent one. A Cortex-A7 has the arch timers implemented. Always.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BABFEBJJ.html
All Cortex-A7 have it, and so do A12, A15, A17, A53, A57.
I tested 'arch_timer'(drivers/clocksource/arm_arch_timer.c) on Exynos3250 based on Cortex-A7.
To test arch timer, I used the clocksource of
arch_timerfor timekeeping instead of clocksource of Exynos MCT. But, I faced with issue. The following function return only same value(zero) as following kernel log:
-arch_counter_get_cntvct()inarch/arm/include/asm/arch_timer.hUncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.15.0-rc1-00020-gf452826-dirty ... [ 0.000000] CPU: ARMv7 Processor ... ... [ 0.000000] Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns
Quoted 3 lines
...
Could you give me a solution to resolve this issue or a expected cause?
My guess is that you need to enable some clock for the timer to tick. Ask your HW guys how they have wired this clock.
Also, I cannot help but notice that you are entering your kernel at SVC instead of HYP. I suggest you fix your bootloader/firmware to allow all CPUs to enter the kernel in HYP.
Thanks,
M.
Signature · 1 line
Jazz is not dead. It just smells funny...
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
Hi Marc,
Quoted 74 lines · Marc Zyngier
Quoted 73 lines · Chanwoo Choi
Hi Marc,
Quoted 42 lines · Marc Zyngier
Quoted 27 lines · Chanwoo Choi
Quoted 26 lines · Marc Zyngier
Quoted 25 lines · Chanwoo Choi
Hi,
Quoted 22 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus[...]
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is
ARM_ARCH_TIMER?Yes.
Quoted 3 lines
As I knew,
ARM_ARCH_TIMERis clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.Quoted 8 lines
Quoted 1 line
Exynos dts file didn't include arch timer node but only include mct node.
Well, it is a bug, and a recurrent one. A Cortex-A7 has the arch timers implemented. Always.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BABFEBJJ.html
All Cortex-A7 have it, and so do A12, A15, A17, A53, A57.
I tested 'arch_timer'(drivers/clocksource/arm_arch_timer.c) on Exynos3250 based on Cortex-A7.
To test arch timer, I used the clocksource of
arch_timerfor timekeeping instead of clocksource of Exynos MCT. But, I faced with issue. The following function return only same value(zero) as following kernel log:
-arch_counter_get_cntvct()inarch/arm/include/asm/arch_timer.hUncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.15.0-rc1-00020-gf452826-dirty ... [ 0.000000] CPU: ARMv7 Processor ... ... [ 0.000000] Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns...
Quoted 8 lines
Quoted 1 line
Could you give me a solution to resolve this issue or a expected cause?
My guess is that you need to enable some clock for the timer to tick. Ask your HW guys how they have wired this clock.
Also, I cannot help but notice that you are entering your kernel at SVC instead of HYP. I suggest you fix your bootloader/firmware to allow all CPUs to enter the kernel in HYP.
OK, I understand. Thanks for your comment.
I think this patchset series will add arch_timer node to exynos3250.dtsi on next patchset(v3).
And then I will post other patch for arch_timer node after find the solution of this issue.
Best Regards,
Chanwoo Choi
Chanwoo Choi
maintainerPATCH v2 8/8 ARM: dts: Add device tree sources for Exynos3250
In reply to Marc ZyngierHi Marc,
Quoted 74 lines · Marc Zyngier
Quoted 73 lines · Chanwoo Choi
Hi Marc,
Quoted 42 lines · Marc Zyngier
Quoted 27 lines · Chanwoo Choi
Quoted 26 lines · Marc Zyngier
Quoted 25 lines · Chanwoo Choi
Hi,
Quoted 22 lines · Marc Zyngier
Quoted 18 lines · Chanwoo Choi
From: Tomasz Figa <[email protected]>
This patch add new
exynos3250.dtsito support Exynos3250 SoC based on Cortex-A7 dual core and includes following dt nodes:- GIC interrupt controller
- Pinctrl to control GPIOs
- Clock controller
- CPU information (Cortex-A7 dual core)
- UART to support serial port
- MCT (Multi Core Timer)
- ADC (Analog Digital Converter)
- I2C/SPI bus
- Power domain
- PMU (Performance Monitoring Unit)
- MSHC (Mobile Storage Host Controller)
- PWM (Pluse Width Modulation)
- AMBA bus[...]
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Where is the arch timer node?
Exynos3250 uses MCT (Multi Core Timer) instead of
ARM_ARCH_TIMER.
- indrivers/clocksource/exynos_mct.cDon't you have a Cortex-A7? If so, you have the arch timer.
Do you means that 'arch timer" is
ARM_ARCH_TIMER?Yes.
Quoted 3 lines
As I knew,
ARM_ARCH_TIMERis clocksource driver for system timer. But, Exynos SoC used MCT clocksource for system timer.Quoted 8 lines
Quoted 1 line
Exynos dts file didn't include arch timer node but only include mct node.
Well, it is a bug, and a recurrent one. A Cortex-A7 has the arch timers implemented. Always.
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0464f/BABFEBJJ.html
All Cortex-A7 have it, and so do A12, A15, A17, A53, A57.
I tested 'arch_timer'(drivers/clocksource/arm_arch_timer.c) on Exynos3250 based on Cortex-A7.
To test arch timer, I used the clocksource of
arch_timerfor timekeeping instead of clocksource of Exynos MCT. But, I faced with issue. The following function return only same value(zero) as following kernel log:
-arch_counter_get_cntvct()inarch/arm/include/asm/arch_timer.hUncompressing Linux... done, booting the kernel.
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Initializing cgroup subsys cpuacct [ 0.000000] Linux version 3.15.0-rc1-00020-gf452826-dirty ... [ 0.000000] CPU: ARMv7 Processor ... ... [ 0.000000] Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 2863311519744ns...
Quoted 8 lines
Quoted 1 line
Could you give me a solution to resolve this issue or a expected cause?
My guess is that you need to enable some clock for the timer to tick. Ask your HW guys how they have wired this clock.
Also, I cannot help but notice that you are entering your kernel at SVC instead of HYP. I suggest you fix your bootloader/firmware to allow all CPUs to enter the kernel in HYP.
I think again that I would like to add arch_timer dt node to exynos3250.dtsi as separated patchset after finishing the test arch_timer clocksource for timekeeping.
Thanks for your review.
Best Regards,
Chanwoo Choi