summaryrefslogtreecommitdiffstats
path: root/drivers/char/watchdog/mixcomwd.c
diff options
context:
space:
mode:
authorWim Van Sebroeck2007-06-03 21:01:38 +0200
committerWim Van Sebroeck2007-06-03 21:14:15 +0200
commit4194db10fab1c9595f12b2846b6799417a8db4dd (patch)
tree5e0e0f0b3bc4c3165fa02fbeaf40a78262972c3a /drivers/char/watchdog/mixcomwd.c
parent[WATCHDOG] Mixcom Watchdog - get rid of port offset's (diff)
downloadkernel-qcow2-linux-4194db10fab1c9595f12b2846b6799417a8db4dd.tar.gz
kernel-qcow2-linux-4194db10fab1c9595f12b2846b6799417a8db4dd.tar.xz
kernel-qcow2-linux-4194db10fab1c9595f12b2846b6799417a8db4dd.zip
[WATCHDOG] Mixcom Watchdog - checkcard
Simplify the mixcomwd_checkcard and flashcom_checkcard functions to one checkcard function as part of the port to an isa watchdog device driver. Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/char/watchdog/mixcomwd.c')
-rw-r--r--drivers/char/watchdog/mixcomwd.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/drivers/char/watchdog/mixcomwd.c b/drivers/char/watchdog/mixcomwd.c
index b614a5f6e331..17c29cb78d09 100644
--- a/drivers/char/watchdog/mixcomwd.c
+++ b/drivers/char/watchdog/mixcomwd.c
@@ -217,23 +217,7 @@ static struct miscdevice mixcomwd_miscdev=
.fops = &mixcomwd_fops,
};
-static int __init mixcomwd_checkcard(int port)
-{
- int id;
-
- if (!request_region(port, 1, "MixCOM watchdog")) {
- return 0;
- }
-
- id=inb_p(port) & 0x3f;
- if(id!=MIXCOM_ID) {
- release_region(port, 1);
- return 0;
- }
- return port;
-}
-
-static int __init flashcom_checkcard(int port)
+static int __init checkcard(int port, int card_id)
{
int id;
@@ -242,12 +226,15 @@ static int __init flashcom_checkcard(int port)
}
id=inb_p(port);
- if(id!=FLASHCOM_ID) {
+ if (card_id==MIXCOM_ID)
+ id &= 0x3f;
+
+ if (id!=card_id) {
release_region(port, 1);
return 0;
}
- return port;
- }
+ return 1;
+}
static int __init mixcomwd_init(void)
{
@@ -256,17 +243,17 @@ static int __init mixcomwd_init(void)
int found=0;
for (i = 0; !found && mixcomwd_ioports[i] != 0; i++) {
- watchdog_port = mixcomwd_checkcard(mixcomwd_ioports[i]);
- if (watchdog_port) {
+ if (checkcard(mixcomwd_ioports[i], MIXCOM_ID)) {
found = 1;
+ watchdog_port = mixcomwd_ioports[i];
}
}
/* The FlashCOM card can be set up at 0x304 -> 0x37c, in 0x8 jumps */
for (i = 0x304; !found && i < 0x380; i+=0x8) {
- watchdog_port = flashcom_checkcard(i);
- if (watchdog_port) {
+ if (checkcard(i, FLASHCOM_ID)) {
found = 1;
+ watchdog_port = i;
}
}