[patch 01/15] serial: when guessing, check only active resources, not options

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Given a completely unknown PNP device, if it happens to have
a modem-like string in its name and it matches a COM port
address, we assume it's a modem.

We used to check the address against all the possible resource
options for the device.  But the device is already configured
and enabled, so we only need to check the resources it is
actually using.  If we matched an address that wasn't currently
enabled, we would fail anyway as soon as we attempted to touch
the device at that address.

This removes a reference to the struct pnp_dev.{independent,dependent}
fields, which I will soon make private to the PNP subsystem.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx>

Index: work10/drivers/serial/8250_pnp.c
===================================================================
--- work10.orig/drivers/serial/8250_pnp.c	2008-05-13 11:28:48.000000000 -0600
+++ work10/drivers/serial/8250_pnp.c	2008-05-13 11:29:16.000000000 -0600
@@ -383,22 +383,19 @@ static int __devinit check_name(char *na
 	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)
+	resource_size_t port, size;
+
+	if (!pnp_port_valid(dev, 0))
 		return 0;
 
-	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;
-	}
+	port = pnp_port_start(dev, 0);
+	size = pnp_port_len(dev, 0);
+
+	if (size == 8 &&
+	    (port == 0x2f8 || port == 0x3f8 || port == 0x2e8 || port == 0x3e8))
+		return 1;
 
 	return 0;
 }
@@ -420,10 +417,7 @@ static int __devinit serial_pnp_guess_bo
 		(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;

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux