提交 14e71e4f 编写于 作者: L Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog

* git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
  [WATCHDOG] hpwdt - fix lower timeout limit
  [WATCHDOG] iTCO_wdt: TCO Watchdog patch for additional Intel Cougar Point DeviceIDs
  [WATCHDOG] doc: Fix use of WDIOC_SETOPTIONS ioctl.
  [WATCHDOG] doc: watchdog simple example: don't fail on fsync()
  [WATCHDOG] set max63xx driver as ARM only
  [WATCHDOG] powerpc: pika_wdt ident cannot be const
...@@ -17,9 +17,6 @@ int main(void) ...@@ -17,9 +17,6 @@ int main(void)
ret = -1; ret = -1;
break; break;
} }
ret = fsync(fd);
if (ret)
break;
sleep(10); sleep(10);
} }
close(fd); close(fd);
......
...@@ -31,6 +31,8 @@ static void keep_alive(void) ...@@ -31,6 +31,8 @@ static void keep_alive(void)
*/ */
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int flags;
fd = open("/dev/watchdog", O_WRONLY); fd = open("/dev/watchdog", O_WRONLY);
if (fd == -1) { if (fd == -1) {
...@@ -41,12 +43,14 @@ int main(int argc, char *argv[]) ...@@ -41,12 +43,14 @@ int main(int argc, char *argv[])
if (argc > 1) { if (argc > 1) {
if (!strncasecmp(argv[1], "-d", 2)) { if (!strncasecmp(argv[1], "-d", 2)) {
ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD); flags = WDIOS_DISABLECARD;
ioctl(fd, WDIOC_SETOPTIONS, &flags);
fprintf(stderr, "Watchdog card disabled.\n"); fprintf(stderr, "Watchdog card disabled.\n");
fflush(stderr); fflush(stderr);
exit(0); exit(0);
} else if (!strncasecmp(argv[1], "-e", 2)) { } else if (!strncasecmp(argv[1], "-e", 2)) {
ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD); flags = WDIOS_ENABLECARD;
ioctl(fd, WDIOC_SETOPTIONS, &flags);
fprintf(stderr, "Watchdog card enabled.\n"); fprintf(stderr, "Watchdog card enabled.\n");
fflush(stderr); fflush(stderr);
exit(0); exit(0);
......
...@@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit. ...@@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit.
ioctl(fd, WDIOC_GETTEMP, &temperature); ioctl(fd, WDIOC_GETTEMP, &temperature);
Finally the SETOPTIONS ioctl can be used to control some aspects of Finally the SETOPTIONS ioctl can be used to control some aspects of
the cards operation; right now the pcwd driver is the only one the cards operation.
supporting this ioctl.
int options = 0; int options = 0;
ioctl(fd, WDIOC_SETOPTIONS, options); ioctl(fd, WDIOC_SETOPTIONS, &options);
The following options are available: The following options are available:
......
...@@ -55,11 +55,6 @@ config SOFT_WATCHDOG ...@@ -55,11 +55,6 @@ config SOFT_WATCHDOG
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called softdog. module will be called softdog.
config MAX63XX_WATCHDOG
tristate "Max63xx watchdog"
help
Support for memory mapped max63{69,70,71,72,73,74} watchdog timer.
config WM831X_WATCHDOG config WM831X_WATCHDOG
tristate "WM831x watchdog" tristate "WM831x watchdog"
depends on MFD_WM831X depends on MFD_WM831X
...@@ -305,6 +300,12 @@ config TS72XX_WATCHDOG ...@@ -305,6 +300,12 @@ config TS72XX_WATCHDOG
To compile this driver as a module, choose M here: the To compile this driver as a module, choose M here: the
module will be called ts72xx_wdt. module will be called ts72xx_wdt.
config MAX63XX_WATCHDOG
tristate "Max63xx watchdog"
depends on ARM
help
Support for memory mapped max63{69,70,71,72,73,74} watchdog timer.
# AVR32 Architecture # AVR32 Architecture
config AT32AP700X_WDT config AT32AP700X_WDT
......
...@@ -442,7 +442,7 @@ static void hpwdt_ping(void) ...@@ -442,7 +442,7 @@ static void hpwdt_ping(void)
static int hpwdt_change_timer(int new_margin) static int hpwdt_change_timer(int new_margin)
{ {
/* Arbitrary, can't find the card's limits */ /* Arbitrary, can't find the card's limits */
if (new_margin < 30 || new_margin > 600) { if (new_margin < 5 || new_margin > 600) {
printk(KERN_WARNING printk(KERN_WARNING
"hpwdt: New value passed in is invalid: %d seconds.\n", "hpwdt: New value passed in is invalid: %d seconds.\n",
new_margin); new_margin);
......
...@@ -115,8 +115,37 @@ enum iTCO_chipsets { ...@@ -115,8 +115,37 @@ enum iTCO_chipsets {
TCO_3420, /* 3420 */ TCO_3420, /* 3420 */
TCO_3450, /* 3450 */ TCO_3450, /* 3450 */
TCO_EP80579, /* EP80579 */ TCO_EP80579, /* EP80579 */
TCO_CPTD, /* CPT Desktop */ TCO_CPT1, /* Cougar Point */
TCO_CPTM, /* CPT Mobile */ TCO_CPT2, /* Cougar Point Desktop */
TCO_CPT3, /* Cougar Point Mobile */
TCO_CPT4, /* Cougar Point */
TCO_CPT5, /* Cougar Point */
TCO_CPT6, /* Cougar Point */
TCO_CPT7, /* Cougar Point */
TCO_CPT8, /* Cougar Point */
TCO_CPT9, /* Cougar Point */
TCO_CPT10, /* Cougar Point */
TCO_CPT11, /* Cougar Point */
TCO_CPT12, /* Cougar Point */
TCO_CPT13, /* Cougar Point */
TCO_CPT14, /* Cougar Point */
TCO_CPT15, /* Cougar Point */
TCO_CPT16, /* Cougar Point */
TCO_CPT17, /* Cougar Point */
TCO_CPT18, /* Cougar Point */
TCO_CPT19, /* Cougar Point */
TCO_CPT20, /* Cougar Point */
TCO_CPT21, /* Cougar Point */
TCO_CPT22, /* Cougar Point */
TCO_CPT23, /* Cougar Point */
TCO_CPT24, /* Cougar Point */
TCO_CPT25, /* Cougar Point */
TCO_CPT26, /* Cougar Point */
TCO_CPT27, /* Cougar Point */
TCO_CPT28, /* Cougar Point */
TCO_CPT29, /* Cougar Point */
TCO_CPT30, /* Cougar Point */
TCO_CPT31, /* Cougar Point */
}; };
static struct { static struct {
...@@ -173,8 +202,37 @@ static struct { ...@@ -173,8 +202,37 @@ static struct {
{"3420", 2}, {"3420", 2},
{"3450", 2}, {"3450", 2},
{"EP80579", 2}, {"EP80579", 2},
{"CPT Desktop", 2}, {"Cougar Point", 2},
{"CPT Mobile", 2}, {"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{"Cougar Point", 2},
{NULL, 0} {NULL, 0}
}; };
...@@ -259,8 +317,37 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = { ...@@ -259,8 +317,37 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = {
{ ITCO_PCI_DEVICE(0x3b14, TCO_3420)}, { ITCO_PCI_DEVICE(0x3b14, TCO_3420)},
{ ITCO_PCI_DEVICE(0x3b16, TCO_3450)}, { ITCO_PCI_DEVICE(0x3b16, TCO_3450)},
{ ITCO_PCI_DEVICE(0x5031, TCO_EP80579)}, { ITCO_PCI_DEVICE(0x5031, TCO_EP80579)},
{ ITCO_PCI_DEVICE(0x1c42, TCO_CPTD)}, { ITCO_PCI_DEVICE(0x1c41, TCO_CPT1)},
{ ITCO_PCI_DEVICE(0x1c43, TCO_CPTM)}, { ITCO_PCI_DEVICE(0x1c42, TCO_CPT2)},
{ ITCO_PCI_DEVICE(0x1c43, TCO_CPT3)},
{ ITCO_PCI_DEVICE(0x1c44, TCO_CPT4)},
{ ITCO_PCI_DEVICE(0x1c45, TCO_CPT5)},
{ ITCO_PCI_DEVICE(0x1c46, TCO_CPT6)},
{ ITCO_PCI_DEVICE(0x1c47, TCO_CPT7)},
{ ITCO_PCI_DEVICE(0x1c48, TCO_CPT8)},
{ ITCO_PCI_DEVICE(0x1c49, TCO_CPT9)},
{ ITCO_PCI_DEVICE(0x1c4a, TCO_CPT10)},
{ ITCO_PCI_DEVICE(0x1c4b, TCO_CPT11)},
{ ITCO_PCI_DEVICE(0x1c4c, TCO_CPT12)},
{ ITCO_PCI_DEVICE(0x1c4d, TCO_CPT13)},
{ ITCO_PCI_DEVICE(0x1c4e, TCO_CPT14)},
{ ITCO_PCI_DEVICE(0x1c4f, TCO_CPT15)},
{ ITCO_PCI_DEVICE(0x1c50, TCO_CPT16)},
{ ITCO_PCI_DEVICE(0x1c51, TCO_CPT17)},
{ ITCO_PCI_DEVICE(0x1c52, TCO_CPT18)},
{ ITCO_PCI_DEVICE(0x1c53, TCO_CPT19)},
{ ITCO_PCI_DEVICE(0x1c54, TCO_CPT20)},
{ ITCO_PCI_DEVICE(0x1c55, TCO_CPT21)},
{ ITCO_PCI_DEVICE(0x1c56, TCO_CPT22)},
{ ITCO_PCI_DEVICE(0x1c57, TCO_CPT23)},
{ ITCO_PCI_DEVICE(0x1c58, TCO_CPT24)},
{ ITCO_PCI_DEVICE(0x1c59, TCO_CPT25)},
{ ITCO_PCI_DEVICE(0x1c5a, TCO_CPT26)},
{ ITCO_PCI_DEVICE(0x1c5b, TCO_CPT27)},
{ ITCO_PCI_DEVICE(0x1c5c, TCO_CPT28)},
{ ITCO_PCI_DEVICE(0x1c5d, TCO_CPT29)},
{ ITCO_PCI_DEVICE(0x1c5e, TCO_CPT30)},
{ ITCO_PCI_DEVICE(0x1c5f, TCO_CPT31)},
{ 0, }, /* End of list */ { 0, }, /* End of list */
}; };
MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl); MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
......
...@@ -52,7 +52,7 @@ static struct { ...@@ -52,7 +52,7 @@ static struct {
struct timer_list timer; /* The timer that pings the watchdog */ struct timer_list timer; /* The timer that pings the watchdog */
} pikawdt_private; } pikawdt_private;
static const struct watchdog_info ident = { static struct watchdog_info ident = {
.identity = DRV_NAME, .identity = DRV_NAME,
.options = WDIOF_CARDRESET | .options = WDIOF_CARDRESET |
WDIOF_SETTIMEOUT | WDIOF_SETTIMEOUT |
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册