mirror of
https://xff.cz/git/u-boot/
synced 2025-09-26 21:11:18 +02: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:
@@ -24,47 +24,9 @@ __weak int rk_board_late_init(void)
|
|||||||
return 0;
|
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)
|
int board_late_init(void)
|
||||||
{
|
{
|
||||||
setup_boot_mode();
|
setup_boot_mode();
|
||||||
rk3288_detect_reset_reason();
|
|
||||||
|
|
||||||
return rk_board_late_init();
|
return rk_board_late_init();
|
||||||
}
|
}
|
||||||
|
@@ -100,6 +100,55 @@ void board_debug_uart_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#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,
|
static int do_clock(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
char * const argv[])
|
char * const argv[])
|
||||||
{
|
{
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#define GPIO7A3_HUB_RST 227
|
#define GPIO7A3_HUB_RST 227
|
||||||
|
|
||||||
int rk_board_late_init(void)
|
int rk3288_board_late_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
@@ -30,7 +30,7 @@ static int valid_rk3288_som(struct rk3288_som *som)
|
|||||||
return hw == som->bs;
|
return hw == som->bs;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rk_board_late_init(void)
|
int rk3288_board_late_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
@@ -21,7 +21,7 @@ static int get_ethaddr_from_eeprom(u8 *addr)
|
|||||||
return i2c_eeprom_read(dev, 0, addr, 6);
|
return i2c_eeprom_read(dev, 0, addr, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
int rk_board_late_init(void)
|
int rk3288_board_late_init(void)
|
||||||
{
|
{
|
||||||
u8 ethaddr[6];
|
u8 ethaddr[6];
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user