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