Lines Matching +full:ps2 +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0
14 * control - Report/change current runtime PM setting of the device
29 * wakeup - Report/change current wakeup option for device
42 * keyboards and mice (both PS2 and USB styles), power buttons, modems,
43 * "Wake-On-LAN" Ethernet links, GPIO lines, and more. Some events
59 * saves runtime power, without requiring system-wide sleep states.
61 * async - Report/change current async suspend setting for the device
63 * Asynchronous suspend and resume of the device during system-wide power
79 * autosuspend_delay_ms - Report/change a device's autosuspend_delay value
91 * wakeup_count - Report the number of wakeup events related to the device
104 dev->power.runtime_auto ? ctrl_auto : ctrl_on); in control_show()
116 n = -EINVAL; in control_store()
154 if (dev->power.runtime_error) { in runtime_status_show()
156 } else if (dev->power.disable_depth) { in runtime_status_show()
159 switch (dev->power.runtime_status) { in runtime_status_show()
173 return -EIO; in runtime_status_show()
185 if (!dev->power.use_autosuspend) in autosuspend_delay_ms_show()
186 return -EIO; in autosuspend_delay_ms_show()
188 return sysfs_emit(buf, "%d\n", dev->power.autosuspend_delay); in autosuspend_delay_ms_show()
196 if (!dev->power.use_autosuspend) in autosuspend_delay_ms_store()
197 return -EIO; in autosuspend_delay_ms_store()
200 return -EINVAL; in autosuspend_delay_ms_store()
237 return -EINVAL; in pm_qos_resume_latency_us_store()
244 return -EINVAL; in pm_qos_resume_latency_us_store()
247 ret = dev_pm_qos_update_request(dev->power.qos->resume_latency_req, in pm_qos_resume_latency_us_store()
278 return -EINVAL; in pm_qos_latency_tolerance_us_store()
285 return -EINVAL; in pm_qos_latency_tolerance_us_store()
308 return -EINVAL; in pm_qos_no_power_off_store()
311 return -EINVAL; in pm_qos_no_power_off_store()
335 return -EINVAL; in wakeup_store()
342 return -EINVAL; in wakeup_store()
354 spin_lock_irq(&dev->power.lock); in wakeup_count_show()
355 if (dev->power.wakeup) { in wakeup_count_show()
356 count = dev->power.wakeup->wakeup_count; in wakeup_count_show()
359 spin_unlock_irq(&dev->power.lock); in wakeup_count_show()
375 spin_lock_irq(&dev->power.lock); in wakeup_active_count_show()
376 if (dev->power.wakeup) { in wakeup_active_count_show()
377 count = dev->power.wakeup->active_count; in wakeup_active_count_show()
380 spin_unlock_irq(&dev->power.lock); in wakeup_active_count_show()
396 spin_lock_irq(&dev->power.lock); in wakeup_abort_count_show()
397 if (dev->power.wakeup) { in wakeup_abort_count_show()
398 count = dev->power.wakeup->wakeup_count; in wakeup_abort_count_show()
401 spin_unlock_irq(&dev->power.lock); in wakeup_abort_count_show()
417 spin_lock_irq(&dev->power.lock); in wakeup_expire_count_show()
418 if (dev->power.wakeup) { in wakeup_expire_count_show()
419 count = dev->power.wakeup->expire_count; in wakeup_expire_count_show()
422 spin_unlock_irq(&dev->power.lock); in wakeup_expire_count_show()
437 spin_lock_irq(&dev->power.lock); in wakeup_active_show()
438 if (dev->power.wakeup) { in wakeup_active_show()
439 active = dev->power.wakeup->active; in wakeup_active_show()
442 spin_unlock_irq(&dev->power.lock); in wakeup_active_show()
458 spin_lock_irq(&dev->power.lock); in wakeup_total_time_ms_show()
459 if (dev->power.wakeup) { in wakeup_total_time_ms_show()
460 msec = ktime_to_ms(dev->power.wakeup->total_time); in wakeup_total_time_ms_show()
463 spin_unlock_irq(&dev->power.lock); in wakeup_total_time_ms_show()
478 spin_lock_irq(&dev->power.lock); in wakeup_max_time_ms_show()
479 if (dev->power.wakeup) { in wakeup_max_time_ms_show()
480 msec = ktime_to_ms(dev->power.wakeup->max_time); in wakeup_max_time_ms_show()
483 spin_unlock_irq(&dev->power.lock); in wakeup_max_time_ms_show()
499 spin_lock_irq(&dev->power.lock); in wakeup_last_time_ms_show()
500 if (dev->power.wakeup) { in wakeup_last_time_ms_show()
501 msec = ktime_to_ms(dev->power.wakeup->last_time); in wakeup_last_time_ms_show()
504 spin_unlock_irq(&dev->power.lock); in wakeup_last_time_ms_show()
521 spin_lock_irq(&dev->power.lock); in wakeup_prevent_sleep_time_ms_show()
522 if (dev->power.wakeup) { in wakeup_prevent_sleep_time_ms_show()
523 msec = ktime_to_ms(dev->power.wakeup->prevent_sleep_time); in wakeup_prevent_sleep_time_ms_show()
526 spin_unlock_irq(&dev->power.lock); in wakeup_prevent_sleep_time_ms_show()
539 if (dev->power.wakeup && dev->power.wakeup->dev) in dpm_sysfs_wakeup_change_owner()
540 return device_change_owner(dev->power.wakeup->dev, kuid, kgid); in dpm_sysfs_wakeup_change_owner()
556 return sysfs_emit(buf, "%d\n", atomic_read(&dev->power.usage_count)); in runtime_usage_show()
564 return sysfs_emit(buf, "%d\n", dev->power.ignore_children ? in runtime_active_kids_show()
565 0 : atomic_read(&dev->power.child_count)); in runtime_active_kids_show()
574 if (dev->power.disable_depth && !dev->power.runtime_auto) in runtime_enabled_show()
576 else if (dev->power.disable_depth) in runtime_enabled_show()
578 else if (!dev->power.runtime_auto) in runtime_enabled_show()
604 return -EINVAL; in async_store()
702 rc = sysfs_create_group(&dev->kobj, &pm_attr_group); in dpm_sysfs_add()
707 rc = sysfs_merge_group(&dev->kobj, &pm_runtime_attr_group); in dpm_sysfs_add()
712 rc = sysfs_merge_group(&dev->kobj, &pm_wakeup_attr_group); in dpm_sysfs_add()
716 if (dev->power.set_latency_tolerance) { in dpm_sysfs_add()
717 rc = sysfs_merge_group(&dev->kobj, in dpm_sysfs_add()
728 sysfs_unmerge_group(&dev->kobj, &pm_qos_latency_tolerance_attr_group); in dpm_sysfs_add()
730 sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); in dpm_sysfs_add()
732 sysfs_unmerge_group(&dev->kobj, &pm_runtime_attr_group); in dpm_sysfs_add()
734 sysfs_remove_group(&dev->kobj, &pm_attr_group); in dpm_sysfs_add()
745 rc = sysfs_group_change_owner(&dev->kobj, &pm_attr_group, kuid, kgid); in dpm_sysfs_change_owner()
751 &dev->kobj, &pm_runtime_attr_group, kuid, kgid); in dpm_sysfs_change_owner()
757 rc = sysfs_group_change_owner(&dev->kobj, &pm_wakeup_attr_group, in dpm_sysfs_change_owner()
767 if (dev->power.set_latency_tolerance) { in dpm_sysfs_change_owner()
769 &dev->kobj, &pm_qos_latency_tolerance_attr_group, kuid, in dpm_sysfs_change_owner()
779 int ret = sysfs_merge_group(&dev->kobj, &pm_wakeup_attr_group); in wakeup_sysfs_add()
782 kobject_uevent(&dev->kobj, KOBJ_CHANGE); in wakeup_sysfs_add()
789 sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); in wakeup_sysfs_remove()
790 kobject_uevent(&dev->kobj, KOBJ_CHANGE); in wakeup_sysfs_remove()
795 return sysfs_merge_group(&dev->kobj, &pm_qos_resume_latency_attr_group); in pm_qos_sysfs_add_resume_latency()
800 sysfs_unmerge_group(&dev->kobj, &pm_qos_resume_latency_attr_group); in pm_qos_sysfs_remove_resume_latency()
805 return sysfs_merge_group(&dev->kobj, &pm_qos_flags_attr_group); in pm_qos_sysfs_add_flags()
810 sysfs_unmerge_group(&dev->kobj, &pm_qos_flags_attr_group); in pm_qos_sysfs_remove_flags()
815 return sysfs_merge_group(&dev->kobj, in pm_qos_sysfs_add_latency_tolerance()
821 sysfs_unmerge_group(&dev->kobj, &pm_qos_latency_tolerance_attr_group); in pm_qos_sysfs_remove_latency_tolerance()
826 sysfs_unmerge_group(&dev->kobj, &pm_runtime_attr_group); in rpm_sysfs_remove()
833 sysfs_unmerge_group(&dev->kobj, &pm_qos_latency_tolerance_attr_group); in dpm_sysfs_remove()
836 sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); in dpm_sysfs_remove()
837 sysfs_remove_group(&dev->kobj, &pm_attr_group); in dpm_sysfs_remove()