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);
}
예제 #2
0
파일: s3c2410_wdt.c 프로젝트: gcrisis/m040
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;
}
예제 #3
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;
}
예제 #5
0
void __watchdog_save(void)
{
	if (atomic_read(&wdt_suspended))
		return;

	watchdog_save();
	__s3c2410wdt_stop();
	clk_disable(wdt_clock);
}
예제 #6
0
파일: s3c2410_wdt.c 프로젝트: gcrisis/m040
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);
}