mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-15 19:08:54 +00:00
v1.0.3
This commit is contained in:
@@ -28,17 +28,21 @@
|
||||
#endif
|
||||
|
||||
#if defined(AIC_WRI_DRV_V13)
|
||||
#define WRI_FLAG_SE_DM_NDM_RST BIT(29)
|
||||
#define WRI_FLAG_SE_WDOG_RST BIT(28)
|
||||
#define WRI_FLAG_SC_DM_CPU_RST BIT(26)
|
||||
#define WRI_FLAG_SC_DM_NDM_RST BIT(25)
|
||||
#define WRI_FLAG_SC_WDOG_RST BIT(24)
|
||||
#define WRI_FLAG_CS_DM_CPU_RST BIT(22)
|
||||
#define WRI_FLAG_CS_DM_NDM_RST BIT(21)
|
||||
#define WRI_FLAG_CS_WDOG_RST BIT(20)
|
||||
#define WRI_FLAG_SP_DM_CPU_RST BIT(18)
|
||||
#define WRI_FLAG_SP_DM_NDM_RST BIT(17)
|
||||
#define WRI_FLAG_SP_WDOG_RST BIT(16)
|
||||
#define WRI_FLAG_SE_DM_NDM_RST BIT(30)
|
||||
#define WRI_FLAG_SE_WDOG_CPU_RST BIT(29)
|
||||
#define WRI_FLAG_SE_WDOG_SYS_RST BIT(28)
|
||||
#define WRI_FLAG_SC_DM_CPU_RST BIT(27)
|
||||
#define WRI_FLAG_SC_DM_NDM_RST BIT(26)
|
||||
#define WRI_FLAG_SC_WDOG_CPU_RST BIT(25)
|
||||
#define WRI_FLAG_SC_WDOG_SYS_RST BIT(24)
|
||||
#define WRI_FLAG_CS_DM_CPU_RST BIT(23)
|
||||
#define WRI_FLAG_CS_DM_NDM_RST BIT(22)
|
||||
#define WRI_FLAG_CS_WDOG_CPU_RST BIT(21)
|
||||
#define WRI_FLAG_CS_WDOG_SYS_RST BIT(20)
|
||||
#define WRI_FLAG_SP_DM_CPU_RST BIT(19)
|
||||
#define WRI_FLAG_SP_DM_NDM_RST BIT(18)
|
||||
#define WRI_FLAG_SP_WDOG_CPU_RST BIT(17)
|
||||
#define WRI_FLAG_SP_WDOG_SYS_RST BIT(16)
|
||||
#define WRI_FLAG_THS_RST BIT(9)
|
||||
#define WRI_FLAG_PIN_RST BIT(8)
|
||||
#define WRI_FLAG_RTC_POR BIT(2)
|
||||
@@ -127,7 +131,7 @@ enum aic_reboot_reason aic_judge_reboot_reason(enum aic_warm_reset_type hw,
|
||||
}
|
||||
|
||||
if (r == REBOOT_REASON_SUSPEND) {
|
||||
pr_info("Reboot reason: Suspend\n");
|
||||
printf("Reboot reason: Suspend\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -181,16 +185,20 @@ enum aic_warm_reset_type aic_wr_type_get(void)
|
||||
WRI_FLAG_RTC_POR,
|
||||
WRI_FLAG_PIN_RST,
|
||||
WRI_FLAG_THS_RST,
|
||||
WRI_FLAG_SP_WDOG_RST,
|
||||
WRI_FLAG_SP_WDOG_SYS_RST,
|
||||
WRI_FLAG_SP_WDOG_CPU_RST,
|
||||
WRI_FLAG_SP_DM_NDM_RST,
|
||||
WRI_FLAG_SP_DM_CPU_RST,
|
||||
WRI_FLAG_CS_WDOG_RST,
|
||||
WRI_FLAG_CS_WDOG_SYS_RST,
|
||||
WRI_FLAG_CS_WDOG_CPU_RST,
|
||||
WRI_FLAG_CS_DM_NDM_RST,
|
||||
WRI_FLAG_CS_DM_CPU_RST,
|
||||
WRI_FLAG_SC_WDOG_RST,
|
||||
WRI_FLAG_SC_WDOG_SYS_RST,
|
||||
WRI_FLAG_SC_WDOG_CPU_RST,
|
||||
WRI_FLAG_SC_DM_NDM_RST,
|
||||
WRI_FLAG_SC_DM_CPU_RST,
|
||||
WRI_FLAG_SE_WDOG_RST,
|
||||
WRI_FLAG_SE_WDOG_SYS_RST,
|
||||
WRI_FLAG_SE_WDOG_CPU_RST,
|
||||
WRI_FLAG_SE_DM_NDM_RST
|
||||
};
|
||||
s32 i;
|
||||
@@ -220,117 +228,134 @@ enum aic_reboot_reason aic_judge_reboot_reason(enum aic_warm_reset_type hw,
|
||||
enum aic_reboot_reason r = (enum aic_reboot_reason)sw;
|
||||
|
||||
/* First, check the software-triggered reboot */
|
||||
if (hw == WRI_TYPE_SP_WDOG_RST || hw == WRI_TYPE_CS_WDOG_RST || hw == WRI_TYPE_SC_WDOG_RST || hw == WRI_TYPE_SE_WDOG_RST) {
|
||||
if (hw == WRI_TYPE_SP_WDOG_SYS_RST || hw == WRI_TYPE_SP_WDOG_CPU_RST || hw == WRI_TYPE_CS_WDOG_SYS_RST || hw == WRI_TYPE_CS_WDOG_CPU_RST || hw == WRI_TYPE_SC_WDOG_SYS_RST || hw == WRI_TYPE_SC_WDOG_CPU_RST || hw == WRI_TYPE_SE_WDOG_SYS_RST || hw == WRI_TYPE_SE_WDOG_CPU_RST) {
|
||||
switch (hw) {
|
||||
case WRI_TYPE_SP_WDOG_RST:
|
||||
pr_info("Reboot action: SP Watchdog-Resetn");
|
||||
case WRI_TYPE_SP_WDOG_SYS_RST:
|
||||
printf("Reboot action: SPSS Watchdog-system-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SC_WDOG_RST:
|
||||
pr_info("Reboot action: SC Watchdog-Reset\n");
|
||||
case WRI_TYPE_SP_WDOG_CPU_RST:
|
||||
printf("Reboot action: SPSS Watchdog-CPU-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SE_WDOG_RST:
|
||||
pr_info("Reboot action: SE Watchdog-Reset\n");
|
||||
case WRI_TYPE_CS_WDOG_SYS_RST:
|
||||
printf("Reboot action: CSYS Watchdog-system-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_CS_WDOG_CPU_RST:
|
||||
printf("Reboot action: CSYS Watchdog-CPU-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SC_WDOG_SYS_RST:
|
||||
printf("Reboot action: SCSS Watchdog-system-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SC_WDOG_CPU_RST:
|
||||
printf("Reboot action: SCSS Watchdog-CPU-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SE_WDOG_SYS_RST:
|
||||
printf("Reboot action: SESS Watchdog-system-Reset\n");
|
||||
break;
|
||||
case WRI_TYPE_SE_WDOG_CPU_RST:
|
||||
printf("Reboot action: SESS Watchdog-CPU-Reset\n");
|
||||
break;
|
||||
default:
|
||||
pr_info("Reboot action: CS Watchdog-Reset\n");
|
||||
printf("Reboot action: Unknown(%d)\n", hw);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (sw) {
|
||||
case REBOOT_REASON_UPGRADE:
|
||||
pr_info("Reboot reason: Upgrade-Mode\n");
|
||||
printf("Reboot reason: Upgrade-Mode\n");
|
||||
break;
|
||||
case REBOOT_REASON_SW_LOCKUP:
|
||||
pr_info("Reboot reason: Software-Lockup\n");
|
||||
printf("Reboot reason: Software-Lockup\n");
|
||||
break;
|
||||
case REBOOT_REASON_HW_LOCKUP:
|
||||
pr_info("Reboot reason: Hardware-Lockup\n");
|
||||
printf("Reboot reason: Hardware-Lockup\n");
|
||||
break;
|
||||
case REBOOT_REASON_PANIC:
|
||||
pr_info("Reboot reason: Kernel-Panic\n");
|
||||
printf("Reboot reason: Kernel-Panic\n");
|
||||
break;
|
||||
case REBOOT_REASON_CS_CMD_REBOOT:
|
||||
pr_info("Reboot reason: CS Command-Reboot\n");
|
||||
printf("Reboot reason: CSYS Command-Reboot\n");
|
||||
break;
|
||||
case REBOOT_REASON_SC_CMD_REBOOT:
|
||||
pr_info("Reboot reason: SC Command-Reboot\n");
|
||||
printf("Reboot reason: SCSS Command-Reboot\n");
|
||||
break;
|
||||
case REBOOT_REASON_SP_CMD_REBOOT:
|
||||
pr_info("Reboot reason: SP Command-Reboot\n");
|
||||
printf("Reboot reason: SPSS Command-Reboot\n");
|
||||
break;
|
||||
case REBOOT_REASON_SE_CMD_REBOOT:
|
||||
printf("Reboot reason: SESS Command-Reboot\n");
|
||||
break;
|
||||
case REBOOT_REASON_RAMDUMP:
|
||||
pr_info("Ramdump\n");
|
||||
printf("Ramdump\n");
|
||||
break;
|
||||
default:
|
||||
pr_info("Unknown(%d)\n", r);
|
||||
printf("Unknown(%d)\n", r);
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
if (r == REBOOT_REASON_CMD_SHUTDOWN) {
|
||||
printf("Reboot reason: Command-Poweroff\n");
|
||||
return r;
|
||||
printf("Reboot reason: Command-Poweroff\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
if (r == REBOOT_REASON_SUSPEND) {
|
||||
pr_info("Reboot reason: Suspend\n");
|
||||
printf("Reboot reason: Suspend\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Second, check the hardware-triggered reboot */
|
||||
if (r == REBOOT_REASON_COLD) {
|
||||
if (hw == WRI_TYPE_VDD11_SP_POR) {
|
||||
printf("Startup reason: Power-On-Reset\n");
|
||||
printf("Startup reason: SPSS Power-On-Reset\n");
|
||||
return (enum aic_reboot_reason)sw;
|
||||
}
|
||||
|
||||
if (hw == WRI_TYPE_VDD11_SW_POR) {
|
||||
pr_info("Startup reason: SW Power-On-Reset\n");
|
||||
printf("Startup reason: SW Power-On-Reset\n");
|
||||
return (enum aic_reboot_reason)sw;
|
||||
}
|
||||
|
||||
printf("Reboot action: Warm-Reset, reason: ");
|
||||
switch (hw) {
|
||||
case WRI_TYPE_RTC_POR:
|
||||
pr_info("Reboot reason: RTC-Power-Down\n");
|
||||
printf("Reboot reason: RTC-Power-Down\n");
|
||||
r = REBOOT_REASON_RTC_POR;
|
||||
break;
|
||||
case WRI_TYPE_PIN_RST:
|
||||
pr_info("Reboot reason: Extend-Reset\n");
|
||||
printf("Reboot reason: Extend-Reset\n");
|
||||
r = REBOOT_REASON_PIN_RST;
|
||||
break;
|
||||
case WRI_TYPE_THS_RST:
|
||||
pr_info("Reboot reason: OTP-Reset\n");
|
||||
printf("Reboot reason: OTP-Reset\n");
|
||||
r = REBOOT_REASON_THS_RST;
|
||||
break;
|
||||
case WRI_TYPE_SP_DM_NDM_RST:
|
||||
pr_info("Reboot reason: SPSS NDM Reset\n");
|
||||
printf("Reboot reason: SPSS NDM Reset\n");
|
||||
r = REBOOT_REASON_SP_DM_NDM_RST;
|
||||
break;
|
||||
case WRI_TYPE_SP_DM_CPU_RST:
|
||||
pr_info("Reboot reason: SPSS JTAG-Reset\n");
|
||||
printf("Reboot reason: SPSS CPU Reset\n");
|
||||
r = REBOOT_REASON_SP_DM_CPU_RST;
|
||||
break;
|
||||
case WRI_TYPE_CS_DM_NDM_RST:
|
||||
pr_info("Reboot reason: CSYS NDM Reset\n");
|
||||
printf("Reboot reason: CSYS NDM Reset\n");
|
||||
r = REBOOT_REASON_CS_DM_NDM_RST;
|
||||
break;
|
||||
case WRI_TYPE_CS_DM_CPU_RST:
|
||||
pr_info("Reboot reason: CSYS JTAG-Reset\n");
|
||||
printf("Reboot reason: CSYS CPU Reset\n");
|
||||
r = REBOOT_REASON_CS_DM_CPU_RST;
|
||||
break;
|
||||
case WRI_TYPE_SC_DM_NDM_RST:
|
||||
pr_info("Reboot reason: SCSS NDM Reset\n");
|
||||
printf("Reboot reason: SCSS NDM Reset\n");
|
||||
r = REBOOT_REASON_SC_DM_NDM_RST;
|
||||
break;
|
||||
case WRI_TYPE_SC_DM_CPU_RST:
|
||||
pr_info("Reboot reason: SCSS JTAG-Reset\n");
|
||||
printf("Reboot reason: SCSS CPU Reset\n");
|
||||
r = REBOOT_REASON_SC_DM_CPU_RST;
|
||||
break;
|
||||
case WRI_TYPE_SE_DM_NDM_RST:
|
||||
pr_info("Reboot reason: SESS NDM Reset\n");
|
||||
printf("Reboot reason: SESS NDM Reset\n");
|
||||
r = REBOOT_REASON_SE_DM_NDM_RST;
|
||||
break;
|
||||
default:
|
||||
@@ -340,7 +365,7 @@ enum aic_reboot_reason aic_judge_reboot_reason(enum aic_warm_reset_type hw,
|
||||
return r;
|
||||
}
|
||||
|
||||
pr_warn("Unknow reboot reason: %d - %d\n", hw, sw);
|
||||
pr_warn("Unknown reboot reason: %d - %d\n", hw, sw);
|
||||
return r;
|
||||
}
|
||||
#endif
|
||||
@@ -349,10 +374,16 @@ enum aic_reboot_reason aic_judge_reboot_reason(enum aic_warm_reset_type hw,
|
||||
|
||||
void aic_set_reboot_reason(enum aic_reboot_reason r)
|
||||
{
|
||||
u32 cur = 0;
|
||||
u8 reason_num = WRI_REBOOT_REASON_MASK >> WRI_REBOOT_REASON_SHIFT;
|
||||
|
||||
cur = readl(WRI_BOOT_INFO);
|
||||
/* If it's valid already, so ignore the current request */
|
||||
if (cur & WRI_REBOOT_REASON_MASK)
|
||||
return;
|
||||
|
||||
writel_bits(r, WRI_REBOOT_REASON_MASK, WRI_REBOOT_REASON_SHIFT,
|
||||
WRI_SYS_BAK);
|
||||
WRI_BOOT_INFO);
|
||||
|
||||
if (r <= reason_num)
|
||||
pr_debug("Set reboot reason %d\n", r);
|
||||
@@ -367,7 +398,7 @@ enum aic_reboot_reason aic_get_reboot_reason(void)
|
||||
return g_last_reboot.reason;
|
||||
|
||||
val = readl_bits(WRI_REBOOT_REASON_MASK, WRI_REBOOT_REASON_SHIFT,
|
||||
WRI_SYS_BAK);
|
||||
WRI_BOOT_INFO);
|
||||
if (val)
|
||||
aic_set_reboot_reason(REBOOT_REASON_COLD);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user