1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Mac80211 power management interface for ST-Ericsson CW1200 mac80211 drivers 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2011, ST-Ericsson 6*4882a593Smuzhiyun * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef PM_H_INCLUDED 10*4882a593Smuzhiyun #define PM_H_INCLUDED 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* ******************************************************************** */ 13*4882a593Smuzhiyun /* mac80211 API */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* extern */ struct cw1200_common; 16*4882a593Smuzhiyun /* private */ struct cw1200_suspend_state; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun struct cw1200_pm_state { 19*4882a593Smuzhiyun struct cw1200_suspend_state *suspend_state; 20*4882a593Smuzhiyun struct timer_list stay_awake; 21*4882a593Smuzhiyun struct platform_device *pm_dev; 22*4882a593Smuzhiyun spinlock_t lock; /* Protect access */ 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #ifdef CONFIG_PM 26*4882a593Smuzhiyun int cw1200_pm_init(struct cw1200_pm_state *pm, 27*4882a593Smuzhiyun struct cw1200_common *priv); 28*4882a593Smuzhiyun void cw1200_pm_deinit(struct cw1200_pm_state *pm); 29*4882a593Smuzhiyun int cw1200_wow_suspend(struct ieee80211_hw *hw, 30*4882a593Smuzhiyun struct cfg80211_wowlan *wowlan); 31*4882a593Smuzhiyun int cw1200_can_suspend(struct cw1200_common *priv); 32*4882a593Smuzhiyun int cw1200_wow_resume(struct ieee80211_hw *hw); 33*4882a593Smuzhiyun void cw1200_pm_stay_awake(struct cw1200_pm_state *pm, 34*4882a593Smuzhiyun unsigned long tmo); 35*4882a593Smuzhiyun #else cw1200_pm_stay_awake(struct cw1200_pm_state * pm,unsigned long tmo)36*4882a593Smuzhiyunstatic inline void cw1200_pm_stay_awake(struct cw1200_pm_state *pm, 37*4882a593Smuzhiyun unsigned long tmo) 38*4882a593Smuzhiyun { 39*4882a593Smuzhiyun } cw1200_can_suspend(struct cw1200_common * priv)40*4882a593Smuzhiyunstatic inline int cw1200_can_suspend(struct cw1200_common *priv) 41*4882a593Smuzhiyun { 42*4882a593Smuzhiyun return 0; 43*4882a593Smuzhiyun } 44*4882a593Smuzhiyun #endif 45*4882a593Smuzhiyun #endif 46