[WATCHDOG] sbc_fitpc2_wdt: fix I/O space access technique.
Denis Turischev [Thu, 21 Jan 2010 14:10:07 +0000 (16:10 +0200)]
The mdelay function was used between I/O access commands, that causes peak
in CPU usage. Fix it by substitution mdelay to msleep.

Expand usage on fitPC2 compatible boards according to DMI identification.

Signed-off-by: Denis Turischev <denis@compulab.co.il>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>

drivers/watchdog/Kconfig
drivers/watchdog/sbc_fitpc2_wdt.c

index 088f32f..050ee14 100644 (file)
@@ -396,8 +396,8 @@ config SBC_FITPC2_WATCHDOG
        tristate "Compulab SBC-FITPC2 watchdog"
        depends on X86
        ---help---
-         This is the driver for the built-in watchdog timer on the fit-PC2
-         Single-board computer made by Compulab.
+         This is the driver for the built-in watchdog timer on the fit-PC2,
+         fit-PC2i, CM-iAM single-board computers made by Compulab.
 
          It`s possible to enable watchdog timer either from BIOS (F2) or from booted Linux.
          When "Watchdog Timer Value" enabled one can set 31-255 s operational range.
index 91430a8..e6763d2 100644 (file)
@@ -46,9 +46,9 @@ static DEFINE_SPINLOCK(wdt_lock);
 static void wdt_send_data(unsigned char command, unsigned char data)
 {
        outb(command, COMMAND_PORT);
-       mdelay(100);
+       msleep(100);
        outb(data, DATA_PORT);
-       mdelay(200);
+       msleep(200);
 }
 
 static void wdt_enable(void)
@@ -202,11 +202,10 @@ static int __init fitpc2_wdt_init(void)
 {
        int err;
 
-       if (strcmp("SBC-FITPC2", dmi_get_system_info(DMI_BOARD_NAME))) {
-               pr_info("board name is: %s. Should be SBC-FITPC2\n",
-                       dmi_get_system_info(DMI_BOARD_NAME));
+       if (!strstr(dmi_get_system_info(DMI_BOARD_NAME), "SBC-FITPC2"))
                return -ENODEV;
-       }
+
+       pr_info("%s found\n", dmi_get_system_info(DMI_BOARD_NAME));
 
        if (!request_region(COMMAND_PORT, 1, WATCHDOG_NAME)) {
                pr_err("I/O address 0x%04x already in use\n", COMMAND_PORT);