Lines Matching refs:wdt
65 static int secure_register_read(struct bcm_kona_wdt *wdt, uint32_t offset) in secure_register_read() argument
78 val = readl_relaxed(wdt->base + offset); in secure_register_read()
84 if (count > wdt->busy_count) in secure_register_read()
85 wdt->busy_count = count; in secure_register_read()
104 struct bcm_kona_wdt *wdt = s->private; in bcm_kona_wdt_dbg_show() local
106 if (!wdt) in bcm_kona_wdt_dbg_show()
109 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_dbg_show()
110 ctl_val = secure_register_read(wdt, SECWDOG_CTRL_REG); in bcm_kona_wdt_dbg_show()
111 cur_val = secure_register_read(wdt, SECWDOG_COUNT_REG); in bcm_kona_wdt_dbg_show()
112 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_dbg_show()
122 ctl_sec = TICKS_TO_SECS(ctl, wdt); in bcm_kona_wdt_dbg_show()
123 cur_sec = TICKS_TO_SECS(cur, wdt); in bcm_kona_wdt_dbg_show()
128 wdt->resolution, ctl_sec, ctl, ctl, cur_sec, in bcm_kona_wdt_dbg_show()
129 cur, cur, wdt->busy_count); in bcm_kona_wdt_dbg_show()
150 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev); in bcm_kona_wdt_debug_init() local
152 if (!wdt) in bcm_kona_wdt_debug_init()
155 wdt->debugfs = NULL; in bcm_kona_wdt_debug_init()
161 if (debugfs_create_file("info", S_IFREG | S_IRUGO, dir, wdt, in bcm_kona_wdt_debug_init()
163 wdt->debugfs = dir; in bcm_kona_wdt_debug_init()
170 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev); in bcm_kona_wdt_debug_exit() local
172 if (wdt && wdt->debugfs) { in bcm_kona_wdt_debug_exit()
173 debugfs_remove_recursive(wdt->debugfs); in bcm_kona_wdt_debug_exit()
174 wdt->debugfs = NULL; in bcm_kona_wdt_debug_exit()
185 static int bcm_kona_wdt_ctrl_reg_modify(struct bcm_kona_wdt *wdt, in bcm_kona_wdt_ctrl_reg_modify() argument
192 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_ctrl_reg_modify()
194 val = secure_register_read(wdt, SECWDOG_CTRL_REG); in bcm_kona_wdt_ctrl_reg_modify()
200 writel_relaxed(val, wdt->base + SECWDOG_CTRL_REG); in bcm_kona_wdt_ctrl_reg_modify()
203 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_ctrl_reg_modify()
208 static int bcm_kona_wdt_set_resolution_reg(struct bcm_kona_wdt *wdt) in bcm_kona_wdt_set_resolution_reg() argument
210 if (wdt->resolution > SECWDOG_MAX_RES) in bcm_kona_wdt_set_resolution_reg()
213 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_RES_MASK, in bcm_kona_wdt_set_resolution_reg()
214 wdt->resolution << SECWDOG_CLKS_SHIFT); in bcm_kona_wdt_set_resolution_reg()
220 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_set_timeout_reg() local
222 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_COUNT_MASK, in bcm_kona_wdt_set_timeout_reg()
223 SECS_TO_TICKS(wdog->timeout, wdt) | in bcm_kona_wdt_set_timeout_reg()
236 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_get_timeleft() local
240 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_get_timeleft()
241 val = secure_register_read(wdt, SECWDOG_COUNT_REG); in bcm_kona_wdt_get_timeleft()
242 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_get_timeleft()
247 return TICKS_TO_SECS(val & SECWDOG_COUNT_MASK, wdt); in bcm_kona_wdt_get_timeleft()
258 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_stop() local
260 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_EN_MASK | in bcm_kona_wdt_stop()
294 struct bcm_kona_wdt *wdt; in bcm_kona_wdt_probe() local
298 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL); in bcm_kona_wdt_probe()
299 if (!wdt) in bcm_kona_wdt_probe()
302 spin_lock_init(&wdt->lock); in bcm_kona_wdt_probe()
305 wdt->base = devm_ioremap_resource(dev, res); in bcm_kona_wdt_probe()
306 if (IS_ERR(wdt->base)) in bcm_kona_wdt_probe()
309 wdt->resolution = SECWDOG_DEFAULT_RESOLUTION; in bcm_kona_wdt_probe()
310 ret = bcm_kona_wdt_set_resolution_reg(wdt); in bcm_kona_wdt_probe()
316 platform_set_drvdata(pdev, wdt); in bcm_kona_wdt_probe()
317 watchdog_set_drvdata(&bcm_kona_wdt_wdd, wdt); in bcm_kona_wdt_probe()