Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/acpica/acpi_video.c
Show First 20 Lines • Show All 248 Lines • ▼ Show 20 Lines | acpi_video_attach(device_t dev) | ||||
sc = device_get_softc(dev); | sc = device_get_softc(dev); | ||||
acpi_sc = devclass_get_softc(devclass_find("acpi"), 0); | acpi_sc = devclass_get_softc(devclass_find("acpi"), 0); | ||||
if (acpi_sc == NULL) | if (acpi_sc == NULL) | ||||
return (ENXIO); | return (ENXIO); | ||||
ACPI_SERIAL_BEGIN(video); | ACPI_SERIAL_BEGIN(video); | ||||
if (acpi_video_sysctl_tree == NULL) { | if (acpi_video_sysctl_tree == NULL) { | ||||
acpi_video_sysctl_tree = SYSCTL_ADD_NODE(&acpi_video_sysctl_ctx, | acpi_video_sysctl_tree = SYSCTL_ADD_NODE(&acpi_video_sysctl_ctx, | ||||
SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), | SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), OID_AUTO, | ||||
OID_AUTO, "video", CTLFLAG_RD, 0, | "video", CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"video extension control"); | "video extension control"); | ||||
} | } | ||||
ACPI_SERIAL_END(video); | ACPI_SERIAL_END(video); | ||||
sc->device = dev; | sc->device = dev; | ||||
sc->handle = acpi_get_handle(dev); | sc->handle = acpi_get_handle(dev); | ||||
STAILQ_INIT(&sc->vid_outputs); | STAILQ_INIT(&sc->vid_outputs); | ||||
AcpiInstallNotifyHandler(sc->handle, ACPI_DEVICE_NOTIFY, | AcpiInstallNotifyHandler(sc->handle, ACPI_DEVICE_NOTIFY, | ||||
▲ Show 20 Lines • Show All 266 Lines • ▼ Show 20 Lines | if (vo != NULL) { | ||||
if (vp != NULL) | if (vp != NULL) | ||||
STAILQ_INSERT_AFTER(voqh, vp, vo, vo_unit.next); | STAILQ_INSERT_AFTER(voqh, vp, vo, vo_unit.next); | ||||
else | else | ||||
STAILQ_INSERT_TAIL(voqh, vo, vo_unit.next); | STAILQ_INSERT_TAIL(voqh, vo, vo_unit.next); | ||||
if (acpi_video_sysctl_tree != NULL) | if (acpi_video_sysctl_tree != NULL) | ||||
vo->vo_sysctl_tree = | vo->vo_sysctl_tree = | ||||
SYSCTL_ADD_NODE(&vo->vo_sysctl_ctx, | SYSCTL_ADD_NODE(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(acpi_video_sysctl_tree), | SYSCTL_CHILDREN(acpi_video_sysctl_tree), | ||||
OID_AUTO, name, CTLFLAG_RD, 0, desc); | OID_AUTO, name, CTLFLAG_RD | CTLFLAG_MPSAFE, | ||||
0, desc); | |||||
if (vo->vo_sysctl_tree != NULL) { | if (vo->vo_sysctl_tree != NULL) { | ||||
SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(vo->vo_sysctl_tree), | SYSCTL_CHILDREN(vo->vo_sysctl_tree), | ||||
OID_AUTO, "active", | OID_AUTO, "active", | ||||
CTLTYPE_INT|CTLFLAG_RW, vo, 0, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vo, | ||||
acpi_video_vo_active_sysctl, "I", | 0, acpi_video_vo_active_sysctl, "I", | ||||
"current activity of this device"); | "current activity of this device"); | ||||
SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(vo->vo_sysctl_tree), | SYSCTL_CHILDREN(vo->vo_sysctl_tree), | ||||
OID_AUTO, "brightness", | OID_AUTO, "brightness", | ||||
CTLTYPE_INT|CTLFLAG_RW, vo, 0, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vo, | ||||
acpi_video_vo_bright_sysctl, "I", | 0, acpi_video_vo_bright_sysctl, "I", | ||||
"current brightness level"); | "current brightness level"); | ||||
SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(vo->vo_sysctl_tree), | SYSCTL_CHILDREN(vo->vo_sysctl_tree), | ||||
OID_AUTO, "fullpower", | OID_AUTO, "fullpower", | ||||
CTLTYPE_INT|CTLFLAG_RW, vo, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vo, | ||||
POWER_PROFILE_PERFORMANCE, | POWER_PROFILE_PERFORMANCE, | ||||
acpi_video_vo_presets_sysctl, "I", | acpi_video_vo_presets_sysctl, "I", | ||||
"preset level for full power mode"); | "preset level for full power mode"); | ||||
SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(vo->vo_sysctl_tree), | SYSCTL_CHILDREN(vo->vo_sysctl_tree), | ||||
OID_AUTO, "economy", | OID_AUTO, "economy", | ||||
CTLTYPE_INT|CTLFLAG_RW, vo, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, vo, | ||||
POWER_PROFILE_ECONOMY, | POWER_PROFILE_ECONOMY, | ||||
acpi_video_vo_presets_sysctl, "I", | acpi_video_vo_presets_sysctl, "I", | ||||
"preset level for economy mode"); | "preset level for economy mode"); | ||||
SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | SYSCTL_ADD_PROC(&vo->vo_sysctl_ctx, | ||||
SYSCTL_CHILDREN(vo->vo_sysctl_tree), | SYSCTL_CHILDREN(vo->vo_sysctl_tree), | ||||
OID_AUTO, "levels", | OID_AUTO, "levels", | ||||
CTLTYPE_INT | CTLFLAG_RD, vo, 0, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, vo, | ||||
acpi_video_vo_levels_sysctl, "I", | 0, acpi_video_vo_levels_sysctl, "I", | ||||
"supported brightness levels"); | "supported brightness levels"); | ||||
} else | } else | ||||
printf("%s: sysctl node creation failed\n", type); | printf("%s: sysctl node creation failed\n", type); | ||||
} else | } else | ||||
printf("%s: softc allocation failed\n", type); | printf("%s: softc allocation failed\n", type); | ||||
if (bootverbose) { | if (bootverbose) { | ||||
printf("found %s(%x)", desc, adr & DOD_DEVID_MASK_FULL); | printf("found %s(%x)", desc, adr & DOD_DEVID_MASK_FULL); | ||||
▲ Show 20 Lines • Show All 506 Lines • Show Last 20 Lines |