| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Mac80211 power management interface for ST-Ericsson CW1200 mac80211 drivers |
| * |
| * Copyright (c) 2011, ST-Ericsson |
| * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no> |
| */ |
| |
| #ifndef PM_H_INCLUDED |
| #define PM_H_INCLUDED |
| |
| /* ******************************************************************** */ |
| /* mac80211 API */ |
| |
| /* extern */ struct cw1200_common; |
| /* private */ struct cw1200_suspend_state; |
| |
| struct cw1200_pm_state { |
| struct cw1200_suspend_state *suspend_state; |
| struct timer_list stay_awake; |
| struct platform_device *pm_dev; |
| spinlock_t lock; /* Protect access */ |
| }; |
| |
| #ifdef CONFIG_PM |
| int cw1200_pm_init(struct cw1200_pm_state *pm, |
| struct cw1200_common *priv); |
| void cw1200_pm_deinit(struct cw1200_pm_state *pm); |
| int cw1200_wow_suspend(struct ieee80211_hw *hw, |
| struct cfg80211_wowlan *wowlan); |
| int cw1200_can_suspend(struct cw1200_common *priv); |
| int cw1200_wow_resume(struct ieee80211_hw *hw); |
| void cw1200_pm_stay_awake(struct cw1200_pm_state *pm, |
| unsigned long tmo); |
| #else |
| static inline void cw1200_pm_stay_awake(struct cw1200_pm_state *pm, |
| unsigned long tmo) |
| { |
| } |
| static inline int cw1200_can_suspend(struct cw1200_common *priv) |
| { |
| return 0; |
| } |
| #endif |
| #endif |