Source
34
34
#define WATCHDOG_TIMEOUT 30 /* 30 sec default timeout */
35
35
36
36
static bool nowayout = WATCHDOG_NOWAYOUT;
37
37
module_param(nowayout, bool, 0);
38
38
MODULE_PARM_DESC(nowayout,
39
39
"Watchdog cannot be stopped once started (default="
40
40
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
41
41
42
42
static void indydog_start(void)
43
43
{
44
-
u32 mc_ctrl0;
45
-
46
44
spin_lock(&indydog_lock);
47
-
mc_ctrl0 = sgimc->cpuctrl0;
48
-
mc_ctrl0 = sgimc->cpuctrl0 | SGIMC_CCTRL0_WDOG;
49
-
sgimc->cpuctrl0 = mc_ctrl0;
45
+
sgimc->cpuctrl0 |= SGIMC_CCTRL0_WDOG;
50
46
spin_unlock(&indydog_lock);
51
47
}
52
48
53
49
static void indydog_stop(void)
54
50
{
55
-
u32 mc_ctrl0;
56
-
57
51
spin_lock(&indydog_lock);
58
-
59
-
mc_ctrl0 = sgimc->cpuctrl0;
60
-
mc_ctrl0 &= ~SGIMC_CCTRL0_WDOG;
61
-
sgimc->cpuctrl0 = mc_ctrl0;
52
+
sgimc->cpuctrl0 &= ~SGIMC_CCTRL0_WDOG;
62
53
spin_unlock(&indydog_lock);
63
54
64
55
pr_info("Stopped watchdog timer\n");
65
56
}
66
57
67
58
static void indydog_ping(void)
68
59
{
69
60
sgimc->watchdogt = 0;
70
61
}
71
62