xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/rockchip_wlan/rtl8822be/hal/phydm/phydm_adc_sampling.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __INC_ADCSMP_H
3 #define __INC_ADCSMP_H
4 
5 #define DYNAMIC_LA_MODE	"1.0"  /*2016.07.15  Dino */
6 
7 #if (PHYDM_LA_MODE_SUPPORT == 1)
8 
9 typedef struct _RT_ADCSMP_STRING {
10 	pu4Byte		Octet;
11 	u4Byte		Length;
12 	u4Byte		buffer_size;
13 	u4Byte		start_pos;
14 } RT_ADCSMP_STRING, *PRT_ADCSMP_STRING;
15 
16 
17 typedef enum _RT_ADCSMP_TRIG_SEL {
18 	PHYDM_ADC_BB_TRIG	= 0,
19 	PHYDM_ADC_MAC_TRIG	= 1,
20 	PHYDM_ADC_RF0_TRIG	= 2,
21 	PHYDM_ADC_RF1_TRIG	= 3,
22 	PHYDM_MAC_TRIG		= 4
23 } RT_ADCSMP_TRIG_SEL, *PRT_ADCSMP_TRIG_SEL;
24 
25 
26 typedef enum _RT_ADCSMP_TRIG_SIG_SEL {
27 	ADCSMP_TRIG_CRCOK	= 0,
28 	ADCSMP_TRIG_CRCFAIL	= 1,
29 	ADCSMP_TRIG_CCA		= 2,
30 	ADCSMP_TRIG_REG		= 3
31 } RT_ADCSMP_TRIG_SIG_SEL, *PRT_ADCSMP_TRIG_SIG_SEL;
32 
33 
34 typedef enum _RT_ADCSMP_STATE {
35 	ADCSMP_STATE_IDLE		= 0,
36 	ADCSMP_STATE_SET		= 1,
37 	ADCSMP_STATE_QUERY	=	2
38 } RT_ADCSMP_STATE, *PRT_ADCSMP_STATE;
39 
40 
41 typedef struct _RT_ADCSMP {
42 	RT_ADCSMP_STRING		ADCSmpBuf;
43 	RT_ADCSMP_STATE		ADCSmpState;
44 	u1Byte					la_trig_mode;
45 	u4Byte					la_TrigSigSel;
46 	u1Byte					la_dma_type;
47 	u4Byte					la_TriggerTime;
48 	u4Byte					la_mac_ref_mask;
49 	u4Byte					la_dbg_port;
50 	u1Byte					la_trigger_edge;
51 	u1Byte					la_smp_rate;
52 	u4Byte					la_count;
53 	u1Byte					is_bb_trigger;
54 	u1Byte					la_work_item_index;
55 
56 	#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
57 	RT_WORK_ITEM	ADCSmpWorkItem;
58 	RT_WORK_ITEM	ADCSmpWorkItem_1;
59 	#endif
60 } RT_ADCSMP, *PRT_ADCSMP;
61 
62 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
63 VOID
64 ADCSmpWorkItemCallback(
65 	IN	PVOID	pContext
66 );
67 #endif
68 
69 VOID
70 ADCSmp_Set(
71 	IN	PVOID	pDM_VOID,
72 	IN	u1Byte	trig_mode,
73 	IN	u4Byte	TrigSigSel,
74 	IN	u1Byte	DmaDataSigSel,
75 	IN	u4Byte	TriggerTime,
76 	IN	u2Byte	PollingTime
77 );
78 
79 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
80 RT_STATUS
81 ADCSmp_Query(
82 	IN	PVOID	pDM_VOID,
83 	IN	ULONG	InformationBufferLength,
84 	OUT	PVOID	InformationBuffer,
85 	OUT	PULONG	BytesWritten
86 );
87 #endif
88 VOID
89 ADCSmp_Stop(
90 	IN	PVOID	pDM_VOID
91 );
92 
93 VOID
94 ADCSmp_Init(
95 	IN	PVOID	pDM_VOID
96 );
97 
98 #if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
99 VOID
100 ADCSmp_DeInit(
101 	IN		PVOID			pDM_VOID
102 );
103 #endif
104 
105 VOID
106 phydm_la_mode_bb_setting(
107 	IN	PVOID		pDM_VOID
108 );
109 
110 void
111 phydm_la_mode_set_trigger_time(
112 	IN	PVOID		pDM_VOID,
113 	IN	u4Byte		TriggerTime_mu_sec
114 );
115 
116 VOID
117 phydm_lamode_trigger_setting(
118 	IN		PVOID		pDM_VOID,
119 	IN		char			input[][16],
120 	IN		u4Byte		*_used,
121 	OUT		char			*output,
122 	IN		u4Byte		*_out_len,
123 	IN		u4Byte		input_num
124 	);
125 #endif
126 #endif
127 
128