Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/acpica/acpi.c
Show All 12 Lines | |||||
static char acpi_remove_interface[256]; | static char acpi_remove_interface[256]; | ||||
TUNABLE_STR("hw.acpi.remove_interface", acpi_remove_interface, | TUNABLE_STR("hw.acpi.remove_interface", acpi_remove_interface, | ||||
sizeof(acpi_remove_interface)); | sizeof(acpi_remove_interface)); | ||||
/* Allow users to dump Debug objects without ACPI debugger. */ | /* Allow users to dump Debug objects without ACPI debugger. */ | ||||
static int acpi_debug_objects; | static int acpi_debug_objects; | ||||
TUNABLE_INT("debug.acpi.enable_debug_objects", &acpi_debug_objects); | TUNABLE_INT("debug.acpi.enable_debug_objects", &acpi_debug_objects); | ||||
SYSCTL_PROC(_debug_acpi, OID_AUTO, enable_debug_objects, | SYSCTL_PROC(_debug_acpi, OID_AUTO, enable_debug_objects, | ||||
CTLFLAG_RW | CTLTYPE_INT, NULL, 0, acpi_debug_objects_sysctl, "I", | CTLFLAG_RW | CTLTYPE_INT | CTLFLAG_NEEDGIANT, | ||||
NULL, 0, acpi_debug_objects_sysctl, "I", | |||||
"Enable Debug objects"); | "Enable Debug objects"); | ||||
/* Allow the interpreter to ignore common mistakes in BIOS. */ | /* Allow the interpreter to ignore common mistakes in BIOS. */ | ||||
static int acpi_interpreter_slack = 1; | static int acpi_interpreter_slack = 1; | ||||
TUNABLE_INT("debug.acpi.interpreter_slack", &acpi_interpreter_slack); | TUNABLE_INT("debug.acpi.interpreter_slack", &acpi_interpreter_slack); | ||||
SYSCTL_INT(_debug_acpi, OID_AUTO, interpreter_slack, CTLFLAG_RDTUN, | SYSCTL_INT(_debug_acpi, OID_AUTO, interpreter_slack, CTLFLAG_RDTUN, | ||||
&acpi_interpreter_slack, 1, "Turn on interpreter slack mode."); | &acpi_interpreter_slack, 1, "Turn on interpreter slack mode."); | ||||
Show All 24 Lines | |||||
* | * | ||||
* XXX: This doesn't check to make sure that none of these fail. | * XXX: This doesn't check to make sure that none of these fail. | ||||
*/ | */ | ||||
sysctl_ctx_init(&sc->acpi_sysctl_ctx); | sysctl_ctx_init(&sc->acpi_sysctl_ctx); | ||||
sc->acpi_sysctl_tree = SYSCTL_ADD_NODE(&sc->acpi_sysctl_ctx, | sc->acpi_sysctl_tree = SYSCTL_ADD_NODE(&sc->acpi_sysctl_ctx, | ||||
SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, | SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, | ||||
device_get_name(dev), CTLFLAG_RD, 0, ""); | device_get_name(dev), CTLFLAG_RD, 0, ""); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "supported_sleep_state", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "supported_sleep_state", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
0, 0, acpi_supported_sleep_state_sysctl, "A", | 0, 0, acpi_supported_sleep_state_sysctl, "A", | ||||
"List supported ACPI sleep states."); | "List supported ACPI sleep states."); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "power_button_state", CTLTYPE_STRING | CTLFLAG_RW, | OID_AUTO, "power_button_state", | ||||
CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | |||||
&sc->acpi_power_button_sx, 0, acpi_sleep_state_sysctl, "A", | &sc->acpi_power_button_sx, 0, acpi_sleep_state_sysctl, "A", | ||||
"Power button ACPI sleep state."); | "Power button ACPI sleep state."); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "sleep_button_state", CTLTYPE_STRING | CTLFLAG_RW, | OID_AUTO, "sleep_button_state", | ||||
CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | |||||
&sc->acpi_sleep_button_sx, 0, acpi_sleep_state_sysctl, "A", | &sc->acpi_sleep_button_sx, 0, acpi_sleep_state_sysctl, "A", | ||||
"Sleep button ACPI sleep state."); | "Sleep button ACPI sleep state."); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "lid_switch_state", CTLTYPE_STRING | CTLFLAG_RW, | OID_AUTO, "lid_switch_state", | ||||
CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | |||||
&sc->acpi_lid_switch_sx, 0, acpi_sleep_state_sysctl, "A", | &sc->acpi_lid_switch_sx, 0, acpi_sleep_state_sysctl, "A", | ||||
"Lid ACPI sleep state. Set to S3 if you want to suspend your laptop when close the Lid."); | "Lid ACPI sleep state. Set to S3 if you want to suspend your laptop when close the Lid."); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "standby_state", CTLTYPE_STRING | CTLFLAG_RW, | OID_AUTO, "standby_state", | ||||
CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | |||||
&sc->acpi_standby_sx, 0, acpi_sleep_state_sysctl, "A", ""); | &sc->acpi_standby_sx, 0, acpi_sleep_state_sysctl, "A", ""); | ||||
SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_PROC(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "suspend_state", CTLTYPE_STRING | CTLFLAG_RW, | OID_AUTO, "suspend_state", | ||||
CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | |||||
&sc->acpi_suspend_sx, 0, acpi_sleep_state_sysctl, "A", ""); | &sc->acpi_suspend_sx, 0, acpi_sleep_state_sysctl, "A", ""); | ||||
SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "sleep_delay", CTLFLAG_RW, &sc->acpi_sleep_delay, 0, | OID_AUTO, "sleep_delay", CTLFLAG_RW, &sc->acpi_sleep_delay, 0, | ||||
"sleep delay in seconds"); | "sleep delay in seconds"); | ||||
SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "s4bios", CTLFLAG_RW, &sc->acpi_s4bios, 0, "S4BIOS mode"); | OID_AUTO, "s4bios", CTLFLAG_RW, &sc->acpi_s4bios, 0, "S4BIOS mode"); | ||||
SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | SYSCTL_ADD_INT(&sc->acpi_sysctl_ctx, SYSCTL_CHILDREN(sc->acpi_sysctl_tree), | ||||
OID_AUTO, "verbose", CTLFLAG_RW, &sc->acpi_verbose, 0, "verbose mode"); | OID_AUTO, "verbose", CTLFLAG_RW, &sc->acpi_verbose, 0, "verbose mode"); | ||||
Show All 24 Lines | |||||
child = devlist[i]; | child = devlist[i]; | ||||
acpi_wake_sysctl_walk(child); | acpi_wake_sysctl_walk(child); | ||||
if (!device_is_attached(child)) | if (!device_is_attached(child)) | ||||
continue; | continue; | ||||
status = AcpiEvaluateObject(acpi_get_handle(child), "_PRW", NULL, NULL); | status = AcpiEvaluateObject(acpi_get_handle(child), "_PRW", NULL, NULL); | ||||
if (ACPI_SUCCESS(status)) { | if (ACPI_SUCCESS(status)) { | ||||
SYSCTL_ADD_PROC(device_get_sysctl_ctx(child), | SYSCTL_ADD_PROC(device_get_sysctl_ctx(child), | ||||
SYSCTL_CHILDREN(device_get_sysctl_tree(child)), OID_AUTO, | SYSCTL_CHILDREN(device_get_sysctl_tree(child)), OID_AUTO, | ||||
"wake", CTLTYPE_INT | CTLFLAG_RW, child, 0, | "wake", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, child, 0, | ||||
acpi_wake_set_sysctl, "I", "Device set to wake the system"); | acpi_wake_set_sysctl, "I", "Device set to wake the system"); | ||||
} | } | ||||
} | } | ||||
free(devlist, M_TEMP); | free(devlist, M_TEMP); | ||||
return (0); | return (0); | ||||
} | } | ||||
Show All 24 Lines | |||||
kern_setenv((char *)oidp->oid_arg1, temp); | kern_setenv((char *)oidp->oid_arg1, temp); | ||||
acpi_set_debugging(NULL); | acpi_set_debugging(NULL); | ||||
} | } | ||||
ACPI_SERIAL_END(acpi); | ACPI_SERIAL_END(acpi); | ||||
return (error); | return (error); | ||||
} | } | ||||
SYSCTL_PROC(_debug_acpi, OID_AUTO, layer, CTLFLAG_RW | CTLTYPE_STRING, | SYSCTL_PROC(_debug_acpi, OID_AUTO, layer, | ||||
"debug.acpi.layer", 0, acpi_debug_sysctl, "A", ""); | CTLFLAG_RW | CTLTYPE_STRING | CTLFLAG_NEEDGIANT, | ||||
SYSCTL_PROC(_debug_acpi, OID_AUTO, level, CTLFLAG_RW | CTLTYPE_STRING, | "debug.acpi.layer", 0, acpi_debug_sysctl, "A", | ||||
"debug.acpi.level", 0, acpi_debug_sysctl, "A", ""); | ""); | ||||
SYSCTL_PROC(_debug_acpi, OID_AUTO, level, | |||||
CTLFLAG_RW | CTLTYPE_STRING | CTLFLAG_NEEDGIANT, | |||||
"debug.acpi.level", 0, acpi_debug_sysctl, "A", | |||||
""); | |||||
#endif /* ACPI_DEBUG */ | #endif /* ACPI_DEBUG */ | ||||
static int | static int | ||||
acpi_debug_objects_sysctl(SYSCTL_HANDLER_ARGS) | acpi_debug_objects_sysctl(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int error; | int error; | ||||
int old; | int old; | ||||
Show All 12 Lines |