diff mbox

ARM: dts: add exynos5422.dtsi to correct cpu order

Message ID 1432739754-19511-1-git-send-email-chanho61.park@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Chanho Park May 27, 2015, 3:15 p.m. UTC
The odroid-xu3 board which is based on exynos5422 not exynos5800 is
booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu order
is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7 and
cpu4-7 are cortex-a15.

Signed-off-by: Chanho Park <chanho61.park@samsung.com>
---
 arch/arm/boot/dts/exynos5422-odroidxu3.dts |  5 +-
 arch/arm/boot/dts/exynos5422.dtsi          | 88 ++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+), 2 deletions(-)
 create mode 100644 arch/arm/boot/dts/exynos5422.dtsi

Comments

Joonyoung Shim May 28, 2015, 1:58 a.m. UTC | #1
Hi Chanho,

On 05/28/2015 12:15 AM, Chanho Park wrote:
> The odroid-xu3 board which is based on exynos5422 not exynos5800 is
> booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu order
> is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
> cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
> and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7 and
> cpu4-7 are cortex-a15.

The exynos5422 SoC can boot using cortex-a15 cpu depending on gpio
GPG2CON[1], i think this is just Odroid-XU3 board problem. Is it
possible to overwrite cpus information directly from
exynos5422-odroidxu3.dts?
--
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
Chanho Park May 28, 2015, 4 a.m. UTC | #2
Hi,

> -----Original Message-----
> From: Joonyoung Shim [mailto:jy0922.shim@samsung.com]
> Sent: Thursday, May 28, 2015 10:59 AM
> To: Chanho Park; kgene@kernel.org; k.kozlowski@samsung.com
> Cc: cw00.choi@samsung.com; linux-samsung-soc@vger.kernel.org;
> javier.martinez@collabora.co.uk; khilman@linaro.org;
> sjoerd.simons@collabora.co.uk; heesub.shin@samsung.com
> Subject: Re: [PATCH] ARM: dts: add exynos5422.dtsi to correct cpu order
> 
> Hi Chanho,
> 
> On 05/28/2015 12:15 AM, Chanho Park wrote:
> > The odroid-xu3 board which is based on exynos5422 not exynos5800 is
> > booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu
> order
> > is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
> > cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
> > and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7
> and
> > cpu4-7 are cortex-a15.
> 
> The exynos5422 SoC can boot using cortex-a15 cpu depending on gpio
> GPG2CON[1],

Yes, But, the pin is not controllable because it's checked in  the iROM
area.

> i think this is just Odroid-XU3 board problem. Is it
> possible to overwrite cpus information directly from
> exynos5422-odroidxu3.dts?

It's possible to override the info in the odroidxu3.dts. As you know,
however, a new exynos5422 board will be added soon. The board also has same
configuration of the gpio pin and booted cpu0 from a cortex-a7 core.

BTW, booting of secondary cpus are still broken. Is there any progress of
the patch[1]?
This patch is also generated top of the patch with some fixes.

[1]. http://www.spinics.net/lists/linux-samsung-soc/msg39523.html

Best Regards,
Chanho Park

--
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
Krzysztof Kozlowski May 28, 2015, 5:29 a.m. UTC | #3
+Cc Bartlomiej

On 28.05.2015 13:00, Chanho Park wrote:
> Hi,
> 
>> -----Original Message-----
>> From: Joonyoung Shim [mailto:jy0922.shim@samsung.com]
>> Sent: Thursday, May 28, 2015 10:59 AM
>> To: Chanho Park; kgene@kernel.org; k.kozlowski@samsung.com
>> Cc: cw00.choi@samsung.com; linux-samsung-soc@vger.kernel.org;
>> javier.martinez@collabora.co.uk; khilman@linaro.org;
>> sjoerd.simons@collabora.co.uk; heesub.shin@samsung.com
>> Subject: Re: [PATCH] ARM: dts: add exynos5422.dtsi to correct cpu order
>>
>> Hi Chanho,
>>
>> On 05/28/2015 12:15 AM, Chanho Park wrote:
>>> The odroid-xu3 board which is based on exynos5422 not exynos5800 is
>>> booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu
>> order
>>> is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
>>> cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
>>> and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7
>> and
>>> cpu4-7 are cortex-a15.
>>
>> The exynos5422 SoC can boot using cortex-a15 cpu depending on gpio
>> GPG2CON[1],
> 
> Yes, But, the pin is not controllable because it's checked in  the iROM
> area.

After looking at schematics I think the pin on Odroid XU3 seems to be
hard-wired to VDDQ_JTAG so this means that board will always boot to A7.
However this is a board-specific property.

> 
>> i think this is just Odroid-XU3 board problem. Is it
>> possible to overwrite cpus information directly from
>> exynos5422-odroidxu3.dts?
> 
> It's possible to override the info in the odroidxu3.dts. As you know,
> however, a new exynos5422 board will be added soon. The board also has same
> configuration of the gpio pin and booted cpu0 from a cortex-a7 core.


When adding new 5422 board we can split out CPU configuration to
separate DTSI file. I already posted patches for Odroid XU3-family
common DTSI file for XU3 Lite board:
http://www.spinics.net/lists/linux-samsung-soc/msg44868.html

> BTW, booting of secondary cpus are still broken. Is there any progress of
> the patch[1]?
> This patch is also generated top of the patch with some fixes.
> 
> [1]. http://www.spinics.net/lists/linux-samsung-soc/msg39523.html

No progress so far. Apparently nobody knows why this works and what to
do with it. I would suspect booted CPUs stuck somewhere in BL1 or BL2
and writing to PMU_SPARE2 kicks them. However this is just a guess.

Kukjin which could be the closest person to the real knowledge (LSI) did
not gave his feedback.

We have a lot of such hacks and undocumented interfaces between kernel
and bootloaders. IMHO it would be good to start documenting them.

Best regards,
Krzysztof

--
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
Chanho Park May 28, 2015, 8:43 a.m. UTC | #4
Hi,

> When adding new 5422 board we can split out CPU configuration to
> separate DTSI file. I already posted patches for Odroid XU3-family
> common DTSI file for XU3 Lite board:
> http://www.spinics.net/lists/linux-samsung-soc/msg44868.html

IMHO, all of the exynos5422 boards will be same cpu configurations. That's
why I added new exynos5422.dtsi.

> 
> > BTW, booting of secondary cpus are still broken. Is there any progress
> of
> > the patch[1]?
> > This patch is also generated top of the patch with some fixes.
> >
> > [1]. http://www.spinics.net/lists/linux-samsung-soc/msg39523.html
> 
> No progress so far. Apparently nobody knows why this works and what to
> do with it. I would suspect booted CPUs stuck somewhere in BL1 or BL2
> and writing to PMU_SPARE2 kicks them. However this is just a guess.
> 
> Kukjin which could be the closest person to the real knowledge (LSI) did
> not gave his feedback.
> 
> We have a lot of such hacks and undocumented interfaces between kernel
> and bootloaders. IMHO it would be good to start documenting them.

Good. But, who can do it?

Best Regards,
Chanho Park

--
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
Marek Szyprowski May 28, 2015, 8:49 a.m. UTC | #5
Hello,

On 2015-05-28 06:00, Chanho Park wrote:
>> -----Original Message-----
>> From: Joonyoung Shim [mailto:jy0922.shim@samsung.com]
>> Sent: Thursday, May 28, 2015 10:59 AM
>> To: Chanho Park; kgene@kernel.org; k.kozlowski@samsung.com
>> Cc: cw00.choi@samsung.com; linux-samsung-soc@vger.kernel.org;
>> javier.martinez@collabora.co.uk; khilman@linaro.org;
>> sjoerd.simons@collabora.co.uk; heesub.shin@samsung.com
>> Subject: Re: [PATCH] ARM: dts: add exynos5422.dtsi to correct cpu order
>>
>> Hi Chanho,
>>
>> On 05/28/2015 12:15 AM, Chanho Park wrote:
>>> The odroid-xu3 board which is based on exynos5422 not exynos5800 is
>>> booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu
>> order
>>> is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
>>> cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
>>> and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7
>> and
>>> cpu4-7 are cortex-a15.
>> The exynos5422 SoC can boot using cortex-a15 cpu depending on gpio
>> GPG2CON[1],
> Yes, But, the pin is not controllable because it's checked in  the iROM
> area.
>
>> i think this is just Odroid-XU3 board problem. Is it
>> possible to overwrite cpus information directly from
>> exynos5422-odroidxu3.dts?
> It's possible to override the info in the odroidxu3.dts. As you know,
> however, a new exynos5422 board will be added soon. The board also has same
> configuration of the gpio pin and booted cpu0 from a cortex-a7 core.
>
> BTW, booting of secondary cpus are still broken. Is there any progress of
> the patch[1]?
> This patch is also generated top of the patch with some fixes.

