Lines Matching refs:data
76 static int system76_get(struct system76_data *data, char *method) in system76_get() argument
82 handle = acpi_device_handle(data->acpi_dev); in system76_get()
90 static int system76_get_index(struct system76_data *data, char *method, int index) in system76_get_index() argument
103 handle = acpi_device_handle(data->acpi_dev); in system76_get_index()
111 static int system76_get_object(struct system76_data *data, char *method, union acpi_object **obj) in system76_get_object() argument
117 handle = acpi_device_handle(data->acpi_dev); in system76_get_object()
139 static int system76_set(struct system76_data *data, char *method, int value) in system76_set() argument
150 handle = acpi_device_handle(data->acpi_dev); in system76_set()
301 struct system76_data *data; in ap_led_get() local
304 data = container_of(led, struct system76_data, ap_led); in ap_led_get()
305 value = system76_get(data, "GAPL"); in ap_led_get()
315 struct system76_data *data; in ap_led_set() local
317 data = container_of(led, struct system76_data, ap_led); in ap_led_set()
318 return system76_set(data, "SAPL", value == LED_OFF ? 0 : 1); in ap_led_set()
324 struct system76_data *data; in kb_led_get() local
326 data = container_of(led, struct system76_data, kb_led); in kb_led_get()
327 return data->kb_brightness; in kb_led_get()
333 struct system76_data *data; in kb_led_set() local
335 data = container_of(led, struct system76_data, kb_led); in kb_led_set()
336 data->kb_brightness = value; in kb_led_set()
337 if (acpi_has_method(acpi_device_handle(data->acpi_dev), "GKBK")) { in kb_led_set()
338 return system76_set(data, "SKBB", (int)data->kb_brightness); in kb_led_set()
340 return system76_set(data, "SKBL", (int)data->kb_brightness); in kb_led_set()
351 struct system76_data *data; in kb_led_color_show() local
354 data = container_of(led, struct system76_data, kb_led); in kb_led_color_show()
355 return sysfs_emit(buf, "%06X\n", data->kb_color); in kb_led_color_show()
366 struct system76_data *data; in kb_led_color_store() local
371 data = container_of(led, struct system76_data, kb_led); in kb_led_color_store()
377 data->kb_color = (int)val; in kb_led_color_store()
378 system76_set(data, "SKBC", data->kb_color); in kb_led_color_store()
400 static void kb_led_notify(struct system76_data *data) in kb_led_notify() argument
403 &data->kb_led, in kb_led_notify()
404 data->kb_brightness in kb_led_notify()
409 static void kb_led_hotkey_hardware(struct system76_data *data) in kb_led_hotkey_hardware() argument
413 if (acpi_has_method(acpi_device_handle(data->acpi_dev), "GKBK")) { in kb_led_hotkey_hardware()
414 value = system76_get(data, "GKBB"); in kb_led_hotkey_hardware()
416 value = system76_get(data, "GKBL"); in kb_led_hotkey_hardware()
421 data->kb_brightness = value; in kb_led_hotkey_hardware()
422 kb_led_notify(data); in kb_led_hotkey_hardware()
426 static void kb_led_hotkey_toggle(struct system76_data *data) in kb_led_hotkey_toggle() argument
428 if (data->kb_brightness > 0) { in kb_led_hotkey_toggle()
429 data->kb_toggle_brightness = data->kb_brightness; in kb_led_hotkey_toggle()
430 kb_led_set(&data->kb_led, 0); in kb_led_hotkey_toggle()
432 kb_led_set(&data->kb_led, data->kb_toggle_brightness); in kb_led_hotkey_toggle()
434 kb_led_notify(data); in kb_led_hotkey_toggle()
438 static void kb_led_hotkey_down(struct system76_data *data) in kb_led_hotkey_down() argument
442 if (data->kb_brightness > 0) { in kb_led_hotkey_down()
444 if (kb_levels[i - 1] < data->kb_brightness) { in kb_led_hotkey_down()
445 kb_led_set(&data->kb_led, kb_levels[i - 1]); in kb_led_hotkey_down()
450 kb_led_set(&data->kb_led, data->kb_toggle_brightness); in kb_led_hotkey_down()
452 kb_led_notify(data); in kb_led_hotkey_down()
456 static void kb_led_hotkey_up(struct system76_data *data) in kb_led_hotkey_up() argument
460 if (data->kb_brightness > 0) { in kb_led_hotkey_up()
462 if (kb_levels[i] > data->kb_brightness) { in kb_led_hotkey_up()
463 kb_led_set(&data->kb_led, kb_levels[i]); in kb_led_hotkey_up()
468 kb_led_set(&data->kb_led, data->kb_toggle_brightness); in kb_led_hotkey_up()
470 kb_led_notify(data); in kb_led_hotkey_up()
474 static void kb_led_hotkey_color(struct system76_data *data) in kb_led_hotkey_color() argument
478 if (data->kbled_type != KBLED_RGB) in kb_led_hotkey_color()
481 if (data->kb_brightness > 0) { in kb_led_hotkey_color()
483 if (kb_colors[i] == data->kb_color) in kb_led_hotkey_color()
489 data->kb_color = kb_colors[i]; in kb_led_hotkey_color()
490 system76_set(data, "SKBC", data->kb_color); in kb_led_hotkey_color()
492 kb_led_set(&data->kb_led, data->kb_toggle_brightness); in kb_led_hotkey_color()
494 kb_led_notify(data); in kb_led_hotkey_color()
500 const struct system76_data *data = drvdata; in thermal_is_visible() local
505 if (system76_name(data->nfan, channel)) in thermal_is_visible()
510 if (system76_name(data->ntmp, channel)) in thermal_is_visible()
524 struct system76_data *data = dev_get_drvdata(dev); in thermal_read() local
530 raw = system76_get_index(data, "GFAN", channel); in thermal_read()
540 raw = system76_get_index(data, "GFAN", channel); in thermal_read()
550 raw = system76_get_index(data, "GTMP", channel); in thermal_read()
568 struct system76_data *data = dev_get_drvdata(dev); in thermal_read_string() local
573 *str = system76_name(data->nfan, channel); in thermal_read_string()
581 *str = system76_name(data->ntmp, channel); in thermal_read_string()
637 static void input_key(struct system76_data *data, unsigned int code) in input_key() argument
639 input_report_key(data->input, code, 1); in input_key()
640 input_sync(data->input); in input_key()
642 input_report_key(data->input, code, 0); in input_key()
643 input_sync(data->input); in input_key()
649 struct system76_data *data; in system76_notify() local
651 data = acpi_driver_data(acpi_dev); in system76_notify()
654 kb_led_hotkey_hardware(data); in system76_notify()
657 kb_led_hotkey_toggle(data); in system76_notify()
660 kb_led_hotkey_down(data); in system76_notify()
663 kb_led_hotkey_up(data); in system76_notify()
666 kb_led_hotkey_color(data); in system76_notify()
669 input_key(data, KEY_SCREENLOCK); in system76_notify()
677 struct system76_data *data; in system76_add() local
680 data = devm_kzalloc(&acpi_dev->dev, sizeof(*data), GFP_KERNEL); in system76_add()
681 if (!data) in system76_add()
683 acpi_dev->driver_data = data; in system76_add()
684 data->acpi_dev = acpi_dev; in system76_add()
688 data->has_open_ec = acpi_has_method(acpi_device_handle(data->acpi_dev), "NFAN"); in system76_add()
690 err = system76_get(data, "INIT"); in system76_add()
693 data->ap_led.name = "system76_acpi::airplane"; in system76_add()
694 data->ap_led.flags = LED_CORE_SUSPENDRESUME; in system76_add()
695 data->ap_led.brightness_get = ap_led_get; in system76_add()
696 data->ap_led.brightness_set_blocking = ap_led_set; in system76_add()
697 data->ap_led.max_brightness = 1; in system76_add()
698 data->ap_led.default_trigger = "rfkill-none"; in system76_add()
699 err = devm_led_classdev_register(&acpi_dev->dev, &data->ap_led); in system76_add()
703 data->kb_led.name = "system76_acpi::kbd_backlight"; in system76_add()
704 data->kb_led.flags = LED_BRIGHT_HW_CHANGED | LED_CORE_SUSPENDRESUME; in system76_add()
705 data->kb_led.brightness_get = kb_led_get; in system76_add()
706 data->kb_led.brightness_set_blocking = kb_led_set; in system76_add()
707 if (acpi_has_method(acpi_device_handle(data->acpi_dev), "GKBK")) { in system76_add()
709 data->kbled_type = system76_get(data, "GKBK"); in system76_add()
711 switch (data->kbled_type) { in system76_add()
716 data->kb_led.max_brightness = 255; in system76_add()
717 data->kb_toggle_brightness = 72; in system76_add()
720 data->kb_led.max_brightness = 255; in system76_add()
721 data->kb_led.groups = system76_kb_led_color_groups; in system76_add()
722 data->kb_toggle_brightness = 72; in system76_add()
723 data->kb_color = 0xffffff; in system76_add()
724 system76_set(data, "SKBC", data->kb_color); in system76_add()
729 if (acpi_has_method(acpi_device_handle(data->acpi_dev), "SKBC")) { in system76_add()
730 data->kbled_type = KBLED_RGB; in system76_add()
731 data->kb_led.max_brightness = 255; in system76_add()
732 data->kb_led.groups = system76_kb_led_color_groups; in system76_add()
733 data->kb_toggle_brightness = 72; in system76_add()
734 data->kb_color = 0xffffff; in system76_add()
735 system76_set(data, "SKBC", data->kb_color); in system76_add()
737 data->kbled_type = KBLED_WHITE; in system76_add()
738 data->kb_led.max_brightness = 5; in system76_add()
742 if (data->kbled_type != KBLED_NONE) { in system76_add()
743 err = devm_led_classdev_register(&acpi_dev->dev, &data->kb_led); in system76_add()
748 data->input = devm_input_allocate_device(&acpi_dev->dev); in system76_add()
749 if (!data->input) in system76_add()
752 data->input->name = "System76 ACPI Hotkeys"; in system76_add()
753 data->input->phys = "system76_acpi/input0"; in system76_add()
754 data->input->id.bustype = BUS_HOST; in system76_add()
755 data->input->dev.parent = &acpi_dev->dev; in system76_add()
756 input_set_capability(data->input, EV_KEY, KEY_SCREENLOCK); in system76_add()
758 err = input_register_device(data->input); in system76_add()
762 if (data->has_open_ec) { in system76_add()
763 err = system76_get_object(data, "NFAN", &data->nfan); in system76_add()
767 err = system76_get_object(data, "NTMP", &data->ntmp); in system76_add()
771 data->therm = devm_hwmon_device_register_with_info(&acpi_dev->dev, in system76_add()
772 "system76_acpi", data, &thermal_chip_info, NULL); in system76_add()
773 err = PTR_ERR_OR_ZERO(data->therm); in system76_add()
783 if (data->has_open_ec) { in system76_add()
784 kfree(data->ntmp); in system76_add()
785 kfree(data->nfan); in system76_add()
793 struct system76_data *data; in system76_remove() local
795 data = acpi_driver_data(acpi_dev); in system76_remove()
797 if (data->has_open_ec) { in system76_remove()
799 kfree(data->nfan); in system76_remove()
800 kfree(data->ntmp); in system76_remove()
803 devm_led_classdev_unregister(&acpi_dev->dev, &data->ap_led); in system76_remove()
804 devm_led_classdev_unregister(&acpi_dev->dev, &data->kb_led); in system76_remove()
806 system76_get(data, "FINI"); in system76_remove()