• Home
  • Raw
  • Download

Lines Matching +full:sp7021 +full:- +full:reset

1 // SPDX-License-Identifier: GPL-2.0-only
14 #include <linux/reset.h>
33 #define DEVICE_NAME "sunplus-wdt"
55 void __iomem *base = priv->base; in sp_wdt_restart()
69 void __iomem *base = priv->base; in sp_wdt_ping()
72 if (wdev->timeout > SP_WDT_MAX_TIMEOUT) { in sp_wdt_ping()
73 /* WDT_CONMAX sets the count to the maximum (down-counting). */ in sp_wdt_ping()
78 * Watchdog timer is a 20-bit down-counting based on STC_CLK. in sp_wdt_ping()
82 count = (wdev->timeout * STC_CLK) >> 4; in sp_wdt_ping()
93 void __iomem *base = priv->base; in sp_wdt_stop()
103 void __iomem *base = priv->base; in sp_wdt_start()
113 void __iomem *base = priv->base; in sp_wdt_get_timeleft()
151 struct device *dev = &pdev->dev; in sp_wdt_probe()
157 return -ENOMEM; in sp_wdt_probe()
159 priv->clk = devm_clk_get(dev, NULL); in sp_wdt_probe()
160 if (IS_ERR(priv->clk)) in sp_wdt_probe()
161 return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to get clock\n"); in sp_wdt_probe()
163 ret = clk_prepare_enable(priv->clk); in sp_wdt_probe()
167 ret = devm_add_action_or_reset(dev, sp_clk_disable_unprepare, priv->clk); in sp_wdt_probe()
171 /* The timer and watchdog shared the STC reset */ in sp_wdt_probe()
172 priv->rstc = devm_reset_control_get_shared(dev, NULL); in sp_wdt_probe()
173 if (IS_ERR(priv->rstc)) in sp_wdt_probe()
174 return dev_err_probe(dev, PTR_ERR(priv->rstc), "Failed to get reset\n"); in sp_wdt_probe()
176 reset_control_deassert(priv->rstc); in sp_wdt_probe()
178 ret = devm_add_action_or_reset(dev, sp_reset_control_assert, priv->rstc); in sp_wdt_probe()
182 priv->base = devm_platform_ioremap_resource(pdev, 0); in sp_wdt_probe()
183 if (IS_ERR(priv->base)) in sp_wdt_probe()
184 return PTR_ERR(priv->base); in sp_wdt_probe()
186 priv->wdev.info = &sp_wdt_info; in sp_wdt_probe()
187 priv->wdev.ops = &sp_wdt_ops; in sp_wdt_probe()
188 priv->wdev.timeout = SP_WDT_DEFAULT_TIMEOUT; in sp_wdt_probe()
189 priv->wdev.max_hw_heartbeat_ms = SP_WDT_MAX_TIMEOUT * 1000; in sp_wdt_probe()
190 priv->wdev.min_timeout = 1; in sp_wdt_probe()
191 priv->wdev.parent = dev; in sp_wdt_probe()
193 watchdog_set_drvdata(&priv->wdev, priv); in sp_wdt_probe()
194 watchdog_init_timeout(&priv->wdev, timeout, dev); in sp_wdt_probe()
195 watchdog_set_nowayout(&priv->wdev, nowayout); in sp_wdt_probe()
196 watchdog_stop_on_reboot(&priv->wdev); in sp_wdt_probe()
197 watchdog_set_restart_priority(&priv->wdev, 128); in sp_wdt_probe()
199 return devm_watchdog_register_device(dev, &priv->wdev); in sp_wdt_probe()
203 {.compatible = "sunplus,sp7021-wdt", },