Skip to content

Commit a5cb139

Browse files
Byoungtae ChoWim Van Sebroeck
authored andcommitted
watchdog: s3c2410_wdt: add support for exynosautov920 SoC
Adds the compatibles and drvdata for the ExynosAuto V920 SoC. This SoC is almost similar to ExynosAutoV9, but some CPU configurations are quite different, so it should be added. Plus it also support DBGACK like as GS101 SoC. Signed-off-by: Byoungtae Cho <bt.cho@samsung.com> Signed-off-by: Taewan Kim <trunixs.kim@samsung.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20241021063903.793166-3-trunixs.kim@samsung.com Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
1 parent c63e0ee commit a5cb139

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

drivers/watchdog/s3c2410_wdt.c

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@
6363
#define EXYNOS850_CLUSTER1_NONCPU_INT_EN 0x1644
6464
#define EXYNOSAUTOV9_CLUSTER1_NONCPU_OUT 0x1520
6565
#define EXYNOSAUTOV9_CLUSTER1_NONCPU_INT_EN 0x1544
66+
#define EXYNOSAUTOV920_CLUSTER0_NONCPU_OUT 0x1420
67+
#define EXYNOSAUTOV920_CLUSTER0_NONCPU_INT_EN 0x1444
68+
#define EXYNOSAUTOV920_CLUSTER1_NONCPU_OUT 0x1720
69+
#define EXYNOSAUTOV920_CLUSTER1_NONCPU_INT_EN 0x1744
6670

6771
#define EXYNOS850_CLUSTER0_WDTRESET_BIT 24
6872
#define EXYNOS850_CLUSTER1_WDTRESET_BIT 23
@@ -303,6 +307,32 @@ static const struct s3c2410_wdt_variant drv_data_gs101_cl1 = {
303307
QUIRK_HAS_DBGACK_BIT,
304308
};
305309

310+
static const struct s3c2410_wdt_variant drv_data_exynosautov920_cl0 = {
311+
.mask_reset_reg = EXYNOSAUTOV920_CLUSTER0_NONCPU_INT_EN,
312+
.mask_bit = 2,
313+
.mask_reset_inv = true,
314+
.rst_stat_reg = EXYNOS5_RST_STAT_REG_OFFSET,
315+
.rst_stat_bit = EXYNOSAUTOV9_CLUSTER0_WDTRESET_BIT,
316+
.cnt_en_reg = EXYNOSAUTOV920_CLUSTER0_NONCPU_OUT,
317+
.cnt_en_bit = 7,
318+
.quirks = QUIRK_HAS_WTCLRINT_REG | QUIRK_HAS_PMU_MASK_RESET |
319+
QUIRK_HAS_PMU_RST_STAT | QUIRK_HAS_PMU_CNT_EN |
320+
QUIRK_HAS_DBGACK_BIT,
321+
};
322+
323+
static const struct s3c2410_wdt_variant drv_data_exynosautov920_cl1 = {
324+
.mask_reset_reg = EXYNOSAUTOV920_CLUSTER1_NONCPU_INT_EN,
325+
.mask_bit = 2,
326+
.mask_reset_inv = true,
327+
.rst_stat_reg = EXYNOS5_RST_STAT_REG_OFFSET,
328+
.rst_stat_bit = EXYNOSAUTOV9_CLUSTER1_WDTRESET_BIT,
329+
.cnt_en_reg = EXYNOSAUTOV920_CLUSTER1_NONCPU_OUT,
330+
.cnt_en_bit = 7,
331+
.quirks = QUIRK_HAS_WTCLRINT_REG | QUIRK_HAS_PMU_MASK_RESET |
332+
QUIRK_HAS_PMU_RST_STAT | QUIRK_HAS_PMU_CNT_EN |
333+
QUIRK_HAS_DBGACK_BIT,
334+
};
335+
306336
static const struct of_device_id s3c2410_wdt_match[] = {
307337
{ .compatible = "google,gs101-wdt",
308338
.data = &drv_data_gs101_cl0 },
@@ -320,6 +350,8 @@ static const struct of_device_id s3c2410_wdt_match[] = {
320350
.data = &drv_data_exynos850_cl0 },
321351
{ .compatible = "samsung,exynosautov9-wdt",
322352
.data = &drv_data_exynosautov9_cl0 },
353+
{ .compatible = "samsung,exynosautov920-wdt",
354+
.data = &drv_data_exynosautov920_cl0 },
323355
{},
324356
};
325357
MODULE_DEVICE_TABLE(of, s3c2410_wdt_match);
@@ -643,7 +675,8 @@ s3c2410_get_wdt_drv_data(struct platform_device *pdev, struct s3c2410_wdt *wdt)
643675
/* Choose Exynos850/ExynosAutov9 driver data w.r.t. cluster index */
644676
if (variant == &drv_data_exynos850_cl0 ||
645677
variant == &drv_data_exynosautov9_cl0 ||
646-
variant == &drv_data_gs101_cl0) {
678+
variant == &drv_data_gs101_cl0 ||
679+
variant == &drv_data_exynosautov920_cl0) {
647680
u32 index;
648681
int err;
649682

@@ -662,6 +695,8 @@ s3c2410_get_wdt_drv_data(struct platform_device *pdev, struct s3c2410_wdt *wdt)
662695
variant = &drv_data_exynosautov9_cl1;
663696
else if (variant == &drv_data_gs101_cl0)
664697
variant = &drv_data_gs101_cl1;
698+
else if (variant == &drv_data_exynosautov920_cl0)
699+
variant = &drv_data_exynosautov920_cl1;
665700
break;
666701
default:
667702
return dev_err_probe(dev, -EINVAL, "wrong cluster index: %u\n", index);

0 commit comments

Comments
 (0)