mss.c pcm fix to ' attach returned 6 ' load failure for v5.x
acpi and up
Nate Lawson
nate at root.org
Mon Jul 11 22:32:00 GMT 2005
John Baldwin wrote:
> Also, can you upload your acpidump somewhere and provide a URL? I'm curious
> if you have ACPI devices like thermal zones that don't have _HID's and only
> have _CIDs. In fact, here's a patch to fix acpi_get_logicalid() in that
> case. Give this a try first and let me know if it fixes it.
I would rather you directly call acpi_isa_get_compatid() rather than
duplicating its logic here. There's no guarantee that the first CID
will match the single ID passed in.
-Nate
> Index: acpi.c
> ===================================================================
> RCS file: /usr/cvs/src/sys/dev/acpica/acpi.c,v
> retrieving revision 1.214
> diff -u -r1.214 acpi.c
> --- acpi.c 3 Jun 2005 20:12:12 -0000 1.214
> +++ acpi.c 11 Jul 2005 20:23:14 -0000
> @@ -1138,6 +1138,7 @@
> ACPI_HANDLE h;
> ACPI_STATUS error;
> u_int32_t pnpid;
> + int i;
>
> ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
>
> @@ -1153,8 +1154,24 @@
> goto out;
> devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
>
> - if ((devinfo->Valid & ACPI_VALID_HID) != 0)
> + if ((devinfo->Valid & ACPI_VALID_HID) != 0) {
> pnpid = PNP_EISAID(devinfo->HardwareId.Value);
> + goto out;
> + }
> +
> + /*
> + * If we don't have a HID but do have at least one CID, return the first
> + * CID. This is so that ISA drivers that use isa_get_logicalid() to
> + * determine if a device is a PnP device or not will work correctly.
> + */
> + if ((devinfo->Valid & ACPI_VALID_CID) != 0) {
> + for (i = 0; i < devinfo->CompatibilityId.Count; i++) {
> + if (strncmp(devinfo->CompatibilityId.Id[i].Value, "PNP", 3) != 0)
> + continue;
> + pnpid = PNP_EISAID(devinfo->CompatibilityId.Id[i].Value);
> + goto out;
> + }
> + }
>
> out:
> if (buf.Pointer != NULL)
>
>
--
Nate
More information about the freebsd-current
mailing list