soc/mediatek/mt8186: Disable unused spm_thermal
In MT8186, we need to disable spm_thermal to prevent it from influencing other wdt status. There are two hardware pathes which are used for asserting watchdog from thermal. We can disable status of path 1 because status of path 2 is used. 1. Thermal -> SPM -> WDT 2. Thermal -> WDT Spm_thermal (path 1) is a flexible option for software control, and the hardware designer suggests that we should disable it if we don't use it. BUG=none TEST=build pass Signed-off-by: Rex-BC Chen <rex-bc.chen@mediatek.com> Change-Id: I0ffde6bad3000a64e3b5782edaa72c62da034302 Reviewed-on: https://review.coreboot.org/c/coreboot/+/62890 Reviewed-by: Yu-Ping Wu <yupingso@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -14,7 +14,9 @@ struct mtk_wdt_regs {
|
|||||||
u32 wdt_interval;
|
u32 wdt_interval;
|
||||||
u32 wdt_swrst;
|
u32 wdt_swrst;
|
||||||
u32 wdt_swsysrst;
|
u32 wdt_swsysrst;
|
||||||
u32 reserved[9];
|
u32 reserved0[5];
|
||||||
|
u32 wdt_req_mode;
|
||||||
|
u32 reserved1[3];
|
||||||
u32 wdt_debug_ctrl;
|
u32 wdt_debug_ctrl;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -38,6 +40,7 @@ enum {
|
|||||||
|
|
||||||
static struct mtk_wdt_regs *const mtk_wdt = (void *)RGU_BASE;
|
static struct mtk_wdt_regs *const mtk_wdt = (void *)RGU_BASE;
|
||||||
|
|
||||||
|
void mtk_wdt_preinit(void);
|
||||||
int mtk_wdt_init(void);
|
int mtk_wdt_init(void);
|
||||||
void mtk_wdt_clr_status(void);
|
void mtk_wdt_clr_status(void);
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ void bootblock_soc_init(void)
|
|||||||
{
|
{
|
||||||
mtk_mmu_init();
|
mtk_mmu_init();
|
||||||
bustracker_init();
|
bustracker_init();
|
||||||
|
mtk_wdt_preinit();
|
||||||
mtk_wdt_init();
|
mtk_wdt_init();
|
||||||
mt_pll_init();
|
mt_pll_init();
|
||||||
unmask_eint_event_mask();
|
unmask_eint_event_mask();
|
||||||
|
@@ -10,8 +10,18 @@
|
|||||||
#include <soc/wdt.h>
|
#include <soc/wdt.h>
|
||||||
|
|
||||||
#define MTK_WDT_CLR_STATUS_VAL 0x22
|
#define MTK_WDT_CLR_STATUS_VAL 0x22
|
||||||
|
#define MTK_WDT_REQ_MOD_KEY_VAL 0x33
|
||||||
|
|
||||||
DEFINE_BITFIELD(MTK_WDT_CLR_STATUS, 31, 24)
|
DEFINE_BITFIELD(MTK_WDT_CLR_STATUS, 31, 24)
|
||||||
|
DEFINE_BITFIELD(MTK_WDT_REQ_MOD_KEY, 31, 24)
|
||||||
|
DEFINE_BIT(MTK_WDT_SPM_THERMAL_EN, 0)
|
||||||
|
|
||||||
|
void mtk_wdt_preinit(void)
|
||||||
|
{
|
||||||
|
SET32_BITFIELDS(&mtk_wdt->wdt_req_mode,
|
||||||
|
MTK_WDT_SPM_THERMAL_EN, 0,
|
||||||
|
MTK_WDT_REQ_MOD_KEY, MTK_WDT_REQ_MOD_KEY_VAL);
|
||||||
|
}
|
||||||
|
|
||||||
void mtk_wdt_clr_status(void)
|
void mtk_wdt_clr_status(void)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user