mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
rockchip: rk3288: Move rk3288_detect_reset_reason to soc file
The rk3288_detect_reset_reason() is per-SoC operation, move it to rk3288.c, and extend the rk_board_late_init() with rk3288_board_late_init() to make all the board works fine as before. Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
parent
88a87bcbb3
commit
271318a660
5 changed files with 52 additions and 41 deletions
|
@ -24,47 +24,9 @@ __weak int rk_board_late_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void rk3288_detect_reset_reason(void)
|
||||
{
|
||||
struct rk3288_cru *cru = rockchip_get_cru();
|
||||
const char *reason;
|
||||
|
||||
if (IS_ERR(cru))
|
||||
return;
|
||||
|
||||
switch (cru->cru_glb_rst_st) {
|
||||
case GLB_POR_RST:
|
||||
reason = "POR";
|
||||
break;
|
||||
case FST_GLB_RST_ST:
|
||||
case SND_GLB_RST_ST:
|
||||
reason = "RST";
|
||||
break;
|
||||
case FST_GLB_TSADC_RST_ST:
|
||||
case SND_GLB_TSADC_RST_ST:
|
||||
reason = "THERMAL";
|
||||
break;
|
||||
case FST_GLB_WDT_RST_ST:
|
||||
case SND_GLB_WDT_RST_ST:
|
||||
reason = "WDOG";
|
||||
break;
|
||||
default:
|
||||
reason = "unknown reset";
|
||||
}
|
||||
|
||||
env_set("reset_reason", reason);
|
||||
|
||||
/*
|
||||
* Clear cru_glb_rst_st, so we can determine the last reset cause
|
||||
* for following resets.
|
||||
*/
|
||||
rk_clrreg(&cru->cru_glb_rst_st, GLB_RST_ST_MASK);
|
||||
}
|
||||
|
||||
int board_late_init(void)
|
||||
{
|
||||
setup_boot_mode();
|
||||
rk3288_detect_reset_reason();
|
||||
|
||||
return rk_board_late_init();
|
||||
}
|
||||
|
|
|
@ -100,6 +100,55 @@ void board_debug_uart_init(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void rk3288_detect_reset_reason(void)
|
||||
{
|
||||
struct rk3288_cru *cru = rockchip_get_cru();
|
||||
const char *reason;
|
||||
|
||||
if (IS_ERR(cru))
|
||||
return;
|
||||
|
||||
switch (cru->cru_glb_rst_st) {
|
||||
case GLB_POR_RST:
|
||||
reason = "POR";
|
||||
break;
|
||||
case FST_GLB_RST_ST:
|
||||
case SND_GLB_RST_ST:
|
||||
reason = "RST";
|
||||
break;
|
||||
case FST_GLB_TSADC_RST_ST:
|
||||
case SND_GLB_TSADC_RST_ST:
|
||||
reason = "THERMAL";
|
||||
break;
|
||||
case FST_GLB_WDT_RST_ST:
|
||||
case SND_GLB_WDT_RST_ST:
|
||||
reason = "WDOG";
|
||||
break;
|
||||
default:
|
||||
reason = "unknown reset";
|
||||
}
|
||||
|
||||
env_set("reset_reason", reason);
|
||||
|
||||
/*
|
||||
* Clear cru_glb_rst_st, so we can determine the last reset cause
|
||||
* for following resets.
|
||||
*/
|
||||
rk_clrreg(&cru->cru_glb_rst_st, GLB_RST_ST_MASK);
|
||||
}
|
||||
|
||||
__weak int rk3288_board_late_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rk_board_late_init(void)
|
||||
{
|
||||
rk3288_detect_reset_reason();
|
||||
|
||||
return rk3288_board_late_init();
|
||||
}
|
||||
|
||||
static int do_clock(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||
char * const argv[])
|
||||
{
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#define GPIO7A3_HUB_RST 227
|
||||
|
||||
int rk_board_late_init(void)
|
||||
int rk3288_board_late_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ static int valid_rk3288_som(struct rk3288_som *som)
|
|||
return hw == som->bs;
|
||||
}
|
||||
|
||||
int rk_board_late_init(void)
|
||||
int rk3288_board_late_init(void)
|
||||
{
|
||||
int ret;
|
||||
struct udevice *dev;
|
||||
|
|
|
@ -21,7 +21,7 @@ static int get_ethaddr_from_eeprom(u8 *addr)
|
|||
return i2c_eeprom_read(dev, 0, addr, 6);
|
||||
}
|
||||
|
||||
int rk_board_late_init(void)
|
||||
int rk3288_board_late_init(void)
|
||||
{
|
||||
u8 ethaddr[6];
|
||||
|
||||
|
|
Loading…
Reference in a new issue