acpi(4): Add _CID to PNP info string

While a given ACPI device may have 0-N compatibility IDs, in practice most
seem to have 0 or 1.  If one is present, emit it as part of the PNP info
string associated with a device.  This could enable MODULE_PNP_INFO-based
automatic kldload for ACPI drivers associated with a given _CID (but without
a good _HID or _UID identifier).

Reviewed by:	imp, jhb
Differential Revision:	https://reviews.freebsd.org/D22846
This commit is contained in:
Conrad Meyer 2019-12-18 06:22:28 +00:00
parent 32a44e1e53
commit 359a5f96a1

View File

@ -884,11 +884,14 @@ acpi_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf,
return (0);
}
snprintf(buf, buflen, "_HID=%s _UID=%lu",
snprintf(buf, buflen, "_HID=%s _UID=%lu _CID=%s",
(adinfo->Valid & ACPI_VALID_HID) ?
adinfo->HardwareId.String : "none",
(adinfo->Valid & ACPI_VALID_UID) ?
strtoul(adinfo->UniqueId.String, NULL, 10) : 0UL);
strtoul(adinfo->UniqueId.String, NULL, 10) : 0UL,
((adinfo->Valid & ACPI_VALID_CID) &&
adinfo->CompatibleIdList.Count > 0) ?
adinfo->CompatibleIdList.Ids[0].String : "none");
AcpiOsFree(adinfo);
return (0);