[V5,5/5] ARM: exynos: Enable l2 configuration through device tree

Message ID 1325737525-12869-6-git-send-email-amit.kachhap@linaro.org
State New
Headers show

Commit Message

Amit Daniel Kachhap Jan. 5, 2012, 4:25 a.m.
This patch enables calling generic l2 setup functions if device tree is used.

Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>
---
 arch/arm/mach-exynos/common.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

Comments

Olof Johansson Jan. 5, 2012, 4:36 a.m. | #1
On Wed, Jan 4, 2012 at 8:25 PM, Amit Daniel Kachhap
<amit.kachhap@linaro.org> wrote:
> This patch enables calling generic l2 setup functions if device tree is used.
>
> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>
> ---
>  arch/arm/mach-exynos/common.c |   14 ++++++++++++--
>  1 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
> index f8bb808..e91b92d 100644
> --- a/arch/arm/mach-exynos/common.c
> +++ b/arch/arm/mach-exynos/common.c
> @@ -47,6 +47,8 @@
>  #include <plat/regs-serial.h>
>
>  #include "common.h"
> +#define L2_AUX_VAL 0x7C470001
> +#define L2_AUX_MASK 0xC200ffff
>
>  static const char name_exynos4210[] = "EXYNOS4210";
>  static const char name_exynos4212[] = "EXYNOS4212";
> @@ -453,6 +455,15 @@ core_initcall(exynos4_core_init);
>  #ifdef CONFIG_CACHE_L2X0
>  static int __init exynos4_l2x0_cache_init(void)
>  {
> +#ifdef CONFIG_OF
> +       int ret;
> +       ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
> +       if (!ret) {
> +               l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
> +               clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
> +               return 0;
> +       }
> +#endif

No need for ifdef here, if CONFIG_OF is off, then there's a static
inline version of l2x_of_init() that will return -ENODEV.


-Olof
Amit Daniel Kachhap Jan. 5, 2012, 6:26 a.m. | #2
On 5 January 2012 10:06, Olof Johansson <olof@lixom.net> wrote:
> On Wed, Jan 4, 2012 at 8:25 PM, Amit Daniel Kachhap
> <amit.kachhap@linaro.org> wrote:
>> This patch enables calling generic l2 setup functions if device tree is used.
>>
>> Signed-off-by: Amit Daniel Kachhap <amit.kachhap@linaro.org>
>> ---
>>  arch/arm/mach-exynos/common.c |   14 ++++++++++++--
>>  1 files changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
>> index f8bb808..e91b92d 100644
>> --- a/arch/arm/mach-exynos/common.c
>> +++ b/arch/arm/mach-exynos/common.c
>> @@ -47,6 +47,8 @@
>>  #include <plat/regs-serial.h>
>>
>>  #include "common.h"
>> +#define L2_AUX_VAL 0x7C470001
>> +#define L2_AUX_MASK 0xC200ffff
>>
>>  static const char name_exynos4210[] = "EXYNOS4210";
>>  static const char name_exynos4212[] = "EXYNOS4212";
>> @@ -453,6 +455,15 @@ core_initcall(exynos4_core_init);
>>  #ifdef CONFIG_CACHE_L2X0
>>  static int __init exynos4_l2x0_cache_init(void)
>>  {
>> +#ifdef CONFIG_OF
>> +       int ret;
>> +       ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
>> +       if (!ret) {
>> +               l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
>> +               clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
>> +               return 0;
>> +       }
>> +#endif
>
> No need for ifdef here, if CONFIG_OF is off, then there's a static
> inline version of l2x_of_init() that will return -ENODEV.

Will accept your suggestion. Thanks

>
>
> -Olof

Patch

diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index f8bb808..e91b92d 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -47,6 +47,8 @@ 
 #include <plat/regs-serial.h>
 
 #include "common.h"
+#define L2_AUX_VAL 0x7C470001
+#define L2_AUX_MASK 0xC200ffff
 
 static const char name_exynos4210[] = "EXYNOS4210";
 static const char name_exynos4212[] = "EXYNOS4212";
@@ -453,6 +455,15 @@  core_initcall(exynos4_core_init);
 #ifdef CONFIG_CACHE_L2X0
 static int __init exynos4_l2x0_cache_init(void)
 {
+#ifdef CONFIG_OF
+	int ret;
+	ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
+	if (!ret) {
+		l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
+		clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+		return 0;
+	}
+#endif
 	if (!(__raw_readl(S5P_VA_L2CC + L2X0_CTRL) & 0x1)) {
 		l2x0_saved_regs.phy_base = EXYNOS4_PA_L2CC;
 		/* TAG, Data Latency Control: 2 cycles */
@@ -486,8 +497,7 @@  static int __init exynos4_l2x0_cache_init(void)
 		clean_dcache_area(&l2x0_saved_regs, sizeof(struct l2x0_regs));
 	}
 
-	l2x0_init(S5P_VA_L2CC, 0x7C470001, 0xC200ffff);
-
+	l2x0_init(S5P_VA_L2CC, L2_AUX_VAL, L2_AUX_MASK);
 	return 0;
 }