Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ae98ed1 authored by Randy Vinson's avatar Randy Vinson Committed by Wim Van Sebroeck
Browse files

watchdog: Propagate Book E WDT period changes to all cores



When the watchdog period is changed, it needs to be propagated to all cores
in addition to the core that performed the change.

Signed-off-by: default avatarRandy Vinson <rvinson@mvista.com>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 5d63c134
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -85,6 +85,22 @@ static unsigned int sec_to_period(unsigned int secs)
	return 0;
}

static void __booke_wdt_set(void *data)
{
	u32 val;

	val = mfspr(SPRN_TCR);
	val &= ~WDTP_MASK;
	val |= WDTP(booke_wdt_period);

	mtspr(SPRN_TCR, val);
}

static void booke_wdt_set(void)
{
	on_each_cpu(__booke_wdt_set, NULL, 0);
}

static void __booke_wdt_ping(void *data)
{
	mtspr(SPRN_TSR, TSR_ENW|TSR_WIS);
@@ -181,8 +197,7 @@ static long booke_wdt_ioctl(struct file *file,
#else
		booke_wdt_period = tmp;
#endif
		mtspr(SPRN_TCR, (mfspr(SPRN_TCR) & ~WDTP_MASK) |
						WDTP(booke_wdt_period));
		booke_wdt_set();
		return 0;
	case WDIOC_GETTIMEOUT:
		return put_user(booke_wdt_period, p);