WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
plat_pm_wlan.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2015-2023. All rights reserved.
3 * Description: plat pm head file.
4 * Create: 2015-04-10
5 */
6
7#ifndef __PLAT_PM_WLAN_H__
8#define __PLAT_PM_WLAN_H__
9
10/*****************************************************************************
11 1 Include other Head file
12*****************************************************************************/
13#if defined(_PRE_OS_VERSION) && defined(_PRE_OS_VERSION_LINUX) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
14#include <linux/mutex.h>
15#include <linux/kernel.h>
16#include <linux/version.h>
17#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37))
18#if defined(_PRE_OS_VERSION) && defined(_PRE_OS_VERSION_LINUX) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
19#include <linux/pm_wakeup.h>
20#endif
21#endif
22#include <linux/mmc/host.h>
23#include <linux/mmc/sdio_func.h>
24#include <linux/mmc/sdio.h>
25
26#include <linux/fb.h>
27#endif
28#include "hcc_bus.h"
29
30#include "oal_ext_if.h"
31
32#ifdef WIN32
33#include "oal_plat_type.h"
34#endif
35
36#define WLAN_WAKUP_MSG_WAIT_TIMEOUT (1000)
37#define WLAN_SLEEP_MSG_WAIT_TIMEOUT (10000)
38#define WLAN_POWEROFF_ACK_WAIT_TIMEOUT (1000)
39#define WLAN_OPEN_BCPU_WAIT_TIMEOUT (1000)
40#define WLAN_HALT_BCPU_TIMEOUT (1000)
41#define WLAN_SLEEP_TIMER_PERIOD (50) /* 睡眠定时器50ms定时 */
42#define WLAN_SLEEP_DEFAULT_CHECK_CNT (6) /* 默认100ms */
43#define WLAN_SLEEP_LONG_CHECK_CNT (8) /* 20 入网阶段,延长至400ms */
44#define WLAN_SLEEP_FAST_CHECK_CNT (1) /* fast sleep,20ms */
45#define WLAN_WAKELOCK_HOLD_TIME (500) /* hold wakelock 500ms */
46
47#define WLAN_SDIO_MSG_RETRY_NUM (3)
48#define WLAN_WAKEUP_FAIL_MAX_TIMES (1) /* 连续多少次wakeup失败,可进入DFR流程 */
49
50#define HOST_WAIT_BOTTOM_WIFI_TIMEOUT 20000
51#define HOST_WAIT_BOTTOM_WIFI_TIMEOUT_QUARTERS 5000
52#define H2W_SLEEP_REQUEST_FORBID_LIMIT 60
53#define H2W_TRY_WKUP_MAX_TIMES 3
54#define WLAN_PM_MODULE "[wlan]"
55
56
65
67 SLEEP_STAGE_INIT = 0, // 初始
68 SLEEP_REQ_SND = 1, // sleep request发送完成
69 SLEEP_ALLOW_RCV = 2, // 收到allow sleep response
70 SLEEP_DISALLOW_RCV = 3, // 收到allow sleep response
71 SLEEP_CMD_SND = 4, // 允许睡眠reg设置完成
72};
73
78
79#define ALLOW_IDLESLEEP (1)
80#define DISALLOW_IDLESLEEP (0)
81
82#define WIFI_PM_POWERUP_EVENT (3)
83#define WIFI_PM_POWERDOWN_EVENT (2)
84#define WIFI_PM_SLEEP_EVENT (1)
85#define WIFI_PM_WAKEUP_EVENT (0)
86
87/*****************************************************************************
88 3 STRUCT DEFINE
89*****************************************************************************/
93
94#ifdef _PRE_WLAN_WAKEUP_SRC_PARSE
95typedef osal_void (*wifi_srv_data_wkup_print_en_func)(oal_bool_enum_uint8);
96#endif
99#ifdef _PRE_WLAN_WAKEUP_SRC_PARSE
100 wifi_srv_data_wkup_print_en_func p_data_wkup_print_en_func;
101#endif
102};
103
108
109struct wlan_pm_s {
110 hcc_bus *bus; // 保存oal_bus 的指针
111
112 osal_ulong wlan_pm_enable; // host 侧软件控制pm使能开关 -- 是否向wcpu投票
113 osal_ulong wcpu_platform_pm_enable; /* wcpu平台侧低功耗使能 */
114 osal_ulong wlan_power_state; // wlan power on state
115 osal_ulong wlan_state; // wlan power on state
116 volatile osal_ulong host_sleep_state; /* host sleep state notify device */
117
118 volatile osal_ulong wlan_dev_state; // wlan sleep state
121 osal_u32 packet_cnt; // 睡眠周期内统计的packet个数
122 osal_u32 wdg_timeout_cnt; // timeout check cnt
123 osal_u32 wdg_timeout_curr_cnt; // timeout check current cnt
124 volatile osal_ulong sleep_stage; // 睡眠过程阶段标识
125
126 /* mark user doing something on node */
129
139
141
142 /* 维测统计 */
160
168 osal_u32 sleep_fail_forbid_cnt; /* forbid 计数,当睡眠成功后清除,维测信息 */
173};
179
180/*****************************************************************************
181 4 EXTERN VARIABLE
182*****************************************************************************/
183#if defined(_PRE_OS_VERSION) && defined(_PRE_OS_VERSION_LINUX) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
185#endif
186
188
189typedef void (*pm_wow_wkup_cb)(void);
190typedef void (*pm_wlan_suspend_cb)(void);
192typedef void (*pm_ble_suspend_cb)(void);
193typedef osal_s32 (*pm_ble_resume_cb)(void);
194
195/*****************************************************************************
196 5 EXTERN FUNCTION
197*****************************************************************************/
202extern osal_s32 wlan_pm_host_info_print_etc(struct wlan_pm_s *wlan_pm, char *buf, osal_s32 buf_len);
231extern osal_s32 wlan_pm_stop_wdg_etc(struct wlan_pm_s *wlan_pm_info);
232extern void wlan_pm_info_clean_etc(void);
238/* Increase or decrease the number of users accessing the device.
239 @is_add: if true, after adding H2W users, the device system will be prevented from sleeping again.
240 if false, will decrease user number, that mean no more access to device
241 */
243
249
252
253#if defined(_PRE_OS_VERSION) && defined(_PRE_OS_VERSION_LINUX) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
254osal_s32 wlan_pm_register_notifier(struct notifier_block *nb);
255osal_void wlan_pm_unregister_notifier(struct notifier_block *nb);
256#endif
257
258#endif
259
struct completion oal_completion
Definition oal_schedule.h:114
osal_s32 wlan_power_close_cmd(osal_void)
osal_ulong wlan_pm_state_get_etc(void)
WLAN_HOST_STATUS
Definition plat_pm_wlan.h:74
@ HOST_SLEEPED
Definition plat_pm_wlan.h:76
@ HOST_NOT_SLEEP
Definition plat_pm_wlan.h:75
osal_u32 wlan_wcpu_platform_pm_enable(osal_s32 enable)
osal_s32 wlan_open_ex(osal_void)
void wlan_pm_sub_vote(wlan_pm_vote_id idx, osal_u8 is_work)
osal_u32 wlan_pm_disable_check_wakeup(osal_s32 flag)
osal_void pm_ble_suspend_cb_host_register(pm_ble_suspend_cb cb)
osal_void wlan_cfg_init_cb_reg(wlan_customize_init_cb cb_cfg)
osal_s32 pm_wkup_process_host(osal_void)
void wlan_pm_dump_host_info_etc(void)
struct wlan_pm_s * wlan_pm_get_drv_etc(osal_void)
void wlan_pm_dump_device_info_etc(void)
osal_void wlan_pm_wakeup_dev_ack_etc(osal_void)
void(* pm_ble_suspend_cb)(void)
Definition plat_pm_wlan.h:192
osal_u32 wlan_pm_is_poweron_etc(osal_void)
osal_s32 wlan_pm_stop_wdg_etc(struct wlan_pm_s *wlan_pm_info)
osal_void(* wifi_srv_open_notify)(oal_bool_enum_uint8)
Definition plat_pm_wlan.h:91
osal_s32 wlan_pm_poweroff_cmd_etc(osal_void)
osal_u32 wlan_close_ex(osal_void)
void(* pm_wlan_suspend_cb)(void)
Definition plat_pm_wlan.h:190
osal_void pm_wifi_resume_cb_host_register(pm_wlan_resume_cb cb)
osal_void wlan_pm_debug_wakeup_etc(void)
osal_u32 wlan_close(osal_void)
void(* pm_wow_wkup_cb)(void)
Definition plat_pm_wlan.h:189
osal_void pm_wlan_gpio_intr_enable(osal_u32 en)
WLAN_PM_CPU_FREQ_ENUM
Definition plat_pm_wlan.h:57
@ WLCPU_160MHZ
Definition plat_pm_wlan.h:60
@ WLCPU_80MHZ
Definition plat_pm_wlan.h:59
@ WLCPU_320MHZ
Definition plat_pm_wlan.h:62
@ WLCPU_40MHZ
Definition plat_pm_wlan.h:58
@ WLCPU_480MHZ
Definition plat_pm_wlan.h:63
@ WLCPU_240MHZ
Definition plat_pm_wlan.h:61
osal_s32 wlan_pm_wakeup_for_pcie_open_wcpu(osal_void)
osal_ulong wlan_pm_wakeup_dev_etc(osal_void)
osal_u32(* pm_wlan_resume_cb)(void)
Definition plat_pm_wlan.h:191
struct wlan_pm_s * wlan_pm_init_etc(osal_void)
osal_void pm_wifi_wkup_cb_host_register(pm_wow_wkup_cb cb)
osal_void wlan_pm_debug_wake_lock_etc(void)
osal_void wlan_pm_debug_wake_unlock_etc(void)
struct wlan_memdump_s wlan_memdump_t
osal_void(* wifi_srv_pm_state_notify)(oal_bool_enum_uint8)
Definition plat_pm_wlan.h:92
osal_ulong wlan_pm_open_bcpu_etc(osal_void)
struct wifi_srv_callback_handler * wlan_pm_get_wifi_srv_handler_etc(osal_void)
osal_s32 wlan_open(osal_void)
osal_u32 wlan_pm_close_etc(osal_void)
oal_bool_enum_uint8(* wifi_srv_get_pm_pause_func)(osal_void)
Definition plat_pm_wlan.h:90
osal_void wlan_pm_feed_wdg_etc(osal_void)
osal_u32 wlan_pm_enable_etc(osal_void)
osal_s32 wlan_pm_h2d_notify_sleep_state(osal_u8 slp)
osal_u32 wlan_pm_disable_etc(osal_void)
void wlan_pm_info_clean_etc(void)
void pm_shutdown_process_host(void)
osal_void pm_ble_resume_cb_host_register(pm_ble_resume_cb cb)
WLAN_PM_SLEEP_STAGE
Definition plat_pm_wlan.h:66
@ SLEEP_ALLOW_RCV
Definition plat_pm_wlan.h:69
@ SLEEP_DISALLOW_RCV
Definition plat_pm_wlan.h:70
@ SLEEP_CMD_SND
Definition plat_pm_wlan.h:71
@ SLEEP_REQ_SND
Definition plat_pm_wlan.h:68
@ SLEEP_STAGE_INIT
Definition plat_pm_wlan.h:67
osal_s32 wlan_pm_open_etc(osal_void)
osal_ulong wlan_pm_exit_etc(osal_void)
osal_void pm_wifi_suspend_cb_host_register(pm_wlan_suspend_cb cb)
void wlan_pm_add_h2w_visit_user(int is_add)
osal_void wlan_pm_debug_sleep_etc(void)
osal_s32 wlan_power_open_cmd(osal_void)
osal_s32(* pm_ble_resume_cb)(void)
Definition plat_pm_wlan.h:193
osal_ulong wlan_pm_init_dev_etc(void)
osal_s32 wlan_pm_host_info_print_etc(struct wlan_pm_s *wlan_pm, char *buf, osal_s32 buf_len)
osal_s32(* wlan_customize_init_cb)(osal_void)
Definition plat_pm_wlan.h:187
osal_s32 wlan_pm_shutdown_bcpu_cmd_etc(osal_void)
wlan_pm_vote_id
Definition plat_pm_wlan.h:104
@ WLAN_PM_ID_BCPU
Definition plat_pm_wlan.h:105
@ WLAN_PM_ID_MAX
Definition plat_pm_wlan.h:106
osal_ulong wlan_pm_wakeup_host_etc(void)
oal_bool_enum_uint8(* wifi_srv_get_pm_pause_func)(osal_void)
Definition plat_pm_wlan.h:67
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned long osal_ulong
Definition osal_types.h:15
Definition hcc_bus_types.h:91
Definition oal_schedule.h:35
Definition osal_spinlock.h:18
Definition plat_pm_wlan.h:97
wifi_srv_get_pm_pause_func p_wifi_srv_get_pm_pause_func
Definition plat_pm_wlan.h:98
Definition plat_pm_wlan.h:174
osal_s32 len
Definition plat_pm_wlan.h:176
osal_s32 addr
Definition plat_pm_wlan.h:175
osal_s32 en
Definition plat_pm_wlan.h:177
Definition plat_pm_wlan.h:109
osal_u32 sleep_fail_forbid_cnt
Definition plat_pm_wlan.h:168
struct wifi_srv_callback_handler wifi_srv_handler
Definition plat_pm_wlan.h:140
osal_s32 irq_stat
Definition plat_pm_wlan.h:171
osal_u32 wdg_timeout_curr_cnt
Definition plat_pm_wlan.h:123
osal_u32 try_sleep_feed_wdg_cnt
Definition plat_pm_wlan.h:162
volatile osal_ulong wlan_dev_state
Definition plat_pm_wlan.h:118
oal_completion wifi_powerup_done
Definition plat_pm_wlan.h:136
hcc_bus * bus
Definition plat_pm_wlan.h:110
osal_u32 hcc_wkup_req_fail_cnt
Definition plat_pm_wlan.h:154
osal_u32 wakeup_succ
Definition plat_pm_wlan.h:148
osal_u32 sleep_fail_forbid
Definition plat_pm_wlan.h:167
osal_u32 wakeup_done_callback
Definition plat_pm_wlan.h:151
osal_u32 open_bcpu_done_callback
Definition plat_pm_wlan.h:144
osal_u32 sleep_feed_wdg_cnt
Definition plat_pm_wlan.h:163
oal_completion wakeup_done
Definition plat_pm_wlan.h:133
osal_u32 wakeup_fail_wait_sdio
Definition plat_pm_wlan.h:153
oal_completion sleep_request_ack
Definition plat_pm_wlan.h:134
osal_u32 wakeup_dev_ack
Definition plat_pm_wlan.h:150
osal_u32 wakeup_succ_work_submit
Definition plat_pm_wlan.h:149
osal_u32 sleep_succ
Definition plat_pm_wlan.h:161
osal_u32 close_done_callback
Definition plat_pm_wlan.h:147
oal_completion close_bcpu_done
Definition plat_pm_wlan.h:131
osal_u32 wakeup_fail_set_reg
Definition plat_pm_wlan.h:157
osal_ulong wlan_pm_enable
Definition plat_pm_wlan.h:112
osal_u32 close_bcpu_done_callback
Definition plat_pm_wlan.h:145
volatile osal_ulong sub_vote_status
Definition plat_pm_wlan.h:119
osal_ulong wlan_power_state
Definition plat_pm_wlan.h:114
osal_u32 packet_cnt
Definition plat_pm_wlan.h:121
osal_spinlock irq_lock
Definition plat_pm_wlan.h:172
oal_completion wcpu_pmctrl_ack
Definition plat_pm_wlan.h:137
oal_completion host_sleep_req_ack
Definition plat_pm_wlan.h:138
osal_u32 users_refuse_slp_cnt
Definition plat_pm_wlan.h:128
osal_u32 sleep_fail_wait_timeout
Definition plat_pm_wlan.h:165
osal_u32 sleep_work_submit
Definition plat_pm_wlan.h:169
osal_ulong wlan_state
Definition plat_pm_wlan.h:115
osal_u32 wakeup_fail_timeout
Definition plat_pm_wlan.h:155
osal_u32 sleep_fail_request
Definition plat_pm_wlan.h:164
osal_u32 wkup_err_cnt
Definition plat_pm_wlan.h:156
osal_u32 d2h_work_cnt
Definition plat_pm_wlan.h:159
atomic_t h2w_visit_users
Definition plat_pm_wlan.h:127
oal_completion open_bcpu_done
Definition plat_pm_wlan.h:130
osal_u32 close_cnt
Definition plat_pm_wlan.h:146
volatile osal_ulong sleep_stage
Definition plat_pm_wlan.h:124
oal_wakelock_stru deepsleep_wakelock
Definition plat_pm_wlan.h:120
oal_completion close_done
Definition plat_pm_wlan.h:132
oal_completion halt_bcpu_done
Definition plat_pm_wlan.h:135
osal_u32 wdg_timeout_cnt
Definition plat_pm_wlan.h:122
volatile osal_ulong host_sleep_state
Definition plat_pm_wlan.h:116
osal_s32 wlan_irq
Definition plat_pm_wlan.h:170
osal_u32 wakeup_fail
Definition plat_pm_wlan.h:152
osal_ulong wcpu_platform_pm_enable
Definition plat_pm_wlan.h:113
osal_u32 wakeup_fail_submit_work
Definition plat_pm_wlan.h:158
osal_u32 open_cnt
Definition plat_pm_wlan.h:143
osal_u32 sleep_fail_set_reg
Definition plat_pm_wlan.h:166
osal_u8 g_uc_custom_cali_done_etc