diff mbox

ARM: dts: Add l2x0 device node for Exynos4-based boards

Message ID 1389084826-19827-1-git-send-email-tushar.behera@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Tushar Behera Jan. 7, 2014, 8:53 a.m. UTC
For Exynos4 platform, L2 cache initialization is done only if
a device node for l2x0 device exists.

L2 cache initialization path is different when a board boots with
secure firmware. Since there are many Exynos4 based SoCs that boot
in secure mode, enabling this only for boards that don't boot with
secure firmware.

Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
---

Tested on Exynos4210-Origen board.

 arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
 arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
 arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
 arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
 arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
 arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
 arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
 arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
 8 files changed, 36 insertions(+)

Comments

Tomasz Figa Jan. 23, 2014, 6:15 p.m. UTC | #1
Hi,

On 07.01.2014 09:53, Tushar Behera wrote:
> For Exynos4 platform, L2 cache initialization is done only if
> a device node for l2x0 device exists.
>
> L2 cache initialization path is different when a board boots with
> secure firmware. Since there are many Exynos4 based SoCs that boot
> in secure mode, enabling this only for boards that don't boot with
> secure firmware.
>
> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
> ---
>
> Tested on Exynos4210-Origen board.
>
>   arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
>   arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
>   arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
>   arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
>   arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
>   arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
>   arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
>   arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
>   8 files changed, 36 insertions(+)

Looks good. Unfortunately this is still going to break secure firmware 
enabled boards, because l2x0_of_init() does not check if the node is 
enabled.

Best regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tushar Behera Jan. 24, 2014, 4:44 a.m. UTC | #2
On 23 January 2014 23:45, Tomasz Figa <t.figa@samsung.com> wrote:
> Hi,
>
>
> On 07.01.2014 09:53, Tushar Behera wrote:
>>
>> For Exynos4 platform, L2 cache initialization is done only if
>> a device node for l2x0 device exists.
>>
>> L2 cache initialization path is different when a board boots with
>> secure firmware. Since there are many Exynos4 based SoCs that boot
>> in secure mode, enabling this only for boards that don't boot with
>> secure firmware.
>>
>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>> ---
>>
>> Tested on Exynos4210-Origen board.
>>
>>   arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
>>   arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
>>   arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
>>   arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
>>   arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
>>   arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
>>   arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
>>   arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
>>   8 files changed, 36 insertions(+)
>
>
> Looks good. Unfortunately this is still going to break secure firmware
> enabled boards, because l2x0_of_init() does not check if the node is
> enabled.
>

Is the following check in l2x0_of_init() not enough?

1002 |-------np = of_find_matching_node(NULL, l2x0_ids);
1003 |-------if (!np)
1004 |-------|-------return -ENODEV;

> Best regards,
> Tomasz
Tomasz Figa Jan. 24, 2014, 11:48 a.m. UTC | #3
On 24.01.2014 05:44, Tushar Behera wrote:
> On 23 January 2014 23:45, Tomasz Figa <t.figa@samsung.com> wrote:
>> Hi,
>>
>>
>> On 07.01.2014 09:53, Tushar Behera wrote:
>>>
>>> For Exynos4 platform, L2 cache initialization is done only if
>>> a device node for l2x0 device exists.
>>>
>>> L2 cache initialization path is different when a board boots with
>>> secure firmware. Since there are many Exynos4 based SoCs that boot
>>> in secure mode, enabling this only for boards that don't boot with
>>> secure firmware.
>>>
>>> Signed-off-by: Tushar Behera <tushar.behera@linaro.org>
>>> ---
>>>
>>> Tested on Exynos4210-Origen board.
>>>
>>>    arch/arm/boot/dts/exynos4.dtsi                  |    8 ++++++++
>>>    arch/arm/boot/dts/exynos4210-origen.dts         |    4 ++++
>>>    arch/arm/boot/dts/exynos4210-smdkv310.dts       |    4 ++++
>>>    arch/arm/boot/dts/exynos4210-trats.dts          |    4 ++++
>>>    arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 ++++
>>>    arch/arm/boot/dts/exynos4412-odroidx.dts        |    4 ++++
>>>    arch/arm/boot/dts/exynos4412-smdk4412.dts       |    4 ++++
>>>    arch/arm/boot/dts/exynos4412-tiny4412.dts       |    4 ++++
>>>    8 files changed, 36 insertions(+)
>>
>>
>> Looks good. Unfortunately this is still going to break secure firmware
>> enabled boards, because l2x0_of_init() does not check if the node is
>> enabled.
>>
>
> Is the following check in l2x0_of_init() not enough?
>
> 1002 |-------np = of_find_matching_node(NULL, l2x0_ids);
> 1003 |-------if (!np)
> 1004 |-------|-------return -ENODEV;

