Lines Matching refs:wdt

58 static int secure_register_read(struct bcm_kona_wdt *wdt, uint32_t offset)
71 val = readl_relaxed(wdt->base + offset);
77 if (count > wdt->busy_count)
78 wdt->busy_count = count;
97 struct bcm_kona_wdt *wdt = s->private;
99 if (!wdt) {
104 spin_lock_irqsave(&wdt->lock, flags);
105 ctl_val = secure_register_read(wdt, SECWDOG_CTRL_REG);
106 cur_val = secure_register_read(wdt, SECWDOG_COUNT_REG);
107 spin_unlock_irqrestore(&wdt->lock, flags);
117 ctl_sec = TICKS_TO_SECS(ctl, wdt);
118 cur_sec = TICKS_TO_SECS(cur, wdt);
124 res, wdt->resolution,
127 wdt->busy_count);
138 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev);
140 if (!wdt)
143 wdt->debugfs = NULL;
147 debugfs_create_file("info", S_IFREG | S_IRUGO, dir, wdt,
149 wdt->debugfs = dir;
154 struct bcm_kona_wdt *wdt = platform_get_drvdata(pdev);
156 if (wdt)
157 debugfs_remove_recursive(wdt->debugfs);
167 static int bcm_kona_wdt_ctrl_reg_modify(struct bcm_kona_wdt *wdt,
174 spin_lock_irqsave(&wdt->lock, flags);
176 val = secure_register_read(wdt, SECWDOG_CTRL_REG);
182 writel_relaxed(val, wdt->base + SECWDOG_CTRL_REG);
185 spin_unlock_irqrestore(&wdt->lock, flags);
190 static int bcm_kona_wdt_set_resolution_reg(struct bcm_kona_wdt *wdt)
192 if (wdt->resolution > SECWDOG_MAX_RES)
195 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_RES_MASK,
196 wdt->resolution << SECWDOG_CLKS_SHIFT);
202 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog);
204 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_COUNT_MASK,
205 SECS_TO_TICKS(wdog->timeout, wdt) |
218 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog);
222 spin_lock_irqsave(&wdt->lock, flags);
223 val = secure_register_read(wdt, SECWDOG_COUNT_REG);
224 spin_unlock_irqrestore(&wdt->lock, flags);
229 return TICKS_TO_SECS(val & SECWDOG_COUNT_MASK, wdt);
240 struct bcm_kona_wdt *wdt = watchdog_get_drvdata(wdog);
242 return bcm_kona_wdt_ctrl_reg_modify(wdt, SECWDOG_EN_MASK |
271 struct bcm_kona_wdt *wdt;
274 wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
275 if (!wdt)
278 spin_lock_init(&wdt->lock);
280 wdt->base = devm_platform_ioremap_resource(pdev, 0);
281 if (IS_ERR(wdt->base))
282 return PTR_ERR(wdt->base);
284 wdt->resolution = SECWDOG_DEFAULT_RESOLUTION;
285 ret = bcm_kona_wdt_set_resolution_reg(wdt);
291 platform_set_drvdata(pdev, wdt);
292 watchdog_set_drvdata(&bcm_kona_wdt_wdd, wdt);
320 { .compatible = "brcm,kona-wdt", },