Changeset View
Changeset View
Standalone View
Standalone View
stable/11/sys/dev/acpica/acpi.c
Show First 20 Lines • Show All 2,163 Lines • ▼ Show 20 Lines | acpi_DeviceIsPresent(device_t dev) | ||||
ACPI_DEVICE_INFO *devinfo; | ACPI_DEVICE_INFO *devinfo; | ||||
ACPI_HANDLE h; | ACPI_HANDLE h; | ||||
BOOLEAN present; | BOOLEAN present; | ||||
if ((h = acpi_get_handle(dev)) == NULL || | if ((h = acpi_get_handle(dev)) == NULL || | ||||
ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo))) | ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo))) | ||||
return (FALSE); | return (FALSE); | ||||
/* Onboard serial ports on certain AMD motherboards have an invalid _STA | |||||
* method that always returns 0. Force them to always be treated as present. | |||||
* | |||||
* This may solely be a quirk of a preproduction BIOS. | |||||
*/ | |||||
if (acpi_MatchHid(h, "AMDI0020") || acpi_MatchHid(h, "AMDI0010")) | |||||
return (TRUE); | |||||
/* If no _STA method, must be present */ | /* If no _STA method, must be present */ | ||||
present = (devinfo->Valid & ACPI_VALID_STA) == 0 || | present = (devinfo->Valid & ACPI_VALID_STA) == 0 || | ||||
ACPI_DEVICE_PRESENT(devinfo->CurrentStatus) ? TRUE : FALSE; | ACPI_DEVICE_PRESENT(devinfo->CurrentStatus) ? TRUE : FALSE; | ||||
AcpiOsFree(devinfo); | AcpiOsFree(devinfo); | ||||
return (present); | return (present); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,966 Lines • Show Last 20 Lines |