mss.c pcm fix to ' attach returned 6 ' load failure for v5.x
acpi and up
Harry Coin
harrycoin at qconline.com
Mon Jul 11 15:15:56 GMT 2005
The architecture / driver manual has this item:
"That means that absolutely every driver, even the ones not supporting any
PnP devices must call ISA_PNP_PROBE(), at least with an empty PnP ID table
to return failure on unknown PnP
devices."
(http://www.google.com/search?num=100&hl=en&lr=&newwindow=1&q=freebsd+architect+isa+driver)
However in mss.c, routine mss_probe we have in the non pnp device detection
routine
if (isa_get_logicalid(dev)) return ENXIO;
which causes the acpi driver to fail to attach multiple times, and to
ratchet up x in the pcmx device before giving up. Often this leads to the
isa routine not calling the pnp version of the probe routine and the whole
pcm load fails or loads the first and only sound driver on a pcm number
like 3 or 6. Booting without ACPI gives normal results.
The fix in mss.c is:
static struct isa_pnp_id mss_ids[] = {
{0}
};
static int
mss_probe(device_t dev)
{
u_char tmp, tmpx;
int flags, irq, drq, result = ENXIO, setres = 0;
struct mss_info *mss;
result = ISA_PNP_PROBE(device_get_parent(dev), dev, mss_ids);
if (result!=ENOENT) return ENXIO; /* only continue if the device
is not pnp */
/* old way- not so good for ACPI: if (isa_get_logicalid(dev))
return ENXIO; */
Sincerely,
Harry Coin
More information about the freebsd-current
mailing list