Re: How should I handle device with two PNP-BIOS ids?

From: Ville Syrjälä
Date: Tue Jan 27 2009 - 12:18:15 EST


On Tue, Jan 27, 2009 at 08:52:51AM -0700, Bjorn Helgaas wrote:
> On Tuesday 27 January 2009 01:42:55 am Krzysztof Helt wrote:
> > On Mon, 26 Jan 2009 15:13:31 -0700
> > Bjorn Helgaas <bjorn.helgaas@xxxxxx> wrote:
> > > Systems with the old chip probably report the device with a single
> > > PNP ID. For PNPBIOS, that would be the "device product identifier."
> > > For ACPI, it would be the _HID.
> > >
> > > Systems with the new chip should report both PNP IDs. The PNPBIOS
> > > device product identifier or the ACPI _HID should be the new ID, and
> > > the older ID for backward compatibility should be reported in the
> > > PNPBIOS "compatible device identifiers" list or the ACPI _CID.
> > >
> > > The driver would list both IDs in the pnp_device_id table, and it
> > > looks like the driver probe routine gets called with the ID that
> > > matched.
> > >
> > > I don't see any drivers that actually do this, but I think the
> > > probe routine should be able to look at the ID that matched and
> > > determine whether the additional I/O range is present.
> >
> > The laptop in question is the Dell Latitude CPi and it does not
> > have ACPI only the PnP BIOS.
> > The both ids are reported as unrelated (two separate nodes in
> > the /sys/bus/pnp/).
>
> Oh. That sounds like a BIOS bug. If there's only one actual
> chip, the BIOS should not report it as two separate devices.

It's not a bug. The cs423x chips contain several logical devices.
WSS, MPU401, joystick etc. The control logical device (which is
not present in the early models) is unfortunately some kind of dumping
ground for new registers to keep the other logical devices' backwards
compatible. It contains at least some extra mixer control registers and
power management registers.

The datasheets are available at ftp.alsa-project.org.

--
Ville Syrjälä
syrjala@xxxxxx
http://www.sci.fi/~syrjala/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/