omap3: String-based reboot mode handling
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>
This commit is contained in:
parent
41bccb8142
commit
c5412b084b
@ -57,11 +57,14 @@ u32 omap_sys_boot_device(void)
|
|||||||
return boot_devices[sys_boot];
|
return boot_devices[sys_boot];
|
||||||
}
|
}
|
||||||
|
|
||||||
char omap_reboot_mode(void)
|
int omap_reboot_mode(char *mode, unsigned int length)
|
||||||
{
|
{
|
||||||
u32 reboot_mode;
|
u32 reboot_mode;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
|
if (length < 2)
|
||||||
|
return -1;
|
||||||
|
|
||||||
reboot_mode = readl((u32 *)(OMAP34XX_SCRATCHPAD + 4));
|
reboot_mode = readl((u32 *)(OMAP34XX_SCRATCHPAD + 4));
|
||||||
|
|
||||||
c = (reboot_mode >> 24) & 0xff;
|
c = (reboot_mode >> 24) & 0xff;
|
||||||
@ -74,7 +77,10 @@ char omap_reboot_mode(void)
|
|||||||
|
|
||||||
c = reboot_mode & 0xff;
|
c = reboot_mode & 0xff;
|
||||||
|
|
||||||
return c;
|
mode[0] = c;
|
||||||
|
mode[1] = '\0';
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int omap_reboot_mode_clear(void)
|
int omap_reboot_mode_clear(void)
|
||||||
@ -84,11 +90,11 @@ int omap_reboot_mode_clear(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int omap_reboot_mode_store(char c)
|
int omap_reboot_mode_store(char *mode)
|
||||||
{
|
{
|
||||||
u32 reboot_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));
|
writel(reboot_mode, (u32 *)(OMAP34XX_SCRATCHPAD + 4));
|
||||||
|
|
||||||
|
@ -260,9 +260,9 @@ struct omap_boot_parameters {
|
|||||||
unsigned int boot_device_descriptor;
|
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_clear(void);
|
||||||
int omap_reboot_mode_store(char c);
|
int omap_reboot_mode_store(char *mode);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -109,7 +109,7 @@ int misc_init_r(void)
|
|||||||
|
|
||||||
/* Reboot mode */
|
/* Reboot mode */
|
||||||
|
|
||||||
reboot_mode[0] = omap_reboot_mode();
|
omap_reboot_mode(reboot_mode, sizeof(reboot_mode));
|
||||||
|
|
||||||
if (keys[0])
|
if (keys[0])
|
||||||
reboot_mode[0] = 'r';
|
reboot_mode[0] = 'r';
|
||||||
@ -159,12 +159,12 @@ void get_board_serial(struct tag_serialnr *serialnr)
|
|||||||
|
|
||||||
void reset_misc(void)
|
void reset_misc(void)
|
||||||
{
|
{
|
||||||
omap_reboot_mode_store('u');
|
omap_reboot_mode_store("u");
|
||||||
}
|
}
|
||||||
|
|
||||||
int fb_set_reboot_flag(void)
|
int fb_set_reboot_flag(void)
|
||||||
{
|
{
|
||||||
return omap_reboot_mode_store('b');
|
return omap_reboot_mode_store("b");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_SPL_BUILD
|
#ifndef CONFIG_SPL_BUILD
|
||||||
|
Loading…
Reference in New Issue
Block a user