Przemyslaw is checking how to solve this issue in the bootloader like it has
been solved for Exynos 5800 based Chromebooks. The plan is to use the same
SPL code as mentioned here:
https://www.mail-archive.com/u-boot@lists.denx.de/msg159960.html

Best regards
Kevin Hilman May 28, 2015, 5:19 p.m. UTC | #6
Marek Szyprowski <m.szyprowski@samsung.com> writes:

> Hello,
>
> On 2015-05-28 06:00, Chanho Park wrote:
>>> -----Original Message-----
>>> From: Joonyoung Shim [mailto:jy0922.shim@samsung.com]
>>> Sent: Thursday, May 28, 2015 10:59 AM
>>> To: Chanho Park; kgene@kernel.org; k.kozlowski@samsung.com
>>> Cc: cw00.choi@samsung.com; linux-samsung-soc@vger.kernel.org;
>>> javier.martinez@collabora.co.uk; khilman@linaro.org;
>>> sjoerd.simons@collabora.co.uk; heesub.shin@samsung.com
>>> Subject: Re: [PATCH] ARM: dts: add exynos5422.dtsi to correct cpu order
>>>
>>> Hi Chanho,
>>>
>>> On 05/28/2015 12:15 AM, Chanho Park wrote:
>>>> The odroid-xu3 board which is based on exynos5422 not exynos5800 is
>>>> booted from cortex-a7 core unlike exynos5800. The odroid-xu3's cpu
>>> order
>>>> is quite strange. cpu0 and cpu5-7 are cortex-a7 cores and cpu1-4 are
>>>> cortex-a15 cores. To correct this mis-odering, I added exynos5422.dtsi
>>>> and reversing cpu orders from exynos5420. Now, cpu0-3 are cortex-a7
>>> and
>>>> cpu4-7 are cortex-a15.
>>> The exynos5422 SoC can boot using cortex-a15 cpu depending on gpio
>>> GPG2CON[1],
>> Yes, But, the pin is not controllable because it's checked in  the iROM
>> area.
>>
>>> i think this is just Odroid-XU3 board problem. Is it
>>> possible to overwrite cpus information directly from
>>> exynos5422-odroidxu3.dts?
>> It's possible to override the info in the odroidxu3.dts. As you know,
>> however, a new exynos5422 board will be added soon. The board also has same
>> configuration of the gpio pin and booted cpu0 from a cortex-a7 core.
>>
>> BTW, booting of secondary cpus are still broken. Is there any progress of
>> the patch[1]?
>> This patch is also generated top of the patch with some fixes.

Note that even with that hack/patch from me, all cores may boot, but you
cannot let them hit deeper idle states with CPUidle.  This is because
the firmware appears to have configured CCI in secure mode, which mean
that the kernel cannot control CCI, which essentially breaks MCPM  and
everthing built on it (idle, suspend, etc.)

> Przemyslaw is checking how to solve this issue in the bootloader like it has
> been solved for Exynos 5800 based Chromebooks. The plan is to use the same
> SPL code as mentioned here:
> https://www.mail-archive.com/u-boot@lists.denx.de/msg159960.html

This is good news!   I'd be happy to test any work in progress on this.

We really need the other exynos platforms to follow the bootloader of
the chromebooks which includes a working CCI and thus kernel MCPM
functionality.

Kevin

--
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
Krzysztof Kozlowski May 31, 2015, 7:09 a.m. UTC | #7
2015-05-28 17:43 GMT+09:00 Chanho Park <chanho61.park@samsung.com>:
> Hi,
>
>> When adding new 5422 board we can split out CPU configuration to
>> separate DTSI file. I already posted patches for Odroid XU3-family
>> common DTSI file for XU3 Lite board:
>> http://www.spinics.net/lists/linux-samsung-soc/msg44868.html
>
> IMHO, all of the exynos5422 boards will be same cpu configurations. That's
> why I added new exynos5422.dtsi.

Maybe all of boards will have same configuration... maybe not. You
cannot predict the future, right? It is however strictly related to
the board configuration. The SoC supports both boot modes depending on
the GPIO pin. I do not oppose against the idea of correcting order of
CPUs. It is nice to have them ordered in a more natural way. However I
think this should be a DTSI related to the CPU-nodes, not a DTSI for
SoC. Especially that inclusion order gets quite complicated:
1. Odroid includes 5422.dtsi.
2. 5422 includes 5800.
3. 5800 includes 5420.

