SAMA5D4 Xplained Ultra Board BSP
guowenxue
2019-08-19 2e7235d10c6dbff81960282e1a1e2e798f9b8db8
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#ifndef __INC_ADCSMP_H
#define __INC_ADCSMP_H
 
#define DYNAMIC_LA_MODE    "1.0"  /*2016.07.15  Dino */
 
#if (PHYDM_LA_MODE_SUPPORT == 1)
 
struct _RT_ADCSMP_STRING {
    u32        *octet;
    u32        length;
    u32        buffer_size;
    u32        start_pos;
};
 
 
enum rt_adcsmp_trig_sel {
    PHYDM_ADC_BB_TRIG    = 0,
    PHYDM_ADC_MAC_TRIG    = 1,
    PHYDM_ADC_RF0_TRIG    = 2,
    PHYDM_ADC_RF1_TRIG    = 3,
    PHYDM_MAC_TRIG        = 4
};
 
 
enum rt_adcsmp_trig_sig_sel {
    ADCSMP_TRIG_CRCOK    = 0,
    ADCSMP_TRIG_CRCFAIL    = 1,
    ADCSMP_TRIG_CCA        = 2,
    ADCSMP_TRIG_REG        = 3
};
 
 
enum rt_adcsmp_state {
    ADCSMP_STATE_IDLE        = 0,
    ADCSMP_STATE_SET        = 1,
    ADCSMP_STATE_QUERY    =    2
};
 
 
struct _RT_ADCSMP {
    struct _RT_ADCSMP_STRING        adc_smp_buf;
    enum rt_adcsmp_state        adc_smp_state;
    u8                    la_trig_mode;
    u32                    la_trig_sig_sel;
    u8                    la_dma_type;
    u32                    la_trigger_time;
    u32                    la_mac_ref_mask;
    u32                    la_dbg_port;
    u8                    la_trigger_edge;
    u8                    la_smp_rate;
    u32                    la_count;
    u8                    is_bb_trigger;
    u8                    la_work_item_index;
 
#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
    RT_WORK_ITEM    adc_smp_work_item;
    RT_WORK_ITEM    adc_smp_work_item_1;
#endif
};
 
#if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
void
adc_smp_work_item_callback(
    void    *p_context
);
#endif
 
void
adc_smp_set(
    void    *p_dm_void,
    u8    trig_mode,
    u32    trig_sig_sel,
    u8    dma_data_sig_sel,
    u32    trigger_time,
    u16    polling_time
);
 
#if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
enum rt_status
adc_smp_query(
    void    *p_dm_void,
    ULONG    information_buffer_length,
    void    *information_buffer,
    PULONG    bytes_written
);
#elif (DM_ODM_SUPPORT_TYPE & ODM_CE)
void
adc_smp_query(
    void        *p_dm_void,
    void        *output,
    u32        out_len,
    u32        *pused
);
 
s32
adc_smp_get_sample_counts(
    void        *p_dm_void
);
 
s32
adc_smp_query_single_data(
    void        *p_dm_void,
    void        *output,
    u32        out_len,
    u32        index
);
 
#endif
void
adc_smp_stop(
    void    *p_dm_void
);
 
void
adc_smp_init(
    void    *p_dm_void
);
 
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE))
void
adc_smp_de_init(
    void            *p_dm_void
);
#endif
 
void
phydm_la_mode_bb_setting(
    void        *p_dm_void
);
 
void
phydm_la_mode_set_trigger_time(
    void        *p_dm_void,
    u32        trigger_time_mu_sec
);
 
void
phydm_lamode_trigger_setting(
    void        *p_dm_void,
    char            input[][16],
    u32        *_used,
    char            *output,
    u32        *_out_len,
    u32        input_num
);
#endif
#endif