Lines Matching +full:button +full:-
2 * button.c - ACPI Button Driver
22 #define pr_fmt(fmt) "ACPI: button: " fmt
35 #include <acpi/button.h>
39 #define ACPI_BUTTON_CLASS "button"
47 #define ACPI_BUTTON_DEVICE_NAME_POWER "Power Button"
52 #define ACPI_BUTTON_DEVICE_NAME_SLEEP "Sleep Button"
65 ACPI_MODULE_NAME("button");
68 MODULE_DESCRIPTION("ACPI Button Driver");
87 /* GP-electronic T701 */
133 .name = "button",
163 /* --------------------------------------------------------------------------
165 -------------------------------------------------------------------------- */
175 status = acpi_evaluate_integer(device->handle, "_LID", NULL, &lid_state); in acpi_lid_evaluate_state()
177 return -ENODEV; in acpi_lid_evaluate_state()
184 struct acpi_button *button = acpi_driver_data(device); in acpi_lid_notify_state() local
197 button->last_state != !!state) in acpi_lid_notify_state()
202 next_report = ktime_add(button->last_time, in acpi_lid_notify_state()
204 if (button->last_state == !!state && in acpi_lid_notify_state()
246 input_report_switch(button->input, in acpi_lid_notify_state()
248 input_sync(button->input); in acpi_lid_notify_state()
254 acpi_handle_debug(device->handle, "ACPI LID %s\n", in acpi_lid_notify_state()
256 input_report_switch(button->input, SW_LID, !state); in acpi_lid_notify_state()
257 input_sync(button->input); in acpi_lid_notify_state()
258 button->last_state = !!state; in acpi_lid_notify_state()
259 button->last_time = ktime_get(); in acpi_lid_notify_state()
279 struct acpi_device *device = seq->private; in acpi_button_state_seq_show()
290 struct acpi_button *button = acpi_driver_data(device); in acpi_button_add_fs() local
295 if (button->type != ACPI_BUTTON_TYPE_LID) in acpi_button_add_fs()
300 return -EEXIST; in acpi_button_add_fs()
303 /* create /proc/acpi/button */ in acpi_button_add_fs()
306 return -ENODEV; in acpi_button_add_fs()
308 /* create /proc/acpi/button/lid */ in acpi_button_add_fs()
311 ret = -ENODEV; in acpi_button_add_fs()
315 /* create /proc/acpi/button/lid/LID/ */ in acpi_button_add_fs()
318 ret = -ENODEV; in acpi_button_add_fs()
322 /* create /proc/acpi/button/lid/LID/state */ in acpi_button_add_fs()
327 ret = -ENODEV; in acpi_button_add_fs()
349 struct acpi_button *button = acpi_driver_data(device); in acpi_button_remove_fs() local
351 if (button->type != ACPI_BUTTON_TYPE_LID) in acpi_button_remove_fs()
367 /* --------------------------------------------------------------------------
369 -------------------------------------------------------------------------- */
385 return -ENODEV; in acpi_lid_open()
401 acpi_pm_wakeup_event(&device->dev); in acpi_lid_update_state()
408 struct acpi_button *button = acpi_driver_data(device); in acpi_lid_initialize_state() local
422 button->lid_state_initialized = true; in acpi_lid_initialize_state()
427 struct acpi_button *button = acpi_driver_data(device); in acpi_button_notify() local
435 input = button->input; in acpi_button_notify()
436 if (button->type == ACPI_BUTTON_TYPE_LID) { in acpi_button_notify()
437 if (button->lid_state_initialized) in acpi_button_notify()
442 acpi_pm_wakeup_event(&device->dev); in acpi_button_notify()
443 if (button->suspended) in acpi_button_notify()
446 keycode = test_bit(KEY_SLEEP, input->keybit) ? in acpi_button_notify()
454 device->pnp.device_class, in acpi_button_notify()
455 dev_name(&device->dev), in acpi_button_notify()
456 event, ++button->pushed); in acpi_button_notify()
470 struct acpi_button *button = acpi_driver_data(device); in acpi_button_suspend() local
472 button->suspended = true; in acpi_button_suspend()
479 struct acpi_button *button = acpi_driver_data(device); in acpi_button_resume() local
481 button->suspended = false; in acpi_button_resume()
482 if (button->type == ACPI_BUTTON_TYPE_LID) { in acpi_button_resume()
483 button->last_state = !!acpi_lid_evaluate_state(device); in acpi_button_resume()
484 button->last_time = ktime_get(); in acpi_button_resume()
494 struct acpi_button *button = acpi_driver_data(device); in acpi_lid_input_open() local
496 button->last_state = !!acpi_lid_evaluate_state(device); in acpi_lid_input_open()
497 button->last_time = ktime_get(); in acpi_lid_input_open()
505 struct acpi_button *button; in acpi_button_add() local
512 return -ENODEV; in acpi_button_add()
514 button = kzalloc(sizeof(struct acpi_button), GFP_KERNEL); in acpi_button_add()
515 if (!button) in acpi_button_add()
516 return -ENOMEM; in acpi_button_add()
518 device->driver_data = button; in acpi_button_add()
520 button->input = input = input_allocate_device(); in acpi_button_add()
522 error = -ENOMEM; in acpi_button_add()
531 button->type = ACPI_BUTTON_TYPE_POWER; in acpi_button_add()
537 button->type = ACPI_BUTTON_TYPE_SLEEP; in acpi_button_add()
542 button->type = ACPI_BUTTON_TYPE_LID; in acpi_button_add()
546 input->open = acpi_lid_input_open; in acpi_button_add()
549 error = -ENODEV; in acpi_button_add()
557 snprintf(button->phys, sizeof(button->phys), "%s/button/input0", hid); in acpi_button_add()
559 input->name = name; in acpi_button_add()
560 input->phys = button->phys; in acpi_button_add()
561 input->id.bustype = BUS_HOST; in acpi_button_add()
562 input->id.product = button->type; in acpi_button_add()
563 input->dev.parent = &device->dev; in acpi_button_add()
565 switch (button->type) { in acpi_button_add()
583 if (button->type == ACPI_BUTTON_TYPE_LID) { in acpi_button_add()
591 device_init_wakeup(&device->dev, true); in acpi_button_add()
600 kfree(button); in acpi_button_add()
606 struct acpi_button *button = acpi_driver_data(device); in acpi_button_remove() local
609 input_unregister_device(button->input); in acpi_button_remove()
610 kfree(button); in acpi_button_remove()
619 if (!strncmp(val, "open", sizeof("open") - 1)) { in param_set_lid_init_state()
622 } else if (!strncmp(val, "method", sizeof("method") - 1)) { in param_set_lid_init_state()
625 } else if (!strncmp(val, "ignore", sizeof("ignore") - 1)) { in param_set_lid_init_state()
629 result = -EINVAL; in param_set_lid_init_state()
659 * capable kernels booted in non-ACPI mode if the return value of in acpi_button_register_driver()