Can you make it as a DTSI specific for CPU nodes configuration and
then include it only in boards DTS?

>
>>
>> > BTW, booting of secondary cpus are still broken. Is there any progress
>> of
>> > the patch[1]?
>> > This patch is also generated top of the patch with some fixes.
>> >
>> > [1]. http://www.spinics.net/lists/linux-samsung-soc/msg39523.html
>>
>> No progress so far. Apparently nobody knows why this works and what to
>> do with it. I would suspect booted CPUs stuck somewhere in BL1 or BL2
>> and writing to PMU_SPARE2 kicks them. However this is just a guess.
>>
>> Kukjin which could be the closest person to the real knowledge (LSI) did
>> not gave his feedback.
>>
>> We have a lot of such hacks and undocumented interfaces between kernel
>> and bootloaders. IMHO it would be good to start documenting them.
>
> Good. But, who can do it?

Anyone can do it! The information is there (spread in
arch/arm/mach-exynos and in u-boot code) so we just need a volunteer!
:)

BR,
Krzysztof
--
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/exynos5422-odroidxu3.dts b/arch/arm/boot/dts/exynos5422-odroidxu3.dts
index edc25cf..0f0784b 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu3.dts
+++ b/arch/arm/boot/dts/exynos5422-odroidxu3.dts
@@ -11,11 +11,12 @@ 
 */
 
 /dts-v1/;
-#include "exynos5800.dtsi"
+#include "exynos5422.dtsi"
 
 / {
 	model = "Hardkernel Odroid XU3";
-	compatible = "hardkernel,odroid-xu3", "samsung,exynos5800", "samsung,exynos5";
+	compatible = "hardkernel,odroid-xu3", "samsung,exynos5800",
+		     "samsung,exynos5422", "samsung,exynos5";
 
 	memory {
 		reg = <0x40000000 0x7EA00000>;
diff --git a/arch/arm/boot/dts/exynos5422.dtsi b/arch/arm/boot/dts/exynos5422.dtsi
new file mode 100644
index 0000000..3ac12bc
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5422.dtsi
@@ -0,0 +1,88 @@ 
+/*
+ * SAMSUNG EXYNOS5422 SoC device tree source
+ *
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ *		http://www.samsung.com
+ *
+ * The only difference between EXYNOS5422 and EXYNOS5800 is cpu ordering. The
+ * EXYNOS5422 is booting from Cortex-A7 core while the EXYNOS5800 is booting
+ * from Cortex-A15 core.
+ *
+ * EXYNOS5422 based board files can include this file and provide
+ * values for board specfic bindings.
+ *
+ * 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.
+ */
+
+#include "exynos5800.dtsi"
+
+/ {
+	compatible = "samsung,exynos5800", "samsung,exynos5422",
+		     "samsung,exynos5";
+};
+
+&cpu0 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a7";
+	reg = <0x100>;
+	clock-frequency = <1000000000>;
+	cci-control-port = <&cci_control0>;
+};
+
+&cpu1 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a7";
+	reg = <0x101>;
+	clock-frequency = <1000000000>;
+	cci-control-port = <&cci_control0>;
+};
+
+&cpu2 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a7";
+	reg = <0x102>;
+	clock-frequency = <1000000000>;
+	cci-control-port = <&cci_control0>;
+};
+
+&cpu3 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a7";
+	reg = <0x103>;
+	clock-frequency = <1000000000>;
+	cci-control-port = <&cci_control0>;
+};
+
+&cpu4 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a15";
+	reg = <0x0>;
+	clock-frequency = <1800000000>;
+	cci-control-port = <&cci_control1>;
+};
+
+&cpu5 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a15";
+	reg = <0x1>;
+	clock-frequency = <1800000000>;
+	cci-control-port = <&cci_control1>;
+};
+
+&cpu6 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a15";
+	reg = <0x2>;
+	clock-frequency = <1800000000>;
+	cci-control-port = <&cci_control1>;
+};
+
+&cpu7 {
+	device_type = "cpu";
+	compatible = "arm,cortex-a15";
+	reg = <0x3>;
+	clock-frequency = <1800000000>;
+	cci-control-port = <&cci_control1>;
+};