From owner-freebsd-current@FreeBSD.ORG Mon Jul 11 15:15:56 2005 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C30EE16A41C for ; Mon, 11 Jul 2005 15:15:56 +0000 (GMT) (envelope-from harrycoin@qconline.com) Received: from mail.qconline.com (mail.qconline.com [204.176.110.250]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5D4B243D49 for ; Mon, 11 Jul 2005 15:15:56 +0000 (GMT) (envelope-from harrycoin@qconline.com) Received: from devoffice.qconline.com (unverified [64.4.171.82]) by mail.qconline.com (Vircom SMTPRS 3.1.302.0) with ESMTP id for ; Mon, 11 Jul 2005 10:16:39 -0500 Message-Id: <4.3.2.7.2.20050711100325.01f2a108@mail.qconline.com> X-Sender: harrycoin@mail.qconline.com X-Mailer: QUALCOMM Windows Eudora Version 4.3.2 Date: Mon, 11 Jul 2005 10:15:47 -0500 To: freebsd-current@freebsd.org From: Harry Coin In-Reply-To: <20050711120017.35E1A16A420@hub.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Subject: mss.c pcm fix to ' attach returned 6 ' load failure for v5.x acpi and up X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 15:15:56 -0000 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