diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/813-pm-0004-PM-wakeup-Add-routine-to-help-fetch-wakeup-source-ob.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/813-pm-0004-PM-wakeup-Add-routine-to-help-fetch-wakeup-source-ob.patch | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/target/linux/layerscape/patches-5.4/813-pm-0004-PM-wakeup-Add-routine-to-help-fetch-wakeup-source-ob.patch b/target/linux/layerscape/patches-5.4/813-pm-0004-PM-wakeup-Add-routine-to-help-fetch-wakeup-source-ob.patch deleted file mode 100644 index 091588b1d7..0000000000 --- a/target/linux/layerscape/patches-5.4/813-pm-0004-PM-wakeup-Add-routine-to-help-fetch-wakeup-source-ob.patch +++ /dev/null @@ -1,108 +0,0 @@ -From a9647655a2240148b7b6d29227dc76e9d6f12766 Mon Sep 17 00:00:00 2001 -From: Ran Wang <ran.wang_1@nxp.com> -Date: Thu, 24 Oct 2019 16:36:14 +0800 -Subject: [PATCH] PM: wakeup: Add routine to help fetch wakeup source object. - -Some user might want to go through all registered wakeup sources -and doing things accordingly. For example, SoC PM driver might need to -do HW programming to prevent powering down specific IP which wakeup -source depending on. So add this API to help walk through all registered -wakeup source objects on that list and return them one by one. - -Signed-off-by: Ran Wang <ran.wang_1@nxp.com> -Tested-by: Leonard Crestez <leonard.crestez@nxp.com> -Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Acked-by: Anson Huang <Anson.Huang@nxp.com> ---- - drivers/base/power/wakeup.c | 54 +++++++++++++++++++++++++++++++++++++++++++++ - include/linux/pm_wakeup.h | 9 ++++++++ - 2 files changed, 63 insertions(+) - ---- a/drivers/base/power/wakeup.c -+++ b/drivers/base/power/wakeup.c -@@ -250,6 +250,60 @@ void wakeup_source_unregister(struct wak - EXPORT_SYMBOL_GPL(wakeup_source_unregister); - - /** -+ * wakeup_sources_read_lock - Lock wakeup source list for read. -+ * -+ * Returns an index of srcu lock for struct wakeup_srcu. -+ * This index must be passed to the matching wakeup_sources_read_unlock(). -+ */ -+int wakeup_sources_read_lock(void) -+{ -+ return srcu_read_lock(&wakeup_srcu); -+} -+EXPORT_SYMBOL_GPL(wakeup_sources_read_lock); -+ -+/** -+ * wakeup_sources_read_unlock - Unlock wakeup source list. -+ * @idx: return value from corresponding wakeup_sources_read_lock() -+ */ -+void wakeup_sources_read_unlock(int idx) -+{ -+ srcu_read_unlock(&wakeup_srcu, idx); -+} -+EXPORT_SYMBOL_GPL(wakeup_sources_read_unlock); -+ -+/** -+ * wakeup_sources_walk_start - Begin a walk on wakeup source list -+ * -+ * Returns first object of the list of wakeup sources. -+ * -+ * Note that to be safe, wakeup sources list needs to be locked by calling -+ * wakeup_source_read_lock() for this. -+ */ -+struct wakeup_source *wakeup_sources_walk_start(void) -+{ -+ struct list_head *ws_head = &wakeup_sources; -+ -+ return list_entry_rcu(ws_head->next, struct wakeup_source, entry); -+} -+EXPORT_SYMBOL_GPL(wakeup_sources_walk_start); -+ -+/** -+ * wakeup_sources_walk_next - Get next wakeup source from the list -+ * @ws: Previous wakeup source object -+ * -+ * Note that to be safe, wakeup sources list needs to be locked by calling -+ * wakeup_source_read_lock() for this. -+ */ -+struct wakeup_source *wakeup_sources_walk_next(struct wakeup_source *ws) -+{ -+ struct list_head *ws_head = &wakeup_sources; -+ -+ return list_next_or_null_rcu(ws_head, &ws->entry, -+ struct wakeup_source, entry); -+} -+EXPORT_SYMBOL_GPL(wakeup_sources_walk_next); -+ -+/** - * device_wakeup_attach - Attach a wakeup source object to a device object. - * @dev: Device to handle. - * @ws: Wakeup source object to attach to @dev. ---- a/include/linux/pm_wakeup.h -+++ b/include/linux/pm_wakeup.h -@@ -63,6 +63,11 @@ struct wakeup_source { - bool autosleep_enabled:1; - }; - -+#define for_each_wakeup_source(ws) \ -+ for ((ws) = wakeup_sources_walk_start(); \ -+ (ws); \ -+ (ws) = wakeup_sources_walk_next((ws))) -+ - #ifdef CONFIG_PM_SLEEP - - /* -@@ -92,6 +97,10 @@ extern void wakeup_source_remove(struct - extern struct wakeup_source *wakeup_source_register(struct device *dev, - const char *name); - extern void wakeup_source_unregister(struct wakeup_source *ws); -+extern int wakeup_sources_read_lock(void); -+extern void wakeup_sources_read_unlock(int idx); -+extern struct wakeup_source *wakeup_sources_walk_start(void); -+extern struct wakeup_source *wakeup_sources_walk_next(struct wakeup_source *ws); - extern int device_wakeup_enable(struct device *dev); - extern int device_wakeup_disable(struct device *dev); - extern void device_set_wakeup_capable(struct device *dev, bool capable); |