Skip to contentSkip to conversation

ARM: dts: exynos: Add reboot reason support for Trats2

PATCH In review Wolfgang Wiedmeyer 3 participants 7 messages Sep 22, 2016 – Sep 26, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: dts: exynos: Add reboot reason support for Trats2

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

---
 arch/arm/boot/dts/exynos4412-trats2.dts | 14 ++++++++++++++
 arch/arm/boot/dts/exynos4x12.dtsi       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
arch/arm/boot/dts/exynos4412-trats2.dts +14 -0
index 129e973..a38d1e3 100644
@@ -1294,3 +1294,17 @@
 	vtmu-supply = <&ldo10_reg>;
 	status = "okay";
 };
+
+&pmu {
+	compatible = "syscon", "simple-mfd";
+
+	reboot-mode {
+		compatible = "syscon-reboot-mode";
+		offset = <0x80c>;
+
+		mode-normal	= <0x12345670>;
+		mode-bootloader	= <0x12345671>;
+		mode-download	= <0x12345671>;
+		mode-recovery	= <0x12345674>;
+	};
+};
arch/arm/boot/dts/exynos4x12.dtsi +1 -1
index c452499..b58c14e 100644
@@ -179,7 +179,7 @@
 			ranges;
 			status = "disabled";
 
-			pmu at 10020000 {
+			pmu: pmu at 10020000 {
 				reg = <0x10020000 0x3000>;
 			};
 
Signature · 3 lines
Website: https://fossencdi.org
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
#1 lore raw

Hi,

Thanks for the patch, it is nice that someone did this! When I saw the syscon reboot mode driver, I though about such feature but never had time or will to implement it. Great job!

Few comments below.

Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

Quoted 17 lines
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 14 ++++++++++++++
 arch/arm/boot/dts/exynos4x12.dtsi       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
arch/arm/boot/dts/exynos4412-trats2.dts +2 -0
index 129e973..a38d1e3 100644
@@ -1294,3 +1294,17 @@
 	vtmu-supply = <&ldo10_reg>;
 	status = "okay";
 };
+
+&pmu {

arch/arm/boot/dts/exynos4412-trats2.dts line 1308

Quoted 10 lines
arch/arm/boot/dts/exynos4412-trats2.dts +10 -0
+	compatible = "syscon", "simple-mfd";
+
+	reboot-mode {
+		compatible = "syscon-reboot-mode";
+		offset = <0x80c>;
+
+		mode-normal	= <0x12345670>;
+		mode-bootloader	= <0x12345671>;
+		mode-download	= <0x12345671>;
+		mode-recovery	= <0x12345674>;

Hmmm, how did you get these values? Are they already supported?

It would be nice to document them:
1. In Documentation/arm/Samsung/Bootloader-interface.txt
2. In header. I hate such magic numbers... you could add new header next to existing rockchip one:
include/dt-bindings/soc/samsung,boot-mode.h
(and update maintainers entry :) )

Best regards,
Krzysztof

Quoted 20 lines
arch/arm/boot/dts/exynos4412-trats2.dts +2 -0
+	};
+};
arch/arm/boot/dts/exynos4x12.dtsi +1 -1
index c452499..b58c14e 100644
@@ -179,7 +179,7 @@
 			ranges;
 			status = "disabled";
 
-			pmu at 10020000 {
+			pmu: pmu at 10020000 {
 				reg = <0x10020000 0x3000>;
 			};
 
Signature · 3 lines
Website: https://fossencdi.org
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
#2 lore raw
Quoted 6 lines · Krzysztof Kozlowski
Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

I'm only working with the stock one. I was under the impression that the stock bootloader cannot be replaced on a i9300 because there's a signature check. Is UBoot loaded after the stock one on Trats2 or how does this work? I didn't find information on that.

Quoted 21 lines
Quoted 21 lines
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 14 ++++++++++++++
 arch/arm/boot/dts/exynos4x12.dtsi       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
index 129e973..a38d1e3 100644
@@ -1294,3 +1294,17 @@
 	vtmu-supply = <&ldo10_reg>;
 	status = "okay";
 };
