Lines Matching +full:integer +full:- +full:n

1 // SPDX-License-Identifier: GPL-2.0+
3 * lg-laptop.c - LG Gram ACPI features and hotkeys Driver
5 * Copyright (C) 2018 Matan Ziv-Av <[email protected]>
16 #include <linux/input/sparse-keymap.h>
33 MODULE_AUTHOR("Matan Ziv-Av");
57 #define WMI_EVENT_GUID0 "E4FB94F9-7F2B-4173-AD1A-CD1D95086248"
58 #define WMI_EVENT_GUID1 "023B133E-49D1-4E10-B313-698220140DC2"
59 #define WMI_EVENT_GUID2 "37BE1AC0-C3F2-4B1F-BFBE-8FDEAF2814D6"
60 #define WMI_EVENT_GUID3 "911BAD44-7DF8-4FBB-9319-BABA1C4B293B"
61 #define WMI_METHOD_WMAB "C3A72B38-D3EF-42D3-8CBB-D5A57049F66D"
62 #define WMI_METHOD_WMBB "2B4F501A-BD3C-4394-8DCF-00A7D2BC8210"
78 #define PLATFORM_NAME "lg-laptop"
104 {KE_KEY, 0x10000000, {KEY_F16} },/* Keyboard backlight (F8) - pressing
122 args[0].integer.value = arg0; in ggov()
127 return -ENODEV; in ggov()
135 acpi_handle_err(handle, "GGOV: call failed.\n"); in ggov()
136 return -EINVAL; in ggov()
140 if (r->type != ACPI_TYPE_INTEGER) { in ggov()
142 return -EINVAL; in ggov()
145 res = r->integer.value; in ggov()
159 args[0].integer.value = method; in lg_wmab()
161 args[1].integer.value = arg1; in lg_wmab()
163 args[2].integer.value = arg2; in lg_wmab()
170 dev_err(dev, "WMAB: call failed.\n"); in lg_wmab()
189 args[0].integer.value = 0; /* ignored */ in lg_wmbb()
191 args[1].integer.value = 1; /* Must be 1 or 2. Does not matter which */ in lg_wmbb()
201 dev_err(dev, "WMBB: call failed.\n"); in lg_wmbb()
212 pr_debug("event guid %li\n", data); in wmi_notify()
216 if (obj->type == ACPI_TYPE_INTEGER) { in wmi_notify()
217 int eventcode = obj->integer.value; in wmi_notify()
222 &kbd_backlight, get_kbd_backlight_level(kbd_backlight.dev->parent)); in wmi_notify()
226 if (key && key->type == KE_KEY) in wmi_notify()
232 pr_debug("Type: %i Eventcode: 0x%llx\n", obj->type, in wmi_notify()
233 obj->integer.value); in wmi_notify()
242 wmi_input_dev->name = "LG WMI hotkeys"; in wmi_input_setup()
243 wmi_input_dev->phys = "wmi/input0"; in wmi_input_setup()
244 wmi_input_dev->id.bustype = BUS_HOST; in wmi_input_setup()
270 acpi_handle_debug(device->handle, "notify: %d\n", event); in acpi_notify()
288 return -EIO; in fan_mode_store()
290 if (r->type != ACPI_TYPE_INTEGER) { in fan_mode_store()
292 return -EIO; in fan_mode_store()
295 m = r->integer.value; in fan_mode_store()
313 return -EIO; in fan_mode_show()
315 if (r->type != ACPI_TYPE_INTEGER) { in fan_mode_show()
317 return -EIO; in fan_mode_show()
320 status = r->integer.value & 0x01; in fan_mode_show()
323 return sysfs_emit(buffer, "%d\n", status); in fan_mode_show()
340 return -EIO; in usb_charge_store()
354 return -EIO; in usb_charge_show()
356 if (r->type != ACPI_TYPE_BUFFER) { in usb_charge_show()
358 return -EIO; in usb_charge_show()
361 status = !!r->buffer.pointer[0x10]; in usb_charge_show()
365 return sysfs_emit(buffer, "%d\n", status); in usb_charge_show()
382 return -EIO; in reader_mode_store()
396 return -EIO; in reader_mode_show()
398 if (r->type != ACPI_TYPE_INTEGER) { in reader_mode_show()
400 return -EIO; in reader_mode_show()
403 status = !!r->integer.value; in reader_mode_show()
407 return sysfs_emit(buffer, "%d\n", status); in reader_mode_show()
424 return -EIO; in fn_lock_store()
438 return -EIO; in fn_lock_show()
440 if (r->type != ACPI_TYPE_BUFFER) { in fn_lock_show()
442 return -EIO; in fn_lock_show()
445 status = !!r->buffer.pointer[0]; in fn_lock_show()
448 return sysfs_emit(buffer, "%d\n", status); in fn_lock_show()
466 r = lg_wmbb(&pf_device->dev, WMBB_BATT_LIMIT, WM_SET, value); in charge_control_end_threshold_store()
468 r = lg_wmab(&pf_device->dev, WM_BATT_LIMIT, WM_SET, value); in charge_control_end_threshold_store()
470 return -EIO; in charge_control_end_threshold_store()
476 return -EINVAL; in charge_control_end_threshold_store()
487 r = lg_wmbb(&pf_device->dev, WMBB_BATT_LIMIT, WM_GET, 0); in charge_control_end_threshold_show()
489 return -EIO; in charge_control_end_threshold_show()
491 if (r->type != ACPI_TYPE_BUFFER) { in charge_control_end_threshold_show()
493 return -EIO; in charge_control_end_threshold_show()
496 status = r->buffer.pointer[0x10]; in charge_control_end_threshold_show()
498 r = lg_wmab(&pf_device->dev, WM_BATT_LIMIT, WM_GET, 0); in charge_control_end_threshold_show()
500 return -EIO; in charge_control_end_threshold_show()
502 if (r->type != ACPI_TYPE_INTEGER) { in charge_control_end_threshold_show()
504 return -EIO; in charge_control_end_threshold_show()
507 status = r->integer.value; in charge_control_end_threshold_show()
513 return sysfs_emit(buf, "%d\n", status); in charge_control_end_threshold_show()
539 if (device_create_file(&battery->dev, in lg_battery_add()
541 return -ENODEV; in lg_battery_add()
548 device_remove_file(&battery->dev, in lg_battery_remove()
577 r = lg_wmab(cdev->dev->parent, WM_TLED, WM_SET, brightness > LED_OFF); in tpad_led_set()
599 r = lg_wmab(cdev->dev->parent, WM_KEY_LIGHT, WM_SET, val); in kbd_backlight_set()
613 if (r->type != ACPI_TYPE_BUFFER || r->buffer.pointer[1] != 0x05) { in get_kbd_backlight_level()
618 switch (r->buffer.pointer[0] & 0x27) { in get_kbd_backlight_level()
636 return get_kbd_backlight_level(cdev->dev->parent); in kbd_backlight_get()
683 dev_dbg(dev, "Fan mode set to mode %u\n", byte); in lg_laptop_address_space_write()
687 dev_dbg(dev, "CPU temperature is %u °C\n", byte); in lg_laptop_address_space_write()
690 dev_dbg(dev, "CPU lower trip point set to %u °C\n", byte); in lg_laptop_address_space_write()
693 dev_dbg(dev, "CPU higher trip point set to %u °C\n", byte); in lg_laptop_address_space_write()
696 dev_dbg(dev, "Motherboard temperature is %u °C\n", byte); in lg_laptop_address_space_write()
699 dev_dbg(dev, "Motherboard lower trip point set to %u °C\n", byte); in lg_laptop_address_space_write()
702 dev_dbg(dev, "Motherboard higher trip point set to %u °C\n", byte); in lg_laptop_address_space_write()
705 dev_notice_ratelimited(dev, "Ignoring write to unknown opregion address %llu\n", in lg_laptop_address_space_write()
726 dev_notice_ratelimited(dev, "Attempt to read unknown opregion address %llu\n", in lg_laptop_address_space_read()
758 acpi_remove_address_space_handler(device->handle, LG_ADDRESS_SPACE_ID, in lg_laptop_remove_address_space_handler()
777 status = acpi_install_address_space_handler(device->handle, LG_ADDRESS_SPACE_ID, in acpi_add()
779 NULL, &device->dev); in acpi_add()
781 return -ENODEV; in acpi_add()
783 ret = devm_add_action_or_reset(&device->dev, lg_laptop_remove_address_space_handler, in acpi_add()
796 pr_err("unable to register platform device\n"); in acpi_add()
805 case 'N': in acpi_add()
830 case 'N': in acpi_add()
843 pr_info("product: %s year: %d\n", product ?: "unknown", year); in acpi_add()
848 ret = sysfs_create_group(&pf_device->dev.kobj, &dev_attribute_group); in acpi_add()
853 led_classdev_register(&pf_device->dev, &kbd_backlight); in acpi_add()
854 led_classdev_register(&pf_device->dev, &tpad_led); in acpi_add()
870 sysfs_remove_group(&pf_device->dev.kobj, &dev_attribute_group); in acpi_remove()
890 .class = "lg-laptop",
905 pr_debug("Error registering driver\n"); in acpi_init()
906 return -ENODEV; in acpi_init()