Lines Matching refs:asus

177 	struct asus_wmi *asus;  member
447 static int asus_wmi_get_devstate(struct asus_wmi *asus, u32 dev_id, u32 *retval) in asus_wmi_get_devstate() argument
449 return asus_wmi_evaluate_method(asus->dsts_id, dev_id, 0, retval); in asus_wmi_get_devstate()
460 static int asus_wmi_get_devstate_bits(struct asus_wmi *asus, in asus_wmi_get_devstate_bits() argument
466 err = asus_wmi_get_devstate(asus, dev_id, &retval); in asus_wmi_get_devstate_bits()
481 static int asus_wmi_get_devstate_simple(struct asus_wmi *asus, u32 dev_id) in asus_wmi_get_devstate_simple() argument
483 return asus_wmi_get_devstate_bits(asus, dev_id, in asus_wmi_get_devstate_simple()
487 static bool asus_wmi_dev_is_present(struct asus_wmi *asus, u32 dev_id) in asus_wmi_dev_is_present() argument
490 int status = asus_wmi_get_devstate(asus, dev_id, &retval); in asus_wmi_dev_is_present()
496 static void asus_wmi_tablet_sw_init(struct asus_wmi *asus, u32 dev_id, int event_code) in asus_wmi_tablet_sw_init() argument
498 struct device *dev = &asus->platform_device->dev; in asus_wmi_tablet_sw_init()
501 result = asus_wmi_get_devstate_simple(asus, dev_id); in asus_wmi_tablet_sw_init()
503 input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE); in asus_wmi_tablet_sw_init()
504 input_report_switch(asus->inputdev, SW_TABLET_MODE, result); in asus_wmi_tablet_sw_init()
505 asus->tablet_switch_dev_id = dev_id; in asus_wmi_tablet_sw_init()
506 asus->tablet_switch_event_code = event_code; in asus_wmi_tablet_sw_init()
514 static int asus_wmi_input_init(struct asus_wmi *asus) in asus_wmi_input_init() argument
516 struct device *dev = &asus->platform_device->dev; in asus_wmi_input_init()
519 asus->inputdev = input_allocate_device(); in asus_wmi_input_init()
520 if (!asus->inputdev) in asus_wmi_input_init()
523 asus->inputdev->name = asus->driver->input_name; in asus_wmi_input_init()
524 asus->inputdev->phys = asus->driver->input_phys; in asus_wmi_input_init()
525 asus->inputdev->id.bustype = BUS_HOST; in asus_wmi_input_init()
526 asus->inputdev->dev.parent = dev; in asus_wmi_input_init()
527 set_bit(EV_REP, asus->inputdev->evbit); in asus_wmi_input_init()
529 err = sparse_keymap_setup(asus->inputdev, asus->driver->keymap, NULL); in asus_wmi_input_init()
533 switch (asus->driver->quirks->tablet_switch_mode) { in asus_wmi_input_init()
537 asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_KBD_DOCK, NOTIFY_KBD_DOCK_CHANGE); in asus_wmi_input_init()
540 asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_LID_FLIP, NOTIFY_LID_FLIP); in asus_wmi_input_init()
543 asus_wmi_tablet_sw_init(asus, ASUS_WMI_DEVID_LID_FLIP_ROG, NOTIFY_LID_FLIP_ROG); in asus_wmi_input_init()
547 err = input_register_device(asus->inputdev); in asus_wmi_input_init()
554 input_free_device(asus->inputdev); in asus_wmi_input_init()
558 static void asus_wmi_input_exit(struct asus_wmi *asus) in asus_wmi_input_exit() argument
560 if (asus->inputdev) in asus_wmi_input_exit()
561 input_unregister_device(asus->inputdev); in asus_wmi_input_exit()
563 asus->inputdev = NULL; in asus_wmi_input_exit()
568 static void asus_wmi_tablet_mode_get_state(struct asus_wmi *asus) in asus_wmi_tablet_mode_get_state() argument
572 if (!asus->tablet_switch_dev_id) in asus_wmi_tablet_mode_get_state()
575 result = asus_wmi_get_devstate_simple(asus, asus->tablet_switch_dev_id); in asus_wmi_tablet_mode_get_state()
577 input_report_switch(asus->inputdev, SW_TABLET_MODE, result); in asus_wmi_tablet_mode_get_state()
578 input_sync(asus->inputdev); in asus_wmi_tablet_mode_get_state()
586 struct asus_wmi *asus = dev_get_drvdata(dev); in dgpu_disable_show() local
589 result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_DGPU); in dgpu_disable_show()
609 struct asus_wmi *asus = dev_get_drvdata(dev); in dgpu_disable_store() local
629 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "dgpu_disable"); in dgpu_disable_store()
639 struct asus_wmi *asus = dev_get_drvdata(dev); in egpu_enable_show() local
642 result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_EGPU); in egpu_enable_show()
657 struct asus_wmi *asus = dev_get_drvdata(dev); in egpu_enable_store() local
677 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "egpu_enable"); in egpu_enable_store()
687 struct asus_wmi *asus = dev_get_drvdata(dev); in gpu_mux_mode_show() local
690 result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPU_MUX); in gpu_mux_mode_show()
701 struct asus_wmi *asus = dev_get_drvdata(dev); in gpu_mux_mode_store() local
723 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "gpu_mux_mode"); in gpu_mux_mode_store()
926 static void asus_wmi_battery_init(struct asus_wmi *asus) in asus_wmi_battery_init() argument
928 asus->battery_rsoc_available = false; in asus_wmi_battery_init()
929 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_RSOC)) { in asus_wmi_battery_init()
930 asus->battery_rsoc_available = true; in asus_wmi_battery_init()
935 static void asus_wmi_battery_exit(struct asus_wmi *asus) in asus_wmi_battery_exit() argument
937 if (asus->battery_rsoc_available) in asus_wmi_battery_exit()
952 struct asus_wmi *asus; in tpd_led_update() local
954 asus = container_of(work, struct asus_wmi, tpd_led_work); in tpd_led_update()
956 ctrl_param = asus->tpd_led_wk; in tpd_led_update()
963 struct asus_wmi *asus; in tpd_led_set() local
965 asus = container_of(led_cdev, struct asus_wmi, tpd_led); in tpd_led_set()
967 asus->tpd_led_wk = !!value; in tpd_led_set()
968 queue_work(asus->led_workqueue, &asus->tpd_led_work); in tpd_led_set()
971 static int read_tpd_led_state(struct asus_wmi *asus) in read_tpd_led_state() argument
973 return asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_TOUCHPAD_LED); in read_tpd_led_state()
978 struct asus_wmi *asus; in tpd_led_get() local
980 asus = container_of(led_cdev, struct asus_wmi, tpd_led); in tpd_led_get()
982 return read_tpd_led_state(asus); in tpd_led_get()
985 static void kbd_led_update(struct asus_wmi *asus) in kbd_led_update() argument
989 ctrl_param = 0x80 | (asus->kbd_led_wk & 0x7F); in kbd_led_update()
993 static int kbd_led_read(struct asus_wmi *asus, int *level, int *env) in kbd_led_read() argument
1003 retval = asus_wmi_get_devstate_bits(asus, ASUS_WMI_DEVID_KBD_BACKLIGHT, in kbd_led_read()
1022 struct asus_wmi *asus; in do_kbd_led_set() local
1025 asus = container_of(led_cdev, struct asus_wmi, kbd_led); in do_kbd_led_set()
1026 max_level = asus->kbd_led.max_brightness; in do_kbd_led_set()
1028 asus->kbd_led_wk = clamp_val(value, 0, max_level); in do_kbd_led_set()
1029 kbd_led_update(asus); in do_kbd_led_set()
1042 static void kbd_led_set_by_kbd(struct asus_wmi *asus, enum led_brightness value) in kbd_led_set_by_kbd() argument
1044 struct led_classdev *led_cdev = &asus->kbd_led; in kbd_led_set_by_kbd()
1047 led_classdev_notify_brightness_hw_changed(led_cdev, asus->kbd_led_wk); in kbd_led_set_by_kbd()
1052 struct asus_wmi *asus; in kbd_led_get() local
1055 asus = container_of(led_cdev, struct asus_wmi, kbd_led); in kbd_led_get()
1057 retval = kbd_led_read(asus, &value, NULL); in kbd_led_get()
1064 static int wlan_led_unknown_state(struct asus_wmi *asus) in wlan_led_unknown_state() argument
1068 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WIRELESS_LED, &result); in wlan_led_unknown_state()
1076 struct asus_wmi *asus; in wlan_led_update() local
1078 asus = container_of(work, struct asus_wmi, wlan_led_work); in wlan_led_update()
1080 ctrl_param = asus->wlan_led_wk; in wlan_led_update()
1087 struct asus_wmi *asus; in wlan_led_set() local
1089 asus = container_of(led_cdev, struct asus_wmi, wlan_led); in wlan_led_set()
1091 asus->wlan_led_wk = !!value; in wlan_led_set()
1092 queue_work(asus->led_workqueue, &asus->wlan_led_work); in wlan_led_set()
1097 struct asus_wmi *asus; in wlan_led_get() local
1100 asus = container_of(led_cdev, struct asus_wmi, wlan_led); in wlan_led_get()
1101 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WIRELESS_LED, &result); in wlan_led_get()
1108 struct asus_wmi *asus; in lightbar_led_update() local
1111 asus = container_of(work, struct asus_wmi, lightbar_led_work); in lightbar_led_update()
1113 ctrl_param = asus->lightbar_led_wk; in lightbar_led_update()
1120 struct asus_wmi *asus; in lightbar_led_set() local
1122 asus = container_of(led_cdev, struct asus_wmi, lightbar_led); in lightbar_led_set()
1124 asus->lightbar_led_wk = !!value; in lightbar_led_set()
1125 queue_work(asus->led_workqueue, &asus->lightbar_led_work); in lightbar_led_set()
1130 struct asus_wmi *asus; in lightbar_led_get() local
1133 asus = container_of(led_cdev, struct asus_wmi, lightbar_led); in lightbar_led_get()
1134 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_LIGHTBAR, &result); in lightbar_led_get()
1149 static void asus_wmi_led_exit(struct asus_wmi *asus) in asus_wmi_led_exit() argument
1151 led_classdev_unregister(&asus->kbd_led); in asus_wmi_led_exit()
1152 led_classdev_unregister(&asus->tpd_led); in asus_wmi_led_exit()
1153 led_classdev_unregister(&asus->wlan_led); in asus_wmi_led_exit()
1154 led_classdev_unregister(&asus->lightbar_led); in asus_wmi_led_exit()
1155 led_classdev_unregister(&asus->micmute_led); in asus_wmi_led_exit()
1157 if (asus->led_workqueue) in asus_wmi_led_exit()
1158 destroy_workqueue(asus->led_workqueue); in asus_wmi_led_exit()
1161 static int asus_wmi_led_init(struct asus_wmi *asus) in asus_wmi_led_init() argument
1165 if (asus->kbd_rgb_mode_available) in asus_wmi_led_init()
1167 if (asus->kbd_rgb_state_available) in asus_wmi_led_init()
1170 asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); in asus_wmi_led_init()
1171 if (!asus->led_workqueue) in asus_wmi_led_init()
1174 if (read_tpd_led_state(asus) >= 0) { in asus_wmi_led_init()
1175 INIT_WORK(&asus->tpd_led_work, tpd_led_update); in asus_wmi_led_init()
1177 asus->tpd_led.name = "asus::touchpad"; in asus_wmi_led_init()
1178 asus->tpd_led.brightness_set = tpd_led_set; in asus_wmi_led_init()
1179 asus->tpd_led.brightness_get = tpd_led_get; in asus_wmi_led_init()
1180 asus->tpd_led.max_brightness = 1; in asus_wmi_led_init()
1182 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1183 &asus->tpd_led); in asus_wmi_led_init()
1188 if (!kbd_led_read(asus, &led_val, NULL)) { in asus_wmi_led_init()
1189 asus->kbd_led_wk = led_val; in asus_wmi_led_init()
1190 asus->kbd_led.name = "asus::kbd_backlight"; in asus_wmi_led_init()
1191 asus->kbd_led.flags = LED_BRIGHT_HW_CHANGED; in asus_wmi_led_init()
1192 asus->kbd_led.brightness_set = kbd_led_set; in asus_wmi_led_init()
1193 asus->kbd_led.brightness_get = kbd_led_get; in asus_wmi_led_init()
1194 asus->kbd_led.max_brightness = 3; in asus_wmi_led_init()
1197 asus->kbd_led.groups = kbd_rgb_mode_groups; in asus_wmi_led_init()
1199 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1200 &asus->kbd_led); in asus_wmi_led_init()
1205 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_WIRELESS_LED) in asus_wmi_led_init()
1206 && (asus->driver->quirks->wapf > 0)) { in asus_wmi_led_init()
1207 INIT_WORK(&asus->wlan_led_work, wlan_led_update); in asus_wmi_led_init()
1209 asus->wlan_led.name = "asus::wlan"; in asus_wmi_led_init()
1210 asus->wlan_led.brightness_set = wlan_led_set; in asus_wmi_led_init()
1211 if (!wlan_led_unknown_state(asus)) in asus_wmi_led_init()
1212 asus->wlan_led.brightness_get = wlan_led_get; in asus_wmi_led_init()
1213 asus->wlan_led.flags = LED_CORE_SUSPENDRESUME; in asus_wmi_led_init()
1214 asus->wlan_led.max_brightness = 1; in asus_wmi_led_init()
1215 asus->wlan_led.default_trigger = "asus-wlan"; in asus_wmi_led_init()
1217 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1218 &asus->wlan_led); in asus_wmi_led_init()
1223 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_LIGHTBAR)) { in asus_wmi_led_init()
1224 INIT_WORK(&asus->lightbar_led_work, lightbar_led_update); in asus_wmi_led_init()
1226 asus->lightbar_led.name = "asus::lightbar"; in asus_wmi_led_init()
1227 asus->lightbar_led.brightness_set = lightbar_led_set; in asus_wmi_led_init()
1228 asus->lightbar_led.brightness_get = lightbar_led_get; in asus_wmi_led_init()
1229 asus->lightbar_led.max_brightness = 1; in asus_wmi_led_init()
1231 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1232 &asus->lightbar_led); in asus_wmi_led_init()
1235 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MICMUTE_LED)) { in asus_wmi_led_init()
1236 asus->micmute_led.name = "platform::micmute"; in asus_wmi_led_init()
1237 asus->micmute_led.max_brightness = 1; in asus_wmi_led_init()
1238 asus->micmute_led.brightness = ledtrig_audio_get(LED_AUDIO_MICMUTE); in asus_wmi_led_init()
1239 asus->micmute_led.brightness_set_blocking = micmute_led_set; in asus_wmi_led_init()
1240 asus->micmute_led.default_trigger = "audio-micmute"; in asus_wmi_led_init()
1242 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1243 &asus->micmute_led); in asus_wmi_led_init()
1250 asus_wmi_led_exit(asus); in asus_wmi_led_init()
1260 static bool asus_wlan_rfkill_blocked(struct asus_wmi *asus) in asus_wlan_rfkill_blocked() argument
1262 int result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_wlan_rfkill_blocked()
1269 static void asus_rfkill_hotplug(struct asus_wmi *asus) in asus_rfkill_hotplug() argument
1277 mutex_lock(&asus->wmi_lock); in asus_rfkill_hotplug()
1278 blocked = asus_wlan_rfkill_blocked(asus); in asus_rfkill_hotplug()
1279 mutex_unlock(&asus->wmi_lock); in asus_rfkill_hotplug()
1281 mutex_lock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1284 if (asus->wlan.rfkill) in asus_rfkill_hotplug()
1285 rfkill_set_sw_state(asus->wlan.rfkill, blocked); in asus_rfkill_hotplug()
1287 if (asus->hotplug_slot.ops) { in asus_rfkill_hotplug()
1331 mutex_unlock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1336 struct asus_wmi *asus = data; in asus_rfkill_notify() local
1348 queue_work(asus->hotplug_workqueue, &asus->hotplug_work); in asus_rfkill_notify()
1351 static int asus_register_rfkill_notifier(struct asus_wmi *asus, char *node) in asus_register_rfkill_notifier() argument
1361 asus_rfkill_notify, asus); in asus_register_rfkill_notifier()
1368 static void asus_unregister_rfkill_notifier(struct asus_wmi *asus, char *node) in asus_unregister_rfkill_notifier() argument
1386 struct asus_wmi *asus = container_of(hotplug_slot, in asus_get_adapter_status() local
1388 int result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_get_adapter_status()
1404 struct asus_wmi *asus; in asus_hotplug_work() local
1406 asus = container_of(work, struct asus_wmi, hotplug_work); in asus_hotplug_work()
1407 asus_rfkill_hotplug(asus); in asus_hotplug_work()
1410 static int asus_setup_pci_hotplug(struct asus_wmi *asus) in asus_setup_pci_hotplug() argument
1420 asus->hotplug_workqueue = in asus_setup_pci_hotplug()
1422 if (!asus->hotplug_workqueue) in asus_setup_pci_hotplug()
1425 INIT_WORK(&asus->hotplug_work, asus_hotplug_work); in asus_setup_pci_hotplug()
1427 asus->hotplug_slot.ops = &asus_hotplug_slot_ops; in asus_setup_pci_hotplug()
1429 ret = pci_hp_register(&asus->hotplug_slot, bus, 0, "asus-wifi"); in asus_setup_pci_hotplug()
1438 asus->hotplug_slot.ops = NULL; in asus_setup_pci_hotplug()
1439 destroy_workqueue(asus->hotplug_workqueue); in asus_setup_pci_hotplug()
1462 priv->asus->driver->wlan_ctrl_by_user) in asus_rfkill_set()
1473 result = asus_wmi_get_devstate_simple(priv->asus, priv->dev_id); in asus_rfkill_query()
1484 struct asus_wmi *asus = priv->asus; in asus_rfkill_wlan_set() local
1494 mutex_lock(&asus->wmi_lock); in asus_rfkill_wlan_set()
1496 mutex_unlock(&asus->wmi_lock); in asus_rfkill_wlan_set()
1510 static int asus_new_rfkill(struct asus_wmi *asus, in asus_new_rfkill() argument
1514 int result = asus_wmi_get_devstate_simple(asus, dev_id); in asus_new_rfkill()
1521 arfkill->asus = asus; in asus_new_rfkill()
1524 asus->driver->quirks->hotplug_wireless) in asus_new_rfkill()
1525 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
1528 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
1535 (asus->driver->quirks->wapf > 0)) in asus_new_rfkill()
1548 static void asus_wmi_rfkill_exit(struct asus_wmi *asus) in asus_wmi_rfkill_exit() argument
1550 if (asus->driver->wlan_ctrl_by_user && ashs_present()) in asus_wmi_rfkill_exit()
1553 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P5"); in asus_wmi_rfkill_exit()
1554 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P6"); in asus_wmi_rfkill_exit()
1555 asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P7"); in asus_wmi_rfkill_exit()
1556 if (asus->wlan.rfkill) { in asus_wmi_rfkill_exit()
1557 rfkill_unregister(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
1558 rfkill_destroy(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
1559 asus->wlan.rfkill = NULL; in asus_wmi_rfkill_exit()
1565 asus_rfkill_hotplug(asus); in asus_wmi_rfkill_exit()
1566 if (asus->hotplug_slot.ops) in asus_wmi_rfkill_exit()
1567 pci_hp_deregister(&asus->hotplug_slot); in asus_wmi_rfkill_exit()
1568 if (asus->hotplug_workqueue) in asus_wmi_rfkill_exit()
1569 destroy_workqueue(asus->hotplug_workqueue); in asus_wmi_rfkill_exit()
1571 if (asus->bluetooth.rfkill) { in asus_wmi_rfkill_exit()
1572 rfkill_unregister(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
1573 rfkill_destroy(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
1574 asus->bluetooth.rfkill = NULL; in asus_wmi_rfkill_exit()
1576 if (asus->wimax.rfkill) { in asus_wmi_rfkill_exit()
1577 rfkill_unregister(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
1578 rfkill_destroy(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
1579 asus->wimax.rfkill = NULL; in asus_wmi_rfkill_exit()
1581 if (asus->wwan3g.rfkill) { in asus_wmi_rfkill_exit()
1582 rfkill_unregister(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
1583 rfkill_destroy(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
1584 asus->wwan3g.rfkill = NULL; in asus_wmi_rfkill_exit()
1586 if (asus->gps.rfkill) { in asus_wmi_rfkill_exit()
1587 rfkill_unregister(asus->gps.rfkill); in asus_wmi_rfkill_exit()
1588 rfkill_destroy(asus->gps.rfkill); in asus_wmi_rfkill_exit()
1589 asus->gps.rfkill = NULL; in asus_wmi_rfkill_exit()
1591 if (asus->uwb.rfkill) { in asus_wmi_rfkill_exit()
1592 rfkill_unregister(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
1593 rfkill_destroy(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
1594 asus->uwb.rfkill = NULL; in asus_wmi_rfkill_exit()
1598 static int asus_wmi_rfkill_init(struct asus_wmi *asus) in asus_wmi_rfkill_init() argument
1602 mutex_init(&asus->hotplug_lock); in asus_wmi_rfkill_init()
1603 mutex_init(&asus->wmi_lock); in asus_wmi_rfkill_init()
1605 result = asus_new_rfkill(asus, &asus->wlan, "asus-wlan", in asus_wmi_rfkill_init()
1611 result = asus_new_rfkill(asus, &asus->bluetooth, in asus_wmi_rfkill_init()
1618 result = asus_new_rfkill(asus, &asus->wimax, "asus-wimax", in asus_wmi_rfkill_init()
1624 result = asus_new_rfkill(asus, &asus->wwan3g, "asus-wwan3g", in asus_wmi_rfkill_init()
1630 result = asus_new_rfkill(asus, &asus->gps, "asus-gps", in asus_wmi_rfkill_init()
1636 result = asus_new_rfkill(asus, &asus->uwb, "asus-uwb", in asus_wmi_rfkill_init()
1642 if (!asus->driver->quirks->hotplug_wireless) in asus_wmi_rfkill_init()
1645 result = asus_setup_pci_hotplug(asus); in asus_wmi_rfkill_init()
1653 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P5"); in asus_wmi_rfkill_init()
1654 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P6"); in asus_wmi_rfkill_init()
1655 asus_register_rfkill_notifier(asus, "\\_SB.PCI0.P0P7"); in asus_wmi_rfkill_init()
1660 asus_rfkill_hotplug(asus); in asus_wmi_rfkill_init()
1664 asus_wmi_rfkill_exit(asus); in asus_wmi_rfkill_init()
1676 struct asus_wmi *asus = dev_get_drvdata(dev); in panel_od_show() local
1679 result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_PANEL_OD); in panel_od_show()
1693 struct asus_wmi *asus = dev_get_drvdata(dev); in panel_od_store() local
1714 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "panel_od"); in panel_od_store()
1722 static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) in asus_wmi_set_xusb2pr() argument
1726 u32 ports_available = asus->driver->quirks->xusb2pr; in asus_wmi_set_xusb2pr()
1758 static int asus_agfn_fan_speed_read(struct asus_wmi *asus, int fan, in asus_agfn_fan_speed_read() argument
1785 static int asus_agfn_fan_speed_write(struct asus_wmi *asus, int fan, in asus_agfn_fan_speed_write() argument
1808 asus->agfn_pwm = *speed; in asus_agfn_fan_speed_write()
1817 static bool asus_wmi_has_agfn_fan(struct asus_wmi *asus) in asus_wmi_has_agfn_fan() argument
1823 status = asus_agfn_fan_speed_read(asus, 1, &speed); in asus_wmi_has_agfn_fan()
1827 status = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FAN_CTRL, &value); in asus_wmi_has_agfn_fan()
1840 || (!asus->sfun && !(value & ASUS_WMI_DSTS_PRESENCE_BIT))); in asus_wmi_has_agfn_fan()
1843 static int asus_fan_set_auto(struct asus_wmi *asus) in asus_fan_set_auto() argument
1848 switch (asus->fan_type) { in asus_fan_set_auto()
1860 status = asus_agfn_fan_speed_write(asus, 0, NULL); in asus_fan_set_auto()
1872 if (asus->gpu_fan_type == FAN_TYPE_SPEC83) { in asus_fan_set_auto()
1889 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_show() local
1894 if (asus->agfn_pwm >= 0) in pwm1_show()
1895 return sprintf(buf, "%d\n", asus->agfn_pwm); in pwm1_show()
1901 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FAN_CTRL, &value); in pwm1_show()
1924 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_store() local
1935 state = asus_agfn_fan_speed_write(asus, 1, &value); in pwm1_store()
1939 asus->fan_pwm_mode = ASUS_FAN_CTRL_MANUAL; in pwm1_store()
1948 struct asus_wmi *asus = dev_get_drvdata(dev); in fan1_input_show() local
1952 switch (asus->fan_type) { in fan1_input_show()
1954 ret = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_CPU_FAN_CTRL, in fan1_input_show()
1964 if (asus->fan_pwm_mode == ASUS_FAN_CTRL_MANUAL) in fan1_input_show()
1967 ret = asus_agfn_fan_speed_read(asus, 1, &value); in fan1_input_show()
1985 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_enable_show() local
1996 return sysfs_emit(buf, "%d\n", asus->fan_pwm_mode); in pwm1_enable_show()
2003 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm1_enable_store() local
2014 if (asus->fan_type == FAN_TYPE_SPEC83) { in pwm1_enable_store()
2033 } else if (asus->fan_type == FAN_TYPE_AGFN) { in pwm1_enable_store()
2039 status = asus_fan_set_auto(asus); in pwm1_enable_store()
2049 asus->fan_pwm_mode = state; in pwm1_enable_store()
2052 if (asus->cpu_fan_curve_available) in pwm1_enable_store()
2053 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in pwm1_enable_store()
2054 if (asus->gpu_fan_curve_available) in pwm1_enable_store()
2055 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in pwm1_enable_store()
2071 struct asus_wmi *asus = dev_get_drvdata(dev); in asus_hwmon_temp1() local
2075 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_THERMAL_CTRL, &value); in asus_hwmon_temp1()
2088 struct asus_wmi *asus = dev_get_drvdata(dev); in fan2_input_show() local
2092 ret = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_GPU_FAN_CTRL, &value); in fan2_input_show()
2112 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm2_enable_show() local
2114 return sysfs_emit(buf, "%d\n", asus->gpu_fan_pwm_mode); in pwm2_enable_show()
2121 struct asus_wmi *asus = dev_get_drvdata(dev); in pwm2_enable_store() local
2150 asus->gpu_fan_pwm_mode = state; in pwm2_enable_store()
2184 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_hwmon_sysfs_is_visible() local
2188 if (asus->fan_type != FAN_TYPE_AGFN) in asus_hwmon_sysfs_is_visible()
2193 if (asus->fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
2198 if (asus->gpu_fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
2201 int err = asus_wmi_get_devstate(asus, in asus_hwmon_sysfs_is_visible()
2225 static int asus_wmi_hwmon_init(struct asus_wmi *asus) in asus_wmi_hwmon_init() argument
2227 struct device *dev = &asus->platform_device->dev; in asus_wmi_hwmon_init()
2230 hwmon = devm_hwmon_device_register_with_groups(dev, "asus", asus, in asus_wmi_hwmon_init()
2240 static int asus_wmi_fan_init(struct asus_wmi *asus) in asus_wmi_fan_init() argument
2242 asus->gpu_fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
2243 asus->fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
2244 asus->agfn_pwm = -1; in asus_wmi_fan_init()
2246 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_CPU_FAN_CTRL)) in asus_wmi_fan_init()
2247 asus->fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
2248 else if (asus_wmi_has_agfn_fan(asus)) in asus_wmi_fan_init()
2249 asus->fan_type = FAN_TYPE_AGFN; in asus_wmi_fan_init()
2252 if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_FAN_CTRL)) in asus_wmi_fan_init()
2253 asus->gpu_fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
2255 if (asus->fan_type == FAN_TYPE_NONE) in asus_wmi_fan_init()
2258 asus_fan_set_auto(asus); in asus_wmi_fan_init()
2259 asus->fan_pwm_mode = ASUS_FAN_CTRL_AUTO; in asus_wmi_fan_init()
2265 static int fan_boost_mode_check_present(struct asus_wmi *asus) in fan_boost_mode_check_present() argument
2270 asus->fan_boost_mode_available = false; in fan_boost_mode_check_present()
2272 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FAN_BOOST_MODE, in fan_boost_mode_check_present()
2283 asus->fan_boost_mode_available = true; in fan_boost_mode_check_present()
2284 asus->fan_boost_mode_mask = result & ASUS_FAN_BOOST_MODES_MASK; in fan_boost_mode_check_present()
2290 static int fan_boost_mode_write(struct asus_wmi *asus) in fan_boost_mode_write() argument
2296 value = asus->fan_boost_mode; in fan_boost_mode_write()
2302 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in fan_boost_mode_write()
2319 static int fan_boost_mode_switch_next(struct asus_wmi *asus) in fan_boost_mode_switch_next() argument
2321 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_switch_next()
2323 if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_NORMAL) { in fan_boost_mode_switch_next()
2325 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_OVERBOOST; in fan_boost_mode_switch_next()
2327 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
2328 } else if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_OVERBOOST) { in fan_boost_mode_switch_next()
2330 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
2332 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
2334 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
2337 return fan_boost_mode_write(asus); in fan_boost_mode_switch_next()
2343 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_boost_mode_show() local
2345 return sysfs_emit(buf, "%d\n", asus->fan_boost_mode); in fan_boost_mode_show()
2352 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_boost_mode_store() local
2353 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_store()
2373 asus->fan_boost_mode = new_mode; in fan_boost_mode_store()
2374 fan_boost_mode_write(asus); in fan_boost_mode_store()
2398 static int fan_curve_get_factory_default(struct asus_wmi *asus, u32 fan_dev) in fan_curve_get_factory_default() argument
2406 if (asus->throttle_thermal_policy_available) in fan_curve_get_factory_default()
2407 mode = asus->throttle_thermal_policy_mode; in fan_curve_get_factory_default()
2417 curves = &asus->custom_fan_curves[fan_idx]; in fan_curve_get_factory_default()
2418 err = asus_wmi_evaluate_method_buf(asus->dsts_id, fan_dev, mode, buf, in fan_curve_get_factory_default()
2432 static int fan_curve_check_present(struct asus_wmi *asus, bool *available, in fan_curve_check_present() argument
2439 err = fan_curve_get_factory_default(asus, fan_dev); in fan_curve_check_present()
2449 static struct fan_curve_data *fan_curve_attr_select(struct asus_wmi *asus, in fan_curve_attr_select() argument
2454 return &asus->custom_fan_curves[index & FAN_CURVE_DEV_GPU]; in fan_curve_attr_select()
2458 static struct fan_curve_data *fan_curve_attr_2_select(struct asus_wmi *asus, in fan_curve_attr_2_select() argument
2463 return &asus->custom_fan_curves[nr & FAN_CURVE_DEV_GPU]; in fan_curve_attr_2_select()
2470 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_curve_show() local
2474 data = fan_curve_attr_2_select(asus, attr); in fan_curve_show()
2489 static int fan_curve_write(struct asus_wmi *asus, in fan_curve_write() argument
2519 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_curve_store() local
2527 data = fan_curve_attr_2_select(asus, attr); in fan_curve_store()
2552 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_curve_enable_show() local
2556 data = fan_curve_attr_select(asus, attr); in fan_curve_enable_show()
2568 struct asus_wmi *asus = dev_get_drvdata(dev); in fan_curve_enable_store() local
2572 data = fan_curve_attr_select(asus, attr); in fan_curve_enable_store()
2590 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
2600 err = fan_curve_write(asus, data); in fan_curve_enable_store()
2608 if (asus->throttle_thermal_policy_available) { in fan_curve_enable_store()
2609 err = throttle_thermal_policy_write(asus); in fan_curve_enable_store()
2613 } else if (asus->fan_type == FAN_TYPE_SPEC83) { in fan_curve_enable_store()
2614 err = asus_fan_set_auto(asus); in fan_curve_enable_store()
2619 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
2622 err = fan_curve_write(asus, data); in fan_curve_enable_store()
2746 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_fan_curve_is_visible() local
2752 if (asus->cpu_fan_curve_available && attr->name[3] == '1') in asus_fan_curve_is_visible()
2755 if (asus->gpu_fan_curve_available && attr->name[3] == '2') in asus_fan_curve_is_visible()
2771 static int asus_wmi_custom_fan_curve_init(struct asus_wmi *asus) in asus_wmi_custom_fan_curve_init() argument
2773 struct device *dev = &asus->platform_device->dev; in asus_wmi_custom_fan_curve_init()
2777 err = fan_curve_check_present(asus, &asus->cpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
2782 err = fan_curve_check_present(asus, &asus->gpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
2787 if (!asus->cpu_fan_curve_available && !asus->gpu_fan_curve_available) in asus_wmi_custom_fan_curve_init()
2791 dev, "asus_custom_fan_curve", asus, asus_fan_curve_attr_groups); in asus_wmi_custom_fan_curve_init()
2804 static int throttle_thermal_policy_check_present(struct asus_wmi *asus) in throttle_thermal_policy_check_present() argument
2809 asus->throttle_thermal_policy_available = false; in throttle_thermal_policy_check_present()
2811 err = asus_wmi_get_devstate(asus, in throttle_thermal_policy_check_present()
2821 asus->throttle_thermal_policy_available = true; in throttle_thermal_policy_check_present()
2826 static int throttle_thermal_policy_write(struct asus_wmi *asus) in throttle_thermal_policy_write() argument
2832 value = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_write()
2837 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in throttle_thermal_policy_write()
2852 if (asus->cpu_fan_curve_available) in throttle_thermal_policy_write()
2853 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in throttle_thermal_policy_write()
2854 if (asus->gpu_fan_curve_available) in throttle_thermal_policy_write()
2855 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in throttle_thermal_policy_write()
2860 static int throttle_thermal_policy_set_default(struct asus_wmi *asus) in throttle_thermal_policy_set_default() argument
2862 if (!asus->throttle_thermal_policy_available) in throttle_thermal_policy_set_default()
2865 asus->throttle_thermal_policy_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; in throttle_thermal_policy_set_default()
2866 return throttle_thermal_policy_write(asus); in throttle_thermal_policy_set_default()
2869 static int throttle_thermal_policy_switch_next(struct asus_wmi *asus) in throttle_thermal_policy_switch_next() argument
2871 u8 new_mode = asus->throttle_thermal_policy_mode + 1; in throttle_thermal_policy_switch_next()
2877 asus->throttle_thermal_policy_mode = new_mode; in throttle_thermal_policy_switch_next()
2878 err = throttle_thermal_policy_write(asus); in throttle_thermal_policy_switch_next()
2894 struct asus_wmi *asus = dev_get_drvdata(dev); in throttle_thermal_policy_show() local
2895 u8 mode = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_show()
2904 struct asus_wmi *asus = dev_get_drvdata(dev); in throttle_thermal_policy_store() local
2916 asus->throttle_thermal_policy_mode = new_mode; in throttle_thermal_policy_store()
2917 err = throttle_thermal_policy_write(asus); in throttle_thermal_policy_store()
2937 struct asus_wmi *asus; in asus_wmi_platform_profile_get() local
2940 asus = container_of(pprof, struct asus_wmi, platform_profile_handler); in asus_wmi_platform_profile_get()
2942 tp = asus->throttle_thermal_policy_mode; in asus_wmi_platform_profile_get()
2964 struct asus_wmi *asus; in asus_wmi_platform_profile_set() local
2967 asus = container_of(pprof, struct asus_wmi, platform_profile_handler); in asus_wmi_platform_profile_set()
2983 asus->throttle_thermal_policy_mode = tp; in asus_wmi_platform_profile_set()
2984 return throttle_thermal_policy_write(asus); in asus_wmi_platform_profile_set()
2987 static int platform_profile_setup(struct asus_wmi *asus) in platform_profile_setup() argument
2989 struct device *dev = &asus->platform_device->dev; in platform_profile_setup()
2996 if (!asus->throttle_thermal_policy_available) in platform_profile_setup()
3001 asus->platform_profile_handler.profile_get = asus_wmi_platform_profile_get; in platform_profile_setup()
3002 asus->platform_profile_handler.profile_set = asus_wmi_platform_profile_set; in platform_profile_setup()
3004 set_bit(PLATFORM_PROFILE_QUIET, asus->platform_profile_handler.choices); in platform_profile_setup()
3006 asus->platform_profile_handler.choices); in platform_profile_setup()
3008 asus->platform_profile_handler.choices); in platform_profile_setup()
3010 err = platform_profile_register(&asus->platform_profile_handler); in platform_profile_setup()
3014 asus->platform_profile_support = true; in platform_profile_setup()
3020 static int read_backlight_power(struct asus_wmi *asus) in read_backlight_power() argument
3024 if (asus->driver->quirks->store_backlight_power) in read_backlight_power()
3025 ret = !asus->driver->panel_power; in read_backlight_power()
3027 ret = asus_wmi_get_devstate_simple(asus, in read_backlight_power()
3036 static int read_brightness_max(struct asus_wmi *asus) in read_brightness_max() argument
3041 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_BRIGHTNESS, &retval); in read_brightness_max()
3056 struct asus_wmi *asus = bl_get_data(bd); in read_brightness() local
3060 err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_BRIGHTNESS, &retval); in read_brightness()
3069 struct asus_wmi *asus = bl_get_data(bd); in get_scalar_command() local
3072 if ((asus->driver->brightness < bd->props.brightness) || in get_scalar_command()
3075 else if ((asus->driver->brightness > bd->props.brightness) || in get_scalar_command()
3079 asus->driver->brightness = bd->props.brightness; in get_scalar_command()
3086 struct asus_wmi *asus = bl_get_data(bd); in update_bl_status() local
3090 power = read_backlight_power(asus); in update_bl_status()
3095 if (asus->driver->quirks->store_backlight_power) in update_bl_status()
3096 asus->driver->panel_power = bd->props.power; in update_bl_status()
3100 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
3104 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
3120 static int asus_wmi_backlight_notify(struct asus_wmi *asus, int code) in asus_wmi_backlight_notify() argument
3122 struct backlight_device *bd = asus->backlight_device; in asus_wmi_backlight_notify()
3138 static int asus_wmi_backlight_init(struct asus_wmi *asus) in asus_wmi_backlight_init() argument
3145 max = read_brightness_max(asus); in asus_wmi_backlight_init()
3149 power = read_backlight_power(asus); in asus_wmi_backlight_init()
3158 bd = backlight_device_register(asus->driver->name, in asus_wmi_backlight_init()
3159 &asus->platform_device->dev, asus, in asus_wmi_backlight_init()
3166 asus->backlight_device = bd; in asus_wmi_backlight_init()
3168 if (asus->driver->quirks->store_backlight_power) in asus_wmi_backlight_init()
3169 asus->driver->panel_power = power; in asus_wmi_backlight_init()
3175 asus->driver->brightness = bd->props.brightness; in asus_wmi_backlight_init()
3180 static void asus_wmi_backlight_exit(struct asus_wmi *asus) in asus_wmi_backlight_exit() argument
3182 backlight_device_unregister(asus->backlight_device); in asus_wmi_backlight_exit()
3184 asus->backlight_device = NULL; in asus_wmi_backlight_exit()
3201 static bool asus_wmi_has_fnlock_key(struct asus_wmi *asus) in asus_wmi_has_fnlock_key() argument
3205 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FNLOCK, &result); in asus_wmi_has_fnlock_key()
3211 static void asus_wmi_fnlock_update(struct asus_wmi *asus) in asus_wmi_fnlock_update() argument
3213 int mode = asus->fnlock_locked; in asus_wmi_fnlock_update()
3245 static void asus_wmi_handle_event_code(int code, struct asus_wmi *asus) in asus_wmi_handle_event_code() argument
3251 if (asus->driver->key_filter) { in asus_wmi_handle_event_code()
3252 asus->driver->key_filter(asus->driver, &code, &key_value, in asus_wmi_handle_event_code()
3265 asus_wmi_backlight_notify(asus, orig_code); in asus_wmi_handle_event_code()
3271 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
3275 kbd_led_set_by_kbd(asus, asus->kbd_led_wk - 1); in asus_wmi_handle_event_code()
3279 if (asus->kbd_led_wk == asus->kbd_led.max_brightness) in asus_wmi_handle_event_code()
3280 kbd_led_set_by_kbd(asus, 0); in asus_wmi_handle_event_code()
3282 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
3287 asus->fnlock_locked = !asus->fnlock_locked; in asus_wmi_handle_event_code()
3288 asus_wmi_fnlock_update(asus); in asus_wmi_handle_event_code()
3292 if (code == asus->tablet_switch_event_code) { in asus_wmi_handle_event_code()
3293 asus_wmi_tablet_mode_get_state(asus); in asus_wmi_handle_event_code()
3298 if (asus->fan_boost_mode_available) in asus_wmi_handle_event_code()
3299 fan_boost_mode_switch_next(asus); in asus_wmi_handle_event_code()
3300 if (asus->throttle_thermal_policy_available) in asus_wmi_handle_event_code()
3301 throttle_thermal_policy_switch_next(asus); in asus_wmi_handle_event_code()
3306 if (is_display_toggle(code) && asus->driver->quirks->no_display_toggle) in asus_wmi_handle_event_code()
3309 if (!sparse_keymap_report_event(asus->inputdev, code, in asus_wmi_handle_event_code()
3316 struct asus_wmi *asus = context; in asus_wmi_notify() local
3330 asus_wmi_handle_event_code(code, asus); in asus_wmi_notify()
3336 if (!asus->wmi_event_queue || value != WMI_EVENT_VALUE_ATK) in asus_wmi_notify()
3343 static int asus_wmi_notify_queue_flush(struct asus_wmi *asus) in asus_wmi_notify_queue_flush() argument
3365 static ssize_t store_sys_wmi(struct asus_wmi *asus, int devid, in store_sys_wmi() argument
3371 value = asus_wmi_get_devstate_simple(asus, devid); in store_sys_wmi()
3386 static ssize_t show_sys_wmi(struct asus_wmi *asus, int devid, char *buf) in show_sys_wmi() argument
3388 int value = asus_wmi_get_devstate_simple(asus, devid); in show_sys_wmi()
3401 struct asus_wmi *asus = dev_get_drvdata(dev); \
3403 return show_sys_wmi(asus, _cm, buf); \
3409 struct asus_wmi *asus = dev_get_drvdata(dev); \
3411 return store_sys_wmi(asus, _cm, buf, count); \
3468 struct asus_wmi *asus = dev_get_drvdata(dev); in asus_sysfs_is_visible() local
3483 ok = asus->egpu_enable_available; in asus_sysfs_is_visible()
3485 ok = asus->dgpu_disable_available; in asus_sysfs_is_visible()
3487 ok = asus->gpu_mux_mode_available; in asus_sysfs_is_visible()
3489 ok = asus->fan_boost_mode_available; in asus_sysfs_is_visible()
3491 ok = asus->throttle_thermal_policy_available; in asus_sysfs_is_visible()
3493 ok = asus->panel_overdrive_available; in asus_sysfs_is_visible()
3496 ok = !(asus_wmi_get_devstate_simple(asus, devid) < 0); in asus_sysfs_is_visible()
3518 static int asus_wmi_platform_init(struct asus_wmi *asus) in asus_wmi_platform_init() argument
3520 struct device *dev = &asus->platform_device->dev; in asus_wmi_platform_init()
3531 asus->spec = rv; in asus_wmi_platform_init()
3542 asus->sfun = rv; in asus_wmi_platform_init()
3564 asus->dsts_id = ASUS_WMI_METHODID_DCTS; in asus_wmi_platform_init()
3567 asus->dsts_id = ASUS_WMI_METHODID_DSTS; in asus_wmi_platform_init()
3579 wmi_uid = wmi_get_acpi_device_uid(asus->driver->event_guid); in asus_wmi_platform_init()
3583 if (!asus_wmi_notify_queue_flush(asus)) in asus_wmi_platform_init()
3584 asus->wmi_event_queue = true; in asus_wmi_platform_init()
3589 if (asus->driver->quirks->wapf >= 0) in asus_wmi_platform_init()
3591 asus->driver->quirks->wapf, NULL); in asus_wmi_platform_init()
3599 struct asus_wmi *asus; member
3606 struct asus_wmi *asus = m->private; in show_dsts() local
3610 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); in show_dsts()
3614 seq_printf(m, "DSTS(%#x) = %#x\n", asus->debug.dev_id, retval); in show_dsts()
3621 struct asus_wmi *asus = m->private; in show_devs() local
3625 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, in show_devs()
3630 seq_printf(m, "DEVS(%#x, %#x) = %#x\n", asus->debug.dev_id, in show_devs()
3631 asus->debug.ctrl_param, retval); in show_devs()
3638 struct asus_wmi *asus = m->private; in show_call() local
3640 .arg0 = asus->debug.dev_id, in show_call()
3641 .arg1 = asus->debug.ctrl_param, in show_call()
3649 0, asus->debug.method_id, in show_call()
3657 seq_printf(m, "%#x(%#x, %#x) = %#x\n", asus->debug.method_id, in show_call()
3658 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
3661 seq_printf(m, "%#x(%#x, %#x) = t:%d\n", asus->debug.method_id, in show_call()
3662 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
3680 return single_open(file, node->show, node->asus); in asus_wmi_debugfs_open()
3691 static void asus_wmi_debugfs_exit(struct asus_wmi *asus) in asus_wmi_debugfs_exit() argument
3693 debugfs_remove_recursive(asus->debug.root); in asus_wmi_debugfs_exit()
3696 static void asus_wmi_debugfs_init(struct asus_wmi *asus) in asus_wmi_debugfs_init() argument
3700 asus->debug.root = debugfs_create_dir(asus->driver->name, NULL); in asus_wmi_debugfs_init()
3702 debugfs_create_x32("method_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
3703 &asus->debug.method_id); in asus_wmi_debugfs_init()
3705 debugfs_create_x32("dev_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
3706 &asus->debug.dev_id); in asus_wmi_debugfs_init()
3708 debugfs_create_x32("ctrl_param", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
3709 &asus->debug.ctrl_param); in asus_wmi_debugfs_init()
3714 node->asus = asus; in asus_wmi_debugfs_init()
3716 asus->debug.root, node, in asus_wmi_debugfs_init()
3727 struct asus_wmi *asus; in asus_wmi_add() local
3732 asus = kzalloc(sizeof(struct asus_wmi), GFP_KERNEL); in asus_wmi_add()
3733 if (!asus) in asus_wmi_add()
3736 asus->driver = wdrv; in asus_wmi_add()
3737 asus->platform_device = pdev; in asus_wmi_add()
3739 platform_set_drvdata(asus->platform_device, asus); in asus_wmi_add()
3742 wdrv->detect_quirks(asus->driver); in asus_wmi_add()
3744 err = asus_wmi_platform_init(asus); in asus_wmi_add()
3748 asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); in asus_wmi_add()
3749 asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); in asus_wmi_add()
3750 asus->gpu_mux_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX); in asus_wmi_add()
3751 asus->kbd_rgb_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE); in asus_wmi_add()
3752 asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); in asus_wmi_add()
3753 asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); in asus_wmi_add()
3755 err = fan_boost_mode_check_present(asus); in asus_wmi_add()
3759 err = throttle_thermal_policy_check_present(asus); in asus_wmi_add()
3763 throttle_thermal_policy_set_default(asus); in asus_wmi_add()
3765 err = platform_profile_setup(asus); in asus_wmi_add()
3769 err = asus_wmi_sysfs_init(asus->platform_device); in asus_wmi_add()
3773 err = asus_wmi_input_init(asus); in asus_wmi_add()
3777 err = asus_wmi_fan_init(asus); /* probably no problems on error */ in asus_wmi_add()
3779 err = asus_wmi_hwmon_init(asus); in asus_wmi_add()
3783 err = asus_wmi_custom_fan_curve_init(asus); in asus_wmi_add()
3787 err = asus_wmi_led_init(asus); in asus_wmi_add()
3791 asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WLAN, &result); in asus_wmi_add()
3793 asus->driver->wlan_ctrl_by_user = 1; in asus_wmi_add()
3795 if (!(asus->driver->wlan_ctrl_by_user && ashs_present())) { in asus_wmi_add()
3796 err = asus_wmi_rfkill_init(asus); in asus_wmi_add()
3801 if (asus->driver->quirks->wmi_force_als_set) in asus_wmi_add()
3804 if (asus->driver->quirks->xusb2pr) in asus_wmi_add()
3805 asus_wmi_set_xusb2pr(asus); in asus_wmi_add()
3808 err = asus_wmi_backlight_init(asus); in asus_wmi_add()
3811 } else if (asus->driver->quirks->wmi_backlight_set_devstate) in asus_wmi_add()
3814 if (asus_wmi_has_fnlock_key(asus)) { in asus_wmi_add()
3815 asus->fnlock_locked = fnlock_default; in asus_wmi_add()
3816 asus_wmi_fnlock_update(asus); in asus_wmi_add()
3819 status = wmi_install_notify_handler(asus->driver->event_guid, in asus_wmi_add()
3820 asus_wmi_notify, asus); in asus_wmi_add()
3827 asus_wmi_battery_init(asus); in asus_wmi_add()
3829 asus_wmi_debugfs_init(asus); in asus_wmi_add()
3834 asus_wmi_backlight_exit(asus); in asus_wmi_add()
3836 asus_wmi_rfkill_exit(asus); in asus_wmi_add()
3838 asus_wmi_led_exit(asus); in asus_wmi_add()
3841 asus_wmi_input_exit(asus); in asus_wmi_add()
3843 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_add()
3848 if (asus->platform_profile_support) in asus_wmi_add()
3852 kfree(asus); in asus_wmi_add()
3858 struct asus_wmi *asus; in asus_wmi_remove() local
3860 asus = platform_get_drvdata(device); in asus_wmi_remove()
3861 wmi_remove_notify_handler(asus->driver->event_guid); in asus_wmi_remove()
3862 asus_wmi_backlight_exit(asus); in asus_wmi_remove()
3863 asus_wmi_input_exit(asus); in asus_wmi_remove()
3864 asus_wmi_led_exit(asus); in asus_wmi_remove()
3865 asus_wmi_rfkill_exit(asus); in asus_wmi_remove()
3866 asus_wmi_debugfs_exit(asus); in asus_wmi_remove()
3867 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_remove()
3868 asus_fan_set_auto(asus); in asus_wmi_remove()
3869 throttle_thermal_policy_set_default(asus); in asus_wmi_remove()
3870 asus_wmi_battery_exit(asus); in asus_wmi_remove()
3872 if (asus->platform_profile_support) in asus_wmi_remove()
3875 kfree(asus); in asus_wmi_remove()
3883 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_thaw() local
3885 if (asus->wlan.rfkill) { in asus_hotk_thaw()
3893 wlan = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WLAN); in asus_hotk_thaw()
3902 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_resume() local
3904 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_resume()
3905 kbd_led_update(asus); in asus_hotk_resume()
3907 if (asus_wmi_has_fnlock_key(asus)) in asus_hotk_resume()
3908 asus_wmi_fnlock_update(asus); in asus_hotk_resume()
3910 asus_wmi_tablet_mode_get_state(asus); in asus_hotk_resume()
3916 struct asus_wmi *asus = dev_get_drvdata(device); in asus_hotk_restore() local
3920 if (asus->wlan.rfkill) in asus_hotk_restore()
3921 asus_rfkill_hotplug(asus); in asus_hotk_restore()
3923 if (asus->bluetooth.rfkill) { in asus_hotk_restore()
3924 bl = !asus_wmi_get_devstate_simple(asus, in asus_hotk_restore()
3926 rfkill_set_sw_state(asus->bluetooth.rfkill, bl); in asus_hotk_restore()
3928 if (asus->wimax.rfkill) { in asus_hotk_restore()
3929 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WIMAX); in asus_hotk_restore()
3930 rfkill_set_sw_state(asus->wimax.rfkill, bl); in asus_hotk_restore()
3932 if (asus->wwan3g.rfkill) { in asus_hotk_restore()
3933 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_WWAN3G); in asus_hotk_restore()
3934 rfkill_set_sw_state(asus->wwan3g.rfkill, bl); in asus_hotk_restore()
3936 if (asus->gps.rfkill) { in asus_hotk_restore()
3937 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_GPS); in asus_hotk_restore()
3938 rfkill_set_sw_state(asus->gps.rfkill, bl); in asus_hotk_restore()
3940 if (asus->uwb.rfkill) { in asus_hotk_restore()
3941 bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_UWB); in asus_hotk_restore()
3942 rfkill_set_sw_state(asus->uwb.rfkill, bl); in asus_hotk_restore()
3944 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_restore()
3945 kbd_led_update(asus); in asus_hotk_restore()
3947 if (asus_wmi_has_fnlock_key(asus)) in asus_hotk_restore()
3948 asus_wmi_fnlock_update(asus); in asus_hotk_restore()
3950 asus_wmi_tablet_mode_get_state(asus); in asus_hotk_restore()