+
+&pmu {
+	compatible = "syscon", "simple-mfd";
+
+	reboot-mode {
+		compatible = "syscon-reboot-mode";
Quoted 8 lines

arch/arm/boot/dts/exynos4412-trats2.dts line 1308

Quoted 6 lines
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
+		offset = <0x80c>;
+
+		mode-normal	= <0x12345670>;
+		mode-bootloader	= <0x12345671>;
+		mode-download	= <0x12345671>;
+		mode-recovery	= <0x12345674>;

Hmmm, how did you get these values? Are they already supported?

I only have the vendor source drop as documentation. The magic mode values [1] and the offset [2] can be found there.

Quoted 6 lines

It would be nice to document them:
1. In Documentation/arm/Samsung/Bootloader-interface.txt
2. In header. I hate such magic numbers... you could add new header next to existing rockchip one:
include/dt-bindings/soc/samsung,boot-mode.h
(and update maintainers entry :) )

Thanks for the review! I will do the documentation and update the commit message.

Best regards,
Wolfgang

[1] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/sec-reboot.c#n65

[2] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/include/mach/regs-pmu.h#n79

Signature · 11 lines
Website: https://fossencdi.org
Jabber: wolfgang at wiedmeyer.de
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160922/257562f9/attachment.sig>
#3 lore raw
Quoted 7 lines · Wolfgang Wiedmeyer
Quoted 4 lines · Krzysztof Kozlowski
Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Quoted 7 lines
Quoted 2 lines

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

I'm only working with the stock one. I was under the impression that the stock bootloader cannot be replaced on a i9300 because there's a signature check. Is UBoot loaded after the stock one on Trats2 or how does this work? I didn't find information on that.

+CC Marek,

Trats2 is working with U-Boot. Just U-Boot. However I never converted S3 into Trats2 on my own. I always used targets prepared to be "Trats2" type.

Of course kernel is independent to bootloader but in that case you want to use a specific interface between kernel and specific bootloader type/version. In that case - this should be U-Boot, I think.

Quoted 31 lines
Quoted 22 lines
Quoted 22 lines
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 14 ++++++++++++++
 arch/arm/boot/dts/exynos4x12.dtsi       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
index 129e973..a38d1e3 100644
@@ -1294,3 +1294,17 @@
 	vtmu-supply = <&ldo10_reg>;
 	status = "okay";
 };
+
+&pmu {
+	compatible = "syscon", "simple-mfd";
+
+	reboot-mode {
+		compatible = "syscon-reboot-mode";
Quoted 8 lines

arch/arm/boot/dts/exynos4412-trats2.dts line 1308

Quoted 6 lines
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
+		offset = <0x80c>;
+
+		mode-normal	= <0x12345670>;
+		mode-bootloader	= <0x12345671>;
+		mode-download	= <0x12345671>;
+		mode-recovery	= <0x12345674>;

Hmmm, how did you get these values? Are they already supported?

Quoted 2 lines

I only have the vendor source drop as documentation. The magic mode values [1] and the offset [2] can be found there.

It would be useful to mention that in commit msg (just the source)... however as I wrote above, these values should be for U-Boot, not the stock one.

Best regards,
Krzysztof

Quoted 24 lines
Quoted 7 lines

It would be nice to document them:
1. In Documentation/arm/Samsung/Bootloader-interface.txt
2. In header. I hate such magic numbers... you could add new header next to existing rockchip one:
include/dt-bindings/soc/samsung,boot-mode.h
(and update maintainers entry :) )

Thanks for the review! I will do the documentation and update the commit message.

Best regards,
Wolfgang

[1] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/sec-reboot.c#n65

[2] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/include/mach/regs-pmu.h#n79

Signature · 4 lines
Website: https://fossencdi.org
Jabber: wolfgang at wiedmeyer.de
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
#4 lore raw
Quoted 16 lines · Krzysztof Kozlowski
Quoted 7 lines · Wolfgang Wiedmeyer
Quoted 4 lines · Krzysztof Kozlowski
Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Quoted 7 lines
Quoted 2 lines

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

I'm only working with the stock one. I was under the impression that the stock bootloader cannot be replaced on a i9300 because there's a signature check. Is UBoot loaded after the stock one on Trats2 or how does this work? I didn't find information on that.

Quoted 5 lines

+CC Marek,

Trats2 is working with U-Boot. Just U-Boot. However I never converted S3 into Trats2 on my own. I always used targets prepared to be "Trats2" type.

It would be awesome to be able to run U-Boot on i9300. Is there a way to test this by not risking to brick the device, e.g. by booting from the SD card? Then I could send an updated version of the patch that is compatible with U-Boot :)

