void acpidock_attach(struct device *parent, struct device *self, void *aux) { struct acpidock_softc *sc = (struct acpidock_softc *)self; struct acpi_attach_args *aa = aux; extern struct aml_node aml_root; sc->sc_acpi = (struct acpi_softc *)parent; sc->sc_devnode = aa->aaa_node; printf(": %s", sc->sc_devnode->name); acpidock_status(sc); if (sc->sc_docked == ACPIDOCK_STATUS_DOCKED) { acpidock_docklock(sc, 1); acpidock_dockctl(sc, 1); } acpidock_status(sc); printf("%s docked (%d)\n", sc->sc_docked == ACPIDOCK_STATUS_DOCKED ? "" : " not", sc->sc_sta); strlcpy(sc->sc_sensdev.xname, DEVNAME(sc), sizeof(sc->sc_sensdev.xname)); if (sc->sc_docked) strlcpy(sc->sc_sens.desc, "docked", sizeof(sc->sc_sens.desc)); else strlcpy(sc->sc_sens.desc, "not docked", sizeof(sc->sc_sens.desc)); sc->sc_sens.type = SENSOR_INDICATOR; sc->sc_sens.value = sc->sc_docked == ACPIDOCK_STATUS_DOCKED; sensor_attach(&sc->sc_sensdev, &sc->sc_sens); sensordev_install(&sc->sc_sensdev); TAILQ_INIT(&sc->sc_deps_h); aml_find_node(&aml_root, "_EJD", acpidock_foundejd, sc); aml_register_notify(sc->sc_devnode, aa->aaa_dev, acpidock_notify, sc, ACPIDEV_NOPOLL); }
void acpivideo_attach(struct device *parent, struct device *self, void *aux) { struct acpivideo_softc *sc = (struct acpivideo_softc *)self; struct acpi_attach_args *aaa = aux; sc->sc_acpi = (struct acpi_softc *)parent; sc->sc_devnode = aaa->aaa_node; printf(": %s\n", sc->sc_devnode->name); if (acpivideo_getpcibus(sc, sc->sc_devnode) == -1) return; aml_register_notify(sc->sc_devnode, aaa->aaa_dev, acpivideo_notify, sc, ACPIDEV_NOPOLL); acpivideo_set_policy(sc, DOS_SWITCH_BY_OSPM | DOS_BRIGHTNESS_BY_OSPM); aml_find_node(aaa->aaa_node, "_BCL", acpi_foundvout, sc); }
void aibs_probe(struct aibs_softc *sc) { /* * Old mode uses TSIF, VSIF, and FSIF to enumerate sensors and * RTMP, RVLT, and RFAN are used to get the values. * New mode uses GGRP for enumeration and GITM and SITM as accessor. * If the new methods are available use them else default to old mode. */ aml_find_node(sc->sc_devnode, "RTMP", aibs_find_cb, &sc->sc_rtmpnode); aml_find_node(sc->sc_devnode, "RVLT", aibs_find_cb, &sc->sc_rvltnode); aml_find_node(sc->sc_devnode, "RFAN", aibs_find_cb, &sc->sc_rfannode); aml_find_node(sc->sc_devnode, "GGRP", aibs_find_cb, &sc->sc_ggrpnode); aml_find_node(sc->sc_devnode, "GITM", aibs_find_cb, &sc->sc_gitmnode); aml_find_node(sc->sc_devnode, "SITM", aibs_find_cb, &sc->sc_sitmnode); if (sc->sc_ggrpnode && sc->sc_gitmnode && sc->sc_sitmnode && !sc->sc_rtmpnode && !sc->sc_rvltnode && !sc->sc_rfannode) sc->sc_mode = 1; }