Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/acpica/acpi.c
Show First 20 Lines • Show All 171 Lines • ▼ Show 20 Lines | |||||
static void acpi_system_eventhandler_sleep(void *arg, int state); | static void acpi_system_eventhandler_sleep(void *arg, int state); | ||||
static void acpi_system_eventhandler_wakeup(void *arg, int state); | static void acpi_system_eventhandler_wakeup(void *arg, int state); | ||||
static int acpi_sname2sstate(const char *sname); | static int acpi_sname2sstate(const char *sname); | ||||
static const char *acpi_sstate2sname(int sstate); | static const char *acpi_sstate2sname(int sstate); | ||||
static int acpi_supported_sleep_state_sysctl(SYSCTL_HANDLER_ARGS); | static int acpi_supported_sleep_state_sysctl(SYSCTL_HANDLER_ARGS); | ||||
static int acpi_sleep_state_sysctl(SYSCTL_HANDLER_ARGS); | static int acpi_sleep_state_sysctl(SYSCTL_HANDLER_ARGS); | ||||
static int acpi_debug_objects_sysctl(SYSCTL_HANDLER_ARGS); | static int acpi_debug_objects_sysctl(SYSCTL_HANDLER_ARGS); | ||||
static int acpi_pm_func(u_long cmd, void *arg, ...); | static int acpi_pm_func(u_long cmd, void *arg, ...); | ||||
static int acpi_child_location_str_method(device_t acdev, device_t child, | static int acpi_child_location_method(device_t acdev, device_t child, | ||||
char *buf, size_t buflen); | struct sbuf *sb); | ||||
static int acpi_child_pnpinfo_str_method(device_t acdev, device_t child, | static int acpi_child_pnpinfo_method(device_t acdev, device_t child, | ||||
char *buf, size_t buflen); | struct sbuf *sb); | ||||
static void acpi_enable_pcie(void); | static void acpi_enable_pcie(void); | ||||
static void acpi_hint_device_unit(device_t acdev, device_t child, | static void acpi_hint_device_unit(device_t acdev, device_t child, | ||||
const char *name, int *unitp); | const char *name, int *unitp); | ||||
static void acpi_reset_interfaces(device_t dev); | static void acpi_reset_interfaces(device_t dev); | ||||
static device_method_t acpi_methods[] = { | static device_method_t acpi_methods[] = { | ||||
/* Device interface */ | /* Device interface */ | ||||
DEVMETHOD(device_probe, acpi_probe), | DEVMETHOD(device_probe, acpi_probe), | ||||
Show All 13 Lines | static device_method_t acpi_methods[] = { | ||||
DEVMETHOD(bus_write_ivar, acpi_write_ivar), | DEVMETHOD(bus_write_ivar, acpi_write_ivar), | ||||
DEVMETHOD(bus_get_resource_list, acpi_get_rlist), | DEVMETHOD(bus_get_resource_list, acpi_get_rlist), | ||||
DEVMETHOD(bus_set_resource, acpi_set_resource), | DEVMETHOD(bus_set_resource, acpi_set_resource), | ||||
DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), | DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), | ||||
DEVMETHOD(bus_alloc_resource, acpi_alloc_resource), | DEVMETHOD(bus_alloc_resource, acpi_alloc_resource), | ||||
DEVMETHOD(bus_adjust_resource, acpi_adjust_resource), | DEVMETHOD(bus_adjust_resource, acpi_adjust_resource), | ||||
DEVMETHOD(bus_release_resource, acpi_release_resource), | DEVMETHOD(bus_release_resource, acpi_release_resource), | ||||
DEVMETHOD(bus_delete_resource, acpi_delete_resource), | DEVMETHOD(bus_delete_resource, acpi_delete_resource), | ||||
DEVMETHOD(bus_child_pnpinfo_str, acpi_child_pnpinfo_str_method), | DEVMETHOD(bus_child_pnpinfo, acpi_child_pnpinfo_method), | ||||
DEVMETHOD(bus_child_location_str, acpi_child_location_str_method), | DEVMETHOD(bus_child_location, acpi_child_location_method), | ||||
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), | DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), | ||||
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), | DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), | ||||
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), | DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), | ||||
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), | DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), | ||||
DEVMETHOD(bus_hint_device_unit, acpi_hint_device_unit), | DEVMETHOD(bus_hint_device_unit, acpi_hint_device_unit), | ||||
DEVMETHOD(bus_get_cpus, acpi_get_cpus), | DEVMETHOD(bus_get_cpus, acpi_get_cpus), | ||||
DEVMETHOD(bus_get_domain, acpi_get_domain), | DEVMETHOD(bus_get_domain, acpi_get_domain), | ||||
▲ Show 20 Lines • Show All 637 Lines • ▼ Show 20 Lines | |||||
#endif | #endif | ||||
} | } | ||||
} | } | ||||
free(devlist, M_TEMP); | free(devlist, M_TEMP); | ||||
} | } | ||||
/* Location hint for devctl(8) */ | /* Location hint for devctl(8) */ | ||||
static int | static int | ||||
acpi_child_location_str_method(device_t cbdev, device_t child, char *buf, | acpi_child_location_method(device_t cbdev, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
struct acpi_device *dinfo = device_get_ivars(child); | struct acpi_device *dinfo = device_get_ivars(child); | ||||
char buf2[32]; | |||||
int pxm; | int pxm; | ||||
if (dinfo->ad_handle) { | if (dinfo->ad_handle) { | ||||
snprintf(buf, buflen, "handle=%s", acpi_name(dinfo->ad_handle)); | sbuf_printf(sb, "handle=%s", acpi_name(dinfo->ad_handle)); | ||||
if (ACPI_SUCCESS(acpi_GetInteger(dinfo->ad_handle, "_PXM", &pxm))) { | if (ACPI_SUCCESS(acpi_GetInteger(dinfo->ad_handle, "_PXM", &pxm))) { | ||||
snprintf(buf2, 32, " _PXM=%d", pxm); | sbuf_printf(sb, " _PXM=%d", pxm); | ||||
strlcat(buf, buf2, buflen); | |||||
} | } | ||||
} else { | |||||
snprintf(buf, buflen, ""); | |||||
} | } | ||||
return (0); | return (0); | ||||
} | } | ||||
/* PnP information for devctl(8) */ | /* PnP information for devctl(8) */ | ||||
int | int | ||||
acpi_pnpinfo_str(ACPI_HANDLE handle, char *buf, size_t buflen) | acpi_pnpinfo(ACPI_HANDLE handle, struct sbuf *sb) | ||||
{ | { | ||||
ACPI_DEVICE_INFO *adinfo; | ACPI_DEVICE_INFO *adinfo; | ||||
if (ACPI_FAILURE(AcpiGetObjectInfo(handle, &adinfo))) { | if (ACPI_FAILURE(AcpiGetObjectInfo(handle, &adinfo))) { | ||||
snprintf(buf, buflen, "unknown"); | sbuf_printf(sb, "unknown"); | ||||
return (0); | return (0); | ||||
} | } | ||||
snprintf(buf, buflen, "_HID=%s _UID=%lu _CID=%s", | sbuf_printf(sb, "_HID=%s _UID=%lu _CID=%s", | ||||
(adinfo->Valid & ACPI_VALID_HID) ? | (adinfo->Valid & ACPI_VALID_HID) ? | ||||
adinfo->HardwareId.String : "none", | adinfo->HardwareId.String : "none", | ||||
(adinfo->Valid & ACPI_VALID_UID) ? | (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->Valid & ACPI_VALID_CID) && | ||||
adinfo->CompatibleIdList.Count > 0) ? | adinfo->CompatibleIdList.Count > 0) ? | ||||
adinfo->CompatibleIdList.Ids[0].String : "none"); | adinfo->CompatibleIdList.Ids[0].String : "none"); | ||||
AcpiOsFree(adinfo); | AcpiOsFree(adinfo); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
acpi_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf, | acpi_child_pnpinfo_method(device_t cbdev, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
struct acpi_device *dinfo = device_get_ivars(child); | struct acpi_device *dinfo = device_get_ivars(child); | ||||
return (acpi_pnpinfo_str(dinfo->ad_handle, buf, buflen)); | return (acpi_pnpinfo(dinfo->ad_handle, sb)); | ||||
} | } | ||||
/* | /* | ||||
* Handle device deletion. | * Handle device deletion. | ||||
*/ | */ | ||||
static void | static void | ||||
acpi_child_deleted(device_t dev, device_t child) | acpi_child_deleted(device_t dev, device_t child) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 3,450 Lines • Show Last 20 Lines |