Lines Matching +full:fn +full:- +full:keymap

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 */
192 u16 mfun; /* probably "Multi-function" to be called */
193 u16 sfun; /* probably "Sub-function" to be called */
203 u32 speed; /* read: RPM/100 - write: 0-255 */
207 * <platform>/ - debugfs root directory
208 * dev_id - current dev_id
209 * ctrl_param - current ctrl_param
210 * method_id - current method_id
211 * devs - call DEVS(dev_id, ctrl_param) and print result
212 * dsts - call DSTS(dev_id) and print result
213 * call - call method_id(dev_id, ctrl_param) and print result
361 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method3()
362 return -EIO; in asus_wmi_evaluate_method3()
366 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_evaluate_method3()
367 tmp = (u32) obj->integer.value; in asus_wmi_evaluate_method3()
377 __func__, method_id, arg0, -ENODEV); in asus_wmi_evaluate_method3()
378 return -ENODEV; in asus_wmi_evaluate_method3()
413 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method5()
414 return -EIO; in asus_wmi_evaluate_method5()
418 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_evaluate_method5()
419 tmp = (u32) obj->integer.value; in asus_wmi_evaluate_method5()
429 __func__, method_id, arg0, -ENODEV); in asus_wmi_evaluate_method5()
430 return -ENODEV; in asus_wmi_evaluate_method5()
461 __func__, method_id, arg0, -EIO); in asus_wmi_evaluate_method_buf()
462 return -EIO; in asus_wmi_evaluate_method_buf()
467 switch (obj->type) { in asus_wmi_evaluate_method_buf()
469 if (obj->buffer.length > size) { in asus_wmi_evaluate_method_buf()
470 err = -ENOSPC; in asus_wmi_evaluate_method_buf()
473 if (obj->buffer.length == 0) { in asus_wmi_evaluate_method_buf()
474 err = -ENODATA; in asus_wmi_evaluate_method_buf()
478 memcpy(ret_buffer, obj->buffer.pointer, obj->buffer.length); in asus_wmi_evaluate_method_buf()
481 err = (u32)obj->integer.value; in asus_wmi_evaluate_method_buf()
484 err = -ENODEV; in asus_wmi_evaluate_method_buf()
490 err = -ENODATA; in asus_wmi_evaluate_method_buf()
493 err = -ENODATA; in asus_wmi_evaluate_method_buf()
522 return -ENOMEM; in asus_wmi_evaluate_method_agfn()
532 return -ENXIO; in asus_wmi_evaluate_method_agfn()
541 err = asus_wmi_evaluate_method(asus->dsts_id, dev_id, 0, retval); in asus_wmi_get_devstate()
547 return -ENODEV; in asus_wmi_get_devstate()
571 return -ENODEV; in asus_wmi_get_devstate_bits()
575 return -ENODEV; in asus_wmi_get_devstate_bits()
599 input_report_switch(asus->inputdev, SW_TABLET_MODE, in asus_wmi_tablet_sw_report()
600 asus->tablet_switch_inverted ? !value : value); in asus_wmi_tablet_sw_report()
601 input_sync(asus->inputdev); in asus_wmi_tablet_sw_report()
606 struct device *dev = &asus->platform_device->dev; in asus_wmi_tablet_sw_init()
611 input_set_capability(asus->inputdev, EV_SW, SW_TABLET_MODE); in asus_wmi_tablet_sw_init()
613 asus->tablet_switch_dev_id = dev_id; in asus_wmi_tablet_sw_init()
614 asus->tablet_switch_event_code = event_code; in asus_wmi_tablet_sw_init()
615 } else if (result == -ENODEV) { in asus_wmi_tablet_sw_init()
616 …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()
618 dev_err(dev, "Error checking for tablet-mode-switch: %d\n", result); in asus_wmi_tablet_sw_init()
624 struct device *dev = &asus->platform_device->dev; in asus_wmi_input_init()
627 asus->inputdev = input_allocate_device(); in asus_wmi_input_init()
628 if (!asus->inputdev) in asus_wmi_input_init()
629 return -ENOMEM; in asus_wmi_input_init()
631 asus->inputdev->name = asus->driver->input_name; in asus_wmi_input_init()
632 asus->inputdev->phys = asus->driver->input_phys; in asus_wmi_input_init()
633 asus->inputdev->id.bustype = BUS_HOST; in asus_wmi_input_init()
634 asus->inputdev->dev.parent = dev; in asus_wmi_input_init()
635 set_bit(EV_REP, asus->inputdev->evbit); in asus_wmi_input_init()
637 err = sparse_keymap_setup(asus->inputdev, asus->driver->keymap, NULL); in asus_wmi_input_init()
641 switch (asus->driver->quirks->tablet_switch_mode) { in asus_wmi_input_init()
645 asus->tablet_switch_inverted = true; in asus_wmi_input_init()
656 err = input_register_device(asus->inputdev); in asus_wmi_input_init()
663 input_free_device(asus->inputdev); in asus_wmi_input_init()
669 if (asus->inputdev) in asus_wmi_input_exit()
670 input_unregister_device(asus->inputdev); in asus_wmi_input_exit()
672 asus->inputdev = NULL; in asus_wmi_input_exit()
681 if (!asus->tablet_switch_dev_id) in asus_wmi_tablet_mode_get_state()
684 result = asus_wmi_get_devstate_simple(asus, asus->tablet_switch_dev_id); in asus_wmi_tablet_mode_get_state()
739 return -EINVAL; in dgpu_disable_store()
741 if (asus->gpu_mux_dev) { in dgpu_disable_store()
742 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in dgpu_disable_store()
747 err = -ENODEV; in dgpu_disable_store()
761 return -EIO; in dgpu_disable_store()
764 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "dgpu_disable"); in dgpu_disable_store()
799 return -EINVAL; in egpu_enable_store()
807 if (asus->gpu_mux_dev) { in egpu_enable_store()
808 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in egpu_enable_store()
815 err = -ENODEV; in egpu_enable_store()
829 return -EIO; in egpu_enable_store()
832 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "egpu_enable"); in egpu_enable_store()
861 result = asus_wmi_get_devstate_simple(asus, asus->gpu_mux_dev); in gpu_mux_mode_show()
881 return -EINVAL; in gpu_mux_mode_store()
883 if (asus->dgpu_disable_available) { in gpu_mux_mode_store()
889 err = -ENODEV; in gpu_mux_mode_store()
895 if (asus->egpu_enable_available) { in gpu_mux_mode_store()
901 err = -ENODEV; in gpu_mux_mode_store()
907 err = asus_wmi_set_devstate(asus->gpu_mux_dev, optimus, &result); in gpu_mux_mode_store()
915 return -EIO; in gpu_mux_mode_store()
918 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "gpu_mux_mode"); in gpu_mux_mode_store()
938 return -EINVAL; in kbd_rgb_mode_store()
949 return -EINVAL; in kbd_rgb_mode_store()
970 err = asus_wmi_evaluate_method3(ASUS_WMI_METHODID_DEVS, asus->kbd_rgb_dev, in kbd_rgb_mode_store()
1001 return -EINVAL; in kbd_rgb_state_store()
1059 return -EINVAL; in ppt_pl2_sppt_store()
1069 return -EIO; in ppt_pl2_sppt_store()
1072 asus->ppt_pl2_sppt = value; in ppt_pl2_sppt_store()
1073 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl2_sppt"); in ppt_pl2_sppt_store()
1084 return sysfs_emit(buf, "%u\n", asus->ppt_pl2_sppt); in ppt_pl2_sppt_show()
1102 return -EINVAL; in ppt_pl1_spl_store()
1112 return -EIO; in ppt_pl1_spl_store()
1115 asus->ppt_pl1_spl = value; in ppt_pl1_spl_store()
1116 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_pl1_spl"); in ppt_pl1_spl_store()
1126 return sysfs_emit(buf, "%u\n", asus->ppt_pl1_spl); in ppt_pl1_spl_show()
1144 return -EINVAL; in ppt_fppt_store()
1154 return -EIO; in ppt_fppt_store()
1157 asus->ppt_fppt = value; in ppt_fppt_store()
1158 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_fpu_sppt"); in ppt_fppt_store()
1169 return sysfs_emit(buf, "%u\n", asus->ppt_fppt); in ppt_fppt_show()
1187 return -EINVAL; in ppt_apu_sppt_store()
1197 return -EIO; in ppt_apu_sppt_store()
1200 asus->ppt_apu_sppt = value; in ppt_apu_sppt_store()
1201 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_apu_sppt"); in ppt_apu_sppt_store()
1212 return sysfs_emit(buf, "%u\n", asus->ppt_apu_sppt); in ppt_apu_sppt_show()
1230 return -EINVAL; in ppt_platform_sppt_store()
1240 return -EIO; in ppt_platform_sppt_store()
1243 asus->ppt_platform_sppt = value; in ppt_platform_sppt_store()
1244 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "ppt_platform_sppt"); in ppt_platform_sppt_store()
1255 return sysfs_emit(buf, "%u\n", asus->ppt_platform_sppt); in ppt_platform_sppt_show()
1273 return -EINVAL; in nv_dynamic_boost_store()
1283 return -EIO; in nv_dynamic_boost_store()
1286 asus->nv_dynamic_boost = value; in nv_dynamic_boost_store()
1287 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_dynamic_boost"); in nv_dynamic_boost_store()
1298 return sysfs_emit(buf, "%u\n", asus->nv_dynamic_boost); in nv_dynamic_boost_show()
1316 return -EINVAL; in nv_temp_target_store()
1326 return -EIO; in nv_temp_target_store()
1329 asus->nv_temp_target = value; in nv_temp_target_store()
1330 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "nv_temp_target"); in nv_temp_target_store()
1341 return sysfs_emit(buf, "%u\n", asus->nv_temp_target); in nv_temp_target_show()
1373 return -EINVAL; in mcu_powersave_store()
1383 return -EIO; in mcu_powersave_store()
1386 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "mcu_powersave"); in mcu_powersave_store()
1408 return -EINVAL; in charge_control_end_threshold_store()
1415 return -EIO; in charge_control_end_threshold_store()
1440 if (strcmp(battery->desc->name, "BAT0") != 0 && in asus_wmi_battery_add()
1441 strcmp(battery->desc->name, "BAT1") != 0 && in asus_wmi_battery_add()
1442 strcmp(battery->desc->name, "BATC") != 0 && in asus_wmi_battery_add()
1443 strcmp(battery->desc->name, "BATT") != 0) in asus_wmi_battery_add()
1444 return -ENODEV; in asus_wmi_battery_add()
1446 if (device_create_file(&battery->dev, in asus_wmi_battery_add()
1448 return -ENODEV; in asus_wmi_battery_add()
1462 device_remove_file(&battery->dev, in asus_wmi_battery_remove()
1475 asus->battery_rsoc_available = false; in asus_wmi_battery_init()
1477 asus->battery_rsoc_available = true; in asus_wmi_battery_init()
1484 if (asus->battery_rsoc_available) in asus_wmi_battery_exit()
1503 ctrl_param = asus->tpd_led_wk; in tpd_led_update()
1514 asus->tpd_led_wk = !!value; in tpd_led_set()
1515 queue_work(asus->led_workqueue, &asus->tpd_led_work); in tpd_led_set()
1536 ctrl_param = 0x80 | (asus->kbd_led_wk & 0x7F); in kbd_led_update()
1545 * bits 0-2: level in kbd_led_read()
1547 * bit 8-10: environment (0: dark, 1: normal, 2: light) in kbd_led_read()
1573 max_level = asus->kbd_led.max_brightness; in do_kbd_led_set()
1575 asus->kbd_led_wk = clamp_val(value, 0, max_level); in do_kbd_led_set()
1583 if (led_cdev->flags & LED_UNREGISTERING) in kbd_led_set()
1591 struct led_classdev *led_cdev = &asus->kbd_led; in kbd_led_set_by_kbd()
1594 led_classdev_notify_brightness_hw_changed(led_cdev, asus->kbd_led_wk); in kbd_led_set_by_kbd()
1627 ctrl_param = asus->wlan_led_wk; in wlan_led_update()
1638 asus->wlan_led_wk = !!value; in wlan_led_set()
1639 queue_work(asus->led_workqueue, &asus->wlan_led_work); in wlan_led_set()
1660 ctrl_param = asus->lightbar_led_wk; in lightbar_led_update()
1671 asus->lightbar_led_wk = !!value; in lightbar_led_set()
1672 queue_work(asus->led_workqueue, &asus->lightbar_led_work); in lightbar_led_set()
1719 led_classdev_unregister(&asus->kbd_led); in asus_wmi_led_exit()
1720 led_classdev_unregister(&asus->tpd_led); in asus_wmi_led_exit()
1721 led_classdev_unregister(&asus->wlan_led); in asus_wmi_led_exit()
1722 led_classdev_unregister(&asus->lightbar_led); in asus_wmi_led_exit()
1723 led_classdev_unregister(&asus->micmute_led); in asus_wmi_led_exit()
1724 led_classdev_unregister(&asus->camera_led); in asus_wmi_led_exit()
1726 if (asus->led_workqueue) in asus_wmi_led_exit()
1727 destroy_workqueue(asus->led_workqueue); in asus_wmi_led_exit()
1734 if (asus->kbd_rgb_dev) in asus_wmi_led_init()
1736 if (asus->kbd_rgb_state_available) in asus_wmi_led_init()
1739 asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); in asus_wmi_led_init()
1740 if (!asus->led_workqueue) in asus_wmi_led_init()
1741 return -ENOMEM; in asus_wmi_led_init()
1744 INIT_WORK(&asus->tpd_led_work, tpd_led_update); in asus_wmi_led_init()
1746 asus->tpd_led.name = "asus::touchpad"; in asus_wmi_led_init()
1747 asus->tpd_led.brightness_set = tpd_led_set; in asus_wmi_led_init()
1748 asus->tpd_led.brightness_get = tpd_led_get; in asus_wmi_led_init()
1749 asus->tpd_led.max_brightness = 1; in asus_wmi_led_init()
1751 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1752 &asus->tpd_led); in asus_wmi_led_init()
1758 pr_info("using asus-wmi for asus::kbd_backlight\n"); in asus_wmi_led_init()
1759 asus->kbd_led_wk = led_val; in asus_wmi_led_init()
1760 asus->kbd_led.name = "asus::kbd_backlight"; in asus_wmi_led_init()
1761 asus->kbd_led.flags = LED_BRIGHT_HW_CHANGED; in asus_wmi_led_init()
1762 asus->kbd_led.brightness_set = kbd_led_set; in asus_wmi_led_init()
1763 asus->kbd_led.brightness_get = kbd_led_get; in asus_wmi_led_init()
1764 asus->kbd_led.max_brightness = 3; in asus_wmi_led_init()
1767 asus->kbd_led.groups = kbd_rgb_mode_groups; in asus_wmi_led_init()
1769 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1770 &asus->kbd_led); in asus_wmi_led_init()
1776 && (asus->driver->quirks->wapf > 0)) { in asus_wmi_led_init()
1777 INIT_WORK(&asus->wlan_led_work, wlan_led_update); in asus_wmi_led_init()
1779 asus->wlan_led.name = "asus::wlan"; in asus_wmi_led_init()
1780 asus->wlan_led.brightness_set = wlan_led_set; in asus_wmi_led_init()
1782 asus->wlan_led.brightness_get = wlan_led_get; in asus_wmi_led_init()
1783 asus->wlan_led.flags = LED_CORE_SUSPENDRESUME; in asus_wmi_led_init()
1784 asus->wlan_led.max_brightness = 1; in asus_wmi_led_init()
1785 asus->wlan_led.default_trigger = "asus-wlan"; in asus_wmi_led_init()
1787 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1788 &asus->wlan_led); in asus_wmi_led_init()
1794 INIT_WORK(&asus->lightbar_led_work, lightbar_led_update); in asus_wmi_led_init()
1796 asus->lightbar_led.name = "asus::lightbar"; in asus_wmi_led_init()
1797 asus->lightbar_led.brightness_set = lightbar_led_set; in asus_wmi_led_init()
1798 asus->lightbar_led.brightness_get = lightbar_led_get; in asus_wmi_led_init()
1799 asus->lightbar_led.max_brightness = 1; in asus_wmi_led_init()
1801 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1802 &asus->lightbar_led); in asus_wmi_led_init()
1806 asus->micmute_led.name = "platform::micmute"; in asus_wmi_led_init()
1807 asus->micmute_led.max_brightness = 1; in asus_wmi_led_init()
1808 asus->micmute_led.brightness_set_blocking = micmute_led_set; in asus_wmi_led_init()
1809 asus->micmute_led.default_trigger = "audio-micmute"; in asus_wmi_led_init()
1811 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1812 &asus->micmute_led); in asus_wmi_led_init()
1818 asus->camera_led.name = "asus::camera"; in asus_wmi_led_init()
1819 asus->camera_led.max_brightness = 1; in asus_wmi_led_init()
1820 asus->camera_led.brightness_get = camera_led_get; in asus_wmi_led_init()
1821 asus->camera_led.brightness_set_blocking = camera_led_set; in asus_wmi_led_init()
1823 rv = led_classdev_register(&asus->platform_device->dev, in asus_wmi_led_init()
1824 &asus->camera_led); in asus_wmi_led_init()
1868 mutex_lock(&asus->wmi_lock); in asus_rfkill_hotplug()
1870 mutex_unlock(&asus->wmi_lock); in asus_rfkill_hotplug()
1872 mutex_lock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1875 if (asus->wlan.rfkill) in asus_rfkill_hotplug()
1876 rfkill_set_sw_state(asus->wlan.rfkill, blocked); in asus_rfkill_hotplug()
1878 if (asus->hotplug_slot.ops) { in asus_rfkill_hotplug()
1922 mutex_unlock(&asus->hotplug_lock); in asus_rfkill_hotplug()
1939 queue_work(asus->hotplug_workqueue, &asus->hotplug_work); in asus_rfkill_notify()
1949 return -ENODEV; in asus_register_rfkill_notifier()
2003 int ret = -ENOMEM; in asus_setup_pci_hotplug()
2008 return -ENODEV; in asus_setup_pci_hotplug()
2011 asus->hotplug_workqueue = in asus_setup_pci_hotplug()
2013 if (!asus->hotplug_workqueue) in asus_setup_pci_hotplug()
2016 INIT_WORK(&asus->hotplug_work, asus_hotplug_work); in asus_setup_pci_hotplug()
2018 asus->hotplug_slot.ops = &asus_hotplug_slot_ops; in asus_setup_pci_hotplug()
2020 ret = pci_hp_register(&asus->hotplug_slot, bus, 0, "asus-wifi"); in asus_setup_pci_hotplug()
2022 pr_err("Unable to register hotplug slot - %d\n", ret); in asus_setup_pci_hotplug()
2029 asus->hotplug_slot.ops = NULL; in asus_setup_pci_hotplug()
2030 destroy_workqueue(asus->hotplug_workqueue); in asus_setup_pci_hotplug()
2042 u32 dev_id = priv->dev_id; in asus_rfkill_set()
2053 priv->asus->driver->wlan_ctrl_by_user) in asus_rfkill_set()
2064 result = asus_wmi_get_devstate_simple(priv->asus, priv->dev_id); in asus_rfkill_query()
2069 rfkill_set_sw_state(priv->rfkill, !result); in asus_rfkill_query()
2075 struct asus_wmi *asus = priv->asus; in asus_rfkill_wlan_set()
2085 mutex_lock(&asus->wmi_lock); in asus_rfkill_wlan_set()
2087 mutex_unlock(&asus->wmi_lock); in asus_rfkill_wlan_set()
2106 struct rfkill **rfkill = &arfkill->rfkill; in asus_new_rfkill()
2111 arfkill->dev_id = dev_id; in asus_new_rfkill()
2112 arfkill->asus = asus; in asus_new_rfkill()
2115 asus->driver->quirks->hotplug_wireless) in asus_new_rfkill()
2116 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
2119 *rfkill = rfkill_alloc(name, &asus->platform_device->dev, type, in asus_new_rfkill()
2123 return -EINVAL; in asus_new_rfkill()
2126 (asus->driver->quirks->wapf > 0)) in asus_new_rfkill()
2127 rfkill_set_led_trigger_name(*rfkill, "asus-wlan"); in asus_new_rfkill()
2141 if (asus->driver->wlan_ctrl_by_user && ashs_present()) in asus_wmi_rfkill_exit()
2147 if (asus->wlan.rfkill) { in asus_wmi_rfkill_exit()
2148 rfkill_unregister(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
2149 rfkill_destroy(asus->wlan.rfkill); in asus_wmi_rfkill_exit()
2150 asus->wlan.rfkill = NULL; in asus_wmi_rfkill_exit()
2157 if (asus->hotplug_slot.ops) in asus_wmi_rfkill_exit()
2158 pci_hp_deregister(&asus->hotplug_slot); in asus_wmi_rfkill_exit()
2159 if (asus->hotplug_workqueue) in asus_wmi_rfkill_exit()
2160 destroy_workqueue(asus->hotplug_workqueue); in asus_wmi_rfkill_exit()
2162 if (asus->bluetooth.rfkill) { in asus_wmi_rfkill_exit()
2163 rfkill_unregister(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
2164 rfkill_destroy(asus->bluetooth.rfkill); in asus_wmi_rfkill_exit()
2165 asus->bluetooth.rfkill = NULL; in asus_wmi_rfkill_exit()
2167 if (asus->wimax.rfkill) { in asus_wmi_rfkill_exit()
2168 rfkill_unregister(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
2169 rfkill_destroy(asus->wimax.rfkill); in asus_wmi_rfkill_exit()
2170 asus->wimax.rfkill = NULL; in asus_wmi_rfkill_exit()
2172 if (asus->wwan3g.rfkill) { in asus_wmi_rfkill_exit()
2173 rfkill_unregister(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
2174 rfkill_destroy(asus->wwan3g.rfkill); in asus_wmi_rfkill_exit()
2175 asus->wwan3g.rfkill = NULL; in asus_wmi_rfkill_exit()
2177 if (asus->gps.rfkill) { in asus_wmi_rfkill_exit()
2178 rfkill_unregister(asus->gps.rfkill); in asus_wmi_rfkill_exit()
2179 rfkill_destroy(asus->gps.rfkill); in asus_wmi_rfkill_exit()
2180 asus->gps.rfkill = NULL; in asus_wmi_rfkill_exit()
2182 if (asus->uwb.rfkill) { in asus_wmi_rfkill_exit()
2183 rfkill_unregister(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
2184 rfkill_destroy(asus->uwb.rfkill); in asus_wmi_rfkill_exit()
2185 asus->uwb.rfkill = NULL; in asus_wmi_rfkill_exit()
2193 mutex_init(&asus->hotplug_lock); in asus_wmi_rfkill_init()
2194 mutex_init(&asus->wmi_lock); in asus_wmi_rfkill_init()
2196 result = asus_new_rfkill(asus, &asus->wlan, "asus-wlan", in asus_wmi_rfkill_init()
2199 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2202 result = asus_new_rfkill(asus, &asus->bluetooth, in asus_wmi_rfkill_init()
2203 "asus-bluetooth", RFKILL_TYPE_BLUETOOTH, in asus_wmi_rfkill_init()
2206 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2209 result = asus_new_rfkill(asus, &asus->wimax, "asus-wimax", in asus_wmi_rfkill_init()
2212 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2215 result = asus_new_rfkill(asus, &asus->wwan3g, "asus-wwan3g", in asus_wmi_rfkill_init()
2218 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2221 result = asus_new_rfkill(asus, &asus->gps, "asus-gps", in asus_wmi_rfkill_init()
2224 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2227 result = asus_new_rfkill(asus, &asus->uwb, "asus-uwb", in asus_wmi_rfkill_init()
2230 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2233 if (!asus->driver->quirks->hotplug_wireless) in asus_wmi_rfkill_init()
2238 * If we get -EBUSY then something else is handling the PCI hotplug - in asus_wmi_rfkill_init()
2241 if (result == -EBUSY) in asus_wmi_rfkill_init()
2254 if (result && result != -ENODEV) in asus_wmi_rfkill_init()
2257 if (result == -ENODEV) in asus_wmi_rfkill_init()
2291 return -EINVAL; in panel_od_store()
2302 return -EIO; in panel_od_store()
2305 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "panel_od"); in panel_od_store()
2340 return -EINVAL; in boot_sound_store()
2350 return -EIO; in boot_sound_store()
2353 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "boot_sound"); in boot_sound_store()
2359 /* Mini-LED mode **************************************************************/
2367 err = asus_wmi_get_devstate(asus, asus->mini_led_dev_id, &value); in mini_led_mode_show()
2373 * Remap the mode values to match previous generation mini-led. The last gen in mini_led_mode_show()
2376 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { in mini_led_mode_show()
2406 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE && in mini_led_mode_store()
2408 return -EINVAL; in mini_led_mode_store()
2409 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2 && in mini_led_mode_store()
2411 return -EINVAL; in mini_led_mode_store()
2415 * generation of mini-LED with 0 == off, 1 == on. in mini_led_mode_store()
2417 if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { in mini_led_mode_store()
2431 err = asus_wmi_set_devstate(asus->mini_led_dev_id, mode, &result); in mini_led_mode_store()
2433 pr_warn("Failed to set mini-LED: %d\n", err); in mini_led_mode_store()
2438 pr_warn("Failed to set mini-LED mode (result): 0x%x\n", result); in mini_led_mode_store()
2439 return -EIO; in mini_led_mode_store()
2442 sysfs_notify(&asus->platform_device->dev.kobj, NULL, "mini_led_mode"); in mini_led_mode_store()
2453 switch (asus->mini_led_dev_id) { in available_mini_led_mode_show()
2471 u32 ports_available = asus->driver->quirks->xusb2pr; in asus_wmi_set_xusb2pr()
2517 return -EINVAL; in asus_agfn_fan_speed_read()
2522 return -ENXIO; in asus_agfn_fan_speed_read()
2545 return -EINVAL; in asus_agfn_fan_speed_write()
2550 return -ENXIO; in asus_agfn_fan_speed_write()
2553 asus->agfn_pwm = *speed; in asus_agfn_fan_speed_write()
2580 * - ASUS_WMI_UNSUPPORTED_METHOD is returned in asus_wmi_has_agfn_fan()
2581 * - reverved bits are non-zero in asus_wmi_has_agfn_fan()
2582 * - sfun and presence bit are not set in asus_wmi_has_agfn_fan()
2585 || (!asus->sfun && !(value & ASUS_WMI_DSTS_PRESENCE_BIT))); in asus_wmi_has_agfn_fan()
2593 switch (asus->fan_type) { in asus_fan_set_auto()
2601 return -EIO; in asus_fan_set_auto()
2607 return -ENXIO; in asus_fan_set_auto()
2611 return -ENXIO; in asus_fan_set_auto()
2617 if (asus->gpu_fan_type == FAN_TYPE_SPEC83) { in asus_fan_set_auto()
2624 return -EIO; in asus_fan_set_auto()
2639 if (asus->agfn_pwm >= 0) in pwm1_show()
2640 return sysfs_emit(buf, "%d\n", asus->agfn_pwm); in pwm1_show()
2644 * we read a current value through the (now-deprecated) FAN_CTRL device. in pwm1_show()
2660 value = -1; in pwm1_show()
2684 asus->fan_pwm_mode = ASUS_FAN_CTRL_MANUAL; in pwm1_store()
2697 switch (asus->fan_type) { in fan1_input_show()
2709 if (asus->fan_pwm_mode == ASUS_FAN_CTRL_MANUAL) in fan1_input_show()
2710 return -ENXIO; in fan1_input_show()
2715 return -ENXIO; in fan1_input_show()
2720 return -ENXIO; in fan1_input_show()
2723 return sysfs_emit(buf, "%d\n", value < 0 ? -1 : value * 100); in fan1_input_show()
2741 return sysfs_emit(buf, "%d\n", asus->fan_pwm_mode); in pwm1_enable_show()
2759 if (asus->fan_type == FAN_TYPE_SPEC83) { in pwm1_enable_store()
2768 return -EINVAL; in pwm1_enable_store()
2777 return -EIO; in pwm1_enable_store()
2778 } else if (asus->fan_type == FAN_TYPE_AGFN) { in pwm1_enable_store()
2790 return -EINVAL; in pwm1_enable_store()
2794 asus->fan_pwm_mode = state; in pwm1_enable_store()
2797 if (asus->cpu_fan_curve_available) in pwm1_enable_store()
2798 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in pwm1_enable_store()
2799 if (asus->gpu_fan_curve_available) in pwm1_enable_store()
2800 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in pwm1_enable_store()
2801 if (asus->mid_fan_curve_available) in pwm1_enable_store()
2802 asus->custom_fan_curves[FAN_CURVE_DEV_MID].enabled = false; in pwm1_enable_store()
2865 return sysfs_emit(buf, "%d\n", asus->gpu_fan_pwm_mode); in pwm2_enable_show()
2890 return -EINVAL; in pwm2_enable_store()
2899 return -EIO; in pwm2_enable_store()
2901 asus->gpu_fan_pwm_mode = state; in pwm2_enable_store()
2911 return sysfs_emit(buf, "%d\n", asus->mid_fan_pwm_mode); in pwm3_enable_show()
2936 return -EINVAL; in pwm3_enable_store()
2945 return -EIO; in pwm3_enable_store()
2947 asus->mid_fan_pwm_mode = state; in pwm3_enable_store()
2957 /* Fan2 - GPU fan */
2961 /* Fan3 - Middle/center fan */
2989 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_hwmon_sysfs_is_visible()
2993 if (asus->fan_type != FAN_TYPE_AGFN) in asus_hwmon_sysfs_is_visible()
2998 if (asus->fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3003 if (asus->gpu_fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3008 if (asus->mid_fan_type == FAN_TYPE_NONE) in asus_hwmon_sysfs_is_visible()
3019 * If the temperature value in deci-Kelvin is near the absolute in asus_hwmon_sysfs_is_visible()
3026 return attr->mode; in asus_hwmon_sysfs_is_visible()
3037 struct device *dev = &asus->platform_device->dev; in asus_wmi_hwmon_init()
3052 asus->gpu_fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3053 asus->mid_fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3054 asus->fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3055 asus->agfn_pwm = -1; in asus_wmi_fan_init()
3057 if (asus->driver->quirks->wmi_ignore_fan) in asus_wmi_fan_init()
3058 asus->fan_type = FAN_TYPE_NONE; in asus_wmi_fan_init()
3060 asus->fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3062 asus->fan_type = FAN_TYPE_AGFN; in asus_wmi_fan_init()
3066 asus->gpu_fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3070 asus->mid_fan_type = FAN_TYPE_SPEC83; in asus_wmi_fan_init()
3072 if (asus->fan_type == FAN_TYPE_NONE) in asus_wmi_fan_init()
3073 return -ENODEV; in asus_wmi_fan_init()
3076 asus->fan_pwm_mode = ASUS_FAN_CTRL_AUTO; in asus_wmi_fan_init()
3087 asus->fan_boost_mode_available = false; in fan_boost_mode_check_present()
3092 if (err == -ENODEV) in fan_boost_mode_check_present()
3100 asus->fan_boost_mode_available = true; in fan_boost_mode_check_present()
3101 asus->fan_boost_mode_mask = result & ASUS_FAN_BOOST_MODES_MASK; in fan_boost_mode_check_present()
3113 value = asus->fan_boost_mode; in fan_boost_mode_write()
3119 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in fan_boost_mode_write()
3130 return -EIO; in fan_boost_mode_write()
3138 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_switch_next()
3140 if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_NORMAL) { in fan_boost_mode_switch_next()
3142 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_OVERBOOST; in fan_boost_mode_switch_next()
3144 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
3145 } else if (asus->fan_boost_mode == ASUS_FAN_BOOST_MODE_OVERBOOST) { in fan_boost_mode_switch_next()
3147 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_SILENT; in fan_boost_mode_switch_next()
3149 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
3151 asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL; in fan_boost_mode_switch_next()
3162 return sysfs_emit(buf, "%d\n", asus->fan_boost_mode); in fan_boost_mode_show()
3170 u8 mask = asus->fan_boost_mode_mask; in fan_boost_mode_store()
3182 return -EINVAL; in fan_boost_mode_store()
3185 return -EINVAL; in fan_boost_mode_store()
3187 return -EINVAL; in fan_boost_mode_store()
3190 asus->fan_boost_mode = new_mode; in fan_boost_mode_store()
3196 // Fan boost mode: 0 - normal, 1 - overboost, 2 - silent
3206 data->temps[i] = buf[i]; in fan_curve_copy_from_buf()
3210 data->percents[i] = in fan_curve_copy_from_buf()
3222 if (asus->throttle_thermal_policy_dev) in fan_curve_get_factory_default()
3223 mode = asus->throttle_thermal_policy_mode; in fan_curve_get_factory_default()
3230 err = asus_wmi_evaluate_method_buf(asus->dsts_id, fan_dev, mode, buf, in fan_curve_get_factory_default()
3244 curves = &asus->custom_fan_curves[fan_idx]; in fan_curve_get_factory_default()
3245 curves->device_id = fan_dev; in fan_curve_get_factory_default()
3259 if (asus->fan_type == FAN_TYPE_NONE) in fan_curve_check_present()
3275 int index = to_sensor_dev_attr(attr)->index; in fan_curve_attr_select()
3277 return &asus->custom_fan_curves[index]; in fan_curve_attr_select()
3284 int nr = to_sensor_dev_attr_2(attr)->nr; in fan_curve_attr_2_select()
3286 return &asus->custom_fan_curves[nr & ~FAN_CURVE_PWM_MASK]; in fan_curve_attr_2_select()
3298 pwm = dev_attr->nr & FAN_CURVE_PWM_MASK; in fan_curve_show()
3299 index = dev_attr->index; in fan_curve_show()
3302 value = data->percents[index]; in fan_curve_show()
3304 value = data->temps[index]; in fan_curve_show()
3316 u8 *percents = data->percents; in fan_curve_write()
3317 u8 *temps = data->temps; in fan_curve_write()
3320 if (!data->enabled) in fan_curve_write()
3333 data->device_id, in fan_curve_write()
3348 pwm = dev_attr->nr & FAN_CURVE_PWM_MASK; in fan_curve_store()
3349 index = dev_attr->index; in fan_curve_store()
3356 data->percents[index] = value; in fan_curve_store()
3358 data->temps[index] = value; in fan_curve_store()
3363 * many changes as one-write-per-change. in fan_curve_store()
3365 data->enabled = false; in fan_curve_store()
3379 if (data->enabled) in fan_curve_enable_show()
3401 data->enabled = true; in fan_curve_enable_store()
3404 data->enabled = false; in fan_curve_enable_store()
3411 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
3414 data->enabled = false; in fan_curve_enable_store()
3417 return -EINVAL; in fan_curve_enable_store()
3420 if (data->enabled) { in fan_curve_enable_store()
3429 if (asus->throttle_thermal_policy_dev) { in fan_curve_enable_store()
3434 } else if (asus->fan_type == FAN_TYPE_SPEC83) { in fan_curve_enable_store()
3440 err = fan_curve_get_factory_default(asus, data->device_id); in fan_curve_enable_store()
3621 struct asus_wmi *asus = dev_get_drvdata(dev->parent); in asus_fan_curve_is_visible()
3627 if (asus->cpu_fan_curve_available && attr->name[3] == '1') in asus_fan_curve_is_visible()
3630 if (asus->gpu_fan_curve_available && attr->name[3] == '2') in asus_fan_curve_is_visible()
3633 if (asus->mid_fan_curve_available && attr->name[3] == '3') in asus_fan_curve_is_visible()
3651 struct device *dev = &asus->platform_device->dev; in asus_wmi_custom_fan_curve_init()
3655 err = fan_curve_check_present(asus, &asus->cpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3663 err = fan_curve_check_present(asus, &asus->gpu_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3671 err = fan_curve_check_present(asus, &asus->mid_fan_curve_available, in asus_wmi_custom_fan_curve_init()
3679 if (!asus->cpu_fan_curve_available in asus_wmi_custom_fan_curve_init()
3680 && !asus->gpu_fan_curve_available in asus_wmi_custom_fan_curve_init()
3681 && !asus->mid_fan_curve_available) in asus_wmi_custom_fan_curve_init()
3702 if (asus->throttle_thermal_policy_dev == ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO) { in throttle_thermal_policy_write()
3703 switch (asus->throttle_thermal_policy_mode) { in throttle_thermal_policy_write()
3714 return -EINVAL; in throttle_thermal_policy_write()
3717 value = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_write()
3721 err = asus_wmi_set_devstate(asus->throttle_thermal_policy_dev, value, NULL); in throttle_thermal_policy_write()
3723 sysfs_notify(&asus->platform_device->dev.kobj, NULL, in throttle_thermal_policy_write()
3732 if (asus->cpu_fan_curve_available) in throttle_thermal_policy_write()
3733 asus->custom_fan_curves[FAN_CURVE_DEV_CPU].enabled = false; in throttle_thermal_policy_write()
3734 if (asus->gpu_fan_curve_available) in throttle_thermal_policy_write()
3735 asus->custom_fan_curves[FAN_CURVE_DEV_GPU].enabled = false; in throttle_thermal_policy_write()
3736 if (asus->mid_fan_curve_available) in throttle_thermal_policy_write()
3737 asus->custom_fan_curves[FAN_CURVE_DEV_MID].enabled = false; in throttle_thermal_policy_write()
3744 if (!asus->throttle_thermal_policy_dev) in throttle_thermal_policy_set_default()
3747 asus->throttle_thermal_policy_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; in throttle_thermal_policy_set_default()
3755 u8 mode = asus->throttle_thermal_policy_mode; in throttle_thermal_policy_show()
3774 return -EINVAL; in throttle_thermal_policy_store()
3776 asus->throttle_thermal_policy_mode = new_mode; in throttle_thermal_policy_store()
3785 platform_profile_notify(asus->ppdev); in throttle_thermal_policy_store()
3791 * Throttle thermal policy: 0 - default, 1 - overboost, 2 - silent
3803 tp = asus->throttle_thermal_policy_mode; in asus_wmi_platform_profile_get()
3816 return -EINVAL; in asus_wmi_platform_profile_get()
3841 return -EOPNOTSUPP; in asus_wmi_platform_profile_set()
3844 asus->throttle_thermal_policy_mode = tp; in asus_wmi_platform_profile_set()
3865 struct device *dev = &asus->platform_device->dev; in platform_profile_setup()
3872 if (!asus->throttle_thermal_policy_dev) in platform_profile_setup()
3887 asus->ppdev = devm_platform_profile_register(dev, "asus-wmi", asus, in platform_profile_setup()
3889 if (IS_ERR(asus->ppdev)) { in platform_profile_setup()
3891 return PTR_ERR(asus->ppdev); in platform_profile_setup()
3894 asus->platform_profile_support = true; in platform_profile_setup()
3904 if (asus->driver->quirks->store_backlight_power) in read_backlight_power()
3905 ret = !asus->driver->panel_power; in read_backlight_power()
3929 return -ENODEV; in read_brightness_max()
3952 if ((asus->driver->brightness < bd->props.brightness) || in get_scalar_command()
3953 bd->props.brightness == bd->props.max_brightness) in get_scalar_command()
3955 else if ((asus->driver->brightness > bd->props.brightness) || in get_scalar_command()
3956 bd->props.brightness == 0) in get_scalar_command()
3959 asus->driver->brightness = bd->props.brightness; in get_scalar_command()
3971 if (power != -ENODEV && bd->props.power != power) { in update_bl_status()
3972 ctrl_param = !!(bd->props.power == BACKLIGHT_POWER_ON); in update_bl_status()
3975 if (asus->driver->quirks->store_backlight_power) in update_bl_status()
3976 asus->driver->panel_power = bd->props.power; in update_bl_status()
3980 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
3984 if (asus->driver->quirks->scalar_panel_brightness) in update_bl_status()
3987 ctrl_param = bd->props.brightness; in update_bl_status()
4002 struct backlight_device *bd = asus->backlight_device; in asus_wmi_backlight_notify()
4003 int old = bd->props.brightness; in asus_wmi_backlight_notify()
4007 new = code - NOTIFY_BRNUP_MIN + 1; in asus_wmi_backlight_notify()
4009 new = code - NOTIFY_BRNDOWN_MIN; in asus_wmi_backlight_notify()
4011 bd->props.brightness = new; in asus_wmi_backlight_notify()
4030 if (power == -ENODEV) in asus_wmi_backlight_init()
4038 bd = backlight_device_register(asus->driver->name, in asus_wmi_backlight_init()
4039 &asus->platform_device->dev, asus, in asus_wmi_backlight_init()
4046 asus->backlight_device = bd; in asus_wmi_backlight_init()
4048 if (asus->driver->quirks->store_backlight_power) in asus_wmi_backlight_init()
4049 asus->driver->panel_power = power; in asus_wmi_backlight_init()
4051 bd->props.brightness = read_brightness(bd); in asus_wmi_backlight_init()
4052 bd->props.power = power; in asus_wmi_backlight_init()
4055 asus->driver->brightness = bd->props.brightness; in asus_wmi_backlight_init()
4062 backlight_device_unregister(asus->backlight_device); in asus_wmi_backlight_exit()
4064 asus->backlight_device = NULL; in asus_wmi_backlight_exit()
4103 return asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; in read_screenpad_brightness()
4109 return (retval & ASUS_WMI_DSTS_BRIGHTNESS_MASK) - ASUS_SCREENPAD_BRIGHT_MIN; in read_screenpad_brightness()
4122 if (bd->props.power != power) { in update_screenpad_bl_status()
4125 ctrl_param = asus->driver->screenpad_brightness - ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4133 ctrl_param = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4139 asus->driver->screenpad_brightness = bd->props.brightness + ASUS_SCREENPAD_BRIGHT_MIN; in update_screenpad_bl_status()
4172 props.max_brightness = ASUS_SCREENPAD_BRIGHT_MAX - ASUS_SCREENPAD_BRIGHT_MIN; in asus_screenpad_init()
4174 &asus->platform_device->dev, asus, in asus_screenpad_init()
4181 asus->screenpad_backlight_device = bd; in asus_screenpad_init()
4182 asus->driver->screenpad_brightness = brightness; in asus_screenpad_init()
4183 bd->props.brightness = brightness - ASUS_SCREENPAD_BRIGHT_MIN; in asus_screenpad_init()
4184 bd->props.power = power; in asus_screenpad_init()
4192 backlight_device_unregister(asus->screenpad_backlight_device); in asus_screenpad_exit()
4194 asus->screenpad_backlight_device = NULL; in asus_screenpad_exit()
4197 /* Fn-lock ********************************************************************/
4211 int mode = asus->fnlock_locked; in asus_wmi_fnlock_update()
4222 if (obj && obj->type == ACPI_TYPE_INTEGER) in asus_wmi_get_event_code()
4223 code = (int)(obj->integer.value & WMI_EVENT_MASK); in asus_wmi_get_event_code()
4225 code = -EIO; in asus_wmi_get_event_code()
4235 if (asus->driver->key_filter) { in asus_wmi_handle_event_code()
4236 asus->driver->key_filter(asus->driver, &code, &key_value, in asus_wmi_handle_event_code()
4249 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
4253 kbd_led_set_by_kbd(asus, asus->kbd_led_wk - 1); in asus_wmi_handle_event_code()
4257 if (asus->kbd_led_wk == asus->kbd_led.max_brightness) in asus_wmi_handle_event_code()
4260 kbd_led_set_by_kbd(asus, asus->kbd_led_wk + 1); in asus_wmi_handle_event_code()
4265 asus->fnlock_locked = !asus->fnlock_locked; in asus_wmi_handle_event_code()
4270 if (code == asus->tablet_switch_event_code) { in asus_wmi_handle_event_code()
4276 if (asus->fan_boost_mode_available) in asus_wmi_handle_event_code()
4278 if (asus->throttle_thermal_policy_dev) in asus_wmi_handle_event_code()
4284 if (is_display_toggle(code) && asus->driver->quirks->no_display_toggle) in asus_wmi_handle_event_code()
4287 if (!sparse_keymap_report_event(asus->inputdev, code, in asus_wmi_handle_event_code()
4379 return -EINVAL; in cpufv_store()
4425 int devid = -1; in asus_sysfs_is_visible()
4440 ok = asus->egpu_enable_available; in asus_sysfs_is_visible()
4444 ok = asus->dgpu_disable_available; in asus_sysfs_is_visible()
4446 ok = asus->gpu_mux_dev != 0; in asus_sysfs_is_visible()
4448 ok = asus->fan_boost_mode_available; in asus_sysfs_is_visible()
4450 ok = asus->throttle_thermal_policy_dev != 0; in asus_sysfs_is_visible()
4472 ok = asus->mini_led_dev_id != 0; in asus_sysfs_is_visible()
4474 ok = asus->mini_led_dev_id != 0; in asus_sysfs_is_visible()
4476 if (devid != -1) { in asus_sysfs_is_visible()
4481 return ok ? attr->mode : 0; in asus_sysfs_is_visible()
4491 sysfs_remove_group(&device->dev.kobj, &platform_attribute_group); in asus_wmi_sysfs_exit()
4496 return sysfs_create_group(&device->dev.kobj, &platform_attribute_group); in asus_wmi_sysfs_init()
4503 struct device *dev = &asus->platform_device->dev; in asus_wmi_platform_init()
4514 asus->spec = rv; in asus_wmi_platform_init()
4520 * bit signifies that the laptop is equipped with a Wi-Fi MiniPCI card. in asus_wmi_platform_init()
4525 asus->sfun = rv; in asus_wmi_platform_init()
4543 return -ENODEV; in asus_wmi_platform_init()
4547 asus->dsts_id = ASUS_WMI_METHODID_DCTS; in asus_wmi_platform_init()
4550 asus->dsts_id = ASUS_WMI_METHODID_DSTS; in asus_wmi_platform_init()
4553 /* CWAP allow to define the behavior of the Fn+F2 key, in asus_wmi_platform_init()
4555 if (asus->driver->quirks->wapf >= 0) in asus_wmi_platform_init()
4557 asus->driver->quirks->wapf, NULL); in asus_wmi_platform_init()
4572 struct asus_wmi *asus = m->private; in show_dsts()
4574 u32 retval = -1; in show_dsts()
4576 err = asus_wmi_get_devstate(asus, asus->debug.dev_id, &retval); in show_dsts()
4580 seq_printf(m, "DSTS(%#x) = %#x\n", asus->debug.dev_id, retval); in show_dsts()
4587 struct asus_wmi *asus = m->private; in show_devs()
4589 u32 retval = -1; in show_devs()
4591 err = asus_wmi_set_devstate(asus->debug.dev_id, asus->debug.ctrl_param, in show_devs()
4596 seq_printf(m, "DEVS(%#x, %#x) = %#x\n", asus->debug.dev_id, in show_devs()
4597 asus->debug.ctrl_param, retval); in show_devs()
4604 struct asus_wmi *asus = m->private; in show_call()
4606 .arg0 = asus->debug.dev_id, in show_call()
4607 .arg1 = asus->debug.ctrl_param, in show_call()
4615 0, asus->debug.method_id, in show_call()
4619 return -EIO; in show_call()
4622 if (obj && obj->type == ACPI_TYPE_INTEGER) in show_call()
4623 seq_printf(m, "%#x(%#x, %#x) = %#x\n", asus->debug.method_id, in show_call()
4624 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
4625 (u32) obj->integer.value); in show_call()
4627 seq_printf(m, "%#x(%#x, %#x) = t:%d\n", asus->debug.method_id, in show_call()
4628 asus->debug.dev_id, asus->debug.ctrl_param, in show_call()
4629 obj ? obj->type : -1); in show_call()
4644 struct asus_wmi_debugfs_node *node = inode->i_private; in asus_wmi_debugfs_open()
4646 return single_open(file, node->show, node->asus); in asus_wmi_debugfs_open()
4659 debugfs_remove_recursive(asus->debug.root); in asus_wmi_debugfs_exit()
4666 asus->debug.root = debugfs_create_dir(asus->driver->name, NULL); in asus_wmi_debugfs_init()
4668 debugfs_create_x32("method_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4669 &asus->debug.method_id); in asus_wmi_debugfs_init()
4671 debugfs_create_x32("dev_id", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4672 &asus->debug.dev_id); in asus_wmi_debugfs_init()
4674 debugfs_create_x32("ctrl_param", S_IRUGO | S_IWUSR, asus->debug.root, in asus_wmi_debugfs_init()
4675 &asus->debug.ctrl_param); in asus_wmi_debugfs_init()
4680 node->asus = asus; in asus_wmi_debugfs_init()
4681 debugfs_create_file(node->name, S_IFREG | S_IRUGO, in asus_wmi_debugfs_init()
4682 asus->debug.root, node, in asus_wmi_debugfs_init()
4691 struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver); in asus_wmi_add()
4700 return -ENOMEM; in asus_wmi_add()
4702 asus->driver = wdrv; in asus_wmi_add()
4703 asus->platform_device = pdev; in asus_wmi_add()
4704 wdrv->platform_device = pdev; in asus_wmi_add()
4705 platform_set_drvdata(asus->platform_device, asus); in asus_wmi_add()
4707 if (wdrv->detect_quirks) in asus_wmi_add()
4708 wdrv->detect_quirks(asus->driver); in asus_wmi_add()
4715 asus->ppt_pl2_sppt = 5; in asus_wmi_add()
4716 asus->ppt_pl1_spl = 5; in asus_wmi_add()
4717 asus->ppt_apu_sppt = 5; in asus_wmi_add()
4718 asus->ppt_platform_sppt = 5; in asus_wmi_add()
4719 asus->ppt_fppt = 5; in asus_wmi_add()
4720 asus->nv_dynamic_boost = 5; in asus_wmi_add()
4721 asus->nv_temp_target = 75; in asus_wmi_add()
4723 asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); in asus_wmi_add()
4724 asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); in asus_wmi_add()
4725 asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); in asus_wmi_add()
4726 asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) in asus_wmi_add()
4730 asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; in asus_wmi_add()
4732 asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; in asus_wmi_add()
4735 asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX; in asus_wmi_add()
4737 asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; in asus_wmi_add()
4740 asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE; in asus_wmi_add()
4742 asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE2; in asus_wmi_add()
4745 asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY; in asus_wmi_add()
4747 asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; in asus_wmi_add()
4757 err = asus_wmi_sysfs_init(asus->platform_device); in asus_wmi_add()
4781 asus->driver->wlan_ctrl_by_user = 1; in asus_wmi_add()
4783 if (!(asus->driver->wlan_ctrl_by_user && ashs_present())) { in asus_wmi_add()
4789 if (asus->driver->quirks->wmi_force_als_set) in asus_wmi_add()
4792 if (asus->driver->quirks->xusb2pr) in asus_wmi_add()
4797 if (err && err != -ENODEV) in asus_wmi_add()
4799 } else if (asus->driver->quirks->wmi_backlight_set_devstate) in asus_wmi_add()
4804 if (err && err != -ENODEV) in asus_wmi_add()
4809 asus->fnlock_locked = fnlock_default; in asus_wmi_add()
4813 status = wmi_install_notify_handler(asus->driver->event_guid, in asus_wmi_add()
4816 pr_err("Unable to register notify handler - %d\n", status); in asus_wmi_add()
4817 err = -ENODEV; in asus_wmi_add()
4821 if (asus->driver->i8042_filter) { in asus_wmi_add()
4822 err = i8042_install_filter(asus->driver->i8042_filter, NULL); in asus_wmi_add()
4824 pr_warn("Unable to install key filter - %d\n", err); in asus_wmi_add()
4845 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_add()
4860 if (asus->driver->i8042_filter) in asus_wmi_remove()
4861 i8042_remove_filter(asus->driver->i8042_filter); in asus_wmi_remove()
4862 wmi_remove_notify_handler(asus->driver->event_guid); in asus_wmi_remove()
4869 asus_wmi_sysfs_exit(asus->platform_device); in asus_wmi_remove()
4877 /* Platform driver - hibernate/resume callbacks *******************************/
4883 if (asus->wlan.rfkill) { in asus_hotk_thaw()
4887 * Work around bios bug - acpi _PTS turns off the wireless led in asus_hotk_thaw()
4902 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_resume()
4917 if (asus->ally_mcu_usb_switch) { in asus_hotk_resume_early()
4931 if (asus->ally_mcu_usb_switch) { in asus_hotk_prepare()
4947 if (asus->wlan.rfkill) in asus_hotk_restore()
4950 if (asus->bluetooth.rfkill) { in asus_hotk_restore()
4953 rfkill_set_sw_state(asus->bluetooth.rfkill, bl); in asus_hotk_restore()
4955 if (asus->wimax.rfkill) { in asus_hotk_restore()
4957 rfkill_set_sw_state(asus->wimax.rfkill, bl); in asus_hotk_restore()
4959 if (asus->wwan3g.rfkill) { in asus_hotk_restore()
4961 rfkill_set_sw_state(asus->wwan3g.rfkill, bl); in asus_hotk_restore()
4963 if (asus->gps.rfkill) { in asus_hotk_restore()
4965 rfkill_set_sw_state(asus->gps.rfkill, bl); in asus_hotk_restore()
4967 if (asus->uwb.rfkill) { in asus_hotk_restore()
4969 rfkill_set_sw_state(asus->uwb.rfkill, bl); in asus_hotk_restore()
4971 if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) in asus_hotk_restore()
4993 struct platform_driver *pdrv = to_platform_driver(pdev->dev.driver); in asus_wmi_probe()
4999 return -ENODEV; in asus_wmi_probe()
5002 if (wdrv->event_guid && !wmi_has_guid(wdrv->event_guid)) { in asus_wmi_probe()
5004 return -ENODEV; in asus_wmi_probe()
5007 if (wdrv->probe) { in asus_wmi_probe()
5008 ret = wdrv->probe(pdev); in asus_wmi_probe()
5024 return -EBUSY; in asus_wmi_register_driver()
5026 platform_driver = &driver->platform_driver; in asus_wmi_register_driver()
5027 platform_driver->remove = asus_wmi_remove; in asus_wmi_register_driver()
5028 platform_driver->driver.owner = driver->owner; in asus_wmi_register_driver()
5029 platform_driver->driver.name = driver->name; in asus_wmi_register_driver()
5030 platform_driver->driver.pm = &asus_pm_ops; in asus_wmi_register_driver()
5045 platform_device_unregister(driver->platform_device); in asus_wmi_unregister_driver()
5046 platform_driver_unregister(&driver->platform_driver); in asus_wmi_unregister_driver()