This patch adds support for watchdog used by mt6577 and related SoCs such as mt6575 and mt8317. These watchdogs are known for having shifted WDT_MODE and SWSYSRST registers and using different SWSYSRST_KEY value. Signed-off-by: Boris Lysov <arzamas-16@xxxxxxx> --- drivers/watchdog/mtk_wdt.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c index 0878fa33dffe..91d498b5d212 100644 --- a/drivers/watchdog/mtk_wdt.c +++ b/drivers/watchdog/mtk_wdt.c @@ -54,6 +54,10 @@ #define MT2712_SWSYSRST_KEY_SHIFT 24 // unlock_key [31:24] #define MT2712_SWSYSRST_KEY 0x88 +#define MT6577_WDT_MODE_KEY_SHIFT 8 // unlock_key [15:8] +#define MT6577_SWSYSRST_KEY_SHIFT 8 // unlock_key [15:8] +#define MT6577_SWSYSRST_KEY 0x15 + #define MT6589_WDT_MODE_KEY_SHIFT 24 // unlock_key [31:24] #define MT6589_SWSYSRST_KEY_SHIFT 24 // unlock_key [31:24] #define MT6589_SWSYSRST_KEY 0x88 @@ -94,6 +98,13 @@ static const struct mtk_wdt_data mt2712_data = { .wdt_swsys_rst_key = MT2712_SWSYSRST_KEY, }; +static const struct mtk_wdt_data mt6577_data = { + .toprgu_sw_rst_num = -1, + .wdt_mode_key_shift = MT6577_WDT_MODE_KEY_SHIFT, + .wdt_swsys_rst_key_shift = MT6577_SWSYSRST_KEY_SHIFT, + .wdt_swsys_rst_key = MT6577_SWSYSRST_KEY, +}; + static const struct mtk_wdt_data mt6589_data = { .toprgu_sw_rst_num = -1, .wdt_mode_key_shift = MT6589_WDT_MODE_KEY_SHIFT, @@ -376,6 +387,7 @@ static int mtk_wdt_resume(struct device *dev) static const struct of_device_id mtk_wdt_dt_ids[] = { { .compatible = "mediatek,mt2712-wdt", .data = &mt2712_data }, + { .compatible = "mediatek,mt6577-wdt", .data = &mt6577_data }, { .compatible = "mediatek,mt6589-wdt", .data = &mt6589_data }, { .compatible = "mediatek,mt8183-wdt", .data = &mt8183_data }, { .compatible = "mediatek,mt8192-wdt", .data = &mt8192_data }, -- 2.20.1