Lines Matching +full:control +full:- +full:parent
1 /*-
45 ACPI_MODULE_NAME("ASUS-WMI")
47 #define ACPI_ASUS_WMI_MGMT_GUID "97845ED0-4E6D-11DE-8A39-0800200C9A66"
48 #define ACPI_ASUS_WMI_EVENT_GUID "0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C"
49 #define ACPI_EEEPC_WMI_EVENT_GUID "ABBC0F72-8EA1-11D1-00A0-C90629100000"
129 .description = "Wireless LED control",
139 .description = "WLAN power control",
144 .description = "Bluetooth power control",
149 .description = "GPS power control",
154 .description = "WiMAX power control",
159 .description = "WWAN-3G power control",
164 .description = "UWB power control",
169 .description = "LED1 control",
174 .description = "LED2 control",
179 .description = "LED3 control",
184 .description = "LED4 control",
189 .description = "LED5 control",
194 .description = "LED6 control",
199 .description = "LCD backlight on/off control",
204 .description = "LCD backlight brightness control",
209 .description = "Keyboard backlight brightness control",
219 .description = "Camera power control",
224 .description = "Cardreader power control",
229 .description = "Touchpad control",
234 .description = "Touchpad LED control",
245 .description = "Fan speed (0-3)",
258 static void acpi_asus_wmi_identify(driver_t *driver, device_t parent);
295 acpi_asus_wmi_identify(driver_t *driver, device_t parent) in acpi_asus_wmi_identify() argument
303 if (device_find_child(parent, "acpi_asus_wmi", -1) != NULL) in acpi_asus_wmi_identify()
307 if (!ACPI_WMI_PROVIDES_GUID_STRING(parent, in acpi_asus_wmi_identify()
311 if (BUS_ADD_CHILD(parent, 0, "acpi_asus_wmi", -1) == NULL) in acpi_asus_wmi_identify()
312 device_printf(parent, "add acpi_asus_wmi child failed\n"); in acpi_asus_wmi_identify()
336 sc->dev = dev; in acpi_asus_wmi_attach()
337 sc->wmi_dev = device_get_parent(dev); in acpi_asus_wmi_attach()
338 sc->handle_keys = 1; in acpi_asus_wmi_attach()
341 if (!ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, in acpi_asus_wmi_attach()
349 sc->dsts_id = ASUS_WMI_METHODID_DSTS; in acpi_asus_wmi_attach()
358 if (sc->dsts_id == ASUS_WMI_METHODID_DSTS) { in acpi_asus_wmi_attach()
359 sc->dsts_id = ASUS_WMI_METHODID_DSTS2; in acpi_asus_wmi_attach()
368 if (ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, in acpi_asus_wmi_attach()
370 sc->notify_guid = ACPI_ASUS_WMI_EVENT_GUID; in acpi_asus_wmi_attach()
371 else if (ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, in acpi_asus_wmi_attach()
373 sc->notify_guid = ACPI_EEEPC_WMI_EVENT_GUID; in acpi_asus_wmi_attach()
375 sc->notify_guid = NULL; in acpi_asus_wmi_attach()
376 if (sc->notify_guid != NULL) { in acpi_asus_wmi_attach()
377 if (ACPI_WMI_INSTALL_EVENT_HANDLER(sc->wmi_dev, in acpi_asus_wmi_attach()
378 sc->notify_guid, acpi_asus_wmi_notify, dev)) in acpi_asus_wmi_attach()
379 sc->notify_guid = NULL; in acpi_asus_wmi_attach()
381 if (sc->notify_guid == NULL) in acpi_asus_wmi_attach()
385 if (!acpi_asus_wmi_evaluate_method(sc->wmi_dev, in acpi_asus_wmi_attach()
388 if (!acpi_asus_wmi_evaluate_method(sc->wmi_dev, in acpi_asus_wmi_attach()
392 if (!acpi_asus_wmi_evaluate_method(sc->wmi_dev, in acpi_asus_wmi_attach()
398 sc->sysctl_ctx = device_get_sysctl_ctx(dev); in acpi_asus_wmi_attach()
399 sc->sysctl_tree = device_get_sysctl_tree(dev); in acpi_asus_wmi_attach()
400 SYSCTL_ADD_INT(sc->sysctl_ctx, in acpi_asus_wmi_attach()
401 SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, in acpi_asus_wmi_attach()
402 "handle_keys", CTLFLAG_RW, &sc->handle_keys, in acpi_asus_wmi_attach()
423 SYSCTL_ADD_PROC(sc->sysctl_ctx, in acpi_asus_wmi_attach()
424 SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, in acpi_asus_wmi_attach()
430 SYSCTL_ADD_PROC(sc->sysctl_ctx, in acpi_asus_wmi_attach()
431 SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, in acpi_asus_wmi_attach()
450 if (sc->notify_guid) in acpi_asus_wmi_detach()
451 ACPI_WMI_REMOVE_EVENT_HANDLER(dev, sc->notify_guid); in acpi_asus_wmi_detach()
468 sc = (struct acpi_asus_wmi_softc *)oidp->oid_arg1; in acpi_asus_wmi_sysctl()
469 function = oidp->oid_arg2; in acpi_asus_wmi_sysctl()
476 if (!error && req->newptr != NULL) in acpi_asus_wmi_sysctl()
495 val = (val - 2731 + 5) / 10; in acpi_asus_wmi_sysctl_get()
508 val = -1; in acpi_asus_wmi_sysctl_get()
538 if (buf && buf->Pointer) { in acpi_asus_wmi_free_buffer()
539 AcpiOsFree(buf->Pointer); in acpi_asus_wmi_free_buffer()
554 ACPI_WMI_GET_EVENT_DATA(sc->wmi_dev, notify, &response); in acpi_asus_wmi_notify()
556 if (obj && obj->Type == ACPI_TYPE_INTEGER) { in acpi_asus_wmi_notify()
557 code = obj->Integer.Value; in acpi_asus_wmi_notify()
561 if (code && sc->handle_keys) { in acpi_asus_wmi_notify()
562 /* Keyboard backlight control. */ in acpi_asus_wmi_notify()
571 val--; in acpi_asus_wmi_notify()
577 /* Touchpad control. */ in acpi_asus_wmi_notify()
602 return (-EINVAL); in acpi_asus_wmi_evaluate_method()
605 if (obj && obj->Type == ACPI_TYPE_INTEGER) in acpi_asus_wmi_evaluate_method()
606 result = (UINT32) obj->Integer.Value; in acpi_asus_wmi_evaluate_method()
612 return (result == ASUS_WMI_UNSUPPORTED_METHOD ? -ENODEV : 0); in acpi_asus_wmi_evaluate_method()
620 return (acpi_asus_wmi_evaluate_method(sc->wmi_dev, in acpi_wpi_asus_get_devstate()
621 sc->dsts_id, dev_id, 0, retval)); in acpi_wpi_asus_get_devstate()
629 return (acpi_asus_wmi_evaluate_method(sc->wmi_dev, in acpi_wpi_asus_set_devstate()