Quoted 3 lines

Of course kernel is independent to bootloader but in that case you want to use a specific interface between kernel and specific bootloader type/version. In that case - this should be U-Boot, I think.

I absolutely understand that. Having the patch in mainline doesn't make much sense if it's not compatible with U-Boot.

Best regards,
Wolfgang

Quoted 63 lines
Quoted 29 lines
Quoted 20 lines
Quoted 20 lines
---
 arch/arm/boot/dts/exynos4412-trats2.dts | 14 ++++++++++++++
 arch/arm/boot/dts/exynos4x12.dtsi       |  2 +-
 2 files changed, 15 insertions(+), 1 deletion(-)
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
index 129e973..a38d1e3 100644
@@ -1294,3 +1294,17 @@
 	vtmu-supply = <&ldo10_reg>;
 	status = "okay";
 };
+
+&pmu {
+	compatible = "syscon", "simple-mfd";
+
+	reboot-mode {
+		compatible = "syscon-reboot-mode";
Quoted 8 lines

arch/arm/boot/dts/exynos4412-trats2.dts line 1308

Quoted 6 lines
arch/arm/boot/dts/exynos4412-trats2.dts +6 -0
+		offset = <0x80c>;
+
+		mode-normal	= <0x12345670>;
+		mode-bootloader	= <0x12345671>;
+		mode-download	= <0x12345671>;
+		mode-recovery	= <0x12345674>;

Hmmm, how did you get these values? Are they already supported?

Quoted 2 lines

I only have the vendor source drop as documentation. The magic mode values [1] and the offset [2] can be found there.

It would be useful to mention that in commit msg (just the source)... however as I wrote above, these values should be for U-Boot, not the stock one.

Best regards,
Krzysztof

Quoted 24 lines
Quoted 7 lines

It would be nice to document them:
1. In Documentation/arm/Samsung/Bootloader-interface.txt
2. In header. I hate such magic numbers... you could add new header next to existing rockchip one:
include/dt-bindings/soc/samsung,boot-mode.h
(and update maintainers entry :) )

Thanks for the review! I will do the documentation and update the commit message.

Best regards,
Wolfgang

[1] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/sec-reboot.c#n65

[2] https://code.fossencdi.org/kernel_samsung_smdk4412.git/tree/arch/arm/mach-exynos/include/mach/regs-pmu.h#n79

Signature · 4 lines
Website: https://fossencdi.org
Jabber: wolfgang at wiedmeyer.de
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
Signature · 11 lines
Website: https://fossencdi.org
Jabber: wolfgang at wiedmeyer.de
OpenPGP: 0F30 D1A0 2F73 F70A 6FEE  048E 5816 A24C 1075 7FC4
Key download: https://wiedmeyer.de/keys/ww.asc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 818 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160924/58a07749/attachment.sig>
#5 lore raw
Quoted 21 lines · Wolfgang Wiedmeyer
Quoted 18 lines · Krzysztof Kozlowski
Quoted 7 lines · Wolfgang Wiedmeyer
Quoted 4 lines · Krzysztof Kozlowski
Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Quoted 7 lines
Quoted 2 lines

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

I'm only working with the stock one. I was under the impression that the stock bootloader cannot be replaced on a i9300 because there's a signature check. Is UBoot loaded after the stock one on Trats2 or how does this work? I didn't find information on that.

+CC Marek,

Quoted 8 lines
Quoted 3 lines

Trats2 is working with U-Boot. Just U-Boot. However I never converted S3 into Trats2 on my own. I always used targets prepared to be "Trats2" type.

It would be awesome to be able to run U-Boot on i9300. Is there a way to test this by not risking to brick the device, e.g. by booting from the SD card? Then I could send an updated version of the patch that is compatible with U-Boot :)

