diff options
author | Dale Farnsworth <dale@farnsworth.org> | 2007-07-24 14:17:23 -0400 |
---|---|---|
committer | Wim Van Sebroeck <wim@iguana.be> | 2007-07-24 17:16:18 -0400 |
commit | d37a5c3ddf7f57fdc0632e279eabb1772f89dfc5 (patch) | |
tree | f29706cf27ad179bff4c71cb2d49faf9b44cfa32 /drivers | |
parent | 85d57238d2ff9d95892dd1f266b85d2359d48dcc (diff) |
[WATCHDOG] mv64x60_wdt: Add a module parameter to change nowayout setting
Also, use the WATCHDOG_NOWAYOUT macro, rather than #ifdefs,
and use __module_get to prevent module unloading if WATCHDOG_NOWAYOUT
is set.
Signed-off-by: Dale Farnsworth <dale@farnsworth.org>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/char/watchdog/mv64x60_wdt.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/char/watchdog/mv64x60_wdt.c b/drivers/char/watchdog/mv64x60_wdt.c index 7b4812776382..009b9a2c6efa 100644 --- a/drivers/char/watchdog/mv64x60_wdt.c +++ b/drivers/char/watchdog/mv64x60_wdt.c | |||
@@ -45,6 +45,10 @@ static void __iomem *mv64x60_wdt_regs; | |||
45 | static int mv64x60_wdt_timeout; | 45 | static int mv64x60_wdt_timeout; |
46 | static unsigned int bus_clk; | 46 | static unsigned int bus_clk; |
47 | 47 | ||
48 | static int nowayout = WATCHDOG_NOWAYOUT; | ||
49 | module_param(nowayout, int, 0); | ||
50 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
51 | |||
48 | static void mv64x60_wdt_reg_write(u32 val) | 52 | static void mv64x60_wdt_reg_write(u32 val) |
49 | { | 53 | { |
50 | /* Allow write only to CTL1 / CTL2 fields, retaining values in | 54 | /* Allow write only to CTL1 / CTL2 fields, retaining values in |
@@ -100,6 +104,9 @@ static int mv64x60_wdt_open(struct inode *inode, struct file *file) | |||
100 | if (test_and_set_bit(MV64x60_WDOG_FLAG_OPENED, &wdt_flags)) | 104 | if (test_and_set_bit(MV64x60_WDOG_FLAG_OPENED, &wdt_flags)) |
101 | return -EBUSY; | 105 | return -EBUSY; |
102 | 106 | ||
107 | if (nowayout) | ||
108 | __module_get(THIS_MODULE); | ||
109 | |||
103 | mv64x60_wdt_service(); | 110 | mv64x60_wdt_service(); |
104 | mv64x60_wdt_handler_enable(); | 111 | mv64x60_wdt_handler_enable(); |
105 | 112 | ||
@@ -110,9 +117,8 @@ static int mv64x60_wdt_release(struct inode *inode, struct file *file) | |||
110 | { | 117 | { |
111 | mv64x60_wdt_service(); | 118 | mv64x60_wdt_service(); |
112 | 119 | ||
113 | #if !defined(CONFIG_WATCHDOG_NOWAYOUT) | 120 | if (!nowayout) |
114 | mv64x60_wdt_handler_disable(); | 121 | mv64x60_wdt_handler_disable(); |
115 | #endif | ||
116 | 122 | ||
117 | clear_bit(MV64x60_WDOG_FLAG_OPENED, &wdt_flags); | 123 | clear_bit(MV64x60_WDOG_FLAG_OPENED, &wdt_flags); |
118 | 124 | ||