GNU Linux-libre 4.19.264-gnu1
[releases.git] / drivers / staging / rtlwifi / phydm / phydm_adc_sampling.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /******************************************************************************
3  *
4  * Copyright(c) 2007 - 2016  Realtek Corporation.
5  *
6  * Contact Information:
7  * wlanfae <wlanfae@realtek.com>
8  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
9  * Hsinchu 300, Taiwan.
10  *
11  * Larry Finger <Larry.Finger@lwfinger.net>
12  *
13  *****************************************************************************/
14 #ifndef __INC_ADCSMP_H
15 #define __INC_ADCSMP_H
16
17 #define DYNAMIC_LA_MODE "1.0" /*2016.07.15  Dino */
18
19 struct rt_adcsmp_string {
20         u32 *octet;
21         u32 length;
22         u32 buffer_size;
23         u32 start_pos;
24 };
25
26 enum rt_adcsmp_trig_sel {
27         PHYDM_ADC_BB_TRIG = 0,
28         PHYDM_ADC_MAC_TRIG = 1,
29         PHYDM_ADC_RF0_TRIG = 2,
30         PHYDM_ADC_RF1_TRIG = 3,
31         PHYDM_MAC_TRIG = 4
32 };
33
34 enum rt_adcsmp_trig_sig_sel {
35         ADCSMP_TRIG_CRCOK = 0,
36         ADCSMP_TRIG_CRCFAIL = 1,
37         ADCSMP_TRIG_CCA = 2,
38         ADCSMP_TRIG_REG = 3
39 };
40
41 enum rt_adcsmp_state {
42         ADCSMP_STATE_IDLE = 0,
43         ADCSMP_STATE_SET = 1,
44         ADCSMP_STATE_QUERY = 2
45 };
46
47 struct rt_adcsmp {
48         struct rt_adcsmp_string adc_smp_buf;
49         enum rt_adcsmp_state adc_smp_state;
50         u8 la_trig_mode;
51         u32 la_trig_sig_sel;
52         u8 la_dma_type;
53         u32 la_trigger_time;
54         u32 la_mac_ref_mask;
55         u32 la_dbg_port;
56         u8 la_trigger_edge;
57         u8 la_smp_rate;
58         u32 la_count;
59         u8 is_bb_trigger;
60         u8 la_work_item_index;
61 };
62
63 void adc_smp_set(void *dm_void, u8 trig_mode, u32 trig_sig_sel,
64                  u8 dma_data_sig_sel, u32 trigger_time, u16 polling_time);
65
66 void adc_smp_query(void *dm_void, void *output, u32 out_len, u32 *pused);
67
68 s32 adc_smp_get_sample_counts(void *dm_void);
69
70 s32 adc_smp_query_single_data(void *dm_void, void *output, u32 out_len,
71                               u32 index);
72
73 void adc_smp_stop(void *dm_void);
74
75 void adc_smp_init(void *dm_void);
76
77 void adc_smp_de_init(void *dm_void);
78
79 void phydm_la_mode_bb_setting(void *dm_void);
80
81 void phydm_la_mode_set_trigger_time(void *dm_void, u32 trigger_time_mu_sec);
82
83 void phydm_lamode_trigger_setting(void *dm_void, char input[][16], u32 *_used,
84                                   char *output, u32 *_out_len, u32 input_num);
85 #endif