hc
2024-05-08 f309769f8af08599af39b6de4f675784ce76530d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/******************************************************************************
 *
 * Copyright(c) 2013 - 2017 Realtek Corporation.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of version 2 of the GNU General Public License as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 *****************************************************************************/
#ifndef __RTW_ODM_H__
#define __RTW_ODM_H__
 
#include <drv_types.h>
#include "../hal/phydm/phydm_types.h"
/*
* This file provides utilities/wrappers for rtw driver to use ODM
*/
typedef enum _HAL_PHYDM_OPS {
   HAL_PHYDM_DIS_ALL_FUNC,
   HAL_PHYDM_FUNC_SET,
   HAL_PHYDM_FUNC_CLR,
   HAL_PHYDM_ABILITY_BK,
   HAL_PHYDM_ABILITY_RESTORE,
   HAL_PHYDM_ABILITY_SET,
   HAL_PHYDM_ABILITY_GET,
} HAL_PHYDM_OPS;
 
 
#define DYNAMIC_FUNC_DISABLE        (0x0)
   u32 rtw_phydm_ability_ops(_adapter *adapter, HAL_PHYDM_OPS ops, u32 ability);
 
#define rtw_phydm_func_disable_all(adapter)    \
       rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0)
 
#ifdef CONFIG_RTW_ACS
#define rtw_phydm_func_for_offchannel(adapter) \
       do { \
           rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
           if (rtw_odm_adaptivity_needed(adapter)) \
               rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
           if (IS_ACS_ENABLE(adapter))\
               rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ENV_MONITOR); \
       } while (0)
#else
#define rtw_phydm_func_for_offchannel(adapter) \
       do { \
           rtw_phydm_ability_ops(adapter, HAL_PHYDM_DIS_ALL_FUNC, 0); \
           if (rtw_odm_adaptivity_needed(adapter)) \
               rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_SET, ODM_BB_ADAPTIVITY); \
       } while (0)
#endif
 
#define rtw_phydm_func_clr(adapter, ability)    \
       rtw_phydm_ability_ops(adapter, HAL_PHYDM_FUNC_CLR, ability)
 
#define rtw_phydm_ability_backup(adapter)    \
       rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_BK, 0)
 
#define rtw_phydm_ability_restore(adapter)    \
       rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_RESTORE, 0)
 
 
static inline u32 rtw_phydm_ability_get(_adapter *adapter)
{
   return rtw_phydm_ability_ops(adapter, HAL_PHYDM_ABILITY_GET, 0);
}
 
 
void rtw_odm_init_ic_type(_adapter *adapter);
 
void rtw_odm_adaptivity_config_msg(void *sel, _adapter *adapter);
 
bool rtw_odm_adaptivity_needed(_adapter *adapter);
void rtw_odm_adaptivity_update(struct dvobj_priv *dvobj);
void rtw_odm_adaptivity_parm_msg(void *sel, _adapter *adapter);
void rtw_odm_adaptivity_parm_set(_adapter *adapter, s8 th_l2h_ini, s8 th_edcca_hl_diff);
void rtw_odm_get_perpkt_rssi(void *sel, _adapter *adapter);
void rtw_odm_acquirespinlock(_adapter *adapter,    enum rt_spinlock_type type);
void rtw_odm_releasespinlock(_adapter *adapter,    enum rt_spinlock_type type);
 
struct dm_struct;
s16 rtw_odm_get_tx_power_mbm(struct dm_struct *dm, u8 rfpath, u8 rate, u8 bw, u8 cch);
 
#ifdef CONFIG_DFS_MASTER
void rtw_odm_radar_detect_reset(_adapter *adapter);
void rtw_odm_radar_detect_disable(_adapter *adapter);
void rtw_odm_radar_detect_enable(_adapter *adapter);
BOOLEAN rtw_odm_radar_detect(_adapter *adapter);
void rtw_odm_update_dfs_region(struct dvobj_priv *dvobj);
u8 rtw_odm_radar_detect_polling_int_ms(struct dvobj_priv *dvobj);
#endif /* CONFIG_DFS_MASTER */
 
void rtw_odm_parse_rx_phy_status_chinfo(union recv_frame *rframe, u8 *phys);
 
#if defined(CONFIG_RTL8822C) && defined(CONFIG_LPS_PG)
void odm_lps_pg_debug_8822c(void *dm_void);
#endif
 
#endif /* __RTW_ODM_H__ */