Lines Matching +full:imx7ulp +full:- +full:clock

1 // SPDX-License-Identifier: GPL-2.0
62 return -ETIMEDOUT; in imx7ulp_wdt_wait()
71 u32 val = readl(wdt->base + WDOG_CS); in imx7ulp_wdt_enable()
75 writel(UNLOCK, wdt->base + WDOG_CNT); in imx7ulp_wdt_enable()
76 ret = imx7ulp_wdt_wait(wdt->base, WDOG_CS_ULK); in imx7ulp_wdt_enable()
80 writel(val | WDOG_CS_EN, wdt->base + WDOG_CS); in imx7ulp_wdt_enable()
82 writel(val & ~WDOG_CS_EN, wdt->base + WDOG_CS); in imx7ulp_wdt_enable()
83 imx7ulp_wdt_wait(wdt->base, WDOG_CS_RCS); in imx7ulp_wdt_enable()
102 writel(REFRESH, wdt->base + WDOG_CNT); in imx7ulp_wdt_ping()
125 writel(UNLOCK, wdt->base + WDOG_CNT); in imx7ulp_wdt_set_timeout()
126 ret = imx7ulp_wdt_wait(wdt->base, WDOG_CS_ULK); in imx7ulp_wdt_set_timeout()
129 writel(val, wdt->base + WDOG_TOVAL); in imx7ulp_wdt_set_timeout()
130 imx7ulp_wdt_wait(wdt->base, WDOG_CS_RCS); in imx7ulp_wdt_set_timeout()
132 wdog->timeout = timeout; in imx7ulp_wdt_set_timeout()
150 ret = imx7ulp_wdt_set_timeout(&wdt->wdd, 1); in imx7ulp_wdt_restart()
211 struct device *dev = &pdev->dev; in imx7ulp_wdt_probe()
217 return -ENOMEM; in imx7ulp_wdt_probe()
221 imx7ulp_wdt->base = devm_platform_ioremap_resource(pdev, 0); in imx7ulp_wdt_probe()
222 if (IS_ERR(imx7ulp_wdt->base)) in imx7ulp_wdt_probe()
223 return PTR_ERR(imx7ulp_wdt->base); in imx7ulp_wdt_probe()
225 imx7ulp_wdt->clk = devm_clk_get(dev, NULL); in imx7ulp_wdt_probe()
226 if (IS_ERR(imx7ulp_wdt->clk)) { in imx7ulp_wdt_probe()
227 dev_err(dev, "Failed to get watchdog clock\n"); in imx7ulp_wdt_probe()
228 return PTR_ERR(imx7ulp_wdt->clk); in imx7ulp_wdt_probe()
231 ret = clk_prepare_enable(imx7ulp_wdt->clk); in imx7ulp_wdt_probe()
235 ret = devm_add_action_or_reset(dev, imx7ulp_wdt_action, imx7ulp_wdt->clk); in imx7ulp_wdt_probe()
239 wdog = &imx7ulp_wdt->wdd; in imx7ulp_wdt_probe()
240 wdog->info = &imx7ulp_wdt_info; in imx7ulp_wdt_probe()
241 wdog->ops = &imx7ulp_wdt_ops; in imx7ulp_wdt_probe()
242 wdog->min_timeout = 1; in imx7ulp_wdt_probe()
243 wdog->max_timeout = MAX_TIMEOUT; in imx7ulp_wdt_probe()
244 wdog->parent = dev; in imx7ulp_wdt_probe()
245 wdog->timeout = DEFAULT_TIMEOUT; in imx7ulp_wdt_probe()
251 ret = imx7ulp_wdt_init(imx7ulp_wdt->base, wdog->timeout * WDOG_CLOCK_RATE); in imx7ulp_wdt_probe()
262 if (watchdog_active(&imx7ulp_wdt->wdd)) in imx7ulp_wdt_suspend()
263 imx7ulp_wdt_stop(&imx7ulp_wdt->wdd); in imx7ulp_wdt_suspend()
265 clk_disable_unprepare(imx7ulp_wdt->clk); in imx7ulp_wdt_suspend()
273 u32 timeout = imx7ulp_wdt->wdd.timeout * WDOG_CLOCK_RATE; in imx7ulp_wdt_resume()
276 ret = clk_prepare_enable(imx7ulp_wdt->clk); in imx7ulp_wdt_resume()
280 if (imx7ulp_wdt_is_enabled(imx7ulp_wdt->base)) in imx7ulp_wdt_resume()
281 imx7ulp_wdt_init(imx7ulp_wdt->base, timeout); in imx7ulp_wdt_resume()
283 if (watchdog_active(&imx7ulp_wdt->wdd)) in imx7ulp_wdt_resume()
284 imx7ulp_wdt_start(&imx7ulp_wdt->wdd); in imx7ulp_wdt_resume()
293 { .compatible = "fsl,imx7ulp-wdt", },
301 .name = "imx7ulp-wdt",