diff mbox series

[v3,3/3] watchdog: mtk_wdt: add support for mt6577

Message ID 20210513013515.31329-4-arzamas-16@mail.ee (mailing list archive)
State New
Headers show
Series watchdog: mtk_wdt: refactor code to support more watchdogs | expand

Commit Message

Boris Lysov May 13, 2021, 1:35 a.m. UTC
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@mail.ee>
---
 drivers/watchdog/mtk_wdt.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Guenter Roeck May 13, 2021, 3:23 p.m. UTC | #1
On Thu, May 13, 2021 at 04:35:15AM +0300, Boris Lysov wrote:
> 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@mail.ee>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  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
>
diff mbox series

Patch

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 },