I don't think the stock bootloader supports chaining another bootloader from SD card. There is a way of booting from SD card by shortening a resistor but it is an emergency rescue procedure to overwrite existing bootloader with data from SD card (to restore device). This thread might be interesting:
http://forum.xda-developers.com/showpost.php?p=47234165&postcount=220
https://smyl.es/samsung-galaxy-iii-s3-gt-i9300-jtag-leaked-document-how-to-repair-soft-bricked-galaxy-s3/

On xda-developers you might find more data about this (including the procedure for emergency restore from SD card). Somehow people flash and unbrick their devices when playing with CyanogenMod...

Best regards,
Krzysztof

#6 lore raw
Quoted 39 lines · Krzysztof Kozlowski
Quoted 21 lines · Wolfgang Wiedmeyer
Quoted 18 lines · Krzysztof Kozlowski
Quoted 7 lines · Wolfgang Wiedmeyer
Quoted 4 lines · Krzysztof Kozlowski
Quoted 2 lines · Wolfgang Wiedmeyer

This allows to reboot the device into recovery mode and into the download mode of the bootloader.

Quoted 7 lines
Quoted 2 lines

Which bootloader? Probably UBoot... or Samsung stock one? Could you put that information here?

I'm only working with the stock one. I was under the impression that the stock bootloader cannot be replaced on a i9300 because there's a signature check. Is UBoot loaded after the stock one on Trats2 or how does this work? I didn't find information on that.

+CC Marek,

Quoted 8 lines
Quoted 3 lines

Trats2 is working with U-Boot. Just U-Boot. However I never converted S3 into Trats2 on my own. I always used targets prepared to be "Trats2" type.

It would be awesome to be able to run U-Boot on i9300. Is there a way to test this by not risking to brick the device, e.g. by booting from the SD card? Then I could send an updated version of the patch that is compatible with U-Boot :)

I don't think the stock bootloader supports chaining another bootloader from SD card. There is a way of booting from SD card by shortening a resistor but it is an emergency rescue procedure to overwrite existing bootloader with data from SD card (to restore device). This thread might be interesting:
http://forum.xda-developers.com/showpost.php?p=47234165&postcount=220
https://smyl.es/samsung-galaxy-iii-s3-gt-i9300-jtag-leaked-document-how-to-repair-soft-bricked-galaxy-s3/

Quoted 3 lines

On xda-developers you might find more data about this (including the procedure for emergency restore from SD card). Somehow people flash and unbrick their devices when playing with CyanogenMod...

Hi Wolfgang,

Few more info from my side. It is (rather) not possible to just flash GT-I9300 with U-Boot. It still requires S-Boot as a primary bootloader (probably different than the stock one). I think such binary S-Boot was published along with Tizen images for Trats2 (called RD-PQ). These images however started to disappear from download.tizen.org. You can still find some, e.g.:
http://download.tizen.org/releases/system/Tizen_RD-PQ_System_20130716_1.tar

(better download it soon :) ) This 'tar' should be uploaded through Lthor (also from tizen.org) however it might require appropriate Partition Information Table (PIT).
On Tizen Wiki you might find some guides for flashing/upgrading-PIT on Trats2.

However, please be careful, as all of these steps (and linked binary) are targeted to existing RD-PQ/Trats2 boards. They are not intended as a way of converting GT-I9300 into Trats2. The conversion might work but... it might not.

Before playing with it, I think it would be wise to have the emergency recovery procedure (with SD card) ready.

Best regards,
Krzysztof