txrx.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956
  1. /* Copyright (C) 2018 RDA Technologies Limited and/or its affiliates("RDA").
  2. * All rights reserved.
  3. *
  4. * This software is supplied "AS IS" without any warranties.
  5. * RDA assumes no responsibility or liability for the use of the software,
  6. * conveys no license or title under any patent, copyright, or mask work
  7. * right to the product. RDA reserves the right to make changes in the
  8. * software without notification. RDA also make no representation or
  9. * warranty that such application will be suitable for the specified use
  10. * without further testing or modification.
  11. */
  12. #ifndef _TXRX_H_
  13. #define _TXRX_H_
  14. // Auto generated by dtools(see dtools.txt for its version).
  15. // Don't edit it manually!
  16. #define REG_TXRX_BASE (0x18000000)
  17. typedef volatile struct
  18. {
  19. uint32_t int_flag; // 0x00000000
  20. uint32_t int_mask; // 0x00000004
  21. uint32_t int_flag_ofdm_rx; // 0x00000008
  22. uint32_t int_mask_ofdm_rx; // 0x0000000c
  23. uint32_t sys_cfg; // 0x00000010
  24. uint32_t stop_cfg; // 0x00000014
  25. uint32_t __24[2]; // 0x00000018
  26. uint32_t rx_cfg; // 0x00000020
  27. uint32_t rx_1st_ofdm_len_offset; // 0x00000024
  28. uint32_t rx_afc_factor; // 0x00000028
  29. uint32_t rx_rssi_max_cfg; // 0x0000002c
  30. uint32_t rx_norm_cfg; // 0x00000030
  31. uint32_t rx_sat_val; // 0x00000034
  32. uint32_t rx_pre_cfg; // 0x00000038
  33. uint32_t rx_aux_cfg; // 0x0000003c
  34. uint32_t rx_phy_factor; // 0x00000040
  35. uint32_t rx_dc_cfg; // 0x00000044
  36. uint32_t rx_gain1_cfg; // 0x00000048
  37. uint32_t rx_gain2_cfg; // 0x0000004c
  38. uint32_t rx_out_cfg; // 0x00000050
  39. uint32_t __84[3]; // 0x00000054
  40. uint32_t tx_cfg; // 0x00000060
  41. uint32_t tx_1st_ofdm_len_offset; // 0x00000064
  42. uint32_t tx_ofdm0_len; // 0x00000068
  43. uint32_t tx_ofdm1_len; // 0x0000006c
  44. uint32_t tx_post_cfg; // 0x00000070
  45. uint32_t tx_fill0_num; // 0x00000074
  46. uint32_t __120[2]; // 0x00000078
  47. uint32_t rx_phy_factor_cur; // 0x00000080
  48. uint32_t rx_sat_cnt; // 0x00000084
  49. uint32_t rx_norm_data; // 0x00000088
  50. uint32_t rssi_max1; // 0x0000008c
  51. uint32_t rssi_max2; // 0x00000090
  52. uint32_t rssi_max3; // 0x00000094
  53. uint32_t rssi_max4; // 0x00000098
  54. uint32_t rssi_max5; // 0x0000009c
  55. uint32_t rx_dc_cal_value; // 0x000000a0
  56. uint32_t __164[7]; // 0x000000a4
  57. uint32_t rx_ofdm_stat; // 0x000000c0
  58. uint32_t tx_fifo_stat; // 0x000000c4
  59. uint32_t rx_err_stat; // 0x000000c8
  60. uint32_t tx_err_stat; // 0x000000cc
  61. uint32_t st_cnt_framc; // 0x000000d0
  62. uint32_t st_cnt__add; // 0x000000d4
  63. uint32_t ad_on_time; // 0x000000d8
  64. uint32_t da_on_time; // 0x000000dc
  65. uint32_t fftbuf1_time; // 0x000000e0
  66. uint32_t fftbuf2_time; // 0x000000e4
  67. uint32_t fft2ldtc_time; // 0x000000e8
  68. uint32_t tx_fir3_coe1_cfg; // 0x000000ec
  69. uint32_t tx_fir3_coe2_cfg; // 0x000000f0
  70. uint32_t tx_fir3_coe3_cfg; // 0x000000f4
  71. uint32_t tx_fir3_cfg; // 0x000000f8
  72. uint32_t tx_vld_cnt_cfg; // 0x000000fc
  73. uint32_t __256[23488]; // 0x00000100
  74. uint32_t mem5; // 0x00017000
  75. uint32_t __94212[1024]; // 0x00017004
  76. uint32_t mem3; // 0x00018004
  77. uint32_t __98312[4095]; // 0x00018008
  78. uint32_t mem4; // 0x0001c004
  79. } HWP_TXRX_T;
  80. #define hwp_txrx ((HWP_TXRX_T *)REG_ACCESS_ADDRESS(REG_TXRX_BASE))
  81. // int_flag
  82. typedef union {
  83. uint32_t v;
  84. struct
  85. {
  86. uint32_t rx_ofdm : 1; // [0], write clear
  87. uint32_t rx_fin : 1; // [1], write clear
  88. uint32_t tx_ofdm : 1; // [2], write clear
  89. uint32_t tx_fin : 1; // [3], write clear
  90. uint32_t rx_trace_fin : 1; // [4], write clear
  91. uint32_t tx_trace_fin : 1; // [5], write clear
  92. uint32_t __31_6 : 26; // [31:6]
  93. } b;
  94. } REG_TXRX_INT_FLAG_T;
  95. // int_mask
  96. typedef union {
  97. uint32_t v;
  98. struct
  99. {
  100. uint32_t rx_ofdm_mask : 1; // [0]
  101. uint32_t rx_finish_mask : 1; // [1]
  102. uint32_t tx_ofdm_mask : 1; // [2]
  103. uint32_t tx_finish_mask : 1; // [3]
  104. uint32_t rx_trace_fin : 1; // [4]
  105. uint32_t tx_trace_fin : 1; // [5]
  106. uint32_t __31_6 : 26; // [31:6]
  107. } b;
  108. } REG_TXRX_INT_MASK_T;
  109. // int_flag_ofdm_rx
  110. typedef union {
  111. uint32_t v;
  112. struct
  113. {
  114. uint32_t rx_ofdm_int_0 : 1; // [0], write clear
  115. uint32_t rx_ofdm_int_1 : 1; // [1], write clear
  116. uint32_t rx_ofdm_int_2 : 1; // [2], write clear
  117. uint32_t rx_ofdm_int_3 : 1; // [3], write clear
  118. uint32_t rx_ofdm_int_4 : 1; // [4], write clear
  119. uint32_t rx_ofdm_int_5 : 1; // [5], write clear
  120. uint32_t rx_ofdm_int_6 : 1; // [6], write clear
  121. uint32_t rx_ofdm_int_7 : 1; // [7], write clear
  122. uint32_t rx_ofdm_int_8 : 1; // [8], write clear
  123. uint32_t rx_ofdm_int_9 : 1; // [9], write clear
  124. uint32_t rx_ofdm_int_10 : 1; // [10], write clear
  125. uint32_t rx_ofdm_int_11 : 1; // [11], write clear
  126. uint32_t rx_ofdm_int_12 : 1; // [12], write clear
  127. uint32_t rx_ofdm_int_13 : 1; // [13], write clear
  128. uint32_t rx_ofdm_int_14 : 1; // [14], write clear
  129. uint32_t __31_15 : 17; // [31:15]
  130. } b;
  131. } REG_TXRX_INT_FLAG_OFDM_RX_T;
  132. // int_mask_ofdm_rx
  133. typedef union {
  134. uint32_t v;
  135. struct
  136. {
  137. uint32_t rx_int_en0 : 1; // [0]
  138. uint32_t rx_int_en1 : 1; // [1]
  139. uint32_t rx_int_en2 : 1; // [2]
  140. uint32_t rx_int_en3 : 1; // [3]
  141. uint32_t rx_int_en4 : 1; // [4]
  142. uint32_t rx_int_en5 : 1; // [5]
  143. uint32_t rx_int_en6 : 1; // [6]
  144. uint32_t rx_int_en7 : 1; // [7]
  145. uint32_t rx_int_en8 : 1; // [8]
  146. uint32_t rx_int_en9 : 1; // [9]
  147. uint32_t rx_int_en10 : 1; // [10]
  148. uint32_t rx_int_en11 : 1; // [11]
  149. uint32_t rx_int_en12 : 1; // [12]
  150. uint32_t rx_int_en13 : 1; // [13]
  151. uint32_t rx_int_en14 : 1; // [14]
  152. uint32_t rx_last_int_en : 1; // [15]
  153. uint32_t rx_inten : 1; // [16]
  154. uint32_t __31_17 : 15; // [31:17]
  155. } b;
  156. } REG_TXRX_INT_MASK_OFDM_RX_T;
  157. // sys_cfg
  158. typedef union {
  159. uint32_t v;
  160. struct
  161. {
  162. uint32_t cat1_en : 1; // [0]
  163. uint32_t tx_nb_en : 1; // [1]
  164. uint32_t tx_dfe_en : 1; // [2]
  165. uint32_t tx_ovt : 1; // [3]
  166. uint32_t rx_ovt : 1; // [4]
  167. uint32_t rx_dcoc_sel : 1; // [5]
  168. uint32_t __31_6 : 26; // [31:6]
  169. } b;
  170. } REG_TXRX_SYS_CFG_T;
  171. // stop_cfg
  172. typedef union {
  173. uint32_t v;
  174. struct
  175. {
  176. uint32_t rx_stop_en : 1; // [0]
  177. uint32_t tx_stop_en : 1; // [1]
  178. uint32_t __31_2 : 30; // [31:2]
  179. } b;
  180. } REG_TXRX_STOP_CFG_T;
  181. // rx_cfg
  182. typedef union {
  183. uint32_t v;
  184. struct
  185. {
  186. uint32_t glb_rxen : 1; // [0]
  187. uint32_t rx_rssi_en : 1; // [1]
  188. uint32_t rx_sat_en : 1; // [2]
  189. uint32_t rx_ave_en : 1; // [3]
  190. uint32_t rx_norm_en : 1; // [4]
  191. uint32_t rx_meas_en : 1; // [5]
  192. uint32_t offset_zero_flag : 1; // [6]
  193. uint32_t rx_trace_en : 1; // [7]
  194. uint32_t hf_fir_bitsel : 4; // [11:8]
  195. uint32_t __15_12 : 4; // [15:12]
  196. uint32_t rx_cp_type : 2; // [17:16]
  197. uint32_t rx_dlfft_en : 1; // [18]
  198. uint32_t rx_iddet_en : 1; // [19]
  199. uint32_t __20_20 : 1; // [20]
  200. uint32_t offset_ctrl_flag : 1; // [21]
  201. uint32_t rx_otdoa_en : 1; // [22]
  202. uint32_t rx_hf_fir_en : 1; // [23]
  203. uint32_t __24_24 : 1; // [24]
  204. uint32_t rssi_save_sel : 3; // [27:25]
  205. uint32_t __29_28 : 2; // [29:28]
  206. uint32_t rx_rssi_cfg : 1; // [30]
  207. uint32_t rx_soft_afc_en : 1; // [31]
  208. } b;
  209. } REG_TXRX_RX_CFG_T;
  210. // rx_1st_ofdm_len_offset
  211. typedef union {
  212. uint32_t v;
  213. struct
  214. {
  215. uint32_t rx_ist_ofdm_len_offset : 10; // [9:0]
  216. uint32_t __31_10 : 22; // [31:10]
  217. } b;
  218. } REG_TXRX_RX_1ST_OFDM_LEN_OFFSET_T;
  219. // rx_afc_factor
  220. typedef union {
  221. uint32_t v;
  222. struct
  223. {
  224. uint32_t rx_afc_factor : 16; // [15:0]
  225. uint32_t rx_afc_update : 1; // [16]
  226. uint32_t __31_17 : 15; // [31:17]
  227. } b;
  228. } REG_TXRX_RX_AFC_FACTOR_T;
  229. // rx_rssi_max_cfg
  230. typedef union {
  231. uint32_t v;
  232. struct
  233. {
  234. uint32_t rssi_max_start : 4; // [3:0]
  235. uint32_t rssi_max_clear : 1; // [4]
  236. uint32_t next_en : 1; // [5]
  237. uint32_t __31_6 : 26; // [31:6]
  238. } b;
  239. } REG_TXRX_RX_RSSI_MAX_CFG_T;
  240. // rx_norm_cfg
  241. typedef union {
  242. uint32_t v;
  243. struct
  244. {
  245. uint32_t rx_norm_cfg : 3; // [2:0]
  246. uint32_t __31_3 : 29; // [31:3]
  247. } b;
  248. } REG_TXRX_RX_NORM_CFG_T;
  249. // rx_sat_val
  250. typedef union {
  251. uint32_t v;
  252. struct
  253. {
  254. uint32_t sat_val_min : 12; // [11:0]
  255. uint32_t __15_12 : 4; // [15:12]
  256. uint32_t sat_val_max : 12; // [27:16]
  257. uint32_t __31_28 : 4; // [31:28]
  258. } b;
  259. } REG_TXRX_RX_SAT_VAL_T;
  260. // rx_pre_cfg
  261. typedef union {
  262. uint32_t v;
  263. struct
  264. {
  265. uint32_t rx_bitsel : 5; // [4:0]
  266. uint32_t __5_5 : 1; // [5]
  267. uint32_t fir_en : 1; // [6]
  268. uint32_t freq_en : 1; // [7]
  269. uint32_t rx_bw_sel : 3; // [10:8]
  270. uint32_t __11_11 : 1; // [11]
  271. uint32_t rx_freq_factor : 11; // [22:12]
  272. uint32_t __31_23 : 9; // [31:23]
  273. } b;
  274. } REG_TXRX_RX_PRE_CFG_T;
  275. // rx_dc_cfg
  276. typedef union {
  277. uint32_t v;
  278. struct
  279. {
  280. uint32_t rx_dc_q : 12; // [11:0]
  281. uint32_t __15_12 : 4; // [15:12]
  282. uint32_t rx_dc_i : 12; // [27:16]
  283. uint32_t __30_28 : 3; // [30:28]
  284. uint32_t rx_dc_update : 1; // [31]
  285. } b;
  286. } REG_TXRX_RX_DC_CFG_T;
  287. // rx_gain1_cfg
  288. typedef union {
  289. uint32_t v;
  290. struct
  291. {
  292. uint32_t rx_gain1 : 10; // [9:0]
  293. uint32_t __15_10 : 6; // [15:10]
  294. uint32_t rx_gain1_en : 1; // [16]
  295. uint32_t __31_17 : 15; // [31:17]
  296. } b;
  297. } REG_TXRX_RX_GAIN1_CFG_T;
  298. // rx_gain2_cfg
  299. typedef union {
  300. uint32_t v;
  301. struct
  302. {
  303. uint32_t rx_gain2 : 10; // [9:0]
  304. uint32_t __15_10 : 6; // [15:10]
  305. uint32_t rx_gain2_en : 1; // [16]
  306. uint32_t __31_17 : 15; // [31:17]
  307. } b;
  308. } REG_TXRX_RX_GAIN2_CFG_T;
  309. // rx_out_cfg
  310. typedef union {
  311. uint32_t v;
  312. struct
  313. {
  314. uint32_t meas_dat_fin : 3; // [2:0]
  315. uint32_t __3_3 : 1; // [3]
  316. uint32_t meas_dat_start : 2; // [5:4]
  317. uint32_t __7_6 : 2; // [7:6]
  318. uint32_t otdoa_dat_fin : 3; // [10:8]
  319. uint32_t __11_11 : 1; // [11]
  320. uint32_t otdoa_dat_start : 2; // [13:12]
  321. uint32_t __15_14 : 2; // [15:14]
  322. uint32_t iddet_dat_fin : 3; // [18:16]
  323. uint32_t __19_19 : 1; // [19]
  324. uint32_t iddet_dat_start : 2; // [21:20]
  325. uint32_t __31_22 : 10; // [31:22]
  326. } b;
  327. } REG_TXRX_RX_OUT_CFG_T;
  328. // tx_cfg
  329. typedef union {
  330. uint32_t v;
  331. struct
  332. {
  333. uint32_t glb_txen : 1; // [0]
  334. uint32_t __1_1 : 1; // [1]
  335. uint32_t tx_cp_type : 1; // [2]
  336. uint32_t tx_data_drive : 1; // [3]
  337. uint32_t tx_loop : 1; // [4]
  338. uint32_t __31_5 : 27; // [31:5]
  339. } b;
  340. } REG_TXRX_TX_CFG_T;
  341. // tx_1st_ofdm_len_offset
  342. typedef union {
  343. uint32_t v;
  344. struct
  345. {
  346. uint32_t tx_1st_ofdm_len_offset : 7; // [6:0]
  347. uint32_t __31_7 : 25; // [31:7]
  348. } b;
  349. } REG_TXRX_TX_1ST_OFDM_LEN_OFFSET_T;
  350. // tx_ofdm0_len
  351. typedef union {
  352. uint32_t v;
  353. struct
  354. {
  355. uint32_t tx_ofdm0_len : 12; // [11:0]
  356. uint32_t __31_12 : 20; // [31:12]
  357. } b;
  358. } REG_TXRX_TX_OFDM0_LEN_T;
  359. // tx_ofdm1_len
  360. typedef union {
  361. uint32_t v;
  362. struct
  363. {
  364. uint32_t tx_ofdm1_len : 12; // [11:0]
  365. uint32_t __31_12 : 20; // [31:12]
  366. } b;
  367. } REG_TXRX_TX_OFDM1_LEN_T;
  368. // tx_post_cfg
  369. typedef union {
  370. uint32_t v;
  371. struct
  372. {
  373. uint32_t tx_bitsel : 5; // [4:0]
  374. uint32_t __6_5 : 2; // [6:5]
  375. uint32_t tx_freq_en : 1; // [7]
  376. uint32_t tx_bw_sel : 3; // [10:8]
  377. uint32_t tx_fir_en : 1; // [11], read only
  378. uint32_t tx_nb_start : 7; // [18:12], read only
  379. uint32_t __19_19 : 1; // [19]
  380. uint32_t prach_format : 3; // [22:20], read only
  381. uint32_t prach_en : 1; // [23], read only
  382. uint32_t __31_24 : 8; // [31:24]
  383. } b;
  384. } REG_TXRX_TX_POST_CFG_T;
  385. // tx_fill0_num
  386. typedef union {
  387. uint32_t v;
  388. struct
  389. {
  390. uint32_t tx_fill0_num : 8; // [7:0]
  391. uint32_t __31_8 : 24; // [31:8]
  392. } b;
  393. } REG_TXRX_TX_FILL0_NUM_T;
  394. // rx_norm_data
  395. typedef union {
  396. uint32_t v;
  397. struct
  398. {
  399. uint32_t rx_norm_data : 4; // [3:0], read only
  400. uint32_t __31_4 : 28; // [31:4]
  401. } b;
  402. } REG_TXRX_RX_NORM_DATA_T;
  403. // rx_dc_cal_value
  404. typedef union {
  405. uint32_t v;
  406. struct
  407. {
  408. uint32_t rx_dc_cal_value_q : 16; // [15:0], read only
  409. uint32_t rx_dc_cal_value_i : 16; // [31:16], read only
  410. } b;
  411. } REG_TXRX_RX_DC_CAL_VALUE_T;
  412. // rx_ofdm_stat
  413. typedef union {
  414. uint32_t v;
  415. struct
  416. {
  417. uint32_t rx_ofdm_stat : 4; // [3:0], read only
  418. uint32_t ping_pang_stat : 1; // [4], read only
  419. uint32_t __5_5 : 1; // [5]
  420. uint32_t rx_no_data_err : 1; // [6], read only
  421. uint32_t cp_err : 1; // [7], read only
  422. uint32_t rx_meas_en : 1; // [8], read only
  423. uint32_t rx_iddet_en : 1; // [9], read only
  424. uint32_t rx_otdoa_en : 1; // [10], read only
  425. uint32_t rx_dlfft_en : 1; // [11], read only
  426. uint32_t rx_running : 1; // [12], read only
  427. uint32_t ad_on : 1; // [13], read only
  428. uint32_t __15_14 : 2; // [15:14]
  429. uint32_t rx_mem_addr : 12; // [27:16], read only
  430. uint32_t __31_28 : 4; // [31:28]
  431. } b;
  432. } REG_TXRX_RX_OFDM_STAT_T;
  433. // tx_fifo_stat
  434. typedef union {
  435. uint32_t v;
  436. struct
  437. {
  438. uint32_t tx_ofdm_stat : 4; // [3:0], read only
  439. uint32_t tx_fifo_stat : 1; // [4], read only
  440. uint32_t __11_5 : 7; // [11:5]
  441. uint32_t tx_running : 1; // [12], read only
  442. uint32_t da_on : 1; // [13], read only
  443. uint32_t __15_14 : 2; // [15:14]
  444. uint32_t tx_mem_addr : 12; // [27:16], read only
  445. uint32_t __31_28 : 4; // [31:28]
  446. } b;
  447. } REG_TXRX_TX_FIFO_STAT_T;
  448. // rx_err_stat
  449. typedef union {
  450. uint32_t v;
  451. struct
  452. {
  453. uint32_t cp_type_rx : 2; // [1:0], read only
  454. uint32_t pingpang_flag : 1; // [2], read only
  455. uint32_t dlfft_mem_sel : 1; // [3], read only
  456. uint32_t rx_running : 1; // [4], read only
  457. uint32_t ad_on : 1; // [5], read only
  458. uint32_t __7_6 : 2; // [7:6]
  459. uint32_t ofdm_num_rx : 4; // [11:8], read only
  460. uint32_t ts_cnt : 16; // [27:12], read only
  461. uint32_t frame_num : 4; // [31:28], read only
  462. } b;
  463. } REG_TXRX_RX_ERR_STAT_T;
  464. // tx_err_stat
  465. typedef union {
  466. uint32_t v;
  467. struct
  468. {
  469. uint32_t pa_empty_err : 1; // [0], read only
  470. uint32_t pi_empty_err : 1; // [1], read only
  471. uint32_t dft_wr_pa_err : 1; // [2], read only
  472. uint32_t dft_wr_pi_err : 1; // [3], read only
  473. uint32_t ram_pi_sel : 1; // [4], read only
  474. uint32_t tx_running : 1; // [5], read only
  475. uint32_t da_on : 1; // [6], read only
  476. uint32_t __7_7 : 1; // [7]
  477. uint32_t ofdm_num_tx : 4; // [11:8], read only
  478. uint32_t ts_cnt : 16; // [27:12], read only
  479. uint32_t frame_num : 4; // [31:28], read only
  480. } b;
  481. } REG_TXRX_TX_ERR_STAT_T;
  482. // st_cnt_framc
  483. typedef union {
  484. uint32_t v;
  485. struct
  486. {
  487. uint32_t rf_1st_int_framc : 16; // [15:0], read only
  488. uint32_t adon_pos_framc : 16; // [31:16], read only
  489. } b;
  490. } REG_TXRX_ST_CNT_FRAMC_T;
  491. // st_cnt__add
  492. typedef union {
  493. uint32_t v;
  494. struct
  495. {
  496. uint32_t rf_int_sub_add : 16; // [15:0], read only
  497. uint32_t rf_int_num : 16; // [31:16], read only
  498. } b;
  499. } REG_TXRX_ST_CNT__ADD_T;
  500. // ad_on_time
  501. typedef union {
  502. uint32_t v;
  503. struct
  504. {
  505. uint32_t ad_on_pos_time0 : 8; // [7:0], read only
  506. uint32_t ad_on_neg_time0 : 8; // [15:8], read only
  507. uint32_t ad_on_pos_time1 : 8; // [23:16], read only
  508. uint32_t ad_on_neg_time1 : 8; // [31:24], read only
  509. } b;
  510. } REG_TXRX_AD_ON_TIME_T;
  511. // da_on_time
  512. typedef union {
  513. uint32_t v;
  514. struct
  515. {
  516. uint32_t da_on_pos_time0 : 8; // [7:0], read only
  517. uint32_t da_on_neg_time0 : 8; // [15:8], read only
  518. uint32_t da_on_pos_time1 : 8; // [23:16], read only
  519. uint32_t da_on_neg_time1 : 8; // [31:24], read only
  520. } b;
  521. } REG_TXRX_DA_ON_TIME_T;
  522. // fftbuf1_time
  523. typedef union {
  524. uint32_t v;
  525. struct
  526. {
  527. uint32_t fftbuf1_time1 : 8; // [7:0], read only
  528. uint32_t fftbuf1_time2 : 8; // [15:8], read only
  529. uint32_t fftbuf1_time3 : 8; // [23:16], read only
  530. uint32_t fftbuf1_time4 : 8; // [31:24], read only
  531. } b;
  532. } REG_TXRX_FFTBUF1_TIME_T;
  533. // fftbuf2_time
  534. typedef union {
  535. uint32_t v;
  536. struct
  537. {
  538. uint32_t fftbuf2_time1 : 8; // [7:0], read only
  539. uint32_t fftbuf2_time2 : 8; // [15:8], read only
  540. uint32_t fftbuf2_time3 : 8; // [23:16], read only
  541. uint32_t fftbuf2_time4 : 8; // [31:24], read only
  542. } b;
  543. } REG_TXRX_FFTBUF2_TIME_T;
  544. // fft2ldtc_time
  545. typedef union {
  546. uint32_t v;
  547. struct
  548. {
  549. uint32_t fft2ldtc_time1 : 8; // [7:0], read only
  550. uint32_t fft2ldtc_time2 : 8; // [15:8], read only
  551. uint32_t fft2ldtc_time3 : 8; // [23:16], read only
  552. uint32_t fft2ldtc_time4 : 8; // [31:24], read only
  553. } b;
  554. } REG_TXRX_FFT2LDTC_TIME_T;
  555. // tx_fir3_coe1_cfg
  556. typedef union {
  557. uint32_t v;
  558. struct
  559. {
  560. uint32_t tx_fir_coe_a0 : 12; // [11:0]
  561. uint32_t tx_fir_coe_a1 : 12; // [23:12]
  562. uint32_t tx_fir_coe_a21 : 8; // [31:24]
  563. } b;
  564. } REG_TXRX_TX_FIR3_COE1_CFG_T;
  565. // tx_fir3_coe2_cfg
  566. typedef union {
  567. uint32_t v;
  568. struct
  569. {
  570. uint32_t tx_fir_coe_a22 : 4; // [3:0]
  571. uint32_t tx_fir_coe_a3 : 12; // [15:4]
  572. uint32_t tx_fir_coe_a4 : 12; // [27:16]
  573. uint32_t tx_fir_coe_a51 : 4; // [31:28]
  574. } b;
  575. } REG_TXRX_TX_FIR3_COE2_CFG_T;
  576. // tx_fir3_coe3_cfg
  577. typedef union {
  578. uint32_t v;
  579. struct
  580. {
  581. uint32_t tx_fir_coe_a52 : 8; // [7:0]
  582. uint32_t tx_fir_coe_a6 : 12; // [19:8]
  583. uint32_t tx_fir_coe_a7 : 12; // [31:20]
  584. } b;
  585. } REG_TXRX_TX_FIR3_COE3_CFG_T;
  586. // tx_fir3_cfg
  587. typedef union {
  588. uint32_t v;
  589. struct
  590. {
  591. uint32_t fir3_en : 1; // [0]
  592. uint32_t autock_en : 1; // [1]
  593. uint32_t reg_grp_delay : 5; // [6:2]
  594. uint32_t reg_samp_rate : 6; // [12:7]
  595. uint32_t __31_13 : 19; // [31:13]
  596. } b;
  597. } REG_TXRX_TX_FIR3_CFG_T;
  598. // tx_vld_cnt_cfg
  599. typedef union {
  600. uint32_t v;
  601. struct
  602. {
  603. uint32_t tx_vld_cnt : 3; // [2:0]
  604. uint32_t __31_3 : 29; // [31:3]
  605. } b;
  606. } REG_TXRX_TX_VLD_CNT_CFG_T;
  607. // mem3
  608. typedef union {
  609. uint32_t v;
  610. struct
  611. {
  612. uint32_t __3_0 : 4; // [3:0]
  613. uint32_t mem3_2 : 12; // [15:4]
  614. uint32_t __19_16 : 4; // [19:16]
  615. uint32_t mem3_1 : 12; // [31:20]
  616. } b;
  617. } REG_TXRX_MEM3_T;
  618. // mem4
  619. typedef union {
  620. uint32_t v;
  621. struct
  622. {
  623. uint32_t __3_0 : 4; // [3:0]
  624. uint32_t mem4_2 : 12; // [15:4]
  625. uint32_t __19_16 : 4; // [19:16]
  626. uint32_t mem4_1 : 12; // [31:20]
  627. } b;
  628. } REG_TXRX_MEM4_T;
  629. // int_flag
  630. #define TXRX_RX_OFDM (1 << 0)
  631. #define TXRX_RX_FIN (1 << 1)
  632. #define TXRX_TX_OFDM (1 << 2)
  633. #define TXRX_TX_FIN (1 << 3)
  634. #define TXRX_RX_TRACE_FIN (1 << 4)
  635. #define TXRX_TX_TRACE_FIN (1 << 5)
  636. // int_mask
  637. #define TXRX_RX_OFDM_MASK (1 << 0)
  638. #define TXRX_RX_FINISH_MASK (1 << 1)
  639. #define TXRX_TX_OFDM_MASK (1 << 2)
  640. #define TXRX_TX_FINISH_MASK (1 << 3)
  641. #define TXRX_RX_TRACE_FIN (1 << 4)
  642. #define TXRX_TX_TRACE_FIN (1 << 5)
  643. // int_flag_ofdm_rx
  644. #define TXRX_RX_OFDM_INT_0 (1 << 0)
  645. #define TXRX_RX_OFDM_INT_1 (1 << 1)
  646. #define TXRX_RX_OFDM_INT_2 (1 << 2)
  647. #define TXRX_RX_OFDM_INT_3 (1 << 3)
  648. #define TXRX_RX_OFDM_INT_4 (1 << 4)
  649. #define TXRX_RX_OFDM_INT_5 (1 << 5)
  650. #define TXRX_RX_OFDM_INT_6 (1 << 6)
  651. #define TXRX_RX_OFDM_INT_7 (1 << 7)
  652. #define TXRX_RX_OFDM_INT_8 (1 << 8)
  653. #define TXRX_RX_OFDM_INT_9 (1 << 9)
  654. #define TXRX_RX_OFDM_INT_10 (1 << 10)
  655. #define TXRX_RX_OFDM_INT_11 (1 << 11)
  656. #define TXRX_RX_OFDM_INT_12 (1 << 12)
  657. #define TXRX_RX_OFDM_INT_13 (1 << 13)
  658. #define TXRX_RX_OFDM_INT_14 (1 << 14)
  659. // int_mask_ofdm_rx
  660. #define TXRX_RX_INT_EN0 (1 << 0)
  661. #define TXRX_RX_INT_EN1 (1 << 1)
  662. #define TXRX_RX_INT_EN2 (1 << 2)
  663. #define TXRX_RX_INT_EN3 (1 << 3)
  664. #define TXRX_RX_INT_EN4 (1 << 4)
  665. #define TXRX_RX_INT_EN5 (1 << 5)
  666. #define TXRX_RX_INT_EN6 (1 << 6)
  667. #define TXRX_RX_INT_EN7 (1 << 7)
  668. #define TXRX_RX_INT_EN8 (1 << 8)
  669. #define TXRX_RX_INT_EN9 (1 << 9)
  670. #define TXRX_RX_INT_EN10 (1 << 10)
  671. #define TXRX_RX_INT_EN11 (1 << 11)
  672. #define TXRX_RX_INT_EN12 (1 << 12)
  673. #define TXRX_RX_INT_EN13 (1 << 13)
  674. #define TXRX_RX_INT_EN14 (1 << 14)
  675. #define TXRX_RX_LAST_INT_EN (1 << 15)
  676. #define TXRX_RX_INTEN (1 << 16)
  677. // sys_cfg
  678. #define TXRX_CAT1_EN (1 << 0)
  679. #define TXRX_TX_NB_EN (1 << 1)
  680. #define TXRX_TX_DFE_EN (1 << 2)
  681. #define TXRX_TX_OVT (1 << 3)
  682. #define TXRX_RX_OVT (1 << 4)
  683. #define TXRX_RX_DCOC_SEL (1 << 5)
  684. // stop_cfg
  685. #define TXRX_RX_STOP_EN (1 << 0)
  686. #define TXRX_TX_STOP_EN (1 << 1)
  687. // rx_cfg
  688. #define TXRX_GLB_RXEN (1 << 0)
  689. #define TXRX_RX_RSSI_EN (1 << 1)
  690. #define TXRX_RX_SAT_EN (1 << 2)
  691. #define TXRX_RX_AVE_EN (1 << 3)
  692. #define TXRX_RX_NORM_EN (1 << 4)
  693. #define TXRX_RX_CFG_RX_MEAS_EN (1 << 5)
  694. #define TXRX_OFFSET_ZERO_FLAG (1 << 6)
  695. #define TXRX_RX_TRACE_EN (1 << 7)
  696. #define TXRX_HF_FIR_BITSEL(n) (((n)&0xf) << 8)
  697. #define TXRX_RX_CP_TYPE(n) (((n)&0x3) << 16)
  698. #define TXRX_RX_CFG_RX_DLFFT_EN (1 << 18)
  699. #define TXRX_RX_CFG_RX_IDDET_EN (1 << 19)
  700. #define TXRX_OFFSET_CTRL_FLAG (1 << 21)
  701. #define TXRX_RX_CFG_RX_OTDOA_EN (1 << 22)
  702. #define TXRX_RX_HF_FIR_EN (1 << 23)
  703. #define TXRX_RSSI_SAVE_SEL(n) (((n)&0x7) << 25)
  704. #define TXRX_RX_RSSI_CFG (1 << 30)
  705. #define TXRX_RX_SOFT_AFC_EN (1 << 31)
  706. // rx_1st_ofdm_len_offset
  707. #define TXRX_RX_IST_OFDM_LEN_OFFSET(n) (((n)&0x3ff) << 0)
  708. // rx_afc_factor
  709. #define TXRX_RX_AFC_FACTOR(n) (((n)&0xffff) << 0)
  710. #define TXRX_RX_AFC_UPDATE (1 << 16)
  711. // rx_rssi_max_cfg
  712. #define TXRX_RSSI_MAX_START(n) (((n)&0xf) << 0)
  713. #define TXRX_RSSI_MAX_CLEAR (1 << 4)
  714. #define TXRX_NEXT_EN (1 << 5)
  715. // rx_norm_cfg
  716. #define TXRX_RX_NORM_CFG(n) (((n)&0x7) << 0)
  717. // rx_sat_val
  718. #define TXRX_SAT_VAL_MIN(n) (((n)&0xfff) << 0)
  719. #define TXRX_SAT_VAL_MAX(n) (((n)&0xfff) << 16)
  720. // rx_pre_cfg
  721. #define TXRX_RX_BITSEL(n) (((n)&0x1f) << 0)
  722. #define TXRX_FIR_EN (1 << 6)
  723. #define TXRX_FREQ_EN (1 << 7)
  724. #define TXRX_RX_BW_SEL(n) (((n)&0x7) << 8)
  725. #define TXRX_RX_FREQ_FACTOR(n) (((n)&0x7ff) << 12)
  726. // rx_dc_cfg
  727. #define TXRX_RX_DC_Q(n) (((n)&0xfff) << 0)
  728. #define TXRX_RX_DC_I(n) (((n)&0xfff) << 16)
  729. #define TXRX_RX_DC_UPDATE (1 << 31)
  730. // rx_gain1_cfg
  731. #define TXRX_RX_GAIN1(n) (((n)&0x3ff) << 0)
  732. #define TXRX_RX_GAIN1_EN (1 << 16)
  733. // rx_gain2_cfg
  734. #define TXRX_RX_GAIN2(n) (((n)&0x3ff) << 0)
  735. #define TXRX_RX_GAIN2_EN (1 << 16)
  736. // rx_out_cfg
  737. #define TXRX_MEAS_DAT_FIN(n) (((n)&0x7) << 0)
  738. #define TXRX_MEAS_DAT_START(n) (((n)&0x3) << 4)
  739. #define TXRX_OTDOA_DAT_FIN(n) (((n)&0x7) << 8)
  740. #define TXRX_OTDOA_DAT_START(n) (((n)&0x3) << 12)
  741. #define TXRX_IDDET_DAT_FIN(n) (((n)&0x7) << 16)
  742. #define TXRX_IDDET_DAT_START(n) (((n)&0x3) << 20)
  743. // tx_cfg
  744. #define TXRX_GLB_TXEN (1 << 0)
  745. #define TXRX_TX_CP_TYPE (1 << 2)
  746. #define TXRX_TX_DATA_DRIVE (1 << 3)
  747. #define TXRX_TX_LOOP (1 << 4)
  748. // tx_1st_ofdm_len_offset
  749. #define TXRX_TX_1ST_OFDM_LEN_OFFSET(n) (((n)&0x7f) << 0)
  750. // tx_ofdm0_len
  751. #define TXRX_TX_OFDM0_LEN(n) (((n)&0xfff) << 0)
  752. // tx_ofdm1_len
  753. #define TXRX_TX_OFDM1_LEN(n) (((n)&0xfff) << 0)
  754. // tx_post_cfg
  755. #define TXRX_TX_BITSEL(n) (((n)&0x1f) << 0)
  756. #define TXRX_TX_FREQ_EN (1 << 7)
  757. #define TXRX_TX_BW_SEL(n) (((n)&0x7) << 8)
  758. #define TXRX_TX_FIR_EN (1 << 11)
  759. #define TXRX_TX_NB_START(n) (((n)&0x7f) << 12)
  760. #define TXRX_PRACH_FORMAT(n) (((n)&0x7) << 20)
  761. #define TXRX_PRACH_EN (1 << 23)
  762. // tx_fill0_num
  763. #define TXRX_TX_FILL0_NUM(n) (((n)&0xff) << 0)
  764. // rx_norm_data
  765. #define TXRX_RX_NORM_DATA(n) (((n)&0xf) << 0)
  766. // rx_dc_cal_value
  767. #define TXRX_RX_DC_CAL_VALUE_Q(n) (((n)&0xffff) << 0)
  768. #define TXRX_RX_DC_CAL_VALUE_I(n) (((n)&0xffff) << 16)
  769. // rx_ofdm_stat
  770. #define TXRX_RX_OFDM_STAT(n) (((n)&0xf) << 0)
  771. #define TXRX_PING_PANG_STAT (1 << 4)
  772. #define TXRX_RX_NO_DATA_ERR (1 << 6)
  773. #define TXRX_CP_ERR (1 << 7)
  774. #define TXRX_RX_OFDM_STAT_RX_MEAS_EN (1 << 8)
  775. #define TXRX_RX_OFDM_STAT_RX_IDDET_EN (1 << 9)
  776. #define TXRX_RX_OFDM_STAT_RX_OTDOA_EN (1 << 10)
  777. #define TXRX_RX_OFDM_STAT_RX_DLFFT_EN (1 << 11)
  778. #define TXRX_RX_OFDM_STAT_RX_RUNNING (1 << 12)
  779. #define TXRX_RX_OFDM_STAT_AD_ON (1 << 13)
  780. #define TXRX_RX_MEM_ADDR(n) (((n)&0xfff) << 16)
  781. // tx_fifo_stat
  782. #define TXRX_TX_OFDM_STAT(n) (((n)&0xf) << 0)
  783. #define TXRX_TX_FIFO_STAT (1 << 4)
  784. #define TXRX_TX_FIFO_STAT_TX_RUNNING (1 << 12)
  785. #define TXRX_TX_FIFO_STAT_DA_ON (1 << 13)
  786. #define TXRX_TX_MEM_ADDR(n) (((n)&0xfff) << 16)
  787. // rx_err_stat
  788. #define TXRX_CP_TYPE_RX(n) (((n)&0x3) << 0)
  789. #define TXRX_PINGPANG_FLAG (1 << 2)
  790. #define TXRX_DLFFT_MEM_SEL (1 << 3)
  791. #define TXRX_RX_ERR_STAT_RX_RUNNING (1 << 4)
  792. #define TXRX_RX_ERR_STAT_AD_ON (1 << 5)
  793. #define TXRX_OFDM_NUM_RX(n) (((n)&0xf) << 8)
  794. #define TXRX_TS_CNT(n) (((n)&0xffff) << 12)
  795. #define TXRX_FRAME_NUM(n) (((n)&0xf) << 28)
  796. // tx_err_stat
  797. #define TXRX_PA_EMPTY_ERR (1 << 0)
  798. #define TXRX_PI_EMPTY_ERR (1 << 1)
  799. #define TXRX_DFT_WR_PA_ERR (1 << 2)
  800. #define TXRX_DFT_WR_PI_ERR (1 << 3)
  801. #define TXRX_RAM_PI_SEL (1 << 4)
  802. #define TXRX_TX_ERR_STAT_TX_RUNNING (1 << 5)
  803. #define TXRX_TX_ERR_STAT_DA_ON (1 << 6)
  804. #define TXRX_OFDM_NUM_TX(n) (((n)&0xf) << 8)
  805. #define TXRX_TS_CNT(n) (((n)&0xffff) << 12)
  806. #define TXRX_FRAME_NUM(n) (((n)&0xf) << 28)
  807. // st_cnt_framc
  808. #define TXRX_RF_1ST_INT_FRAMC(n) (((n)&0xffff) << 0)
  809. #define TXRX_ADON_POS_FRAMC(n) (((n)&0xffff) << 16)
  810. // st_cnt__add
  811. #define TXRX_RF_INT_SUB_ADD(n) (((n)&0xffff) << 0)
  812. #define TXRX_RF_INT_NUM(n) (((n)&0xffff) << 16)
  813. // ad_on_time
  814. #define TXRX_AD_ON_POS_TIME0(n) (((n)&0xff) << 0)
  815. #define TXRX_AD_ON_NEG_TIME0(n) (((n)&0xff) << 8)
  816. #define TXRX_AD_ON_POS_TIME1(n) (((n)&0xff) << 16)
  817. #define TXRX_AD_ON_NEG_TIME1(n) (((n)&0xff) << 24)
  818. // da_on_time
  819. #define TXRX_DA_ON_POS_TIME0(n) (((n)&0xff) << 0)
  820. #define TXRX_DA_ON_NEG_TIME0(n) (((n)&0xff) << 8)
  821. #define TXRX_DA_ON_POS_TIME1(n) (((n)&0xff) << 16)
  822. #define TXRX_DA_ON_NEG_TIME1(n) (((n)&0xff) << 24)
  823. // fftbuf1_time
  824. #define TXRX_FFTBUF1_TIME1(n) (((n)&0xff) << 0)
  825. #define TXRX_FFTBUF1_TIME2(n) (((n)&0xff) << 8)
  826. #define TXRX_FFTBUF1_TIME3(n) (((n)&0xff) << 16)
  827. #define TXRX_FFTBUF1_TIME4(n) (((n)&0xff) << 24)
  828. // fftbuf2_time
  829. #define TXRX_FFTBUF2_TIME1(n) (((n)&0xff) << 0)
  830. #define TXRX_FFTBUF2_TIME2(n) (((n)&0xff) << 8)
  831. #define TXRX_FFTBUF2_TIME3(n) (((n)&0xff) << 16)
  832. #define TXRX_FFTBUF2_TIME4(n) (((n)&0xff) << 24)
  833. // fft2ldtc_time
  834. #define TXRX_FFT2LDTC_TIME1(n) (((n)&0xff) << 0)
  835. #define TXRX_FFT2LDTC_TIME2(n) (((n)&0xff) << 8)
  836. #define TXRX_FFT2LDTC_TIME3(n) (((n)&0xff) << 16)
  837. #define TXRX_FFT2LDTC_TIME4(n) (((n)&0xff) << 24)
  838. // tx_fir3_coe1_cfg
  839. #define TXRX_TX_FIR_COE_A0(n) (((n)&0xfff) << 0)
  840. #define TXRX_TX_FIR_COE_A1(n) (((n)&0xfff) << 12)
  841. #define TXRX_TX_FIR_COE_A21(n) (((n)&0xff) << 24)
  842. // tx_fir3_coe2_cfg
  843. #define TXRX_TX_FIR_COE_A22(n) (((n)&0xf) << 0)
  844. #define TXRX_TX_FIR_COE_A3(n) (((n)&0xfff) << 4)
  845. #define TXRX_TX_FIR_COE_A4(n) (((n)&0xfff) << 16)
  846. #define TXRX_TX_FIR_COE_A51(n) (((n)&0xf) << 28)
  847. // tx_fir3_coe3_cfg
  848. #define TXRX_TX_FIR_COE_A52(n) (((n)&0xff) << 0)
  849. #define TXRX_TX_FIR_COE_A6(n) (((n)&0xfff) << 8)
  850. #define TXRX_TX_FIR_COE_A7(n) (((n)&0xfff) << 20)
  851. // tx_fir3_cfg
  852. #define TXRX_FIR3_EN (1 << 0)
  853. #define TXRX_AUTOCK_EN (1 << 1)
  854. #define TXRX_REG_GRP_DELAY(n) (((n)&0x1f) << 2)
  855. #define TXRX_REG_SAMP_RATE(n) (((n)&0x3f) << 7)
  856. // tx_vld_cnt_cfg
  857. #define TXRX_TX_VLD_CNT(n) (((n)&0x7) << 0)
  858. // mem3
  859. #define TXRX_MEM3_2(n) (((n)&0xfff) << 4)
  860. #define TXRX_MEM3_1(n) (((n)&0xfff) << 20)
  861. // mem4
  862. #define TXRX_MEM4_2(n) (((n)&0xfff) << 4)
  863. #define TXRX_MEM4_1(n) (((n)&0xfff) << 20)
  864. #endif // _TXRX_H_