diff mbox

[U-Boot,1/4] omap3: String-based reboot mode handling

Message ID 1456597604-10981-2-git-send-email-contact@paulk.fr
State Accepted
Commit c5412b084bf95781c54463570f96059a1d99d363
Delegated to: Tom Rini
Headers show

Commit Message

Paul Kocialkowski Feb. 27, 2016, 6:26 p.m. UTC
This switches reboot mode handling to a string-based interface, that allows more
flexibility to set a common interface with the next generations of OMAP devices.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
---
 arch/arm/cpu/armv7/omap3/boot.c        | 14 ++++++++++----
 arch/arm/include/asm/arch-omap3/omap.h |  4 ++--
 board/lge/sniper/sniper.c              |  6 +++---
 3 files changed, 15 insertions(+), 9 deletions(-)

Comments

Tom Rini March 15, 2016, 11:52 a.m. UTC | #1
On Sat, Feb 27, 2016 at 07:26:41PM +0100, Paul Kocialkowski wrote:

> This switches reboot mode handling to a string-based interface, that allows more
> flexibility to set a common interface with the next generations of OMAP devices.
> 
> Signed-off-by: Paul Kocialkowski <contact@paulk.fr>

Reviewed-by: Tom Rini <trini@konsulko.com>
Tom Rini March 17, 2016, 1:57 a.m. UTC | #2
On Sat, Feb 27, 2016 at 07:26:41PM +0100, Paul Kocialkowski wrote:

> This switches reboot mode handling to a string-based interface, that allows more
> flexibility to set a common interface with the next generations of OMAP devices.
> 
> Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/omap3/boot.c b/arch/arm/cpu/armv7/omap3/boot.c
index 44d7c30..259c210 100644
--- a/arch/arm/cpu/armv7/omap3/boot.c
+++ b/arch/arm/cpu/armv7/omap3/boot.c
@@ -57,11 +57,14 @@  u32 omap_sys_boot_device(void)
 	return boot_devices[sys_boot];
 }
 
-char omap_reboot_mode(void)
+int omap_reboot_mode(char *mode, unsigned int length)
 {
 	u32 reboot_mode;
 	char c;
 
+	if (length < 2)
+		return -1;
+
 	reboot_mode = readl((u32 *)(OMAP34XX_SCRATCHPAD + 4));
 
 	c = (reboot_mode >> 24) & 0xff;
@@ -74,7 +77,10 @@  char omap_reboot_mode(void)
 
 	c = reboot_mode & 0xff;
 
-	return c;
+	mode[0] = c;
+	mode[1] = '\0';
+
+	return 0;
 }
 
 int omap_reboot_mode_clear(void)
@@ -84,11 +90,11 @@  int omap_reboot_mode_clear(void)
 	return 0;
 }
 
-int omap_reboot_mode_store(char c)
+int omap_reboot_mode_store(char *mode)
 {
 	u32 reboot_mode;
 
-	reboot_mode = 'B' << 24 | 'M' << 16 | c;
+	reboot_mode = 'B' << 24 | 'M' << 16 | mode[0];
 
 	writel(reboot_mode, (u32 *)(OMAP34XX_SCRATCHPAD + 4));
 
diff --git a/arch/arm/include/asm/arch-omap3/omap.h b/arch/arm/include/asm/arch-omap3/omap.h
index 2c94a81..4044b8d 100644
--- a/arch/arm/include/asm/arch-omap3/omap.h
+++ b/arch/arm/include/asm/arch-omap3/omap.h
@@ -260,9 +260,9 @@  struct omap_boot_parameters {
 	unsigned int boot_device_descriptor;
 };
 
-char omap_reboot_mode(void);
+int omap_reboot_mode(char *mode, unsigned int length);
 int omap_reboot_mode_clear(void);
-int omap_reboot_mode_store(char c);
+int omap_reboot_mode_store(char *mode);
 #endif
 
 #endif
diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c
index f093f97..b2c8e97 100644
--- a/board/lge/sniper/sniper.c
+++ b/board/lge/sniper/sniper.c
@@ -109,7 +109,7 @@  int misc_init_r(void)
 
 	/* Reboot mode */
 
-	reboot_mode[0] = omap_reboot_mode();
+	omap_reboot_mode(reboot_mode, sizeof(reboot_mode));
 
 	if (keys[0])
 		reboot_mode[0] = 'r';
@@ -159,12 +159,12 @@  void get_board_serial(struct tag_serialnr *serialnr)
 
 void reset_misc(void)
 {
-	omap_reboot_mode_store('u');
+	omap_reboot_mode_store("u");
 }
 
 int fb_set_reboot_flag(void)
 {
-	return omap_reboot_mode_store('b');
+	return omap_reboot_mode_store("b");
 }
 
 #ifndef CONFIG_SPL_BUILD