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()
111 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_dbg_show()
112 ctl_val = secure_register_read(wdt, SECWDOG_CTRL_REG); in bcm_kona_wdt_dbg_show()
113 cur_val = secure_register_read(wdt, SECWDOG_COUNT_REG); in bcm_kona_wdt_dbg_show()
114 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_dbg_show()
124 ctl_sec = TICKS_TO_SECS(ctl, wdt); in bcm_kona_wdt_dbg_show()
125 cur_sec = TICKS_TO_SECS(cur, wdt); in bcm_kona_wdt_dbg_show()
131 res, wdt->resolution, in bcm_kona_wdt_dbg_show()
134 wdt->busy_count); in bcm_kona_wdt_dbg_show()
155 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev); in bcm_kona_wdt_debug_init() local
157 if (!wdt) in bcm_kona_wdt_debug_init()
160 wdt->debugfs = NULL; in bcm_kona_wdt_debug_init()
166 if (debugfs_create_file("info", S_IFREG | S_IRUGO, dir, wdt, in bcm_kona_wdt_debug_init()
168 wdt->debugfs = dir; in bcm_kona_wdt_debug_init()
175 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev); in bcm_kona_wdt_debug_exit() local
177 if (wdt && wdt->debugfs) { in bcm_kona_wdt_debug_exit()
178 debugfs_remove_recursive(wdt->debugfs); in bcm_kona_wdt_debug_exit()
179 wdt->debugfs = NULL; in bcm_kona_wdt_debug_exit()
190 static int bcm_kona_wdt_ctrl_reg_modify(struct bcm_kona_wdt *wdt, in bcm_kona_wdt_ctrl_reg_modify() argument
197 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_ctrl_reg_modify()
199 val = secure_register_read(wdt, SECWDOG_CTRL_REG); in bcm_kona_wdt_ctrl_reg_modify()
205 writel_relaxed(val, wdt->base + SECWDOG_CTRL_REG); in bcm_kona_wdt_ctrl_reg_modify()
208 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_ctrl_reg_modify()
213 static int bcm_kona_wdt_set_resolution_reg(struct bcm_kona_wdt *wdt) in bcm_kona_wdt_set_resolution_reg() argument
215 if (wdt->resolution > SECWDOG_MAX_RES) in bcm_kona_wdt_set_resolution_reg()
218 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_RES_MASK, in bcm_kona_wdt_set_resolution_reg()
219 wdt->resolution << SECWDOG_CLKS_SHIFT); in bcm_kona_wdt_set_resolution_reg()
225 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_set_timeout_reg() local
227 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_COUNT_MASK, in bcm_kona_wdt_set_timeout_reg()
228 SECS_TO_TICKS(wdog->timeout, wdt) | in bcm_kona_wdt_set_timeout_reg()
241 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_get_timeleft() local
245 spin_lock_irqsave(&wdt->lock, flags); in bcm_kona_wdt_get_timeleft()
246 val = secure_register_read(wdt, SECWDOG_COUNT_REG); in bcm_kona_wdt_get_timeleft()
247 spin_unlock_irqrestore(&wdt->lock, flags); in bcm_kona_wdt_get_timeleft()
252 return TICKS_TO_SECS(val & SECWDOG_COUNT_MASK, wdt); in bcm_kona_wdt_get_timeleft()
263 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog); in bcm_kona_wdt_stop() local
265 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_EN_MASK | in bcm_kona_wdt_stop()
299 struct bcm_kona_wdt *wdt; in bcm_kona_wdt_probe() local
303 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL); in bcm_kona_wdt_probe()
304 if (!wdt) in bcm_kona_wdt_probe()
308 wdt->base = devm_ioremap_resource(dev, res); in bcm_kona_wdt_probe()
309 if (IS_ERR(wdt->base)) in bcm_kona_wdt_probe()
312 wdt->resolution = SECWDOG_DEFAULT_RESOLUTION; in bcm_kona_wdt_probe()
313 ret = bcm_kona_wdt_set_resolution_reg(wdt); in bcm_kona_wdt_probe()
319 spin_lock_init(&wdt->lock); in bcm_kona_wdt_probe()
320 platform_set_drvdata(pdev, wdt); in bcm_kona_wdt_probe()
321 watchdog_set_drvdata(&bcm_kona_wdt_wdd, wdt); in bcm_kona_wdt_probe()