diff options
Diffstat (limited to 'drivers/serial/8250_pnp.c')
-rw-r--r-- | drivers/serial/8250_pnp.c | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index 97c68d021d28..638b68649e79 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
@@ -383,21 +383,14 @@ static int __devinit check_name(char *name) | |||
383 | return 0; | 383 | return 0; |
384 | } | 384 | } |
385 | 385 | ||
386 | static int __devinit check_resources(struct pnp_option *option) | 386 | static int __devinit check_resources(struct pnp_dev *dev) |
387 | { | 387 | { |
388 | struct pnp_option *tmp; | 388 | resource_size_t base[] = {0x2f8, 0x3f8, 0x2e8, 0x3e8}; |
389 | if (!option) | 389 | int i; |
390 | return 0; | ||
391 | 390 | ||
392 | for (tmp = option; tmp; tmp = tmp->next) { | 391 | for (i = 0; i < ARRAY_SIZE(base); i++) { |
393 | struct pnp_port *port; | 392 | if (pnp_possible_config(dev, IORESOURCE_IO, base[i], 8)) |
394 | for (port = tmp->port; port; port = port->next) | 393 | return 1; |
395 | if ((port->size == 8) && | ||
396 | ((port->min == 0x2f8) || | ||
397 | (port->min == 0x3f8) || | ||
398 | (port->min == 0x2e8) || | ||
399 | (port->min == 0x3e8))) | ||
400 | return 1; | ||
401 | } | 394 | } |
402 | 395 | ||
403 | return 0; | 396 | return 0; |
@@ -420,10 +413,7 @@ static int __devinit serial_pnp_guess_board(struct pnp_dev *dev, int *flags) | |||
420 | (dev->card && check_name(dev->card->name)))) | 413 | (dev->card && check_name(dev->card->name)))) |
421 | return -ENODEV; | 414 | return -ENODEV; |
422 | 415 | ||
423 | if (check_resources(dev->independent)) | 416 | if (check_resources(dev)) |
424 | return 0; | ||
425 | |||
426 | if (check_resources(dev->dependent)) | ||
427 | return 0; | 417 | return 0; |
428 | 418 | ||
429 | return -ENODEV; | 419 | return -ENODEV; |