Hi Vikas,

As you comment, I found the history of this patch in mailing list.
It seems like that this patch stop the review.

Besides, Pankaj posted same patch to support PMU as following:
- https://lkml.org/lkml/2014/4/2/48

Do you have a plan to resend or not?
because I need this patch to remove PMU static memory mapping for Exynos3250.

Best Regards,
Chanwoo Choi

On 03/17/2014 10:09 PM, Vikas Sajjan wrote:
> Instead of hardcoding the PMU details for each SoC, pass this information
> through device tree (DT).
> 
> Signed-off-by: Vikas Sajjan <[email protected]>
> ---
>  .../devicetree/bindings/arm/samsung/pmu.txt        |    5 +-
>  arch/arm/boot/dts/exynos4.dtsi                     |    5 ++
>  arch/arm/boot/dts/exynos5260.dtsi                  |    5 ++
>  arch/arm/mach-exynos/common.c                      |   51 
> +++++++++++++-------
>  arch/arm/mach-exynos/include/mach/map.h            |    3 --
>  5 files changed, 47 insertions(+), 22 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt 
> b/Documentation/devicetree/bindings/arm/samsung/pmu.txt
> index f1f1552..667a7f0 100644
> --- a/Documentation/devicetree/bindings/arm/samsung/pmu.txt
> +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt
> @@ -2,14 +2,15 @@ SAMSUNG Exynos SoC series PMU Registers
>  
>  Properties:
>   - compatible : should contain two values. First value must be one from 
> following list:
> +                - "samsung,exynos4210-pmu" - for Exynos4210 and Exynos4x12 
> SoC,
>                  - "samsung,exynos5250-pmu" - for Exynos5250 SoC,
> -                - "samsung,exynos5420-pmu" - for Exynos5420 SoC.
> +                - "samsung,exynos5420-pmu" - for Exynos5420 and Exynos5260 
> SoC.
>               second value must be always "syscon".
>  
>   - reg : offset and length of the register set.
>  
>  Example :
>  pmu_system_controller: system-controller@10040000 {
> -     compatible = "samsung,exynos5250-pmu", "syscon";
> +     compatible = "samsung,exynos5250-pmu";
>       reg = <0x10040000 0x5000>;
>  };
> diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
> index 08452e1..94cbafa 100644
> --- a/arch/arm/boot/dts/exynos4.dtsi
> +++ b/arch/arm/boot/dts/exynos4.dtsi
> @@ -55,6 +55,11 @@
>               #phy-cells = <1>;
>       };
>  
> +     pmu_system_controller: system-controller@10020000 {
> +             compatible = "samsung,exynos4210-pmu";
> +             reg = <0x10020000 0x4000>;
> +     };
> +
>       pd_mfc: mfc-power-domain@10023C40 {
>               compatible = "samsung,exynos4210-pd";
>               reg = <0x10023C40 0x20>;
> diff --git a/arch/arm/boot/dts/exynos5260.dtsi 
> b/arch/arm/boot/dts/exynos5260.dtsi
> index a93fea8..2a4dace 100644
> --- a/arch/arm/boot/dts/exynos5260.dtsi
> +++ b/arch/arm/boot/dts/exynos5260.dtsi
> @@ -264,6 +264,11 @@
>                       };
>               };
>  
> +             pmu_system_controller: system-controller@10D50000 {
> +                     compatible = "samsung,exynos5420-pmu";
> +                     reg = <0x10D50000 0x5000>;
> +             };
> +
>               pinctrl_0: pinctrl@11600000 {
>                       compatible = "samsung,exynos5260-pinctrl";
>                       reg = <0x11600000 0x1000>;
> diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
> index 1df81ff..c75733b 100644
> --- a/arch/arm/mach-exynos/common.c
> +++ b/arch/arm/mach-exynos/common.c
> @@ -79,11 +79,6 @@ static struct map_desc exynos4_iodesc[] __initdata = {
>               .length         = SZ_4K,
>               .type           = MT_DEVICE,
>       }, {
> -             .virtual        = (unsigned long)S5P_VA_PMU,
> -             .pfn            = __phys_to_pfn(EXYNOS4_PA_PMU),
> -             .length         = SZ_64K,
> -             .type           = MT_DEVICE,
> -     }, {
>               .virtual        = (unsigned long)S5P_VA_COMBINER_BASE,
>               .pfn            = __phys_to_pfn(EXYNOS4_PA_COMBINER),
>               .length         = SZ_4K,
> @@ -157,11 +152,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
>               .pfn            = __phys_to_pfn(EXYNOS5_PA_CMU),
>               .length         = 144 * SZ_1K,
>               .type           = MT_DEVICE,
> -     }, {
> -             .virtual        = (unsigned long)S5P_VA_PMU,
> -             .pfn            = __phys_to_pfn(EXYNOS5_PA_PMU),
> -             .length         = SZ_64K,
> -             .type           = MT_DEVICE,
>       },
>  };
>  
> @@ -243,12 +233,12 @@ static int __init exynos_fdt_map_chipid(unsigned long 
> node, const char *uname,
>       return 1;
>  }
>  
> -struct __sysram_desc {
> +struct __exynos_reg_desc {
>       char name[32];
>       unsigned long addr;
>  };
>  
> -static struct __sysram_desc sysram_desc[] __initdata = {
> +static struct __exynos_reg_desc exynos_sysram_desc[] __initdata = {
>       {
>               .name = "samsung,exynos4210-sysram",
>               .addr = (unsigned long)S5P_VA_SYSRAM,
> @@ -258,7 +248,20 @@ static struct __sysram_desc sysram_desc[] __initdata = {
>       },
>  };
>  
> -static int __init exynos_fdt_map_sysram(unsigned long node, const char 
> *uname,
> +static struct __exynos_reg_desc exynos_pmu_desc[] __initdata = {
> +     {
> +             .name = "samsung,exynos4210-pmu",
> +             .addr = (unsigned long)S5P_VA_PMU,
> +     }, {
> +             .name = "samsung,exynos5250-pmu",
> +             .addr = (unsigned long)S5P_VA_PMU,
> +     }, {
> +             .name = "samsung,exynos5420-pmu",
> +             .addr = (unsigned long)S5P_VA_PMU,
> +     },
> +};
> +
> +static int __init exynos_fdt_map_reg(unsigned long node, const char *uname,
>                                       int depth, void *data)
>  {
>       struct map_desc iodesc;
> @@ -266,12 +269,26 @@ static int __init exynos_fdt_map_sysram(unsigned long 
> node, const char *uname,
>       unsigned long len;
>       int i;
>  
> -     for (i = 0; i < ARRAY_SIZE(sysram_desc); i++) {
> -             if (of_flat_dt_is_compatible(node, sysram_desc[i].name)) {
> +     for (i = 0; i < ARRAY_SIZE(exynos_sysram_desc); i++) {
> +             if (of_flat_dt_is_compatible(node,
> +                                     exynos_sysram_desc[i].name)) {
> +                     reg = of_get_flat_dt_prop(node, "reg", &len);
> +                     if (!reg || len != (sizeof(unsigned long) * 2))
> +                             return -ENODEV;
> +                     iodesc.virtual = exynos_sysram_desc[i].addr;
> +                     iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0]));
> +                     iodesc.length = be32_to_cpu(reg[1]);
> +                     iodesc.type = MT_DEVICE;
> +                     iotable_init(&iodesc, 1);
> +             }
> +     }
> +
> +     for (i = 0; i < ARRAY_SIZE(exynos_pmu_desc); i++) {
> +             if (of_flat_dt_is_compatible(node, exynos_pmu_desc[i].name)) {
>                       reg = of_get_flat_dt_prop(node, "reg", &len);
>                       if (!reg || len != (sizeof(unsigned long) * 2))
>                               return -ENODEV;
> -                     iodesc.virtual = sysram_desc[i].addr;
> +                     iodesc.virtual = exynos_pmu_desc[i].addr;
>                       iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0]));
>                       iodesc.length = be32_to_cpu(reg[1]);
>                       iodesc.type = MT_DEVICE;
> @@ -298,7 +315,7 @@ void __init exynos_init_io(void)
>  
>       exynos_map_io();
>  
> -     of_scan_flat_dt(exynos_fdt_map_sysram, NULL);
> +     of_scan_flat_dt(exynos_fdt_map_reg, NULL);
>  }
>  
>  static void __init exynos_map_io(void)
> diff --git a/arch/arm/mach-exynos/include/mach/map.h 
> b/arch/arm/mach-exynos/include/mach/map.h
> index 548269a..34eee6e 100644
> --- a/arch/arm/mach-exynos/include/mach/map.h
> +++ b/arch/arm/mach-exynos/include/mach/map.h
> @@ -28,9 +28,6 @@
>  #define EXYNOS4_PA_SYSCON            0x10010000
>  #define EXYNOS5_PA_SYSCON            0x10050100
>  
> -#define EXYNOS4_PA_PMU                       0x10020000
> -#define EXYNOS5_PA_PMU                       0x10040000
> -
>  #define EXYNOS4_PA_CMU                       0x10030000
>  #define EXYNOS5_PA_CMU                       0x10010000
>  
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to