From: Rene Herman <rene.herman@keyaccess.nl>
To: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Len Brown <lenb@kernel.org>,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
Adam Belay <ambx1@neo.rr.com>, Adam M Belay <abelay@mit.edu>,
Li Shaohua <shaohua.li@intel.com>,
Matthieu Castet <castet.matthieu@free.fr>,
Thomas Renninger <trenn@suse.de>,
Jaroslav Kysela <perex@perex.cz>,
Andrew Morton <akpm@linux-foundation.org>,
Takashi Iwai <tiwai@suse.de>
Subject: Re: [patch 01/15] serial: when guessing, check only active resources, not options
Date: Sun, 01 Jun 2008 21:42:01 +0200 [thread overview]
Message-ID: <4842FB89.6040802@keyaccess.nl> (raw)
In-Reply-To: <20080530224931.549456692@ldl.fc.hp.com>
On 31-05-08 00:48, Bjorn Helgaas wrote:
> 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@hp.com>
This isn't quite right it seems. Or changes behaviour at least:
> 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;
We used to cry "modem" if the device _could_ be configured using a COM
address while after this change we'd only do so if it _was_ configured
using one.
My old analog modem for example had 5 dependent sets -- the first with
the regular COM port addresses (0x3f8, 0x2f8, 0x3e8, 0x2e8) and a 5th
one listing a port range of (IIRC, something like that at least) 0x100
to 0xff8.
So say I'd have a PC with the regular two onboard COM ports at COM1 and
COM2 (0x3f8 and 0x2f8) and an additional serial controller providing
COM3 and COM4 (0x3e8 and 0x2e8). My modem would then be configured to
use 0x100 and this code would no longer trigger while it did use to.
Not that I care deeply or anything but whomever wrote this did no doubt
intend it to work this way...
Rene.
next prev parent reply other threads:[~2008-06-01 19:38 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-30 22:48 [patch 00/15] PNP: convert resource options to unified dynamic list, v1 Bjorn Helgaas
2008-05-30 22:48 ` [patch 01/15] serial: when guessing, check only active resources, not options Bjorn Helgaas
2008-06-01 19:42 ` Rene Herman [this message]
2008-06-02 15:21 ` Bjorn Helgaas
2008-05-30 22:48 ` [patch 02/15] PNP: whitespace/coding style fixes Bjorn Helgaas
2008-06-01 19:52 ` Rene Herman
2008-05-30 22:48 ` [patch 03/15] PNP: define PNP-specific IORESOURCE_IO_* flags alongside IRQ, DMA, MEM Bjorn Helgaas
2008-06-01 21:03 ` Rene Herman
2008-05-30 22:48 ` [patch 04/15] PNP: make resource option structures private to PNP subsystem Bjorn Helgaas
2008-06-01 21:06 ` Rene Herman
2008-05-30 22:48 ` [patch 05/15] PNP: introduce pnp_irq_mask_t typedef Bjorn Helgaas
2008-06-01 21:25 ` Rene Herman
2008-05-30 22:48 ` [patch 06/15] PNP: increase I/O port & memory option address sizes Bjorn Helgaas
2008-06-01 21:39 ` Rene Herman
2008-05-30 22:49 ` [patch 07/15] PNP: improve resource assignment debug Bjorn Helgaas
2008-06-01 21:41 ` Rene Herman
2008-05-30 22:49 ` [patch 08/15] PNP: in debug resource dump, make empty list obvious Bjorn Helgaas
2008-06-01 21:44 ` Rene Herman
2008-05-30 22:49 ` [patch 09/15] PNP: make resource assignment functions return 0 (success) or -EBUSY (failure) Bjorn Helgaas
2008-06-01 21:59 ` Rene Herman
2008-05-30 22:49 ` [patch 10/15] PNP: remove redundant pnp_can_configure() check Bjorn Helgaas
2008-06-01 22:00 ` Rene Herman
2008-05-30 22:49 ` [patch 11/15] PNP: centralize resource option allocations Bjorn Helgaas
2008-06-01 23:21 ` Rene Herman
2008-06-02 15:29 ` Bjorn Helgaas
2008-05-30 22:49 ` [patch 12/15] PNPACPI: ignore _PRS interrupt numbers larger than PNP_IRQ_NR Bjorn Helgaas
2008-06-01 23:23 ` Rene Herman
2008-05-30 22:49 ` [patch 13/15] PNP: rename pnp_register_*_resource() local variables Bjorn Helgaas
2008-06-01 23:25 ` Rene Herman
2008-05-30 22:49 ` [patch 14/15] PNP: support optional IRQ resources Bjorn Helgaas
2008-06-03 17:37 ` Rene Herman
2008-06-03 20:20 ` Bjorn Helgaas
2008-06-03 20:25 ` Rene Herman
2008-05-30 22:49 ` [patch 15/15] PNP: convert resource options to single linked list Bjorn Helgaas
2008-06-03 19:57 ` Rene Herman
2008-06-03 23:03 ` Bjorn Helgaas
2008-06-04 0:03 ` Rene Herman
2008-06-03 23:52 ` Rene Herman
2008-06-04 11:48 ` Rene Herman
2008-06-04 20:50 ` Bjorn Helgaas
2008-06-04 22:31 ` Rene Herman
2008-06-04 23:06 ` Bjorn Helgaas
2008-06-03 21:13 ` Rene Herman
2008-06-04 21:26 ` Bjorn Helgaas
2008-06-01 19:28 ` [patch 00/15] PNP: convert resource options to unified dynamic list, v1 Rene Herman
2008-06-02 15:56 ` Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4842FB89.6040802@keyaccess.nl \
--to=rene.herman@keyaccess.nl \
--cc=abelay@mit.edu \
--cc=akpm@linux-foundation.org \
--cc=ambx1@neo.rr.com \
--cc=bjorn.helgaas@hp.com \
--cc=castet.matthieu@free.fr \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=perex@perex.cz \
--cc=shaohua.li@intel.com \
--cc=tiwai@suse.de \
--cc=trenn@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox