diff options
| -rw-r--r-- | drivers/char/watchdog/mixcomwd.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/drivers/char/watchdog/mixcomwd.c b/drivers/char/watchdog/mixcomwd.c index 17c29cb78d09..0836b9a941e2 100644 --- a/drivers/char/watchdog/mixcomwd.c +++ b/drivers/char/watchdog/mixcomwd.c | |||
| @@ -66,7 +66,34 @@ | |||
| 66 | */ | 66 | */ |
| 67 | #define MIXCOM_ID 0x11 | 67 | #define MIXCOM_ID 0x11 |
| 68 | #define FLASHCOM_ID 0x18 | 68 | #define FLASHCOM_ID 0x18 |
| 69 | static int mixcomwd_ioports[] = { 0xd90, 0xe90, 0xf90, 0x000 }; | 69 | static struct { |
| 70 | int ioport; | ||
| 71 | int id; | ||
| 72 | } mixcomwd_io_info[] __devinitdata = { | ||
| 73 | /* The Mixcom cards */ | ||
| 74 | {0x0d90, MIXCOM_ID}, | ||
| 75 | {0x0e90, MIXCOM_ID}, | ||
| 76 | {0x0f90, MIXCOM_ID}, | ||
| 77 | /* The FlashCOM cards */ | ||
| 78 | {0x0304, FLASHCOM_ID}, | ||
| 79 | {0x030c, FLASHCOM_ID}, | ||
| 80 | {0x0314, FLASHCOM_ID}, | ||
| 81 | {0x031c, FLASHCOM_ID}, | ||
| 82 | {0x0324, FLASHCOM_ID}, | ||
| 83 | {0x032c, FLASHCOM_ID}, | ||
| 84 | {0x0334, FLASHCOM_ID}, | ||
| 85 | {0x033c, FLASHCOM_ID}, | ||
| 86 | {0x0344, FLASHCOM_ID}, | ||
| 87 | {0x034c, FLASHCOM_ID}, | ||
| 88 | {0x0354, FLASHCOM_ID}, | ||
| 89 | {0x035c, FLASHCOM_ID}, | ||
| 90 | {0x0364, FLASHCOM_ID}, | ||
| 91 | {0x036c, FLASHCOM_ID}, | ||
| 92 | {0x0374, FLASHCOM_ID}, | ||
| 93 | {0x037c, FLASHCOM_ID}, | ||
| 94 | /* The end of the list */ | ||
| 95 | {0x0000, 0}, | ||
| 96 | }; | ||
| 70 | 97 | ||
| 71 | static void mixcomwd_timerfun(unsigned long d); | 98 | static void mixcomwd_timerfun(unsigned long d); |
| 72 | 99 | ||
| @@ -242,18 +269,11 @@ static int __init mixcomwd_init(void) | |||
| 242 | int ret; | 269 | int ret; |
| 243 | int found=0; | 270 | int found=0; |
| 244 | 271 | ||
| 245 | for (i = 0; !found && mixcomwd_ioports[i] != 0; i++) { | 272 | for (i = 0; !found && mixcomwd_io_info[i].ioport != 0; i++) { |
| 246 | if (checkcard(mixcomwd_ioports[i], MIXCOM_ID)) { | 273 | if (checkcard(mixcomwd_io_info[i].ioport, |
| 247 | found = 1; | 274 | mixcomwd_io_info[i].id)) { |
| 248 | watchdog_port = mixcomwd_ioports[i]; | ||
| 249 | } | ||
| 250 | } | ||
| 251 | |||
| 252 | /* The FlashCOM card can be set up at 0x304 -> 0x37c, in 0x8 jumps */ | ||
| 253 | for (i = 0x304; !found && i < 0x380; i+=0x8) { | ||
| 254 | if (checkcard(i, FLASHCOM_ID)) { | ||
| 255 | found = 1; | 275 | found = 1; |
| 256 | watchdog_port = i; | 276 | watchdog_port = mixcomwd_io_info[i].ioport; |
| 257 | } | 277 | } |
| 258 | } | 278 | } |
| 259 | 279 | ||
