mirror of https://github.com/OpenIPC/firmware.git
68 lines
2.2 KiB
Diff
68 lines
2.2 KiB
Diff
diff -drupN a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
|
|
--- a/drivers/base/power/wakeup.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/drivers/base/power/wakeup.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -15,6 +15,7 @@
|
|
#include <linux/seq_file.h>
|
|
#include <linux/debugfs.h>
|
|
#include <linux/pm_wakeirq.h>
|
|
+#include <linux/types.h>
|
|
#include <trace/events/power.h>
|
|
|
|
#include "power.h"
|
|
@@ -804,6 +805,37 @@ void pm_wakeup_event(struct device *dev,
|
|
}
|
|
EXPORT_SYMBOL_GPL(pm_wakeup_event);
|
|
|
|
+void pm_get_active_wakeup_sources(char *pending_wakeup_source, size_t max)
|
|
+{
|
|
+ struct wakeup_source *ws, *last_active_ws = NULL;
|
|
+ int len = 0;
|
|
+ bool active = false;
|
|
+
|
|
+ rcu_read_lock();
|
|
+ list_for_each_entry_rcu(ws, &wakeup_sources, entry) {
|
|
+ if (ws->active && len < max) {
|
|
+ if (!active)
|
|
+ len += scnprintf(pending_wakeup_source, max,
|
|
+ "Pending Wakeup Sources: ");
|
|
+ len += scnprintf(pending_wakeup_source + len, max - len,
|
|
+ "%s ", ws->name);
|
|
+ active = true;
|
|
+ } else if (!active &&
|
|
+ (!last_active_ws ||
|
|
+ ktime_to_ns(ws->last_time) >
|
|
+ ktime_to_ns(last_active_ws->last_time))) {
|
|
+ last_active_ws = ws;
|
|
+ }
|
|
+ }
|
|
+ if (!active && last_active_ws) {
|
|
+ scnprintf(pending_wakeup_source, max,
|
|
+ "Last active Wakeup Source: %s",
|
|
+ last_active_ws->name);
|
|
+ }
|
|
+ rcu_read_unlock();
|
|
+}
|
|
+EXPORT_SYMBOL_GPL(pm_get_active_wakeup_sources);
|
|
+
|
|
void pm_print_active_wakeup_sources(void)
|
|
{
|
|
struct wakeup_source *ws;
|
|
@@ -1011,7 +1043,7 @@ static int print_wakeup_source_stats(str
|
|
active_time = ktime_set(0, 0);
|
|
}
|
|
|
|
- seq_printf(m, "%-12s\t%lu\t\t%lu\t\t%lu\t\t%lu\t\t%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n",
|
|
+ seq_printf(m, "%-32s\t%lu\t\t%lu\t\t%lu\t\t%lu\t\t%lld\t\t%lld\t\t%lld\t\t%lld\t\t%lld\n",
|
|
ws->name, active_count, ws->event_count,
|
|
ws->wakeup_count, ws->expire_count,
|
|
ktime_to_ms(active_time), ktime_to_ms(total_time),
|
|
@@ -1032,7 +1064,7 @@ static int wakeup_sources_stats_show(str
|
|
struct wakeup_source *ws;
|
|
int srcuidx;
|
|
|
|
- seq_puts(m, "name\t\tactive_count\tevent_count\twakeup_count\t"
|
|
+ seq_puts(m, "name\t\t\t\t\tactive_count\tevent_count\twakeup_count\t"
|
|
"expire_count\tactive_since\ttotal_time\tmax_time\t"
|
|
"last_change\tprevent_suspend_time\n");
|
|
|