mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 07:22:33 +00:00
58 lines
1.7 KiB
Diff
58 lines
1.7 KiB
Diff
|
--- a/drivers/watchdog/mtk_wdt.c
|
||
|
+++ b/drivers/watchdog/mtk_wdt.c
|
||
|
@@ -9,6 +9,7 @@
|
||
|
* Based on sunxi_wdt.c
|
||
|
*/
|
||
|
|
||
|
+#include <dt-bindings/reset/mt7986-resets.h>
|
||
|
#include <dt-bindings/reset-controller/mt2712-resets.h>
|
||
|
#include <dt-bindings/reset-controller/mt8183-resets.h>
|
||
|
#include <dt-bindings/reset-controller/mt8192-resets.h>
|
||
|
@@ -65,6 +66,7 @@ struct mtk_wdt_dev {
|
||
|
void __iomem *wdt_base;
|
||
|
spinlock_t lock; /* protects WDT_SWSYSRST reg */
|
||
|
struct reset_controller_dev rcdev;
|
||
|
+ bool disable_wdt_extrst;
|
||
|
};
|
||
|
|
||
|
struct mtk_wdt_data {
|
||
|
@@ -87,6 +89,10 @@ static const struct mtk_wdt_data mt8195_
|
||
|
.toprgu_sw_rst_num = MT8195_TOPRGU_SW_RST_NUM,
|
||
|
};
|
||
|
|
||
|
+static const struct mtk_wdt_data mt7986_data = {
|
||
|
+ .toprgu_sw_rst_num = MT7986_TOPRGU_SW_RST_NUM,
|
||
|
+};
|
||
|
+
|
||
|
static int toprgu_reset_update(struct reset_controller_dev *rcdev,
|
||
|
unsigned long id, bool assert)
|
||
|
{
|
||
|
@@ -256,6 +262,8 @@ static int mtk_wdt_start(struct watchdog
|
||
|
reg |= (WDT_MODE_IRQ_EN | WDT_MODE_DUAL_EN);
|
||
|
else
|
||
|
reg &= ~(WDT_MODE_IRQ_EN | WDT_MODE_DUAL_EN);
|
||
|
+ if (mtk_wdt->disable_wdt_extrst)
|
||
|
+ reg &= ~WDT_MODE_EXRST_EN;
|
||
|
reg |= (WDT_MODE_EN | WDT_MODE_KEY);
|
||
|
iowrite32(reg, wdt_base + WDT_MODE);
|
||
|
|
||
|
@@ -381,6 +389,10 @@ static int mtk_wdt_probe(struct platform
|
||
|
if (err)
|
||
|
return err;
|
||
|
}
|
||
|
+
|
||
|
+ mtk_wdt->disable_wdt_extrst =
|
||
|
+ of_property_read_bool(dev->of_node, "mediatek,disable-extrst");
|
||
|
+
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
@@ -414,6 +426,7 @@ static const struct of_device_id mtk_wdt
|
||
|
{ .compatible = "mediatek,mt8183-wdt", .data = &mt8183_data },
|
||
|
{ .compatible = "mediatek,mt8192-wdt", .data = &mt8192_data },
|
||
|
{ .compatible = "mediatek,mt8195-wdt", .data = &mt8195_data },
|
||
|
+ { .compatible = "mediatek,mt7986-wdt", .data = &mt7986_data },
|
||
|
{ /* sentinel */ }
|
||
|
};
|
||
|
MODULE_DEVICE_TABLE(of, mtk_wdt_dt_ids);
|