Lines Matching +full:ls1b +full:- +full:wdt

1 // SPDX-License-Identifier: GPL-2.0-or-later
30 struct watchdog_device wdt; member
37 writel(0x1, drvdata->base + WDT_SET); in ls1x_wdt_ping()
46 unsigned int max_hw_heartbeat = wdt_dev->max_hw_heartbeat_ms / 1000; in ls1x_wdt_set_timeout()
49 wdt_dev->timeout = timeout; in ls1x_wdt_set_timeout()
51 counts = drvdata->clk_rate * min(timeout, max_hw_heartbeat); in ls1x_wdt_set_timeout()
52 writel(counts, drvdata->base + WDT_TIMER); in ls1x_wdt_set_timeout()
61 writel(0x1, drvdata->base + WDT_EN); in ls1x_wdt_start()
70 writel(0x0, drvdata->base + WDT_EN); in ls1x_wdt_stop()
80 writel(0x1, drvdata->base + WDT_EN); in ls1x_wdt_restart()
81 writel(0x1, drvdata->base + WDT_TIMER); in ls1x_wdt_restart()
82 writel(0x1, drvdata->base + WDT_SET); in ls1x_wdt_restart()
103 struct device *dev = &pdev->dev; in ls1x_wdt_probe()
111 return -ENOMEM; in ls1x_wdt_probe()
113 drvdata->base = devm_platform_ioremap_resource(pdev, 0); in ls1x_wdt_probe()
114 if (IS_ERR(drvdata->base)) in ls1x_wdt_probe()
115 return PTR_ERR(drvdata->base); in ls1x_wdt_probe()
117 drvdata->clk = devm_clk_get_enabled(dev, NULL); in ls1x_wdt_probe()
118 if (IS_ERR(drvdata->clk)) in ls1x_wdt_probe()
119 return PTR_ERR(drvdata->clk); in ls1x_wdt_probe()
121 clk_rate = clk_get_rate(drvdata->clk); in ls1x_wdt_probe()
123 return -EINVAL; in ls1x_wdt_probe()
124 drvdata->clk_rate = clk_rate; in ls1x_wdt_probe()
126 ls1x_wdt = &drvdata->wdt; in ls1x_wdt_probe()
127 ls1x_wdt->info = &ls1x_wdt_info; in ls1x_wdt_probe()
128 ls1x_wdt->ops = &ls1x_wdt_ops; in ls1x_wdt_probe()
129 ls1x_wdt->timeout = DEFAULT_HEARTBEAT; in ls1x_wdt_probe()
130 ls1x_wdt->min_timeout = 1; in ls1x_wdt_probe()
131 ls1x_wdt->max_hw_heartbeat_ms = U32_MAX / clk_rate * 1000; in ls1x_wdt_probe()
132 ls1x_wdt->parent = dev; in ls1x_wdt_probe()
138 err = devm_watchdog_register_device(dev, &drvdata->wdt); in ls1x_wdt_probe()
151 { .compatible = "loongson,ls1b-wdt", },
152 { .compatible = "loongson,ls1c-wdt", },
161 .name = "ls1x-wdt",