1
2
3
4#ifndef __ODM_INTERFACE_H__
5#define __ODM_INTERFACE_H__
6
7
8
9
10
11
12
13
14
15#define _reg_all(_name) ODM_##_name
16#define _reg_ic(_name, _ic) ODM_##_name##_ic
17#define _bit_all(_name) BIT_##_name
18#define _bit_ic(_name, _ic) BIT_##_name##_ic
19
20
21
22
23
24
25
26
27
28
29
30#define _reg_11N(_name) ODM_REG_##_name##_11N
31#define _reg_11AC(_name) ODM_REG_##_name##_11AC
32#define _bit_11N(_name) ODM_BIT_##_name##_11N
33#define _bit_11AC(_name) ODM_BIT_##_name##_11AC
34
35#define _cat(_name, _ic_type, _func) \
36 ( \
37 ((_ic_type) & ODM_IC_11N_SERIES) ? _func##_11N(_name) : \
38 _func##_11AC(_name) \
39 )
40
41
42
43
44
45#define ODM_REG(_name, _pDM_Odm) _cat(_name, _pDM_Odm->SupportICType, _reg)
46#define ODM_BIT(_name, _pDM_Odm) _cat(_name, _pDM_Odm->SupportICType, _bit)
47
48enum odm_h2c_cmd {
49 ODM_H2C_RSSI_REPORT = 0,
50 ODM_H2C_PSD_RESULT= 1,
51 ODM_H2C_PathDiv = 2,
52 ODM_MAX_H2CCMD
53};
54
55
56
57typedef void (*RT_WORKITEM_CALL_BACK)(void *pContext);
58
59
60
61
62
63u8 ODM_Read1Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr);
64
65u16 ODM_Read2Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr);
66
67u32 ODM_Read4Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr);
68
69void ODM_Write1Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr, u8 Data);
70
71void ODM_Write2Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr, u16 Data);
72
73void ODM_Write4Byte(struct odm_dm_struct *pDM_Odm, u32 RegAddr, u32 Data);
74
75void ODM_SetMACReg(struct odm_dm_struct *pDM_Odm, u32 RegAddr,
76 u32 BitMask, u32 Data);
77
78u32 ODM_GetMACReg(struct odm_dm_struct *pDM_Odm, u32 RegAddr, u32 BitMask);
79
80void ODM_SetBBReg(struct odm_dm_struct *pDM_Odm, u32 RegAddr,
81 u32 BitMask, u32 Data);
82
83u32 ODM_GetBBReg(struct odm_dm_struct *pDM_Odm, u32 RegAddr, u32 BitMask);
84
85void ODM_SetRFReg(struct odm_dm_struct *pDM_Odm, enum rf_radio_path eRFPath,
86 u32 RegAddr, u32 BitMask, u32 Data);
87
88u32 ODM_GetRFReg(struct odm_dm_struct *pDM_Odm, enum rf_radio_path eRFPath,
89 u32 RegAddr, u32 BitMask);
90
91
92void ODM_AllocateMemory(struct odm_dm_struct *pDM_Odm, void **pPtr, u32 length);
93void ODM_FreeMemory(struct odm_dm_struct *pDM_Odm, void *pPtr, u32 length);
94
95s32 ODM_CompareMemory(struct odm_dm_struct *pDM_Odm, void *pBuf1, void *pBuf2,
96 u32 length);
97
98
99void ODM_AcquireSpinLock(struct odm_dm_struct *pDM_Odm,
100 enum RT_SPINLOCK_TYPE type);
101
102void ODM_ReleaseSpinLock(struct odm_dm_struct *pDM_Odm,
103 enum RT_SPINLOCK_TYPE type);
104
105
106void ODM_InitializeWorkItem(struct odm_dm_struct *pDM_Odm, void *pRtWorkItem,
107 RT_WORKITEM_CALL_BACK RtWorkItemCallback,
108 void *pContext, const char *szID);
109
110void ODM_StartWorkItem(void *pRtWorkItem);
111
112void ODM_StopWorkItem(void *pRtWorkItem);
113
114void ODM_FreeWorkItem(void *pRtWorkItem);
115
116void ODM_ScheduleWorkItem(void *pRtWorkItem);
117
118void ODM_IsWorkItemScheduled(void *pRtWorkItem);
119
120
121void ODM_StallExecution(u32 usDelay);
122
123void ODM_delay_ms(u32 ms);
124
125void ODM_delay_us(u32 us);
126
127void ODM_sleep_ms(u32 ms);
128
129void ODM_sleep_us(u32 us);
130
131void ODM_SetTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer,
132 u32 msDelay);
133
134void ODM_InitializeTimer(struct odm_dm_struct *pDM_Odm,
135 struct timer_list *pTimer, void *CallBackFunc,
136 void *pContext, const char *szID);
137
138void ODM_CancelTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer);
139
140void ODM_ReleaseTimer(struct odm_dm_struct *pDM_Odm, struct timer_list *pTimer);
141
142
143u32 ODM_FillH2CCmd(u8 *pH2CBuffer, u32 H2CBufferLen, u32 CmdNum,
144 u32 *pElementID, u32 *pCmdLen, u8 **pCmbBuffer,
145 u8 *CmdStartSeq);
146
147#endif
148