diff options
Diffstat (limited to 'drivers/watchdog/iTCO_vendor_support.c')
| -rw-r--r-- | drivers/watchdog/iTCO_vendor_support.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/drivers/watchdog/iTCO_vendor_support.c b/drivers/watchdog/iTCO_vendor_support.c index ca344a85eb9..2474ebca88f 100644 --- a/drivers/watchdog/iTCO_vendor_support.c +++ b/drivers/watchdog/iTCO_vendor_support.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * intel TCO vendor specific watchdog driver support | 2 | * intel TCO vendor specific watchdog driver support |
| 3 | * | 3 | * |
| 4 | * (c) Copyright 2006 Wim Van Sebroeck <wim@iguana.be>. | 4 | * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>. |
| 5 | * | 5 | * |
| 6 | * This program is free software; you can redistribute it and/or | 6 | * This program is free software; you can redistribute it and/or |
| 7 | * modify it under the terms of the GNU General Public License | 7 | * modify it under the terms of the GNU General Public License |
| @@ -19,8 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | /* Module and version information */ | 20 | /* Module and version information */ |
| 21 | #define DRV_NAME "iTCO_vendor_support" | 21 | #define DRV_NAME "iTCO_vendor_support" |
| 22 | #define DRV_VERSION "1.01" | 22 | #define DRV_VERSION "1.02" |
| 23 | #define DRV_RELDATE "11-Nov-2006" | ||
| 24 | #define PFX DRV_NAME ": " | 23 | #define PFX DRV_NAME ": " |
| 25 | 24 | ||
| 26 | /* Includes */ | 25 | /* Includes */ |
| @@ -78,24 +77,6 @@ MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=0 (n | |||
| 78 | * 20.6 seconds. | 77 | * 20.6 seconds. |
| 79 | */ | 78 | */ |
| 80 | 79 | ||
| 81 | static void supermicro_old_pre_start(unsigned long acpibase) | ||
| 82 | { | ||
| 83 | unsigned long val32; | ||
| 84 | |||
| 85 | val32 = inl(SMI_EN); | ||
| 86 | val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ | ||
| 87 | outl(val32, SMI_EN); /* Needed to activate watchdog */ | ||
| 88 | } | ||
| 89 | |||
| 90 | static void supermicro_old_pre_stop(unsigned long acpibase) | ||
| 91 | { | ||
| 92 | unsigned long val32; | ||
| 93 | |||
| 94 | val32 = inl(SMI_EN); | ||
| 95 | val32 &= 0x00002000; /* Turn on SMI clearing watchdog */ | ||
| 96 | outl(val32, SMI_EN); /* Needed to deactivate watchdog */ | ||
| 97 | } | ||
| 98 | |||
| 99 | static void supermicro_old_pre_keepalive(unsigned long acpibase) | 80 | static void supermicro_old_pre_keepalive(unsigned long acpibase) |
| 100 | { | 81 | { |
| 101 | /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */ | 82 | /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */ |
| @@ -247,18 +228,14 @@ static void supermicro_new_pre_set_heartbeat(unsigned int heartbeat) | |||
| 247 | void iTCO_vendor_pre_start(unsigned long acpibase, | 228 | void iTCO_vendor_pre_start(unsigned long acpibase, |
| 248 | unsigned int heartbeat) | 229 | unsigned int heartbeat) |
| 249 | { | 230 | { |
| 250 | if (vendorsupport == SUPERMICRO_OLD_BOARD) | 231 | if (vendorsupport == SUPERMICRO_NEW_BOARD) |
| 251 | supermicro_old_pre_start(acpibase); | ||
| 252 | else if (vendorsupport == SUPERMICRO_NEW_BOARD) | ||
| 253 | supermicro_new_pre_start(heartbeat); | 232 | supermicro_new_pre_start(heartbeat); |
| 254 | } | 233 | } |
| 255 | EXPORT_SYMBOL(iTCO_vendor_pre_start); | 234 | EXPORT_SYMBOL(iTCO_vendor_pre_start); |
| 256 | 235 | ||
| 257 | void iTCO_vendor_pre_stop(unsigned long acpibase) | 236 | void iTCO_vendor_pre_stop(unsigned long acpibase) |
| 258 | { | 237 | { |
| 259 | if (vendorsupport == SUPERMICRO_OLD_BOARD) | 238 | if (vendorsupport == SUPERMICRO_NEW_BOARD) |
| 260 | supermicro_old_pre_stop(acpibase); | ||
| 261 | else if (vendorsupport == SUPERMICRO_NEW_BOARD) | ||
| 262 | supermicro_new_pre_stop(); | 239 | supermicro_new_pre_stop(); |
| 263 | } | 240 | } |
| 264 | EXPORT_SYMBOL(iTCO_vendor_pre_stop); | 241 | EXPORT_SYMBOL(iTCO_vendor_pre_stop); |
