Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/asmc/asmc.c
Show All 12 Lines | |||||
name[1] = 0; | name[1] = 0; | ||||
sc->sc_fan_tree[i] = SYSCTL_ADD_NODE(sysctlctx, | sc->sc_fan_tree[i] = SYSCTL_ADD_NODE(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[0]), | SYSCTL_CHILDREN(sc->sc_fan_tree[0]), | ||||
OID_AUTO, name, CTLFLAG_RD, 0, | OID_AUTO, name, CTLFLAG_RD, 0, | ||||
"Fan Subtree"); | "Fan Subtree"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "id", CTLTYPE_STRING | CTLFLAG_RD, | OID_AUTO, "id", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, j, model->smc_fan_id, "I", | dev, j, model->smc_fan_id, "I", | ||||
"Fan ID"); | "Fan ID"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "speed", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "speed", | ||||
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, j, model->smc_fan_speed, "I", | dev, j, model->smc_fan_speed, "I", | ||||
"Fan speed in RPM"); | "Fan speed in RPM"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "safespeed", | OID_AUTO, "safespeed", | ||||
CTLTYPE_INT | CTLFLAG_RD, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
dev, j, model->smc_fan_safespeed, "I", | dev, j, model->smc_fan_safespeed, "I", | ||||
"Fan safe speed in RPM"); | "Fan safe speed in RPM"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "minspeed", | OID_AUTO, "minspeed", | ||||
CTLTYPE_INT | CTLFLAG_RW, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
dev, j, model->smc_fan_minspeed, "I", | dev, j, model->smc_fan_minspeed, "I", | ||||
"Fan minimum speed in RPM"); | "Fan minimum speed in RPM"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "maxspeed", | OID_AUTO, "maxspeed", | ||||
CTLTYPE_INT | CTLFLAG_RW, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
dev, j, model->smc_fan_maxspeed, "I", | dev, j, model->smc_fan_maxspeed, "I", | ||||
"Fan maximum speed in RPM"); | "Fan maximum speed in RPM"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | SYSCTL_CHILDREN(sc->sc_fan_tree[i]), | ||||
OID_AUTO, "targetspeed", | OID_AUTO, "targetspeed", | ||||
CTLTYPE_INT | CTLFLAG_RW, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, | ||||
dev, j, model->smc_fan_targetspeed, "I", | dev, j, model->smc_fan_targetspeed, "I", | ||||
"Fan target speed in RPM"); | "Fan target speed in RPM"); | ||||
} | } | ||||
/* | /* | ||||
* dev.asmc.n.temp tree. | * dev.asmc.n.temp tree. | ||||
*/ | */ | ||||
sc->sc_temp_tree = SYSCTL_ADD_NODE(sysctlctx, | sc->sc_temp_tree = SYSCTL_ADD_NODE(sysctlctx, | ||||
SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "temp", | SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "temp", | ||||
CTLFLAG_RD, 0, "Temperature sensors"); | CTLFLAG_RD, 0, "Temperature sensors"); | ||||
for (i = 0; model->smc_temps[i]; i++) { | for (i = 0; model->smc_temps[i]; i++) { | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_temp_tree), | SYSCTL_CHILDREN(sc->sc_temp_tree), | ||||
OID_AUTO, model->smc_tempnames[i], | OID_AUTO, model->smc_tempnames[i], | ||||
CTLTYPE_INT | CTLFLAG_RD, | CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
dev, i, asmc_temp_sysctl, "I", | dev, i, asmc_temp_sysctl, "I", | ||||
model->smc_tempdescs[i]); | model->smc_tempdescs[i]); | ||||
} | } | ||||
/* | /* | ||||
* dev.asmc.n.light | * dev.asmc.n.light | ||||
*/ | */ | ||||
if (model->smc_light_left) { | if (model->smc_light_left) { | ||||
sc->sc_light_tree = SYSCTL_ADD_NODE(sysctlctx, | sc->sc_light_tree = SYSCTL_ADD_NODE(sysctlctx, | ||||
SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "light", | SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "light", | ||||
CTLFLAG_RD, 0, "Keyboard backlight sensors"); | CTLFLAG_RD, 0, "Keyboard backlight sensors"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_light_tree), | SYSCTL_CHILDREN(sc->sc_light_tree), | ||||
OID_AUTO, "left", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "left", | ||||
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, 0, model->smc_light_left, "I", | dev, 0, model->smc_light_left, "I", | ||||
"Keyboard backlight left sensor"); | "Keyboard backlight left sensor"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_light_tree), | SYSCTL_CHILDREN(sc->sc_light_tree), | ||||
OID_AUTO, "right", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "right", | ||||
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | |||||
dev, 0, model->smc_light_right, "I", | dev, 0, model->smc_light_right, "I", | ||||
"Keyboard backlight right sensor"); | "Keyboard backlight right sensor"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_light_tree), | SYSCTL_CHILDREN(sc->sc_light_tree), | ||||
OID_AUTO, "control", | OID_AUTO, "control", | ||||
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY, | CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY | | ||||
CTLFLAG_NEEDGIANT, | |||||
dev, 0, model->smc_light_control, "I", | dev, 0, model->smc_light_control, "I", | ||||
"Keyboard backlight brightness control"); | "Keyboard backlight brightness control"); | ||||
} | } | ||||
if (model->smc_sms_x == NULL) | if (model->smc_sms_x == NULL) | ||||
goto nosms; | goto nosms; | ||||
/* | /* | ||||
* dev.asmc.n.sms tree. | * dev.asmc.n.sms tree. | ||||
*/ | */ | ||||
sc->sc_sms_tree = SYSCTL_ADD_NODE(sysctlctx, | sc->sc_sms_tree = SYSCTL_ADD_NODE(sysctlctx, | ||||
SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "sms", | SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "sms", | ||||
CTLFLAG_RD, 0, "Sudden Motion Sensor"); | CTLFLAG_RD, 0, "Sudden Motion Sensor"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_sms_tree), | SYSCTL_CHILDREN(sc->sc_sms_tree), | ||||
OID_AUTO, "x", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "x", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
dev, 0, model->smc_sms_x, "I", | dev, 0, model->smc_sms_x, "I", | ||||
"Sudden Motion Sensor X value"); | "Sudden Motion Sensor X value"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_sms_tree), | SYSCTL_CHILDREN(sc->sc_sms_tree), | ||||
OID_AUTO, "y", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "y", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
dev, 0, model->smc_sms_y, "I", | dev, 0, model->smc_sms_y, "I", | ||||
"Sudden Motion Sensor Y value"); | "Sudden Motion Sensor Y value"); | ||||
SYSCTL_ADD_PROC(sysctlctx, | SYSCTL_ADD_PROC(sysctlctx, | ||||
SYSCTL_CHILDREN(sc->sc_sms_tree), | SYSCTL_CHILDREN(sc->sc_sms_tree), | ||||
OID_AUTO, "z", CTLTYPE_INT | CTLFLAG_RD, | OID_AUTO, "z", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, | ||||
dev, 0, model->smc_sms_z, "I", | dev, 0, model->smc_sms_z, "I", | ||||
"Sudden Motion Sensor Z value"); | "Sudden Motion Sensor Z value"); | ||||
/* | /* | ||||
* Need a taskqueue to send devctl_notify() events | * Need a taskqueue to send devctl_notify() events | ||||
* when the SMS interrupt us. | * when the SMS interrupt us. | ||||
* | * | ||||
* PI_REALTIME is used due to the sensitivity of the | * PI_REALTIME is used due to the sensitivity of the | ||||
Show All 12 Lines |