Lines Matching +full:non +full:- +full:tunable

1 // SPDX-License-Identifier: GPL-2.0-or-later
6 * Copyright(C) 2010-2011 Corentin Chary <corentin.chary@gmail.com>
22 #include <linux/hwmon-sysfs.h>
25 #include <linux/input/sparse-keymap.h>
32 #include <linux/platform_data/x86/asus-wmi.h>
45 #include "asus-wmi.h"
58 #define ASUS_WMI_MGMT_GUID "97845ED0-4E6D-11DE-8A39-0800200C9A66"
140 /* New modes for devices with 3 mini-led mode types */
196 u16 mfun; /* probably "Multi-function" to be called */
197 u16 sfun; /* probably "Sub-function" to be called */
207 u32 speed; /* read: RPM/100 - write: 0-255 */
211 * <platform>/ - debugfs root directory
212 * dev_id - current dev_id
213 * ctrl_param - current ctrl_param
214 * method_id - current method_id
215 * devs - call DEVS(dev_id, ctrl_param) and print result
216 * dsts - call DSTS(dev_id) and print result
217 * call - call method_id(dev_id, ctrl_param) and print result
366 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method3()
367 return -EIO; in asus_wmi_evaluate_method3()
371 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_evaluate_method3()
372 tmp = (u32) obj->integer.value; in asus_wmi_evaluate_method3()
382 __func__, method_id, arg0, -ENODEV); in asus_wmi_evaluate_method3()
383 return -ENODEV; in asus_wmi_evaluate_method3()
418 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method5()
419 return -EIO; in asus_wmi_evaluate_method5()
423 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_evaluate_method5()
424 tmp = (u32) obj->integer.value; in asus_wmi_evaluate_method5()
434 __func__, method_id, arg0, -ENODEV); in asus_wmi_evaluate_method5()
435 return -ENODEV; in asus_wmi_evaluate_method5()
466 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method_buf()
467 return -EIO; in asus_wmi_evaluate_method_buf()
472 switch (obj->type) { in asus_wmi_evaluate_method_buf()
474 if (obj->buffer.length > size) { in asus_wmi_evaluate_method_buf()
475 err = -ENOSPC; in asus_wmi_evaluate_method_buf()
478 if (obj->buffer.length == 0) { in asus_wmi_evaluate_method_buf()
479 err = -ENODATA; in asus_wmi_evaluate_method_buf()
483 memcpy(ret_buffer, obj->buffer.pointer, obj->buffer.length); in asus_wmi_evaluate_method_buf()
486 err = (u32)obj->integer.value; in asus_wmi_evaluate_method_buf()
489 err = -ENODEV; in asus_wmi_evaluate_method_buf()
495 err = -ENODATA; in asus_wmi_evaluate_method_buf()
498 err = -ENODATA; in asus_wmi_evaluate_method_buf()
527 return -ENOMEM; in asus_wmi_evaluate_method_agfn()
537 return -ENXIO; in asus_wmi_evaluate_method_agfn()
546 err = asus_wmi_evaluate_method(asus->dsts_id, dev_id, 0, retval); in asus_wmi_get_devstate()
552 return -ENODEV; in asus_wmi_get_devstate()
576 return -ENODEV; in asus_wmi_get_devstate_bits()
580 return -ENODEV; in asus_wmi_get_devstate_bits()
604 input_report_switch(asus->inputdev, SW_TABLET_MODE, in asus_wmi_tablet_sw_report()
605 asus->tablet_switch_inverted ? !value : value); in asus_wmi_tablet_sw_report()
606 input_sync(asus->inputdev); in asus_wmi_tablet_sw_report()
611 struct device *dev = &asus->platform_device->dev; in asus_wmi_tablet_sw_init()
616 input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE); in asus_wmi_tablet_sw_init()
618 asus->tablet_switch_dev_id = dev_id; in asus_wmi_tablet_sw_init()
619 asus->tablet_switch_event_code = event_code; in asus_wmi_tablet_sw_init()
620 } else if (result == -ENODEV) { in asus_wmi_tablet_sw_init()
621 …dev_err(dev, "This device has tablet-mode-switch quirk but got ENODEV checking it. This is a bug."… in asus_wmi_tablet_sw_init()
623 dev_err(dev, "Error checking for tablet-mode-switch: %d\n", result); in asus_wmi_tablet_sw_init()
629 struct device *dev = &asus->platform_device->dev; in asus_wmi_input_init()
632 asus->inputdev = input_allocate_device(); in asus_wmi_input_init()
633 if (!asus->inputdev) in asus_wmi_input_init()
634 return -ENOMEM; in asus_wmi_input_init()
636 asus->inputdev->name = asus->driver->input_name; in asus_wmi_input_init()
637 asus->inputdev->phys = asus->driver->input_phys; in asus_wmi_input_init()
638 asus->inputdev->id.bustype = BUS_HOST; in asus_wmi_input_init()
639 asus->inputdev->dev.parent = dev; in asus_wmi_input_init()
640 set_bit(EV_REP, asus->inputdev->evbit); in asus_wmi_input_init()
642 err = sparse_keymap_setup(asus->inputdev, asus->driver->keymap, NULL); in asus_wmi_input_init()
646 switch (asus->driver->quirks->tablet_switch_mode) { in asus_wmi_input_init()
650 asus->tablet_switch_inverted = true; in asus_wmi_input_init()
661 err = input_register_device(asus->inputdev); in asus_wmi_input_init()
668 input_free_device(asus->inputdev); in asus_wmi_input_init()
674 if (asus->inputdev) in asus_wmi_input_exit()
675 input_unregister_device(asus->inputdev); in asus_wmi_input_exit()
677 asus->inputdev = NULL; in asus_wmi_input_exit()
686 if (!asus->tablet_switch_dev_id) in asus_wmi_tablet_mode_get_state()
689 result = asus_wmi_get_devstate_simple(asus, asus->tablet_switch_dev_id); in asus_wmi_tablet_mode_get_state()
744 return -EINVAL; in dgpu_disable_store()
746 if (asus->gpu_mux_dev) { in dgpu_disable_store()
747 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in dgpu_disable_store()
752 err = -ENODEV; in dgpu_disable_store()
766 return -EIO; in dgpu_disable_store()
769 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "dgpu_disable"); in dgpu_disable_store()
804 return -EINVAL; in egpu_enable_store()
812 if (asus->gpu_mux_dev) { in egpu_enable_store()
813 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in egpu_enable_store()
820 err = -ENODEV; in egpu_enable_store()
834 return -EIO; in egpu_enable_store()
837 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "egpu_enable"); in egpu_enable_store()
866 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in gpu_mux_mode_show()
886 return -EINVAL; in gpu_mux_mode_store()
888 if (asus->dgpu_disable_available) { in gpu_mux_mode_store()
894 err = -ENODEV; in gpu_mux_mode_store()
900 if (asus->egpu_enable_available) { in gpu_mux_mode_store()
906 err = -ENODEV; in gpu_mux_mode_store()
912 err = asus_wmi_set_devstate(asus->gpu_mux_dev, optimus, &result); in gpu_mux_mode_store()
920 return -EIO; in gpu_mux_mode_store()
923 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "gpu_mux_mode"); in gpu_mux_mode_store()
943 return -EINVAL; in kbd_rgb_mode_store()
954 return -EINVAL; in kbd_rgb_mode_store()
975 err = asus_wmi_evaluate_method3(ASUS_WMI_METHODID_DEVS, asus->kbd_rgb_dev, in kbd_rgb_mode_store()
1006 return -EINVAL; in kbd_rgb_state_store()
1050 /* Tunable: PPT: Intel=PL1, AMD=SPPT *****************************************/
1064 return -EINVAL; in ppt_pl2_sppt_store()
1074 return -EIO; in ppt_pl2_sppt_store()
1077 asus->ppt_pl2_sppt = value; in ppt_pl2_sppt_store()
1078 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl2_sppt"); in ppt_pl2_sppt_store()
1089 return sysfs_emit(buf, "%u\n", asus->ppt_pl2_sppt); in ppt_pl2_sppt_show()
1093 /* Tunable: PPT, Intel=PL1, AMD=SPL ******************************************/
1107 return -EINVAL; in ppt_pl1_spl_store()
1117 return -EIO; in ppt_pl1_spl_store()
1120 asus->ppt_pl1_spl = value; in ppt_pl1_spl_store()
1121 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl1_spl"); in ppt_pl1_spl_store()
1131 return sysfs_emit(buf, "%u\n", asus->ppt_pl1_spl); in ppt_pl1_spl_show()
1135 /* Tunable: PPT APU FPPT ******************************************************/
1149 return -EINVAL; in ppt_fppt_store()
1159 return -EIO; in ppt_fppt_store()
1162 asus->ppt_fppt = value; in ppt_fppt_store()
1163 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_fpu_sppt"); in ppt_fppt_store()
1174 return sysfs_emit(buf, "%u\n", asus->ppt_fppt); in ppt_fppt_show()
1178 /* Tunable: PPT APU SPPT *****************************************************/
1192 return -EINVAL; in ppt_apu_sppt_store()
1202 return -EIO; in ppt_apu_sppt_store()
1205 asus->ppt_apu_sppt = value; in ppt_apu_sppt_store()
1206 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_apu_sppt"); in ppt_apu_sppt_store()
1217 return sysfs_emit(buf, "%u\n", asus->ppt_apu_sppt); in ppt_apu_sppt_show()
1221 /* Tunable: PPT platform SPPT ************************************************/
1235 return -EINVAL; in ppt_platform_sppt_store()
1245 return -EIO; in ppt_platform_sppt_store()
1248 asus->ppt_platform_sppt = value; in ppt_platform_sppt_store()
1249 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_platform_sppt"); in ppt_platform_sppt_store()
1260 return sysfs_emit(buf, "%u\n", asus->ppt_platform_sppt); in ppt_platform_sppt_show()
1264 /* Tunable: NVIDIA dynamic boost *********************************************/
1278 return -EINVAL; in nv_dynamic_boost_store()
1288 return -EIO; in nv_dynamic_boost_store()
1291 asus->nv_dynamic_boost = value; in nv_dynamic_boost_store()
1292 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_dynamic_boost"); in nv_dynamic_boost_store()
1303 return sysfs_emit(buf, "%u\n", asus->nv_dynamic_boost); in nv_dynamic_boost_show()
1307 /* Tunable: NVIDIA temperature target ****************************************/
1321 return -EINVAL; in nv_temp_target_store()
1331 return -EIO; in nv_temp_target_store()
1334 asus->nv_temp_target = value; in nv_temp_target_store()
1335 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_temp_target"); in nv_temp_target_store()
1346 return sysfs_emit(buf, "%u\n", asus->nv_temp_target); in nv_temp_target_show()
1366 * - v313 for Ally X
1367 * - v319 for Ally 1
1416 return -EINVAL; in mcu_powersave_store()
1426 return -EIO; in mcu_powersave_store()
1429 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "mcu_powersave"); in mcu_powersave_store()
1451 return -EINVAL; in charge_control_end_threshold_store()
1458 return -EIO; in charge_control_end_threshold_store()
1483 if (strcmp(battery->desc->name, "BAT0") != 0 && in asus_wmi_battery_add()
1484 strcmp(battery->desc->name, "BAT1") != 0 && in asus_wmi_battery_add()
1485 strcmp(battery->desc->name, "BATC") != 0 && in asus_wmi_battery_add()
1486 strcmp(battery->desc->name, "BATT") != 0) in asus_wmi_battery_add()
1487 return -ENODEV; in asus_wmi_battery_add()
1489 if (device_create_file(&battery->dev, in asus_wmi_battery_add()
1491 return -ENODEV; in asus_wmi_battery_add()
1505 device_remove_file(&battery->dev, in asus_wmi_battery_remove()
1518 asus->battery_rsoc_available = false; in asus_wmi_battery_init()
1520 asus->battery_rsoc_available = true; in asus_wmi_battery_init()
1527 if (asus->battery_rsoc_available) in asus_wmi_battery_exit()
1546 ctrl_param = asus->tpd_led_wk; in tpd_led_update()
1557 asus->tpd_led_wk = !!value; in tpd_led_set()
1558 queue_work(asus->led_workqueue, &asus->tpd_led_work); in tpd_led_set()
1579 ctrl_param = 0x80 | (asus->kbd_led_wk & 0x7F); in kbd_led_update()
1588 * bits 0-2: level in kbd_led_read()
1590 * bit 8-10: environment (0: dark, 1: normal, 2: light) in kbd_led_read()
1616 max_level = asus->kbd_led.max_brightness; in do_kbd_led_set()
1618 asus->kbd_led_wk = clamp_val(value, 0, max_level); in do_kbd_led_set()
1626 if (led_cdev->flags & LED_UNREGISTERING) in kbd_led_set()
1634 struct led_classdev *led_cdev = &asus->kbd_led; in kbd_led_set_by_kbd()
1637 led_classdev_notify_brightness_hw_changed(led_cdev, asus->kbd_led_wk); in kbd_led_set_by_kbd()
1670 ctrl_param = asus->wlan_led_wk; in wlan_led_update()
1681 asus->wlan_led_wk = !!value; in wlan_led_set()
1682 queue_work(asus->led_workqueue, &asus->wlan_led_work); in wlan_led_set()
1703 ctrl_param = asus->lightbar_led_wk; in lightbar_led_update()
1714 asus->lightbar_led_wk = !!value; in lightbar_led_set()
1715 queue_work(asus->led_workqueue, &asus->lightbar_led_work); in lightbar_led_set()
1762 led_classdev_unregister(&asus->kbd_led); in asus_wmi_led_exit()
1763 led_classdev_unregister(&asus->tpd_led); in asus_wmi_led_exit()
1764 led_classdev_unregister(&asus->wlan_led); in asus_wmi_led_exit()
1765 led_classdev_unregister(&asus->lightbar_led); in asus_wmi_led_exit()
1766 led_classdev_unregister(&asus->micmute_led); in asus_wmi_led_exit()
1767 led_classdev_unregister(&asus->camera_led); in asus_wmi_led_exit()
1769 if (asus->led_workqueue) in asus_wmi_led_exit()
1770 destroy_workqueue(asus->led_workqueue); in asus_wmi_led_exit()
1777 if (asus->kbd_rgb_dev) in asus_wmi_led_init()
1779 if (asus->kbd_rgb_state_available) in asus_wmi_led_init()
1782 asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); in asus_wmi_led_init()
1783 if (!asus->led_workqueue) in asus_wmi_led_init()
1784 return -ENOMEM; in asus_wmi_led_init()
1787 INIT_WORK(&asus->tpd_led_work, tpd_led_update); in asus_wmi_led_init()
1789 asus->tpd_led.name = "asus::touchpad"; in asus_wmi_led_init()
1790 asus->tpd_led.brightness_set = tpd_led_set; in asus_wmi_led_init()
1791 asus->tpd_led.brightness_get = tpd_led_get; in asus_wmi_led_init()
1792 asus->tpd_led.max_brightness = 1; in asus_wmi_led_init()
1794 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1795 &asus->tpd_led); in asus_wmi_led_init()
1801 pr_info("using asus-wmi for asus::kbd_backlight\n"); in asus_wmi_led_init()
1802 asus->kbd_led_wk = led_val; in asus_wmi_led_init()
1803 asus->kbd_led.name = "asus::kbd_backlight"; in asus_wmi_led_init()
1804 asus->kbd_led.flags = LED_BRIGHT_HW_CHANGED; in asus_wmi_led_init()
1805 asus->kbd_led.brightness_set = kbd_led_set; in asus_wmi_led_init()
1806 asus->kbd_led.brightness_get = kbd_led_get; in asus_wmi_led_init()
1807 asus->kbd_led.max_brightness = 3; in asus_wmi_led_init()
1810 asus->kbd_led.groups = kbd_rgb_mode_groups; in asus_wmi_led_init()
1812 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1813 &asus->kbd_led); in asus_wmi_led_init()
1819 && (asus->driver->quirks->wapf > 0)) { in asus_wmi_led_init()
1820 INIT_WORK(&asus->wlan_led_work, wlan_led_update); in asus_wmi_led_init()
1822 asus->wlan_led.name = "asus::wlan"; in asus_wmi_led_init()
1823 asus->wlan_led.brightness_set = wlan_led_set; in asus_wmi_led_init()
1825 asus->wlan_led.brightness_get = wlan_led_get; in asus_wmi_led_init()
1826 asus->wlan_led.flags = LED_CORE_SUSPENDRESUME; in asus_wmi_led_init()
1827 asus->wlan_led.max_brightness = 1; in asus_wmi_led_init()
1828 asus->wlan_led.default_trigger = "asus-wlan"; in asus_wmi_led_init()
1830 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1831 &asus->wlan_led); in asus_wmi_led_init()
1837 INIT_WORK(&asus->lightbar_led_work, lightbar_led_update); in asus_wmi_led_init()
1839 asus->lightbar_led.name = "asus::lightbar"; in asus_wmi_led_init()
1840 asus->lightbar_led.brightness_set = lightbar_led_set; in asus_wmi_led_init()
1841 asus->lightbar_led.brightness_get = lightbar_led_get; in asus_wmi_led_init()
1842 asus->lightbar_led.max_brightness = 1; in asus_wmi_led_init()
1844 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1845 &asus->lightbar_led); in asus_wmi_led_init()
1849 asus->micmute_led.name = "platform::micmute"; in asus_wmi_led_init()
1850 asus->micmute_led.max_brightness = 1; in asus_wmi_led_init()
1851 asus->micmute_led.brightness_set_blocking = micmute_led_set; in asus_wmi_led_init()
1852 asus->micmute_led.default_trigger = "audio-micmute"; in asus_wmi_led_init()
1854 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1855 &asus->micmute_led); in asus_wmi_led_init()
1861 asus->camera_led.name = "asus::camera"; in asus_wmi_led_init()
1862 asus->camera_led.max_brightness = 1; in asus_wmi_led_init()
1863 asus->camera_led.brightness_get = camera_led_get; in asus_wmi_led_init()
1864 asus->camera_led.brightness_set_blocking = camera_led_set; in asus_wmi_led_init()
1866 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1867 &asus->camera_led); in asus_wmi_led_init()
1872 if (asus->oobe_state_available) { in asus_wmi_led_init()
1911 mutex_lock(&asus->wmi_lock); in asus_rfkill_hotplug()
1913 mutex_unlock(&asus->wmi_lock); in asus_rfkill_hotplug()
1915 mutex_lock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1918 if (asus->wlan.rfkill) in asus_rfkill_hotplug()
1919 rfkill_set_sw_state(asus->wlan.rfkill, blocked); in asus_rfkill_hotplug()
1921 if (asus->hotplug_slot.ops) { in asus_rfkill_hotplug()
1965 mutex_unlock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1982 queue_work(asus->hotplug_workqueue, &asus->hotplug_work); in asus_rfkill_notify()
1992 return -ENODEV; in asus_register_rfkill_notifier()
2046 int ret = -ENOMEM; in asus_setup_pci_hotplug()
2051 return -ENODEV; in asus_setup_pci_hotplug()
2054 asus->hotplug_workqueue = in asus_setup_pci_hotplug()
2056 if (!asus->hotplug_workqueue) in asus_setup_pci_hotplug()
2059 INIT_WORK(&asus->hotplug_work, asus_hotplug_work); in asus_setup_pci_hotplug()
2061 asus->hotplug_slot.ops = &asus_hotplug_slot_ops; in asus_setup_pci_hotplug()
2063 ret = pci_hp_register(&asus->hotplug_slot, bus, 0, "asus-wifi"); in asus_setup_pci_hotplug()
2065 pr_err("Unable to register hotplug slot - %d\n", ret); in asus_setup_pci_hotplug()
2072 asus->hotplug_slot.ops = NULL; in asus_setup_pci_hotplug()
2073 destroy_workqueue(asus->hotplug_workqueue); in asus_setup_pci_hotplug()
2085 u32 dev_id = priv->dev_id; in asus_rfkill_set()
2096 priv->asus->driver->wlan_ctrl_by_user) in asus_rfkill_set()
2107 result = asus_wmi_get_devstate_simple(priv->asus, priv->dev_id); in asus_rfkill_query()
2112 rfkill_set_sw_state(priv->rfkill, !result); in asus_rfkill_query()
2118 struct asus_wmi *asus = priv->asus; in asus_rfkill_wlan_set()
2128 mutex_lock(&asus->wmi_lock); in asus_rfkill_wlan_set()
2130 mutex_unlock(&asus->wmi_lock); in asus_rfkill_wlan_set()
2149 struct rfkill **rfkill = &arfkill->rfkill; in asus_new_rfkill()
2154 arfkill->dev_id = dev_id; in asus_new_rfkill()
2155 arfkill->asus = asus; in asus_new_rfkill()
2158 asus->driver->quirks->hotplug_wireless) in asus_new_rfkill()
2159 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
2162 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
2166 return -EINVAL; in asus_new_rfkill()
2169 (asus->driver->quirks->wapf > 0)) in asus_new_rfkill()
2170 rfkill_set_led_trigger_name(*rfkill, "asus-wlan"); in asus_new_rfkill()
2184 if (asus->driver->wlan_ctrl_by_user && ashs_present()) in asus_wmi_rfkill_exit()
2190 if (asus->wlan.rfkill) { in asus_wmi_rfkill_exit()
2191 rfkill_unregister(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
2192 rfkill_destroy(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
2193 asus->wlan.rfkill = NULL; in asus_wmi_rfkill_exit()
2200 if (asus->hotplug_slot.ops) in asus_wmi_rfkill_exit()
2201 pci_hp_deregister(&asus->hotplug_slot); in asus_wmi_rfkill_exit()
2202 if (asus->hotplug_workqueue) in asus_wmi_rfkill_exit()
2203 destroy_workqueue(asus->hotplug_workqueue); in asus_wmi_rfkill_exit()
2205 if (asus->bluetooth.rfkill) { in asus_wmi_rfkill_exit()
2206 rfkill_unregister(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
2207 rfkill_destroy(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
2208 asus->bluetooth.rfkill = NULL; in asus_wmi_rfkill_exit()
2210 if (asus->wimax.rfkill) { in asus_wmi_rfkill_exit()
2211 rfkill_unregister(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
2212 rfkill_destroy(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
2213 asus->wimax.rfkill = NULL; in asus_wmi_rfkill_exit()
2215 if (asus->wwan3g.rfkill) { in asus_wmi_rfkill_exit()
2216 rfkill_unregister(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
2217 rfkill_destroy(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
2218 asus->wwan3g.rfkill = NULL; in asus_wmi_rfkill_exit()
2220 if (asus->gps.rfkill) { in asus_wmi_rfkill_exit()
2221 rfkill_unregister(asus->gps.rfkill); in asus_wmi_rfkill_exit()
2222 rfkill_destroy(asus->gps.rfkill); in asus_wmi_rfkill_exit()
2223 asus->gps.rfkill = NULL; in asus_wmi_rfkill_exit()
2225 if (asus->uwb.rfkill) { in asus_wmi_rfkill_exit()
2226 rfkill_unregister(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
2227 rfkill_destroy(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
2228 asus->uwb.rfkill = NULL; in asus_wmi_rfkill_exit()
2236 mutex_init(&asus->hotplug_lock); in asus_wmi_rfkill_init()
2237 mutex_init(&asus->wmi_lock); in asus_wmi_rfkill_init()
2239 result = asus_new_rfkill(asus, &asus->wlan, "asus-wlan", in asus_wmi_rfkill_init()
2242 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2245 result = asus_new_rfkill(asus, &asus->bluetooth, in asus_wmi_rfkill_init()
2246 "asus-bluetooth", RFKILL_TYPE_BLUETOOTH, in asus_wmi_rfkill_init()
2249 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2252 result = asus_new_rfkill(asus, &asus->wimax, "asus-wimax", in asus_wmi_rfkill_init()
2255 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2258 result = asus_new_rfkill(asus, &asus->wwan3g, "asus-wwan3g", in asus_wmi_rfkill_init()
2261 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2264 result = asus_new_rfkill(asus, &asus->gps, "asus-gps", in asus_wmi_rfkill_init()
2267 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2270 result = asus_new_rfkill(asus, &asus->uwb, "asus-uwb", in asus_wmi_rfkill_init()
2273 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2276 if (!asus->driver->quirks->hotplug_wireless) in asus_wmi_rfkill_init()
2281 * If we get -EBUSY then something else is handling the PCI hotplug - in asus_wmi_rfkill_init()
2284 if (result == -EBUSY) in asus_wmi_rfkill_init()
2297 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2300 if (result == -ENODEV) in asus_wmi_rfkill_init()
2334 return -EINVAL; in panel_od_store()
2345 return -EIO; in panel_od_store()
2348 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "panel_od"); in panel_od_store()
2383 return -EINVAL; in boot_sound_store()
2393 return -EIO; in boot_sound_store()
2396 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "boot_sound"); in boot_sound_store()
2402 /* Mini-LED mode **************************************************************/
2410 err = asus_wmi_get_devstate(asus, asus->mini_led_dev_id, &value); in mini_led_mode_show()
2416 * Remap the mode values to match previous generation mini-led. The last gen in mini_led_mode_show()
2419 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { in mini_led_mode_show()
2449 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE && in mini_led_mode_store()
2451 return -EINVAL; in mini_led_mode_store()
2452 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2 && in mini_led_mode_store()
2454 return -EINVAL; in mini_led_mode_store()
2458 * generation of mini-LED with 0 == off, 1 == on. in mini_led_mode_store()
2460 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { in mini_led_mode_store()
2474 err = asus_wmi_set_devstate(asus->mini_led_dev_id, mode, &result); in mini_led_mode_store()
2476 pr_warn("Failed to set mini-LED: %d\n", err); in mini_led_mode_store()
2481 pr_warn("Failed to set mini-LED mode (result): 0x%x\n", result); in mini_led_mode_store()
2482 return -EIO; in mini_led_mode_store()
2485 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "mini_led_mode"); in mini_led_mode_store()
2496 switch (asus->mini_led_dev_id) { in available_mini_led_mode_show()
2514 u32 ports_available = asus->driver->quirks->xusb2pr; in asus_wmi_set_xusb2pr()
2560 return -EINVAL; in asus_agfn_fan_speed_read()
2565 return -ENXIO; in asus_agfn_fan_speed_read()
2588 return -EINVAL; in asus_agfn_fan_speed_write()
2593 return -ENXIO; in asus_agfn_fan_speed_write()
2596 asus->agfn_pwm = *speed; in asus_agfn_fan_speed_write()
2623 * - ASUS_WMI_UNSUPPORTED_METHOD is returned in asus_wmi_has_agfn_fan()
2624 * - reverved bits are non-zero in asus_wmi_has_agfn_fan()
2625 * - sfun and presence bit are not set in asus_wmi_has_agfn_fan()
2628 || (!asus->sfun && !(value & ASUS_WMI_DSTS_PRESENCE_BIT))); in asus_wmi_has_agfn_fan()
2636 switch (asus->fan_type) { in asus_fan_set_auto()
2644 return -EIO; in asus_fan_set_auto()
2650 return -ENXIO; in asus_fan_set_auto()
2654 return -ENXIO; in asus_fan_set_auto()
2660 if (asus->gpu_fan_type == FAN_TYPE_SPEC83) { in asus_fan_set_auto()
2667 return -EIO; in asus_fan_set_auto()
2682 if (asus->agfn_pwm >= 0) in pwm1_show()
2683 return sysfs_emit(buf, "%d\n", asus->agfn_pwm); in pwm1_show()
2687 * we read a current value through the (now-deprecated) FAN_CTRL device. in pwm1_show()
2703 value = -1; in pwm1_show()
2727 asus->fan_pwm_mode = ASUS_FAN_CTRL_MANUAL; in pwm1_store()
2740 switch (asus->fan_type) { in fan1_input_show()
2752 if (asus->fan_pwm_mode == ASUS_FAN_CTRL_MANUAL) in fan1_input_show()
2753 return -ENXIO; in fan1_input_show()
2758 return -ENXIO; in fan1_input_show()
2763 return -ENXIO; in fan1_input_show()
2766 return sysfs_emit(buf, "%d\n", value < 0 ? -1 : value * 100); in fan1_input_show()
2784 return sysfs_emit(buf, "%d\n", asus->fan_pwm_mode); in pwm1_enable_show()
2802 if (asus->fan_type == FAN_TYPE_SPEC83) { in pwm1_enable_store()
2811 return -EINVAL; in pwm1_enable_store()
2820 return -EIO; in pwm1_enable_store()
2821 } else if (asus->fan_type == FAN_TYPE_AGFN) { in pwm1_enable_store()
2833 return -EINVAL; in pwm1_enable_store()
2837 asus->fan_pwm_mode = state; in pwm1_enable_store()
2840 if (asus->cpu_fan_curve_available) in pwm1_enable_store()
2841 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in pwm1_enable_store()
2842 if (asus->gpu_fan_curve_available) in pwm1_enable_store()
2843 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in pwm1_enable_store()
2844 if (asus->mid_fan_curve_available) in pwm1_enable_store()
2845 asus->custom_fan_curves[FAN_CURVE_DEV_MID].enabled = false; in pwm1_enable_store()
2908 return sysfs_emit(buf, "%d\n", asus->gpu_fan_pwm_mode); in pwm2_enable_show()
2933 return -EINVAL; in pwm2_enable_store()
2942 return -EIO; in pwm2_enable_store()
2944 asus->gpu_fan_pwm_mode = state; in pwm2_enable_store()
2954 return sysfs_emit(buf, "%d\n", asus->mid_fan_pwm_mode); in pwm3_enable_show()
2979 return -EINVAL; in pwm3_enable_store()
2988 return -EIO; in pwm3_enable_store()
2990 asus->mid_fan_pwm_mode = state; in pwm3_enable_store()
3000 /* Fan2 - GPU fan */
3004 /* Fan3 - Middle/center fan */
3032 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_hwmon_sysfs_is_visible()
3036 if (asus->fan_type != FAN_TYPE_AGFN) in asus_hwmon_sysfs_is_visible()
3041 if (asus->fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3046 if (asus->gpu_fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3051 if (asus->mid_fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3062 * If the temperature value in deci-Kelvin is near the absolute in asus_hwmon_sysfs_is_visible()
3069 return attr->mode; in asus_hwmon_sysfs_is_visible()
3080 struct device *dev = &asus->platform_device->dev; in asus_wmi_hwmon_init()
3095 asus->gpu_fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3096 asus->mid_fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3097 asus->fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3098 asus->agfn_pwm = -1; in asus_wmi_fan_init()
3100 if (asus->driver->quirks->wmi_ignore_fan) in asus_wmi_fan_init()
3101 asus->fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3103 asus->fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3105 asus->fan_type = FAN_TYPE_AGFN; in asus_wmi_fan_init()
3109 asus->gpu_fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3113 asus->mid_fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3115 if (asus->fan_type == FAN_TYPE_NONE) in asus_wmi_fan_init()
3116 return -ENODEV; in asus_wmi_fan_init()
3119 asus->fan_pwm_mode = ASUS_FAN_CTRL_AUTO; in asus_wmi_fan_init()
3130 asus->fan_boost_mode_available = false; in fan_boost_mode_check_present()
3135 if (err == -ENODEV) in fan_boost_mode_check_present()
3143 asus->fan_boost_mode_available = true; in fan_boost_mode_check_present()
3144 asus->fan_boost_mode_mask = result & ASUS_FAN_BOOST_MODES_MASK; in fan_boost_mode_check_present()
3156 value = asus->fan_boost_mode; in fan_boost_mode_write()
3162 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in fan_boost_mode_write()
3173 return -EIO; in fan_boost_mode_write()
3181 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_switch_next()
3183 if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_NORMAL) { in fan_boost_mode_switch_next()
3185 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_OVERBOOST; in fan_boost_mode_switch_next()
3187 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
3188 } else if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_OVERBOOST) { in fan_boost_mode_switch_next()
3190 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
3192 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
3194 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
3205 return sysfs_emit(buf, "%d\n", asus->fan_boost_mode); in fan_boost_mode_show()
3213 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_store()
3225 return -EINVAL; in fan_boost_mode_store()
3228 return -EINVAL; in fan_boost_mode_store()
3230 return -EINVAL; in fan_boost_mode_store()
3233 asus->fan_boost_mode = new_mode; in fan_boost_mode_store()
3239 // Fan boost mode: 0 - normal, 1 - overboost, 2 - silent
3249 data->temps[i] = buf[i]; in fan_curve_copy_from_buf()
3253 data->percents[i] = in fan_curve_copy_from_buf()
3265 if (asus->throttle_thermal_policy_dev) in fan_curve_get_factory_default()
3266 mode = asus->throttle_thermal_policy_mode; in fan_curve_get_factory_default()
3273 err = asus_wmi_evaluate_method_buf(asus->dsts_id, fan_dev, mode, buf, in fan_curve_get_factory_default()
3287 curves = &asus->custom_fan_curves[fan_idx]; in fan_curve_get_factory_default()
3288 curves->device_id = fan_dev; in fan_curve_get_factory_default()
3302 if (asus->fan_type == FAN_TYPE_NONE) in fan_curve_check_present()
3318 int index = to_sensor_dev_attr(attr)->index; in fan_curve_attr_select()
3320 return &asus->custom_fan_curves[index]; in fan_curve_attr_select()
3327 int nr = to_sensor_dev_attr_2(attr)->nr; in fan_curve_attr_2_select()
3329 return &asus->custom_fan_curves[nr & ~FAN_CURVE_PWM_MASK]; in fan_curve_attr_2_select()
3341 pwm = dev_attr->nr & FAN_CURVE_PWM_MASK; in fan_curve_show()
3342 index = dev_attr->index; in fan_curve_show()
3345 value = data->percents[index]; in fan_curve_show()
3347 value = data->temps[index]; in fan_curve_show()
3359 u8 *percents = data->percents; in fan_curve_write()
3360 u8 *temps = data->temps; in fan_curve_write()
3363 if (!data->enabled) in fan_curve_write()
3376 data->device_id, in fan_curve_write()
3391 pwm = dev_attr->nr & FAN_CURVE_PWM_MASK; in fan_curve_store()
3392 index = dev_attr->index; in fan_curve_store()
3399 data->percents[index] = value; in fan_curve_store()
3401 data->temps[index] = value; in fan_curve_store()
3406 * many changes as one-write-per-change. in fan_curve_store()
3408 data->enabled = false; in fan_curve_store()
3422 if (data->enabled) in fan_curve_enable_show()
3444 data->enabled = true; in fan_curve_enable_store()
3447 data->enabled = false; in fan_curve_enable_store()
3454 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
3457 data->enabled = false; in fan_curve_enable_store()
3460 return -EINVAL; in fan_curve_enable_store()
3463 if (data->enabled) { in fan_curve_enable_store()
3472 if (asus->throttle_thermal_policy_dev) { in fan_curve_enable_store()
3477 } else if (asus->fan_type == FAN_TYPE_SPEC83) { in fan_curve_enable_store()
3483 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
3664 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_fan_curve_is_visible()
3670 if (asus->cpu_fan_curve_available && attr->name[3] == '1') in asus_fan_curve_is_visible()
3673 if (asus->gpu_fan_curve_available && attr->name[3] == '2') in asus_fan_curve_is_visible()
3676 if (asus->mid_fan_curve_available && attr->name[3] == '3') in asus_fan_curve_is_visible()
3694 struct device *dev = &asus->platform_device->dev; in asus_wmi_custom_fan_curve_init()
3698 err = fan_curve_check_present(asus, &asus->cpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3706 err = fan_curve_check_present(asus, &asus->gpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3714 err = fan_curve_check_present(asus, &asus->mid_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3722 if (!asus->cpu_fan_curve_available in asus_wmi_custom_fan_curve_init()
3723 && !asus->gpu_fan_curve_available in asus_wmi_custom_fan_curve_init()
3724 && !asus->mid_fan_curve_available) in asus_wmi_custom_fan_curve_init()
3745 if (asus->throttle_thermal_policy_dev == ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO) { in throttle_thermal_policy_write()
3746 switch (asus->throttle_thermal_policy_mode) { in throttle_thermal_policy_write()
3757 return -EINVAL; in throttle_thermal_policy_write()
3760 value = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_write()
3764 err = asus_wmi_set_devstate(asus->throttle_thermal_policy_dev, value, NULL); in throttle_thermal_policy_write()
3766 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in throttle_thermal_policy_write()
3775 if (asus->cpu_fan_curve_available) in throttle_thermal_policy_write()
3776 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in throttle_thermal_policy_write()
3777 if (asus->gpu_fan_curve_available) in throttle_thermal_policy_write()
3778 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in throttle_thermal_policy_write()
3779 if (asus->mid_fan_curve_available) in throttle_thermal_policy_write()
3780 asus->custom_fan_curves[FAN_CURVE_DEV_MID].enabled = false; in throttle_thermal_policy_write()
3787 if (!asus->throttle_thermal_policy_dev) in throttle_thermal_policy_set_default()
3790 asus->throttle_thermal_policy_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; in throttle_thermal_policy_set_default()
3798 u8 mode = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_show()
3817 return -EINVAL; in throttle_thermal_policy_store()
3819 asus->throttle_thermal_policy_mode = new_mode; in throttle_thermal_policy_store()
3828 platform_profile_notify(asus->ppdev); in throttle_thermal_policy_store()
3834 * Throttle thermal policy: 0 - default, 1 - overboost, 2 - silent
3846 tp = asus->throttle_thermal_policy_mode; in asus_wmi_platform_profile_get()
3859 return -EINVAL; in asus_wmi_platform_profile_get()
3884 return -EOPNOTSUPP; in asus_wmi_platform_profile_set()
3887 asus->throttle_thermal_policy_mode = tp; in asus_wmi_platform_profile_set()
3908 struct device *dev = &asus->platform_device->dev; in platform_profile_setup()
3915 if (!asus->throttle_thermal_policy_dev) in platform_profile_setup()
3930 asus->ppdev = devm_platform_profile_register(dev, "asus-wmi", asus, in platform_profile_setup()
3932 if (IS_ERR(asus->ppdev)) { in platform_profile_setup()
3934 return PTR_ERR(asus->ppdev); in platform_profile_setup()
3937 asus->platform_profile_support = true; in platform_profile_setup()
3947 if (asus->driver->quirks->store_backlight_power) in read_backlight_power()
3948 ret = !asus->driver->panel_power; in read_backlight_power()
3972 return -ENODEV; in read_brightness_max()
3995 if ((asus->driver->brightness < bd->props.brightness) || in get_scalar_command()
3996 bd->props.brightness == bd->props.max_brightness) in get_scalar_command()
3998 else if ((asus->driver->brightness > bd->props.brightness) || in get_scalar_command()
3999 bd->props.brightness == 0) in get_scalar_command()
4002 asus->driver->brightness = bd->props.brightness; in get_scalar_command()
4014 if (power != -ENODEV && bd->props.power != power) { in update_bl_status()
4015 ctrl_param = !!(bd->props.power == BACKLIGHT_POWER_ON); in update_bl_status()
4018 if (asus->driver->quirks->store_backlight_power) in update_bl_status()
4019 asus->driver->panel_power = bd->props.power; in update_bl_status()
4023 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
4027 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
4030 ctrl_param = bd->props.brightness; in update_bl_status()
4045 struct backlight_device *bd = asus->backlight_device; in asus_wmi_backlight_notify()
4046 int old = bd->props.brightness; in asus_wmi_backlight_notify()
4050 new = code - NOTIFY_BRNUP_MIN + 1; in asus_wmi_backlight_notify()
4052 new = code - NOTIFY_BRNDOWN_MIN; in asus_wmi_backlight_notify()
4054 bd->props.brightness = new; in asus_wmi_backlight_notify()
4073 if (power == -ENODEV) in asus_wmi_backlight_init()
4081 bd = backlight_device_register(asus->driver->name, in asus_wmi_backlight_init()
4082 &asus->platform_device->dev, asus, in asus_wmi_backlight_init()
4089 asus->backlight_device = bd; in asus_wmi_backlight_init()
4091 if (asus->driver->quirks->store_backlight_power) in asus_wmi_backlight_init()
4092 asus->driver->panel_power = power; in asus_wmi_backlight_init()
4094 bd->props.brightness = read_brightness(bd); in asus_wmi_backlight_init()
4095 bd->props.power = power; in asus_wmi_backlight_init()
4098 asus->driver->brightness = bd->props.brightness; in asus_wmi_backlight_init()
4105 backlight_device_unregister(asus->backlight_device); in asus_wmi_backlight_exit()
4107 asus->backlight_device = NULL; in asus_wmi_backlight_exit()
4146 return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; in read_screenpad_brightness()
4152 return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN; in read_screenpad_brightness()
4165 if (bd->props.power != power) { in update_screenpad_bl_status()
4168 ctrl_param = asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4176 ctrl_param = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4182 asus->driver->screenpad_brightness = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4215 props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN; in asus_screenpad_init()
4217 &asus->platform_device->dev, asus, in asus_screenpad_init()
4224 asus->screenpad_backlight_device = bd; in asus_screenpad_init()
4225 asus->driver->screenpad_brightness = brightness; in asus_screenpad_init()
4226 bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN; in asus_screenpad_init()
4227 bd->props.power = power; in asus_screenpad_init()
4235 backlight_device_unregister(asus->screenpad_backlight_device); in asus_screenpad_exit()
4237 asus->screenpad_backlight_device = NULL; in asus_screenpad_exit()
4240 /* Fn-lock ********************************************************************/
4254 int mode = asus->fnlock_locked; in asus_wmi_fnlock_update()
4265 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_get_event_code()
4266 code = (int)(obj->integer.value & WMI_EVENT_MASK); in asus_wmi_get_event_code()
4268 code = -EIO; in asus_wmi_get_event_code()
4278 if (asus->driver->key_filter) { in asus_wmi_handle_event_code()
4279 asus->driver->key_filter(asus->driver, &code, &key_value, in asus_wmi_handle_event_code()
4292 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
4296 kbd_led_set_by_kbd(asus, asus->kbd_led_wk - 1); in asus_wmi_handle_event_code()
4300 if (asus->kbd_led_wk == asus->kbd_led.max_brightness) in asus_wmi_handle_event_code()
4303 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
4308 asus->fnlock_locked = !asus->fnlock_locked; in asus_wmi_handle_event_code()
4313 if (code == asus->tablet_switch_event_code) { in asus_wmi_handle_event_code()
4319 if (asus->fan_boost_mode_available) in asus_wmi_handle_event_code()
4321 if (asus->throttle_thermal_policy_dev) in asus_wmi_handle_event_code()
4327 if (is_display_toggle(code) && asus->driver->quirks->no_display_toggle) in asus_wmi_handle_event_code()
4330 if (!sparse_keymap_report_event(asus->inputdev, code, in asus_wmi_handle_event_code()
4422 return -EINVAL; in cpufv_store()
4468 int devid = -1; in asus_sysfs_is_visible()
4483 ok = asus->egpu_enable_available; in asus_sysfs_is_visible()
4487 ok = asus->dgpu_disable_available; in asus_sysfs_is_visible()
4489 ok = asus->gpu_mux_dev != 0; in asus_sysfs_is_visible()
4491 ok = asus->fan_boost_mode_available; in asus_sysfs_is_visible()
4493 ok = asus->throttle_thermal_policy_dev != 0; in asus_sysfs_is_visible()
4515 ok = asus->mini_led_dev_id != 0; in asus_sysfs_is_visible()
4517 ok = asus->mini_led_dev_id != 0; in asus_sysfs_is_visible()
4519 if (devid != -1) { in asus_sysfs_is_visible()
4524 return ok ? attr->mode : 0; in asus_sysfs_is_visible()
4534 sysfs_remove_group(&device->dev.kobj, &platform_attribute_group); in asus_wmi_sysfs_exit()
4539 return sysfs_create_group(&device->dev.kobj, &platform_attribute_group); in asus_wmi_sysfs_init()
4546 struct device *dev = &asus->platform_device->dev; in asus_wmi_platform_init()
4557 asus->spec = rv; in asus_wmi_platform_init()
4563 * bit signifies that the laptop is equipped with a Wi-Fi MiniPCI card. in asus_wmi_platform_init()
4568 asus->sfun = rv; in asus_wmi_platform_init()
4586 return -ENODEV; in asus_wmi_platform_init()
4590 asus->dsts_id = ASUS_WMI_METHODID_DCTS; in asus_wmi_platform_init()
4593 asus->dsts_id = ASUS_WMI_METHODID_DSTS; in asus_wmi_platform_init()
4598 if (asus->driver->quirks->wapf >= 0) in asus_wmi_platform_init()
4600 asus->driver->quirks->wapf, NULL); in asus_wmi_platform_init()
4615 struct asus_wmi *asus = m->private; in show_dsts()
4617 u32 retval = -1; in show_dsts()
4619 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); in show_dsts()
4623 seq_printf(m, "DSTS(%#x) = %#x\n", asus->debug.dev_id, retval); in show_dsts()
4630 struct asus_wmi *asus = m->private; in show_devs()
4632 u32 retval = -1; in show_devs()
4634 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, in show_devs()
4639 seq_printf(m, "DEVS(%#x, %#x) = %#x\n", asus->debug.dev_id, in show_devs()
4640 asus->debug.ctrl_param, retval); in show_devs()
4647 struct asus_wmi *asus = m->private; in show_call()
4649 .arg0 = asus->debug.dev_id, in show_call()
4650 .arg1 = asus->debug.ctrl_param, in show_call()
4658 0, asus->debug.method_id, in show_call()
4662 return -EIO; in show_call()
4665 if (obj && obj->type == ACPI_TYPE_INTEGER) in show_call()
4666 seq_printf(m, "%#x(%#x, %#x) = %#x\n", asus->debug.method_id, in show_call()
4667 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
4668 (u32) obj->integer.value); in show_call()
4670 seq_printf(m, "%#x(%#x, %#x) = t:%d\n", asus->debug.method_id, in show_call()
4671 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
4672 obj ? obj->type : -1); in show_call()
4687 struct asus_wmi_debugfs_node *node = inode->i_private; in asus_wmi_debugfs_open()
4689 return single_open(file, node->show, node->asus); in asus_wmi_debugfs_open()
4702 debugfs_remove_recursive(asus->debug.root); in asus_wmi_debugfs_exit()
4709 asus->debug.root = debugfs_create_dir(asus->driver->name, NULL); in asus_wmi_debugfs_init()
4711 debugfs_create_x32("method_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4712 &asus->debug.method_id); in asus_wmi_debugfs_init()
4714 debugfs_create_x32("dev_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4715 &asus->debug.dev_id); in asus_wmi_debugfs_init()
4717 debugfs_create_x32("ctrl_param", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4718 &asus->debug.ctrl_param); in asus_wmi_debugfs_init()
4723 node->asus = asus; in asus_wmi_debugfs_init()
4724 debugfs_create_file(node->name, S_IFREG | S_IRUGO, in asus_wmi_debugfs_init()
4725 asus->debug.root, node, in asus_wmi_debugfs_init()
4734 struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver); in asus_wmi_add()
4743 return -ENOMEM; in asus_wmi_add()
4745 asus->driver = wdrv; in asus_wmi_add()
4746 asus->platform_device = pdev; in asus_wmi_add()
4747 wdrv->platform_device = pdev; in asus_wmi_add()
4748 platform_set_drvdata(asus->platform_device, asus); in asus_wmi_add()
4750 if (wdrv->detect_quirks) in asus_wmi_add()
4751 wdrv->detect_quirks(asus->driver); in asus_wmi_add()
4773 asus->ppt_pl2_sppt = 5; in asus_wmi_add()
4774 asus->ppt_pl1_spl = 5; in asus_wmi_add()
4775 asus->ppt_apu_sppt = 5; in asus_wmi_add()
4776 asus->ppt_platform_sppt = 5; in asus_wmi_add()
4777 asus->ppt_fppt = 5; in asus_wmi_add()
4778 asus->nv_dynamic_boost = 5; in asus_wmi_add()
4779 asus->nv_temp_target = 75; in asus_wmi_add()
4781 asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); in asus_wmi_add()
4782 asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); in asus_wmi_add()
4783 asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); in asus_wmi_add()
4784 asus->oobe_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_OOBE); in asus_wmi_add()
4787 asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; in asus_wmi_add()
4789 asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; in asus_wmi_add()
4792 asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX; in asus_wmi_add()
4794 asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; in asus_wmi_add()
4797 asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE; in asus_wmi_add()
4799 asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE2; in asus_wmi_add()
4802 asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY; in asus_wmi_add()
4804 asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; in asus_wmi_add()
4814 err = asus_wmi_sysfs_init(asus->platform_device); in asus_wmi_add()
4839 asus->driver->wlan_ctrl_by_user = 1; in asus_wmi_add()
4841 if (!(asus->driver->wlan_ctrl_by_user && ashs_present())) { in asus_wmi_add()
4847 if (asus->driver->quirks->wmi_force_als_set) in asus_wmi_add()
4850 if (asus->driver->quirks->xusb2pr) in asus_wmi_add()
4855 if (err && err != -ENODEV) in asus_wmi_add()
4857 } else if (asus->driver->quirks->wmi_backlight_set_devstate) in asus_wmi_add()
4862 if (err && err != -ENODEV) in asus_wmi_add()
4867 asus->fnlock_locked = fnlock_default; in asus_wmi_add()
4871 status = wmi_install_notify_handler(asus->driver->event_guid, in asus_wmi_add()
4874 pr_err("Unable to register notify handler - %d\n", status); in asus_wmi_add()
4875 err = -ENODEV; in asus_wmi_add()
4879 if (asus->driver->i8042_filter) { in asus_wmi_add()
4880 err = i8042_install_filter(asus->driver->i8042_filter, NULL); in asus_wmi_add()
4882 pr_warn("Unable to install key filter - %d\n", err); in asus_wmi_add()
4903 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_add()
4918 if (asus->driver->i8042_filter) in asus_wmi_remove()
4919 i8042_remove_filter(asus->driver->i8042_filter); in asus_wmi_remove()
4920 wmi_remove_notify_handler(asus->driver->event_guid); in asus_wmi_remove()
4927 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_remove()
4935 /* Platform driver - hibernate/resume callbacks *******************************/
4941 if (asus->wlan.rfkill) { in asus_hotk_thaw()
4945 * Work around bios bug - acpi _PTS turns off the wireless led in asus_hotk_thaw()
4960 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_resume()
4977 if (asus->wlan.rfkill) in asus_hotk_restore()
4980 if (asus->bluetooth.rfkill) { in asus_hotk_restore()
4983 rfkill_set_sw_state(asus->bluetooth.rfkill, bl); in asus_hotk_restore()
4985 if (asus->wimax.rfkill) { in asus_hotk_restore()
4987 rfkill_set_sw_state(asus->wimax.rfkill, bl); in asus_hotk_restore()
4989 if (asus->wwan3g.rfkill) { in asus_hotk_restore()
4991 rfkill_set_sw_state(asus->wwan3g.rfkill, bl); in asus_hotk_restore()
4993 if (asus->gps.rfkill) { in asus_hotk_restore()
4995 rfkill_set_sw_state(asus->gps.rfkill, bl); in asus_hotk_restore()
4997 if (asus->uwb.rfkill) { in asus_hotk_restore()
4999 rfkill_set_sw_state(asus->uwb.rfkill, bl); in asus_hotk_restore()
5001 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_restore()
5003 if (asus->oobe_state_available) { in asus_hotk_restore()
5046 pr_warn("failed to register LPS0 sleep handler in asus-wmi\n"); in asus_s2idle_check_register()
5069 struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver); in asus_wmi_probe()
5075 return -ENODEV; in asus_wmi_probe()
5078 if (wdrv->event_guid && !wmi_has_guid(wdrv->event_guid)) { in asus_wmi_probe()
5080 return -ENODEV; in asus_wmi_probe()
5083 if (wdrv->probe) { in asus_wmi_probe()
5084 ret = wdrv->probe(pdev); in asus_wmi_probe()
5108 return -EBUSY; in asus_wmi_register_driver()
5110 platform_driver = &driver->platform_driver; in asus_wmi_register_driver()
5111 platform_driver->remove = asus_wmi_remove; in asus_wmi_register_driver()
5112 platform_driver->driver.owner = driver->owner; in asus_wmi_register_driver()
5113 platform_driver->driver.name = driver->name; in asus_wmi_register_driver()
5114 platform_driver->driver.pm = &asus_pm_ops; in asus_wmi_register_driver()
5132 platform_device_unregister(driver->platform_device); in asus_wmi_unregister_driver()
5133 platform_driver_unregister(&driver->platform_driver); in asus_wmi_unregister_driver()