1
2
3
4
5
6
7
8
9 #ifndef __HALHWOUTSRC_H__
10 #define __HALHWOUTSRC_H__
11
12
13
14
15 #define AGC_DIFF_CONFIG_MP(ic, band) (ODM_ReadAndConfig_MP_##ic##_AGC_TAB_DIFF(pDM_Odm, Array_MP_##ic##_AGC_TAB_DIFF_##band, \
16 sizeof(Array_MP_##ic##_AGC_TAB_DIFF_##band)/sizeof(u32)))
17 #define AGC_DIFF_CONFIG_TC(ic, band) (ODM_ReadAndConfig_TC_##ic##_AGC_TAB_DIFF(pDM_Odm, Array_TC_##ic##_AGC_TAB_DIFF_##band, \
18 sizeof(Array_TC_##ic##_AGC_TAB_DIFF_##band)/sizeof(u32)))
19
20 #define AGC_DIFF_CONFIG(ic, band)\
21 do {\
22 if (pDM_Odm->bIsMPChip)\
23 AGC_DIFF_CONFIG_MP(ic, band);\
24 else\
25 AGC_DIFF_CONFIG_TC(ic, band);\
26 } while (0)
27
28
29
30
31
32
33 typedef struct _Phy_Rx_AGC_Info {
34 #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
35 u8 gain:7, trsw:1;
36 #else
37 u8 trsw:1, gain:7;
38 #endif
39 } PHY_RX_AGC_INFO_T, *pPHY_RX_AGC_INFO_T;
40
41 typedef struct _Phy_Status_Rpt_8192cd {
42 PHY_RX_AGC_INFO_T path_agc[2];
43 u8 ch_corr[2];
44 u8 cck_sig_qual_ofdm_pwdb_all;
45 u8 cck_agc_rpt_ofdm_cfosho_a;
46 u8 cck_rpt_b_ofdm_cfosho_b;
47 u8 rsvd_1;
48 u8 noise_power_db_msb;
49 s8 path_cfotail[2];
50 u8 pcts_mask[2];
51 s8 stream_rxevm[2];
52 u8 path_rxsnr[2];
53 u8 noise_power_db_lsb;
54 u8 rsvd_2[3];
55 u8 stream_csi[2];
56 u8 stream_target_csi[2];
57 s8 sig_evm;
58 u8 rsvd_3;
59
60 #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
61 u8 antsel_rx_keep_2:1;
62 u8 sgi_en:1;
63 u8 rxsc:2;
64 u8 idle_long:1;
65 u8 r_ant_train_en:1;
66 u8 ant_sel_b:1;
67 u8 ant_sel:1;
68 #else
69 u8 ant_sel:1;
70 u8 ant_sel_b:1;
71 u8 r_ant_train_en:1;
72 u8 idle_long:1;
73 u8 rxsc:2;
74 u8 sgi_en:1;
75 u8 antsel_rx_keep_2:1;
76 #endif
77 } PHY_STATUS_RPT_8192CD_T, *PPHY_STATUS_RPT_8192CD_T;
78
79
80 typedef struct _Phy_Status_Rpt_8812 {
81
82
83
84 u8 gain_trsw[2];
85 #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
86 u16 chl_num:10;
87 u16 sub_chnl:4;
88 u16 r_RFMOD:2;
89 #else
90 u16 r_RFMOD:2;
91 u16 sub_chnl:4;
92 u16 chl_num:10;
93 #endif
94
95
96 u8 pwdb_all;
97 u8 cfosho[4];
98
99
100 s8 cfotail[4];
101
102
103 s8 rxevm[2];
104 s8 rxsnr[2];
105
106
107 u8 PCTS_MSK_RPT[2];
108 u8 pdsnr[2];
109
110
111 u8 csi_current[2];
112 u8 rx_gain_c;
113
114
115 u8 rx_gain_d;
116 s8 sigevm;
117 u8 resvd_0;
118 u8 antidx_anta:3;
119 u8 antidx_antb:3;
120 u8 resvd_1:2;
121 } PHY_STATUS_RPT_8812_T, *PPHY_STATUS_RPT_8812_T;
122
123
124 void ODM_PhyStatusQuery(
125 PDM_ODM_T pDM_Odm,
126 struct odm_phy_info *pPhyInfo,
127 u8 *pPhyStatus,
128 struct odm_packet_info *pPktinfo
129 );
130
131 HAL_STATUS ODM_ConfigRFWithTxPwrTrackHeaderFile(PDM_ODM_T pDM_Odm);
132
133 HAL_STATUS ODM_ConfigRFWithHeaderFile(
134 PDM_ODM_T pDM_Odm,
135 ODM_RF_Config_Type ConfigType,
136 ODM_RF_RADIO_PATH_E eRFPath
137 );
138
139 HAL_STATUS ODM_ConfigBBWithHeaderFile(
140 PDM_ODM_T pDM_Odm, ODM_BB_Config_Type ConfigType
141 );
142
143 HAL_STATUS ODM_ConfigFWWithHeaderFile(
144 PDM_ODM_T pDM_Odm,
145 ODM_FW_Config_Type ConfigType,
146 u8 *pFirmware,
147 u32 *pSize
148 );
149
150 s32 odm_SignalScaleMapping(PDM_ODM_T pDM_Odm, s32 CurrSig);
151
152 #endif