Skip to content
Snippets Groups Projects
Commit a08af85f authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Tom Rini
Browse files

omap3: Reboot mode support


Reboot mode is written in scratchpad memory before reboot in the form of a
single char, that is the first letter of the reboot mode string as passed to the
reboot function.

This mechanism is supported on OMAP3 both my the upstream kernel and by various
TI kernels.

It is up to each board to make use of this mechanism or not.

Signed-off-by: default avatarPaul Kocialkowski <contact@paulk.fr>
Reviewed-by: default avatarTom Rini <trini@konsulko.com>
parent a4c8bbbc
No related branches found
No related tags found
No related merge requests found
...@@ -56,3 +56,41 @@ u32 omap_sys_boot_device(void) ...@@ -56,3 +56,41 @@ u32 omap_sys_boot_device(void)
return boot_devices[sys_boot]; return boot_devices[sys_boot];
} }
char omap_reboot_mode(void)
{
u32 reboot_mode;
char c;
reboot_mode = readl((u32 *)(OMAP34XX_SCRATCHPAD + 4));
c = (reboot_mode >> 24) & 0xff;
if (c != 'B')
return -1;
c = (reboot_mode >> 16) & 0xff;
if (c != 'M')
return -1;
c = reboot_mode & 0xff;
return c;
}
int omap_reboot_mode_clear(void)
{
writel(0, (u32 *)(OMAP34XX_SCRATCHPAD + 4));
return 0;
}
int omap_reboot_mode_store(char c)
{
u32 reboot_mode;
reboot_mode = 'B' << 24 | 'M' << 16 | c;
writel(reboot_mode, (u32 *)(OMAP34XX_SCRATCHPAD + 4));
return 0;
}
...@@ -51,6 +51,9 @@ struct control_prog_io { ...@@ -51,6 +51,9 @@ struct control_prog_io {
/* Bit definition for CONTROL_PROG_IO1 */ /* Bit definition for CONTROL_PROG_IO1 */
#define PRG_I2C2_PULLUPRESX 0x00000001 #define PRG_I2C2_PULLUPRESX 0x00000001
/* Scratchpad memory */
#define OMAP34XX_SCRATCHPAD (OMAP34XX_CTRL_BASE + 0x910)
/* UART */ /* UART */
#define OMAP34XX_UART1 (OMAP34XX_L4_IO_BASE + 0x6a000) #define OMAP34XX_UART1 (OMAP34XX_L4_IO_BASE + 0x6a000)
#define OMAP34XX_UART2 (OMAP34XX_L4_IO_BASE + 0x6c000) #define OMAP34XX_UART2 (OMAP34XX_L4_IO_BASE + 0x6c000)
...@@ -256,6 +259,10 @@ struct omap_boot_parameters { ...@@ -256,6 +259,10 @@ struct omap_boot_parameters {
unsigned char ch_flags; unsigned char ch_flags;
unsigned int boot_device_descriptor; unsigned int boot_device_descriptor;
}; };
char omap_reboot_mode(void);
int omap_reboot_mode_clear(void);
int omap_reboot_mode_store(char c);
#endif #endif
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment