Lines Matching refs:asus

202 	struct asus_wmi *asus;  member
249 static int asus_wmi_input_init(struct asus_wmi *asus) in asus_wmi_input_init() argument
253 asus->inputdev = input_allocate_device(); in asus_wmi_input_init()
254 if (!asus->inputdev) in asus_wmi_input_init()
257 asus->inputdev->name = asus->driver->input_name; in asus_wmi_input_init()
258 asus->inputdev->phys = asus->driver->input_phys; in asus_wmi_input_init()
259 asus->inputdev->id.bustype = BUS_HOST; in asus_wmi_input_init()
260 asus->inputdev->dev.parent = &asus->platform_device->dev; in asus_wmi_input_init()
261 set_bit(EV_REP, asus->inputdev->evbit); in asus_wmi_input_init()
263 err = sparse_keymap_setup(asus->inputdev, asus->driver->keymap, NULL); in asus_wmi_input_init()
267 err = input_register_device(asus->inputdev); in asus_wmi_input_init()
274 sparse_keymap_free(asus->inputdev); in asus_wmi_input_init()
276 input_free_device(asus->inputdev); in asus_wmi_input_init()
280 static void asus_wmi_input_exit(struct asus_wmi *asus) in asus_wmi_input_exit() argument
282 if (asus->inputdev) { in asus_wmi_input_exit()
283 sparse_keymap_free(asus->inputdev); in asus_wmi_input_exit()
284 input_unregister_device(asus->inputdev); in asus_wmi_input_exit()
287 asus->inputdev = NULL; in asus_wmi_input_exit()
358 static int asus_wmi_get_devstate(struct asus_wmi *asus, u32 dev_id, u32 *retval) in asus_wmi_get_devstate() argument
360 return asus_wmi_evaluate_method(asus->dsts_id, dev_id, 0, retval); in asus_wmi_get_devstate()
371 static int asus_wmi_get_devstate_bits(struct asus_wmi *asus, in asus_wmi_get_devstate_bits() argument
377 err = asus_wmi_get_devstate(asus, dev_id, &retval); in asus_wmi_get_devstate_bits()
393 static int asus_wmi_get_devstate_simple(struct asus_wmi *asus, u32 dev_id) in asus_wmi_get_devstate_simple() argument
395 return asus_wmi_get_devstate_bits(asus, dev_id, in asus_wmi_get_devstate_simple()
411 struct asus_wmi *asus; in tpd_led_update() local
413 asus = container_of(work, struct asus_wmi, tpd_led_work); in tpd_led_update()
415 ctrl_param = asus->tpd_led_wk; in tpd_led_update()
422 struct asus_wmi *asus; in tpd_led_set() local
424 asus = container_of(led_cdev, struct asus_wmi, tpd_led); in tpd_led_set()
426 asus->tpd_led_wk = !!value; in tpd_led_set()
427 queue_work(asus->led_workqueue, &asus->tpd_led_work); in tpd_led_set()
430 static int read_tpd_led_state(struct asus_wmi *asus) in read_tpd_led_state() argument
432 return asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_TOUCHPAD_LED); in read_tpd_led_state()
437 struct asus_wmi *asus; in tpd_led_get() local
439 asus = container_of(led_cdev, struct asus_wmi, tpd_led); in tpd_led_get()
441 return read_tpd_led_state(asus); in tpd_led_get()
447 struct asus_wmi *asus; in kbd_led_update() local
449 asus = container_of(work, struct asus_wmi, kbd_led_work); in kbd_led_update()
455 if (asus->kbd_led_wk > 0) in kbd_led_update()
456 ctrl_param = 0x80 | (asus->kbd_led_wk & 0x7F); in kbd_led_update()
461 static int kbd_led_read(struct asus_wmi *asus, int *level, int *env) in kbd_led_read() argument
471 retval = asus_wmi_get_devstate_bits(asus, ASUS_WMI_DEVID_KBD_BACKLIGHT, in kbd_led_read()
492 struct asus_wmi *asus; in kbd_led_set() local
494 asus = container_of(led_cdev, struct asus_wmi, kbd_led); in kbd_led_set()
496 if (value > asus->kbd_led.max_brightness) in kbd_led_set()
497 value = asus->kbd_led.max_brightness; in kbd_led_set()
501 asus->kbd_led_wk = value; in kbd_led_set()
502 queue_work(asus->led_workqueue, &asus->kbd_led_work); in kbd_led_set()
507 struct asus_wmi *asus; in kbd_led_get() local
510 asus = container_of(led_cdev, struct asus_wmi, kbd_led); in kbd_led_get()
512 retval = kbd_led_read(asus, &value, NULL); in kbd_led_get()
520 static int wlan_led_unknown_state(struct asus_wmi *asus) in wlan_led_unknown_state() argument
524 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WIRELESS_LED, &result); in wlan_led_unknown_state()
529 static int wlan_led_presence(struct asus_wmi *asus) in wlan_led_presence() argument
533 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WIRELESS_LED, &result); in wlan_led_presence()
541 struct asus_wmi *asus; in wlan_led_update() local
543 asus = container_of(work, struct asus_wmi, wlan_led_work); in wlan_led_update()
545 ctrl_param = asus->wlan_led_wk; in wlan_led_update()
552 struct asus_wmi *asus; in wlan_led_set() local
554 asus = container_of(led_cdev, struct asus_wmi, wlan_led); in wlan_led_set()
556 asus->wlan_led_wk = !!value; in wlan_led_set()
557 queue_work(asus->led_workqueue, &asus->wlan_led_work); in wlan_led_set()
562 struct asus_wmi *asus; in wlan_led_get() local
565 asus = container_of(led_cdev, struct asus_wmi, wlan_led); in wlan_led_get()
566 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WIRELESS_LED, &result); in wlan_led_get()
571 static void asus_wmi_led_exit(struct asus_wmi *asus) in asus_wmi_led_exit() argument
573 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_wmi_led_exit()
574 led_classdev_unregister(&asus->kbd_led); in asus_wmi_led_exit()
575 if (!IS_ERR_OR_NULL(asus->tpd_led.dev)) in asus_wmi_led_exit()
576 led_classdev_unregister(&asus->tpd_led); in asus_wmi_led_exit()
577 if (!IS_ERR_OR_NULL(asus->wlan_led.dev)) in asus_wmi_led_exit()
578 led_classdev_unregister(&asus->wlan_led); in asus_wmi_led_exit()
579 if (asus->led_workqueue) in asus_wmi_led_exit()
580 destroy_workqueue(asus->led_workqueue); in asus_wmi_led_exit()
583 static int asus_wmi_led_init(struct asus_wmi *asus) in asus_wmi_led_init() argument
587 asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); in asus_wmi_led_init()
588 if (!asus->led_workqueue) in asus_wmi_led_init()
591 if (read_tpd_led_state(asus) >= 0) { in asus_wmi_led_init()
592 INIT_WORK(&asus->tpd_led_work, tpd_led_update); in asus_wmi_led_init()
594 asus->tpd_led.name = "asus::touchpad"; in asus_wmi_led_init()
595 asus->tpd_led.brightness_set = tpd_led_set; in asus_wmi_led_init()
596 asus->tpd_led.brightness_get = tpd_led_get; in asus_wmi_led_init()
597 asus->tpd_led.max_brightness = 1; in asus_wmi_led_init()
599 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
600 &asus->tpd_led); in asus_wmi_led_init()
605 led_val = kbd_led_read(asus, NULL, NULL); in asus_wmi_led_init()
607 INIT_WORK(&asus->kbd_led_work, kbd_led_update); in asus_wmi_led_init()
609 asus->kbd_led_wk = led_val; in asus_wmi_led_init()
610 asus->kbd_led.name = "asus::kbd_backlight"; in asus_wmi_led_init()
611 asus->kbd_led.brightness_set = kbd_led_set; in asus_wmi_led_init()
612 asus->kbd_led.brightness_get = kbd_led_get; in asus_wmi_led_init()
613 asus->kbd_led.max_brightness = 3; in asus_wmi_led_init()
615 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
616 &asus->kbd_led); in asus_wmi_led_init()
621 if (wlan_led_presence(asus) && (asus->driver->quirks->wapf > 0)) { in asus_wmi_led_init()
622 INIT_WORK(&asus->wlan_led_work, wlan_led_update); in asus_wmi_led_init()
624 asus->wlan_led.name = "asus::wlan"; in asus_wmi_led_init()
625 asus->wlan_led.brightness_set = wlan_led_set; in asus_wmi_led_init()
626 if (!wlan_led_unknown_state(asus)) in asus_wmi_led_init()
627 asus->wlan_led.brightness_get = wlan_led_get; in asus_wmi_led_init()
628 asus->wlan_led.flags = LED_CORE_SUSPENDRESUME; in asus_wmi_led_init()
629 asus->wlan_led.max_brightness = 1; in asus_wmi_led_init()
630 asus->wlan_led.default_trigger = "asus-wlan"; in asus_wmi_led_init()
632 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
633 &asus->wlan_led); in asus_wmi_led_init()
638 asus_wmi_led_exit(asus); in asus_wmi_led_init()
647 static bool asus_wlan_rfkill_blocked(struct asus_wmi *asus) in asus_wlan_rfkill_blocked() argument
649 int result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_wlan_rfkill_blocked()
656 static void asus_rfkill_hotplug(struct asus_wmi *asus) in asus_rfkill_hotplug() argument
664 mutex_lock(&asus->wmi_lock); in asus_rfkill_hotplug()
665 blocked = asus_wlan_rfkill_blocked(asus); in asus_rfkill_hotplug()
666 mutex_unlock(&asus->wmi_lock); in asus_rfkill_hotplug()
668 mutex_lock(&asus->hotplug_lock); in asus_rfkill_hotplug()
671 if (asus->wlan.rfkill) in asus_rfkill_hotplug()
672 rfkill_set_sw_state(asus->wlan.rfkill, blocked); in asus_rfkill_hotplug()
674 if (asus->hotplug_slot) { in asus_rfkill_hotplug()
720 mutex_unlock(&asus->hotplug_lock); in asus_rfkill_hotplug()
725 struct asus_wmi *asus = data; in asus_rfkill_notify() local
737 queue_work(asus->hotplug_workqueue, &asus->hotplug_work); in asus_rfkill_notify()
740 static int asus_register_rfkill_notifier(struct asus_wmi *asus, char *node) in asus_register_rfkill_notifier() argument
750 asus_rfkill_notify, asus); in asus_register_rfkill_notifier()
759 static void asus_unregister_rfkill_notifier(struct asus_wmi *asus, char *node) in asus_unregister_rfkill_notifier() argument
779 struct asus_wmi *asus = hotplug_slot->private; in asus_get_adapter_status() local
780 int result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_get_adapter_status()
803 struct asus_wmi *asus; in asus_hotplug_work() local
805 asus = container_of(work, struct asus_wmi, hotplug_work); in asus_hotplug_work()
806 asus_rfkill_hotplug(asus); in asus_hotplug_work()
809 static int asus_setup_pci_hotplug(struct asus_wmi *asus) in asus_setup_pci_hotplug() argument
819 asus->hotplug_workqueue = in asus_setup_pci_hotplug()
821 if (!asus->hotplug_workqueue) in asus_setup_pci_hotplug()
824 INIT_WORK(&asus->hotplug_work, asus_hotplug_work); in asus_setup_pci_hotplug()
826 asus->hotplug_slot = kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL); in asus_setup_pci_hotplug()
827 if (!asus->hotplug_slot) in asus_setup_pci_hotplug()
830 asus->hotplug_slot->info = kzalloc(sizeof(struct hotplug_slot_info), in asus_setup_pci_hotplug()
832 if (!asus->hotplug_slot->info) in asus_setup_pci_hotplug()
835 asus->hotplug_slot->private = asus; in asus_setup_pci_hotplug()
836 asus->hotplug_slot->release = &asus_cleanup_pci_hotplug; in asus_setup_pci_hotplug()
837 asus->hotplug_slot->ops = &asus_hotplug_slot_ops; in asus_setup_pci_hotplug()
838 asus_get_adapter_status(asus->hotplug_slot, in asus_setup_pci_hotplug()
839 &asus->hotplug_slot->info->adapter_status); in asus_setup_pci_hotplug()
841 ret = pci_hp_register(asus->hotplug_slot, bus, 0, "asus-wifi"); in asus_setup_pci_hotplug()
850 kfree(asus->hotplug_slot->info); in asus_setup_pci_hotplug()
852 kfree(asus->hotplug_slot); in asus_setup_pci_hotplug()
853 asus->hotplug_slot = NULL; in asus_setup_pci_hotplug()
855 destroy_workqueue(asus->hotplug_workqueue); in asus_setup_pci_hotplug()
878 priv->asus->driver->wlan_ctrl_by_user) in asus_rfkill_set()
889 result = asus_wmi_get_devstate_simple(priv->asus, priv->dev_id); in asus_rfkill_query()
900 struct asus_wmi *asus = priv->asus; in asus_rfkill_wlan_set() local
910 mutex_lock(&asus->wmi_lock); in asus_rfkill_wlan_set()
912 mutex_unlock(&asus->wmi_lock); in asus_rfkill_wlan_set()
926 static int asus_new_rfkill(struct asus_wmi *asus, in asus_new_rfkill() argument
930 int result = asus_wmi_get_devstate_simple(asus, dev_id); in asus_new_rfkill()
937 arfkill->asus = asus; in asus_new_rfkill()
940 asus->driver->quirks->hotplug_wireless) in asus_new_rfkill()
941 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
944 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
951 (asus->driver->quirks->wapf > 0)) in asus_new_rfkill()
964 static void asus_wmi_rfkill_exit(struct asus_wmi *asus) in asus_wmi_rfkill_exit() argument
966 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P5"); in asus_wmi_rfkill_exit()
967 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P6"); in asus_wmi_rfkill_exit()
968 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P7"); in asus_wmi_rfkill_exit()
969 if (asus->wlan.rfkill) { in asus_wmi_rfkill_exit()
970 rfkill_unregister(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
971 rfkill_destroy(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
972 asus->wlan.rfkill = NULL; in asus_wmi_rfkill_exit()
978 asus_rfkill_hotplug(asus); in asus_wmi_rfkill_exit()
979 if (asus->hotplug_slot) in asus_wmi_rfkill_exit()
980 pci_hp_deregister(asus->hotplug_slot); in asus_wmi_rfkill_exit()
981 if (asus->hotplug_workqueue) in asus_wmi_rfkill_exit()
982 destroy_workqueue(asus->hotplug_workqueue); in asus_wmi_rfkill_exit()
984 if (asus->bluetooth.rfkill) { in asus_wmi_rfkill_exit()
985 rfkill_unregister(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
986 rfkill_destroy(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
987 asus->bluetooth.rfkill = NULL; in asus_wmi_rfkill_exit()
989 if (asus->wimax.rfkill) { in asus_wmi_rfkill_exit()
990 rfkill_unregister(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
991 rfkill_destroy(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
992 asus->wimax.rfkill = NULL; in asus_wmi_rfkill_exit()
994 if (asus->wwan3g.rfkill) { in asus_wmi_rfkill_exit()
995 rfkill_unregister(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
996 rfkill_destroy(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
997 asus->wwan3g.rfkill = NULL; in asus_wmi_rfkill_exit()
999 if (asus->gps.rfkill) { in asus_wmi_rfkill_exit()
1000 rfkill_unregister(asus->gps.rfkill); in asus_wmi_rfkill_exit()
1001 rfkill_destroy(asus->gps.rfkill); in asus_wmi_rfkill_exit()
1002 asus->gps.rfkill = NULL; in asus_wmi_rfkill_exit()
1004 if (asus->uwb.rfkill) { in asus_wmi_rfkill_exit()
1005 rfkill_unregister(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
1006 rfkill_destroy(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
1007 asus->uwb.rfkill = NULL; in asus_wmi_rfkill_exit()
1011 static int asus_wmi_rfkill_init(struct asus_wmi *asus) in asus_wmi_rfkill_init() argument
1015 mutex_init(&asus->hotplug_lock); in asus_wmi_rfkill_init()
1016 mutex_init(&asus->wmi_lock); in asus_wmi_rfkill_init()
1018 result = asus_new_rfkill(asus, &asus->wlan, "asus-wlan", in asus_wmi_rfkill_init()
1024 result = asus_new_rfkill(asus, &asus->bluetooth, in asus_wmi_rfkill_init()
1031 result = asus_new_rfkill(asus, &asus->wimax, "asus-wimax", in asus_wmi_rfkill_init()
1037 result = asus_new_rfkill(asus, &asus->wwan3g, "asus-wwan3g", in asus_wmi_rfkill_init()
1043 result = asus_new_rfkill(asus, &asus->gps, "asus-gps", in asus_wmi_rfkill_init()
1049 result = asus_new_rfkill(asus, &asus->uwb, "asus-uwb", in asus_wmi_rfkill_init()
1055 if (!asus->driver->quirks->hotplug_wireless) in asus_wmi_rfkill_init()
1058 result = asus_setup_pci_hotplug(asus); in asus_wmi_rfkill_init()
1066 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P5"); in asus_wmi_rfkill_init()
1067 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P6"); in asus_wmi_rfkill_init()
1068 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P7"); in asus_wmi_rfkill_init()
1073 asus_rfkill_hotplug(asus); in asus_wmi_rfkill_init()
1077 asus_wmi_rfkill_exit(asus); in asus_wmi_rfkill_init()
1088 static int asus_hwmon_agfn_fan_speed_read(struct asus_wmi *asus, int fan, in asus_hwmon_agfn_fan_speed_read() argument
1115 static int asus_hwmon_agfn_fan_speed_write(struct asus_wmi *asus, int fan, in asus_hwmon_agfn_fan_speed_write() argument
1138 asus->asus_hwmon_pwm = *speed; in asus_hwmon_agfn_fan_speed_write()
1147 static int asus_hwmon_get_fan_number(struct asus_wmi *asus, int *num_fans) in asus_hwmon_get_fan_number() argument
1154 status = asus_hwmon_agfn_fan_speed_read(asus, 1, &speed); in asus_hwmon_get_fan_number()
1161 static int asus_hwmon_fan_set_auto(struct asus_wmi *asus) in asus_hwmon_fan_set_auto() argument
1165 status = asus_hwmon_agfn_fan_speed_write(asus, 0, NULL); in asus_hwmon_fan_set_auto()
1169 asus->asus_hwmon_fan_manual_mode = false; in asus_hwmon_fan_set_auto()
1176 struct asus_wmi *asus = dev_get_drvdata(dev); in asus_hwmon_fan_rpm_show() local
1181 if (asus->asus_hwmon_fan_manual_mode) in asus_hwmon_fan_rpm_show()
1184 ret = asus_hwmon_agfn_fan_speed_read(asus, fan+1, &value); in asus_hwmon_fan_rpm_show()
1193 static void asus_hwmon_pwm_show(struct asus_wmi *asus, int fan, int *value) in asus_hwmon_pwm_show() argument
1197 if (asus->asus_hwmon_pwm >= 0) { in asus_hwmon_pwm_show()
1198 *value = asus->asus_hwmon_pwm; in asus_hwmon_pwm_show()
1202 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FAN_CTRL, value); in asus_hwmon_pwm_show()
1224 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_show() local
1227 asus_hwmon_pwm_show(asus, 0, &value); in pwm1_show()
1235 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_store() local
1247 state = asus_hwmon_agfn_fan_speed_write(asus, 1, &value); in pwm1_store()
1251 asus->asus_hwmon_fan_manual_mode = true; in pwm1_store()
1270 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_enable_show() local
1272 if (asus->asus_hwmon_fan_manual_mode) in pwm1_enable_show()
1282 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_enable_store() local
1293 asus->asus_hwmon_fan_manual_mode = true; in pwm1_enable_store()
1295 status = asus_hwmon_fan_set_auto(asus); in pwm1_enable_store()
1314 struct asus_wmi *asus = dev_get_drvdata(dev); in asus_hwmon_temp1() local
1318 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_THERMAL_CTRL, &value); in asus_hwmon_temp1()
1352 struct asus_wmi *asus = platform_get_drvdata(pdev); in asus_hwmon_sysfs_is_visible() local
1372 int err = asus_wmi_get_devstate(asus, dev_id, &value); in asus_hwmon_sysfs_is_visible()
1388 || (!asus->sfun && !(value & ASUS_WMI_DSTS_PRESENCE_BIT))) in asus_hwmon_sysfs_is_visible()
1391 ok = fan_attr <= asus->asus_hwmon_num_fans; in asus_hwmon_sysfs_is_visible()
1396 } else if (fan_attr <= asus->asus_hwmon_num_fans && fan_attr != -1) { in asus_hwmon_sysfs_is_visible()
1411 static int asus_wmi_hwmon_init(struct asus_wmi *asus) in asus_wmi_hwmon_init() argument
1415 hwmon = hwmon_device_register_with_groups(&asus->platform_device->dev, in asus_wmi_hwmon_init()
1416 "asus", asus, in asus_wmi_hwmon_init()
1428 static int read_backlight_power(struct asus_wmi *asus) in read_backlight_power() argument
1431 if (asus->driver->quirks->store_backlight_power) in read_backlight_power()
1432 ret = !asus->driver->panel_power; in read_backlight_power()
1434 ret = asus_wmi_get_devstate_simple(asus, in read_backlight_power()
1443 static int read_brightness_max(struct asus_wmi *asus) in read_brightness_max() argument
1448 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_BRIGHTNESS, &retval); in read_brightness_max()
1464 struct asus_wmi *asus = bl_get_data(bd); in read_brightness() local
1468 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_BRIGHTNESS, &retval); in read_brightness()
1478 struct asus_wmi *asus = bl_get_data(bd); in get_scalar_command() local
1481 if ((asus->driver->brightness < bd->props.brightness) || in get_scalar_command()
1484 else if ((asus->driver->brightness > bd->props.brightness) || in get_scalar_command()
1488 asus->driver->brightness = bd->props.brightness; in get_scalar_command()
1495 struct asus_wmi *asus = bl_get_data(bd); in update_bl_status() local
1499 power = read_backlight_power(asus); in update_bl_status()
1504 if (asus->driver->quirks->store_backlight_power) in update_bl_status()
1505 asus->driver->panel_power = bd->props.power; in update_bl_status()
1509 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
1513 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
1529 static int asus_wmi_backlight_notify(struct asus_wmi *asus, int code) in asus_wmi_backlight_notify() argument
1531 struct backlight_device *bd = asus->backlight_device; in asus_wmi_backlight_notify()
1547 static int asus_wmi_backlight_init(struct asus_wmi *asus) in asus_wmi_backlight_init() argument
1554 max = read_brightness_max(asus); in asus_wmi_backlight_init()
1558 power = read_backlight_power(asus); in asus_wmi_backlight_init()
1568 bd = backlight_device_register(asus->driver->name, in asus_wmi_backlight_init()
1569 &asus->platform_device->dev, asus, in asus_wmi_backlight_init()
1576 asus->backlight_device = bd; in asus_wmi_backlight_init()
1578 if (asus->driver->quirks->store_backlight_power) in asus_wmi_backlight_init()
1579 asus->driver->panel_power = power; in asus_wmi_backlight_init()
1585 asus->driver->brightness = bd->props.brightness; in asus_wmi_backlight_init()
1590 static void asus_wmi_backlight_exit(struct asus_wmi *asus) in asus_wmi_backlight_exit() argument
1592 backlight_device_unregister(asus->backlight_device); in asus_wmi_backlight_exit()
1594 asus->backlight_device = NULL; in asus_wmi_backlight_exit()
1611 struct asus_wmi *asus = context; in asus_wmi_notify() local
1634 if (asus->driver->key_filter) { in asus_wmi_notify()
1635 asus->driver->key_filter(asus->driver, &code, &key_value, in asus_wmi_notify()
1649 asus_wmi_backlight_notify(asus, orig_code); in asus_wmi_notify()
1655 asus->driver->quirks->no_display_toggle) in asus_wmi_notify()
1658 if (!sparse_keymap_report_event(asus->inputdev, code, in asus_wmi_notify()
1678 static ssize_t store_sys_wmi(struct asus_wmi *asus, int devid, in store_sys_wmi() argument
1684 value = asus_wmi_get_devstate_simple(asus, devid); in store_sys_wmi()
1697 static ssize_t show_sys_wmi(struct asus_wmi *asus, int devid, char *buf) in show_sys_wmi() argument
1699 int value = asus_wmi_get_devstate_simple(asus, devid); in show_sys_wmi()
1712 struct asus_wmi *asus = dev_get_drvdata(dev); \
1714 return show_sys_wmi(asus, _cm, buf); \
1720 struct asus_wmi *asus = dev_get_drvdata(dev); \
1722 return store_sys_wmi(asus, _cm, buf, count); \
1770 struct asus_wmi *asus = platform_get_drvdata(pdev); in asus_sysfs_is_visible() local
1784 ok = !(asus_wmi_get_devstate_simple(asus, devid) < 0); in asus_sysfs_is_visible()
1807 static int asus_wmi_platform_init(struct asus_wmi *asus) in asus_wmi_platform_init() argument
1818 asus->spec = rv; in asus_wmi_platform_init()
1829 asus->sfun = rv; in asus_wmi_platform_init()
1840 asus->dsts_id = ASUS_WMI_METHODID_DSTS; in asus_wmi_platform_init()
1842 asus->dsts_id = ASUS_WMI_METHODID_DSTS2; in asus_wmi_platform_init()
1846 if (asus->driver->quirks->wapf >= 0) in asus_wmi_platform_init()
1848 asus->driver->quirks->wapf, NULL); in asus_wmi_platform_init()
1850 return asus_wmi_sysfs_init(asus->platform_device); in asus_wmi_platform_init()
1853 static void asus_wmi_platform_exit(struct asus_wmi *asus) in asus_wmi_platform_exit() argument
1855 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_platform_exit()
1862 struct asus_wmi *asus; member
1869 struct asus_wmi *asus = m->private; in show_dsts() local
1873 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); in show_dsts()
1878 seq_printf(m, "DSTS(%#x) = %#x\n", asus->debug.dev_id, retval); in show_dsts()
1885 struct asus_wmi *asus = m->private; in show_devs() local
1889 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, in show_devs()
1895 seq_printf(m, "DEVS(%#x, %#x) = %#x\n", asus->debug.dev_id, in show_devs()
1896 asus->debug.ctrl_param, retval); in show_devs()
1903 struct asus_wmi *asus = m->private; in show_call() local
1905 .arg0 = asus->debug.dev_id, in show_call()
1906 .arg1 = asus->debug.ctrl_param, in show_call()
1914 1, asus->debug.method_id, in show_call()
1922 seq_printf(m, "%#x(%#x, %#x) = %#x\n", asus->debug.method_id, in show_call()
1923 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
1926 seq_printf(m, "%#x(%#x, %#x) = t:%d\n", asus->debug.method_id, in show_call()
1927 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
1945 return single_open(file, node->show, node->asus); in asus_wmi_debugfs_open()
1956 static void asus_wmi_debugfs_exit(struct asus_wmi *asus) in asus_wmi_debugfs_exit() argument
1958 debugfs_remove_recursive(asus->debug.root); in asus_wmi_debugfs_exit()
1961 static int asus_wmi_debugfs_init(struct asus_wmi *asus) in asus_wmi_debugfs_init() argument
1966 asus->debug.root = debugfs_create_dir(asus->driver->name, NULL); in asus_wmi_debugfs_init()
1967 if (!asus->debug.root) { in asus_wmi_debugfs_init()
1973 asus->debug.root, &asus->debug.method_id); in asus_wmi_debugfs_init()
1978 asus->debug.root, &asus->debug.dev_id); in asus_wmi_debugfs_init()
1983 asus->debug.root, &asus->debug.ctrl_param); in asus_wmi_debugfs_init()
1990 node->asus = asus; in asus_wmi_debugfs_init()
1992 asus->debug.root, node, in asus_wmi_debugfs_init()
2003 asus_wmi_debugfs_exit(asus); in asus_wmi_debugfs_init()
2007 static int asus_wmi_fan_init(struct asus_wmi *asus) in asus_wmi_fan_init() argument
2011 asus->asus_hwmon_pwm = -1; in asus_wmi_fan_init()
2012 asus->asus_hwmon_num_fans = -1; in asus_wmi_fan_init()
2013 asus->asus_hwmon_fan_manual_mode = false; in asus_wmi_fan_init()
2015 status = asus_hwmon_get_fan_number(asus, &asus->asus_hwmon_num_fans); in asus_wmi_fan_init()
2017 asus->asus_hwmon_num_fans = 0; in asus_wmi_fan_init()
2022 pr_info("Number of fans: %d\n", asus->asus_hwmon_num_fans); in asus_wmi_fan_init()
2033 struct asus_wmi *asus; in asus_wmi_add() local
2039 asus = kzalloc(sizeof(struct asus_wmi), GFP_KERNEL); in asus_wmi_add()
2040 if (!asus) in asus_wmi_add()
2043 asus->driver = wdrv; in asus_wmi_add()
2044 asus->platform_device = pdev; in asus_wmi_add()
2046 platform_set_drvdata(asus->platform_device, asus); in asus_wmi_add()
2049 wdrv->detect_quirks(asus->driver); in asus_wmi_add()
2051 err = asus_wmi_platform_init(asus); in asus_wmi_add()
2055 err = asus_wmi_input_init(asus); in asus_wmi_add()
2059 err = asus_wmi_fan_init(asus); /* probably no problems on error */ in asus_wmi_add()
2060 asus_hwmon_fan_set_auto(asus); in asus_wmi_add()
2062 err = asus_wmi_hwmon_init(asus); in asus_wmi_add()
2066 err = asus_wmi_led_init(asus); in asus_wmi_add()
2070 err = asus_wmi_rfkill_init(asus); in asus_wmi_add()
2080 if (asus->driver->quirks->wmi_backlight_power) in asus_wmi_add()
2084 err = asus_wmi_backlight_init(asus); in asus_wmi_add()
2089 status = wmi_install_notify_handler(asus->driver->event_guid, in asus_wmi_add()
2090 asus_wmi_notify, asus); in asus_wmi_add()
2097 err = asus_wmi_debugfs_init(asus); in asus_wmi_add()
2101 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WLAN, &result); in asus_wmi_add()
2103 asus->driver->wlan_ctrl_by_user = 1; in asus_wmi_add()
2108 wmi_remove_notify_handler(asus->driver->event_guid); in asus_wmi_add()
2110 asus_wmi_backlight_exit(asus); in asus_wmi_add()
2112 asus_wmi_rfkill_exit(asus); in asus_wmi_add()
2114 asus_wmi_led_exit(asus); in asus_wmi_add()
2117 asus_wmi_input_exit(asus); in asus_wmi_add()
2119 asus_wmi_platform_exit(asus); in asus_wmi_add()
2121 kfree(asus); in asus_wmi_add()
2127 struct asus_wmi *asus; in asus_wmi_remove() local
2129 asus = platform_get_drvdata(device); in asus_wmi_remove()
2130 wmi_remove_notify_handler(asus->driver->event_guid); in asus_wmi_remove()
2131 asus_wmi_backlight_exit(asus); in asus_wmi_remove()
2132 asus_wmi_input_exit(asus); in asus_wmi_remove()
2133 asus_wmi_led_exit(asus); in asus_wmi_remove()
2134 asus_wmi_rfkill_exit(asus); in asus_wmi_remove()
2135 asus_wmi_debugfs_exit(asus); in asus_wmi_remove()
2136 asus_wmi_platform_exit(asus); in asus_wmi_remove()
2137 asus_hwmon_fan_set_auto(asus); in asus_wmi_remove()
2139 kfree(asus); in asus_wmi_remove()
2148 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_thaw() local
2150 if (asus->wlan.rfkill) { in asus_hotk_thaw()
2158 wlan = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_hotk_thaw()
2167 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_resume() local
2169 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_resume()
2170 queue_work(asus->led_workqueue, &asus->kbd_led_work); in asus_hotk_resume()
2177 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_restore() local
2181 if (asus->wlan.rfkill) in asus_hotk_restore()
2182 asus_rfkill_hotplug(asus); in asus_hotk_restore()
2184 if (asus->bluetooth.rfkill) { in asus_hotk_restore()
2185 bl = !asus_wmi_get_devstate_simple(asus, in asus_hotk_restore()
2187 rfkill_set_sw_state(asus->bluetooth.rfkill, bl); in asus_hotk_restore()
2189 if (asus->wimax.rfkill) { in asus_hotk_restore()
2190 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WIMAX); in asus_hotk_restore()
2191 rfkill_set_sw_state(asus->wimax.rfkill, bl); in asus_hotk_restore()
2193 if (asus->wwan3g.rfkill) { in asus_hotk_restore()
2194 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WWAN3G); in asus_hotk_restore()
2195 rfkill_set_sw_state(asus->wwan3g.rfkill, bl); in asus_hotk_restore()
2197 if (asus->gps.rfkill) { in asus_hotk_restore()
2198 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPS); in asus_hotk_restore()
2199 rfkill_set_sw_state(asus->gps.rfkill, bl); in asus_hotk_restore()
2201 if (asus->uwb.rfkill) { in asus_hotk_restore()
2202 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_UWB); in asus_hotk_restore()
2203 rfkill_set_sw_state(asus->uwb.rfkill, bl); in asus_hotk_restore()
2205 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_restore()
2206 queue_work(asus->led_workqueue, &asus->kbd_led_work); in asus_hotk_restore()