diff options
author | Henry Chen <henryc.chen@mediatek.com> | 2016-01-21 06:04:00 -0500 |
---|---|---|
committer | Matthias Brugger <matthias.bgg@gmail.com> | 2016-01-25 12:59:41 -0500 |
commit | a3bbfbb0bc6bd40406ef2aea940719312600813e (patch) | |
tree | 05ca7b82c3443698959185ac8c769305ef530cc9 /drivers/soc/mediatek | |
parent | fd63892fcf28d839694d50d7d355ca0cbde401a1 (diff) |
soc: mediatek: PMIC wrap: clear the STAUPD_TRIG bit of WDT_SRC_EN
Since STAUPD interrupts aren't handled on mt8173, disable watchdog timeout
monitor of STAUPD to avoid WDT_INT triggered by STAUPD.
Signed-off-by: Henry Chen <henryc.chen@mediatek.com>
Reviewed-by: Daniel Kurtz <djkurtz@chromium.org>
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
Diffstat (limited to 'drivers/soc/mediatek')
-rw-r--r-- | drivers/soc/mediatek/mtk-pmic-wrap.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c index 696071b66c41..0d9b19a78d27 100644 --- a/drivers/soc/mediatek/mtk-pmic-wrap.c +++ b/drivers/soc/mediatek/mtk-pmic-wrap.c | |||
@@ -60,6 +60,15 @@ | |||
60 | #define PWRAP_MAN_CMD_OP_OUTD (0x9 << 8) | 60 | #define PWRAP_MAN_CMD_OP_OUTD (0x9 << 8) |
61 | #define PWRAP_MAN_CMD_OP_OUTQ (0xa << 8) | 61 | #define PWRAP_MAN_CMD_OP_OUTQ (0xa << 8) |
62 | 62 | ||
63 | /* macro for Watch Dog Timer Source */ | ||
64 | #define PWRAP_WDT_SRC_EN_STAUPD_TRIG (1 << 25) | ||
65 | #define PWRAP_WDT_SRC_EN_HARB_STAUPD_DLE (1 << 20) | ||
66 | #define PWRAP_WDT_SRC_EN_HARB_STAUPD_ALE (1 << 6) | ||
67 | #define PWRAP_WDT_SRC_MASK_ALL 0xffffffff | ||
68 | #define PWRAP_WDT_SRC_MASK_NO_STAUPD ~(PWRAP_WDT_SRC_EN_STAUPD_TRIG | \ | ||
69 | PWRAP_WDT_SRC_EN_HARB_STAUPD_DLE | \ | ||
70 | PWRAP_WDT_SRC_EN_HARB_STAUPD_ALE) | ||
71 | |||
63 | /* macro for slave device wrapper registers */ | 72 | /* macro for slave device wrapper registers */ |
64 | #define PWRAP_DEW_BASE 0xbc00 | 73 | #define PWRAP_DEW_BASE 0xbc00 |
65 | #define PWRAP_DEW_EVENT_OUT_EN (PWRAP_DEW_BASE + 0x0) | 74 | #define PWRAP_DEW_EVENT_OUT_EN (PWRAP_DEW_BASE + 0x0) |
@@ -822,7 +831,7 @@ MODULE_DEVICE_TABLE(of, of_pwrap_match_tbl); | |||
822 | 831 | ||
823 | static int pwrap_probe(struct platform_device *pdev) | 832 | static int pwrap_probe(struct platform_device *pdev) |
824 | { | 833 | { |
825 | int ret, irq; | 834 | int ret, irq, wdt_src; |
826 | struct pmic_wrapper *wrp; | 835 | struct pmic_wrapper *wrp; |
827 | struct device_node *np = pdev->dev.of_node; | 836 | struct device_node *np = pdev->dev.of_node; |
828 | const struct of_device_id *of_id = | 837 | const struct of_device_id *of_id = |
@@ -912,7 +921,13 @@ static int pwrap_probe(struct platform_device *pdev) | |||
912 | 921 | ||
913 | /* Initialize watchdog, may not be done by the bootloader */ | 922 | /* Initialize watchdog, may not be done by the bootloader */ |
914 | pwrap_writel(wrp, 0xf, PWRAP_WDT_UNIT); | 923 | pwrap_writel(wrp, 0xf, PWRAP_WDT_UNIT); |
915 | pwrap_writel(wrp, 0xffffffff, PWRAP_WDT_SRC_EN); | 924 | /* |
925 | * Since STAUPD was not used on mt8173 platform, | ||
926 | * so STAUPD of WDT_SRC which should be turned off | ||
927 | */ | ||
928 | wdt_src = pwrap_is_mt8173(wrp) ? | ||
929 | PWRAP_WDT_SRC_MASK_NO_STAUPD : PWRAP_WDT_SRC_MASK_ALL; | ||
930 | pwrap_writel(wrp, wdt_src, PWRAP_WDT_SRC_EN); | ||
916 | pwrap_writel(wrp, 0x1, PWRAP_TIMER_EN); | 931 | pwrap_writel(wrp, 0x1, PWRAP_TIMER_EN); |
917 | pwrap_writel(wrp, ~((1 << 31) | (1 << 1)), PWRAP_INT_EN); | 932 | pwrap_writel(wrp, ~((1 << 31) | (1 << 1)), PWRAP_INT_EN); |
918 | 933 | ||