Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb
[pandora-kernel.git] / drivers / serial / 8250_pnp.c
index 6f09cbd..fde7f9c 100644 (file)
@@ -12,8 +12,6 @@
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License.
- *
- *  $Id: 8250_pnp.c,v 1.10 2002/07/21 21:32:30 rmk Exp $
  */
 #include <linux/module.h>
 #include <linux/init.h>
@@ -91,6 +89,8 @@ static const struct pnp_device_id pnp_dev_table[] = {
        /* Archtek America Corp. */
        /* Archtek SmartLink Modem 3334BT Plug & Play */
        {       "GVC000F",              0       },
+       /* Archtek SmartLink Modem 3334BRV 33.6K Data Fax Voice */
+       {       "GVC0303",              0       },
        /* Hayes */
        /* Hayes Optima 288 V.34-V.FC + FAX + Voice Plug & Play */
        {       "HAY0001",              0       },
@@ -381,21 +381,14 @@ static int __devinit check_name(char *name)
        return 0;
 }
 
-static int __devinit check_resources(struct pnp_option *option)
+static int __devinit check_resources(struct pnp_dev *dev)
 {
-       struct pnp_option *tmp;
-       if (!option)
-               return 0;
+       resource_size_t base[] = {0x2f8, 0x3f8, 0x2e8, 0x3e8};
+       int i;
 
-       for (tmp = option; tmp; tmp = tmp->next) {
-               struct pnp_port *port;
-               for (port = tmp->port; port; port = port->next)
-                       if ((port->size == 8) &&
-                           ((port->min == 0x2f8) ||
-                            (port->min == 0x3f8) ||
-                            (port->min == 0x2e8) ||
-                            (port->min == 0x3e8)))
-                               return 1;
+       for (i = 0; i < ARRAY_SIZE(base); i++) {
+               if (pnp_possible_config(dev, IORESOURCE_IO, base[i], 8))
+                       return 1;
        }
 
        return 0;
@@ -418,10 +411,7 @@ static int __devinit serial_pnp_guess_board(struct pnp_dev *dev, int *flags)
                (dev->card && check_name(dev->card->name))))
                        return -ENODEV;
 
-       if (check_resources(dev->independent))
-               return 0;
-
-       if (check_resources(dev->dependent))
+       if (check_resources(dev))
                return 0;
 
        return -ENODEV;