It only looks for a matching node without checking its status property.

Best regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index 08452e1..e0ddbd2 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -49,6 +49,14 @@ 
 		reg = <0x10000000 0x100>;
 	};
 
+	l2-cache-controller@10502000 {
+		compatible = "arm,pl310-cache";
+		reg = <0x10502000 0x1000>;
+		cache-unified;
+		cache-level = <2>;
+		status = "disabled";
+	};
+
 	mipi_phy: video-phy@10020710 {
 		compatible = "samsung,s5pv210-mipi-video-phy";
 		reg = <0x10020710 8>;
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index 2aa13cb..eea1286 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -32,6 +32,10 @@ 
 		bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	regulators {
 		compatible = "simple-bus";
 		#address-cells = <1>;
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
index 9c01b71..5ce2869 100644
--- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -29,6 +29,10 @@ 
 		bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	sdhci@12530000 {
 		bus-width = <4>;
 		pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts
index 63cc571..00dbc6c 100644
--- a/arch/arm/boot/dts/exynos4210-trats.dts
+++ b/arch/arm/boot/dts/exynos4210-trats.dts
@@ -30,6 +30,10 @@ 
 		bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rootwait earlyprintk panic=5";
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	regulators {
 		compatible = "simple-bus";
 
diff --git a/arch/arm/boot/dts/exynos4210-universal_c210.dts b/arch/arm/boot/dts/exynos4210-universal_c210.dts
index d2e3f5f..e732afe 100644
--- a/arch/arm/boot/dts/exynos4210-universal_c210.dts
+++ b/arch/arm/boot/dts/exynos4210-universal_c210.dts
@@ -28,6 +28,10 @@ 
 		bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rw rootwait earlyprintk panic=5 maxcpus=1";
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	mct@10050000 {
 		compatible = "none";
 	};
diff --git a/arch/arm/boot/dts/exynos4412-odroidx.dts b/arch/arm/boot/dts/exynos4412-odroidx.dts
index 8aad5f7..6fb9e84 100644
--- a/arch/arm/boot/dts/exynos4412-odroidx.dts
+++ b/arch/arm/boot/dts/exynos4412-odroidx.dts
@@ -22,6 +22,10 @@ 
 		reg = <0x40000000 0x40000000>;
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	leds {
 		compatible = "gpio-leds";
 		led1 {
diff --git a/arch/arm/boot/dts/exynos4412-smdk4412.dts b/arch/arm/boot/dts/exynos4412-smdk4412.dts
index ad316a1..f72d425 100644
--- a/arch/arm/boot/dts/exynos4412-smdk4412.dts
+++ b/arch/arm/boot/dts/exynos4412-smdk4412.dts
@@ -27,6 +27,10 @@ 
 		bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	g2d@10800000 {
 		status = "okay";
 	};
diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts b/arch/arm/boot/dts/exynos4412-tiny4412.dts
index 0a98312..33a3cb89 100644
--- a/arch/arm/boot/dts/exynos4412-tiny4412.dts
+++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts
@@ -22,6 +22,10 @@ 
 		reg = <0x40000000 0x40000000>;
 	};
 
+	l2-cache-controller@10502000 {
+		status = "okay";
+	};
+
 	leds {
 		compatible = "gpio-leds";