Lines Matching +full:product +full:- +full:name

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 <matan@svgalib.org>
16 #include <linux/input/sparse-keymap.h>
26 .name = __stringify(_name), \
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
127 return -ENODEV; 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()
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()
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()
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()
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()
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()
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()
556 .name = "LG Battery Extension",
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()
657 .name = PLATFORM_NAME,
758 acpi_remove_address_space_handler(device->handle, LG_ADDRESS_SPACE_ID, in lg_laptop_remove_address_space_handler()
766 .name = PLATFORM_NAME, in acpi_add()
771 const char *product; in acpi_add() local
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()
799 product = dmi_get_system_info(DMI_PRODUCT_NAME); in acpi_add()
800 if (product && strlen(product) > 4) in acpi_add()
801 switch (product[4]) { in acpi_add()
803 if (strlen(product) > 5) in acpi_add()
804 switch (product[5]) { in acpi_add()
828 if (strlen(product) > 5) in acpi_add()
829 switch (product[5]) { 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()
889 .name = "LG Gram Laptop Support",
890 .class = "lg-laptop",
906 return -ENODEV; in acpi_init()