• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/watchdog/

Lines Matching refs:wdt

2  * drivers/char/watchdog/sp805-wdt.c
37 #define MODULE_NAME "sp805-wdt"
57 * struct sp805_wdt: sp805 wdt device structure
60 * base: base address of wdt
61 * clk: clock structure of wdt
62 * dev: amba device structure of wdt
63 * status: current status of wdt
80 static struct sp805_wdt *wdt;
88 rate = clk_get_rate(wdt->clk);
101 spin_lock(&wdt->lock);
102 wdt->load_val = load;
104 wdt->timeout = div_u64((load + 1) * 2 + (rate / 2), rate);
105 spin_unlock(&wdt->lock);
113 rate = clk_get_rate(wdt->clk);
115 spin_lock(&wdt->lock);
116 load = readl(wdt->base + WDTVALUE);
119 if (!(readl(wdt->base + WDTRIS) & INT_MASK))
120 load += wdt->load_val + 1;
121 spin_unlock(&wdt->lock);
129 spin_lock(&wdt->lock);
131 writel(UNLOCK, wdt->base + WDTLOCK);
132 writel(wdt->load_val, wdt->base + WDTLOAD);
133 writel(INT_MASK, wdt->base + WDTINTCLR);
134 writel(INT_ENABLE | RESET_ENABLE, wdt->base + WDTCONTROL);
135 writel(LOCK, wdt->base + WDTLOCK);
137 spin_unlock(&wdt->lock);
143 spin_lock(&wdt->lock);
145 writel(UNLOCK, wdt->base + WDTLOCK);
146 writel(0, wdt->base + WDTCONTROL);
147 writel(0, wdt->base + WDTLOAD);
148 writel(LOCK, wdt->base + WDTLOCK);
150 spin_unlock(&wdt->lock);
160 clear_bit(WDT_CAN_BE_CLOSED, &wdt->status);
170 &wdt->status);
217 ret = put_user(wdt->timeout, (unsigned int *)arg);
230 if (test_and_set_bit(WDT_BUSY, &wdt->status))
233 ret = clk_enable(wdt->clk);
235 dev_err(&wdt->adev->dev, "clock enable fail");
242 clear_bit(WDT_CAN_BE_CLOSED, &wdt->status);
246 clear_bit(WDT_BUSY, &wdt->status);
252 if (!test_bit(WDT_CAN_BE_CLOSED, &wdt->status)) {
253 clear_bit(WDT_BUSY, &wdt->status);
254 dev_warn(&wdt->adev->dev, "Device closed unexpectedly\n");
259 clk_disable(wdt->clk);
260 clear_bit(WDT_BUSY, &wdt->status);
292 wdt = kzalloc(sizeof(*wdt), GFP_KERNEL);
293 if (!wdt) {
299 wdt->clk = clk_get(&adev->dev, NULL);
300 if (IS_ERR(wdt->clk)) {
302 ret = PTR_ERR(wdt->clk);
306 wdt->base = ioremap(adev->res.start, resource_size(&adev->res));
307 if (!wdt->base) {
313 wdt->adev = adev;
314 spin_lock_init(&wdt->lock);
327 iounmap(wdt->base);
329 clk_put(wdt->clk);
331 kfree(wdt);
332 wdt = NULL;
343 iounmap(wdt->base);
344 clk_put(wdt->clk);
345 kfree(wdt);