static void s3c2410wdt_start(void) { unsigned long wtcon; spin_lock(&wdt_lock); __s3c2410wdt_stop(); wtcon = readl(wdt_base + S3C2410_WTCON); wtcon |= S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128; if (soft_noboot) { wtcon |= S3C2410_WTCON_INTEN; wtcon &= ~S3C2410_WTCON_RSTEN; } else { wtcon &= ~S3C2410_WTCON_INTEN; wtcon |= S3C2410_WTCON_RSTEN; } DBG("%s: wdt_count=0x%08x, wtcon=%08lx\n", __func__, wdt_count, wtcon); writel(wdt_count, wdt_base + S3C2410_WTDAT); writel(wdt_count, wdt_base + S3C2410_WTCNT); writel(wtcon, wdt_base + S3C2410_WTCON); spin_unlock(&wdt_lock); }
static int s3c2410wdt_start(struct watchdog_device *wdd) { unsigned long wtcon; unsigned long flags; spin_lock_irqsave(&wdt_lock, flags); __s3c2410wdt_stop(); wtcon = __raw_readl(wdt_base + S3C2410_WTCON); wtcon |= S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128; if (soft_noboot) { wtcon |= S3C2410_WTCON_INTEN; wtcon &= ~S3C2410_WTCON_RSTEN; } else { wtcon &= ~S3C2410_WTCON_INTEN; wtcon |= S3C2410_WTCON_RSTEN; } DBG("%s: wdt_count=0x%08x, wtcon=%08lx\n", __func__, wdt_count, wtcon); __raw_writel(wdt_count, wdt_base + S3C2410_WTDAT); __raw_writel(wdt_count, wdt_base + S3C2410_WTCNT); __raw_writel(wtcon, wdt_base + S3C2410_WTCON); spin_unlock_irqrestore(&wdt_lock, flags); return 0; }
static int s3c2410wdt_start(struct watchdog_device *wdd) { unsigned long wtcon; spin_lock(&wdt_lock); __s3c2410wdt_stop(); wtcon = readl(S3C2410_WTCON); wtcon |= S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV128; if (soft_noboot) { wtcon |= S3C2410_WTCON_INTEN; wtcon &= ~S3C2410_WTCON_RSTEN; } else { wtcon &= ~S3C2410_WTCON_INTEN; wtcon |= S3C2410_WTCON_RSTEN; } DBG("%s: wdt_count=0x%08x, wtcon=%08lx\n", __func__, wdt_count, wtcon); writel(wdt_count, S3C2410_WTDAT); writel(wdt_count, S3C2410_WTCNT); writel(wtcon, S3C2410_WTCON); spin_unlock(&wdt_lock); return 0; }
static int s3c2410wdt_stop(struct watchdog_device *wdd) { spin_lock(&wdt_lock); __s3c2410wdt_stop(); spin_unlock(&wdt_lock); return 0; }
void __watchdog_save(void) { if (atomic_read(&wdt_suspended)) return; watchdog_save(); __s3c2410wdt_stop(); clk_disable(wdt_clock); }
static int s3c2410wdt_stop(struct watchdog_device *wdd) { unsigned long flags; spin_lock_irqsave(&wdt_lock, flags); __s3c2410wdt_stop(); spin_unlock_irqrestore(&wdt_lock, flags); return 0; }
static void s3c2410wdt_stop(void) { spin_lock(&wdt_lock); __s3c2410wdt_stop(); spin_unlock(&wdt_lock); }