phydm_pre_define.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2007 - 2017 Realtek Corporation.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. * The full GNU General Public License is included in this distribution in the
  15. * file called LICENSE.
  16. *
  17. * Contact Information:
  18. * wlanfae <wlanfae@realtek.com>
  19. * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20. * Hsinchu 300, Taiwan.
  21. *
  22. * Larry Finger <Larry.Finger@lwfinger.net>
  23. *
  24. *****************************************************************************/
  25. #ifndef __PHYDMPREDEFINE_H__
  26. #define __PHYDMPREDEFINE_H__
  27. /****************************************************************
  28. * 1 ============================================================
  29. * 1 Definition
  30. * 1 ============================================================
  31. ***************************************************************/
  32. #define PHYDM_CODE_BASE "PHYDM_V030"
  33. #define PHYDM_RELEASE_DATE "20180605.0"
  34. /*PHYDM API status*/
  35. #define PHYDM_SET_FAIL 0
  36. #define PHYDM_SET_SUCCESS 1
  37. #define PHYDM_SET_NO_NEED 3
  38. /*PHYDM Set/Revert*/
  39. #define PHYDM_SET 1
  40. #define PHYDM_REVERT 2
  41. /* @Max path of IC */
  42. /*N-IC*/
  43. #define MAX_PATH_NUM_8188E 1
  44. #define MAX_PATH_NUM_8188F 1
  45. #define MAX_PATH_NUM_8710B 1
  46. #define MAX_PATH_NUM_8723B 1
  47. #define MAX_PATH_NUM_8723D 1
  48. #define MAX_PATH_NUM_8703B 1
  49. #define MAX_PATH_NUM_8192E 2
  50. #define MAX_PATH_NUM_8192F 2
  51. #define MAX_PATH_NUM_8197F 2
  52. #define MAX_PATH_NUM_8198F 4
  53. /*@AC-IC*/
  54. #define MAX_PATH_NUM_8821A 1
  55. #define MAX_PATH_NUM_8881A 1
  56. #define MAX_PATH_NUM_8821C 1
  57. #define MAX_PATH_NUM_8195B 1
  58. #define MAX_PATH_NUM_8812A 2
  59. #define MAX_PATH_NUM_8822B 2
  60. #define MAX_PATH_NUM_8822C 2
  61. #define MAX_PATH_NUM_8814A 4
  62. #define MAX_PATH_NUM_8814B 4
  63. #define MAX_PATH_NUM_8814C 4
  64. #define MAX_PATH_NUM_8195B 1
  65. /* @Max RF path */
  66. #define PHYDM_MAX_RF_PATH_N 2 /*@For old N-series IC*/
  67. #define PHYDM_MAX_RF_PATH 4
  68. /* number of entry */
  69. #if (DM_ODM_SUPPORT_TYPE & (ODM_CE))
  70. #ifdef DM_ODM_CE_MAC80211
  71. /* @defined in wifi.h (32+1) */
  72. #else
  73. #define ASSOCIATE_ENTRY_NUM MACID_NUM_SW_LIMIT /* @Max size of asoc_entry[].*/
  74. #endif
  75. #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
  76. #elif(DM_ODM_SUPPORT_TYPE & (ODM_AP))
  77. #define ASSOCIATE_ENTRY_NUM NUM_STAT
  78. #define ODM_ASSOCIATE_ENTRY_NUM (ASSOCIATE_ENTRY_NUM + 1)
  79. #elif(DM_ODM_SUPPORT_TYPE & (ODM_IOT))
  80. #ifdef CONFIG_CONCURRENT_MODE
  81. #define ASSOCIATE_ENTRY_NUM NUM_STA + 2 /*@2 is for station mod*/
  82. #else
  83. #define ASSOCIATE_ENTRY_NUM NUM_STA /*@8 is for max size of asoc_entry[].*/
  84. #endif
  85. #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
  86. #else
  87. #define ODM_ASSOCIATE_ENTRY_NUM (((ASSOCIATE_ENTRY_NUM + 1) * 3) + 1)
  88. #endif
  89. /* @-----MGN rate--------------------------------- */
  90. enum PDM_RATE_TYPE {
  91. PDM_1SS = 1, /*VHT/HT 1SS*/
  92. PDM_2SS = 2, /*VHT/HT 2SS*/
  93. PDM_3SS = 3, /*VHT/HT 3SS*/
  94. PDM_4SS = 4, /*VHT/HT 4SS*/
  95. PDM_CCK = 11, /*@B*/
  96. PDM_OFDM = 12 /*@G*/
  97. };
  98. enum ODM_MGN_RATE {
  99. ODM_MGN_1M = 0x02,
  100. ODM_MGN_2M = 0x04,
  101. ODM_MGN_5_5M = 0x0B,
  102. ODM_MGN_6M = 0x0C,
  103. ODM_MGN_9M = 0x12,
  104. ODM_MGN_11M = 0x16,
  105. ODM_MGN_12M = 0x18,
  106. ODM_MGN_18M = 0x24,
  107. ODM_MGN_24M = 0x30,
  108. ODM_MGN_36M = 0x48,
  109. ODM_MGN_48M = 0x60,
  110. ODM_MGN_54M = 0x6C,
  111. ODM_MGN_MCS32 = 0x7F,
  112. ODM_MGN_MCS0 = 0x80,
  113. ODM_MGN_MCS1,
  114. ODM_MGN_MCS2,
  115. ODM_MGN_MCS3,
  116. ODM_MGN_MCS4,
  117. ODM_MGN_MCS5,
  118. ODM_MGN_MCS6,
  119. ODM_MGN_MCS7 = 0x87,
  120. ODM_MGN_MCS8,
  121. ODM_MGN_MCS9,
  122. ODM_MGN_MCS10,
  123. ODM_MGN_MCS11,
  124. ODM_MGN_MCS12,
  125. ODM_MGN_MCS13,
  126. ODM_MGN_MCS14,
  127. ODM_MGN_MCS15,
  128. ODM_MGN_MCS16 = 0x90,
  129. ODM_MGN_MCS17,
  130. ODM_MGN_MCS18,
  131. ODM_MGN_MCS19,
  132. ODM_MGN_MCS20,
  133. ODM_MGN_MCS21,
  134. ODM_MGN_MCS22,
  135. ODM_MGN_MCS23,
  136. ODM_MGN_MCS24 = 0x98,
  137. ODM_MGN_MCS25,
  138. ODM_MGN_MCS26,
  139. ODM_MGN_MCS27,
  140. ODM_MGN_MCS28,
  141. ODM_MGN_MCS29,
  142. ODM_MGN_MCS30,
  143. ODM_MGN_MCS31,
  144. ODM_MGN_VHT1SS_MCS0 = 0xa0,
  145. ODM_MGN_VHT1SS_MCS1,
  146. ODM_MGN_VHT1SS_MCS2,
  147. ODM_MGN_VHT1SS_MCS3,
  148. ODM_MGN_VHT1SS_MCS4,
  149. ODM_MGN_VHT1SS_MCS5,
  150. ODM_MGN_VHT1SS_MCS6,
  151. ODM_MGN_VHT1SS_MCS7,
  152. ODM_MGN_VHT1SS_MCS8,
  153. ODM_MGN_VHT1SS_MCS9,
  154. ODM_MGN_VHT2SS_MCS0 = 0xaa,
  155. ODM_MGN_VHT2SS_MCS1 = 0xab,
  156. ODM_MGN_VHT2SS_MCS2,
  157. ODM_MGN_VHT2SS_MCS3,
  158. ODM_MGN_VHT2SS_MCS4,
  159. ODM_MGN_VHT2SS_MCS5 = 0xaf,
  160. ODM_MGN_VHT2SS_MCS6 = 0xb0,
  161. ODM_MGN_VHT2SS_MCS7,
  162. ODM_MGN_VHT2SS_MCS8,
  163. ODM_MGN_VHT2SS_MCS9 = 0xb3,
  164. ODM_MGN_VHT3SS_MCS0 = 0xb4,
  165. ODM_MGN_VHT3SS_MCS1,
  166. ODM_MGN_VHT3SS_MCS2,
  167. ODM_MGN_VHT3SS_MCS3,
  168. ODM_MGN_VHT3SS_MCS4,
  169. ODM_MGN_VHT3SS_MCS5,
  170. ODM_MGN_VHT3SS_MCS6,
  171. ODM_MGN_VHT3SS_MCS7 = 0xbb,
  172. ODM_MGN_VHT3SS_MCS8 = 0xbc,
  173. ODM_MGN_VHT3SS_MCS9 = 0xbd,
  174. ODM_MGN_VHT4SS_MCS0 = 0xbe,
  175. ODM_MGN_VHT4SS_MCS1,
  176. ODM_MGN_VHT4SS_MCS2,
  177. ODM_MGN_VHT4SS_MCS3,
  178. ODM_MGN_VHT4SS_MCS4,
  179. ODM_MGN_VHT4SS_MCS5,
  180. ODM_MGN_VHT4SS_MCS6,
  181. ODM_MGN_VHT4SS_MCS7,
  182. ODM_MGN_VHT4SS_MCS8,
  183. ODM_MGN_VHT4SS_MCS9 = 0xc7,
  184. ODM_MGN_UNKNOWN
  185. };
  186. #define ODM_MGN_MCS0_SG 0xc0
  187. #define ODM_MGN_MCS1_SG 0xc1
  188. #define ODM_MGN_MCS2_SG 0xc2
  189. #define ODM_MGN_MCS3_SG 0xc3
  190. #define ODM_MGN_MCS4_SG 0xc4
  191. #define ODM_MGN_MCS5_SG 0xc5
  192. #define ODM_MGN_MCS6_SG 0xc6
  193. #define ODM_MGN_MCS7_SG 0xc7
  194. #define ODM_MGN_MCS8_SG 0xc8
  195. #define ODM_MGN_MCS9_SG 0xc9
  196. #define ODM_MGN_MCS10_SG 0xca
  197. #define ODM_MGN_MCS11_SG 0xcb
  198. #define ODM_MGN_MCS12_SG 0xcc
  199. #define ODM_MGN_MCS13_SG 0xcd
  200. #define ODM_MGN_MCS14_SG 0xce
  201. #define ODM_MGN_MCS15_SG 0xcf
  202. /* @-----DESC rate--------------------------------- */
  203. #define ODM_RATEMCS15_SG 0x1c
  204. #define ODM_RATEMCS32 0x20
  205. enum phydm_ctrl_info_rate {
  206. ODM_RATE1M = 0x00,
  207. ODM_RATE2M = 0x01,
  208. ODM_RATE5_5M = 0x02,
  209. ODM_RATE11M = 0x03,
  210. /* OFDM Rates, TxHT = 0 */
  211. ODM_RATE6M = 0x04,
  212. ODM_RATE9M = 0x05,
  213. ODM_RATE12M = 0x06,
  214. ODM_RATE18M = 0x07,
  215. ODM_RATE24M = 0x08,
  216. ODM_RATE36M = 0x09,
  217. ODM_RATE48M = 0x0A,
  218. ODM_RATE54M = 0x0B,
  219. /* @MCS Rates, TxHT = 1 */
  220. ODM_RATEMCS0 = 0x0C,
  221. ODM_RATEMCS1 = 0x0D,
  222. ODM_RATEMCS2 = 0x0E,
  223. ODM_RATEMCS3 = 0x0F,
  224. ODM_RATEMCS4 = 0x10,
  225. ODM_RATEMCS5 = 0x11,
  226. ODM_RATEMCS6 = 0x12,
  227. ODM_RATEMCS7 = 0x13,
  228. ODM_RATEMCS8 = 0x14,
  229. ODM_RATEMCS9 = 0x15,
  230. ODM_RATEMCS10 = 0x16,
  231. ODM_RATEMCS11 = 0x17,
  232. ODM_RATEMCS12 = 0x18,
  233. ODM_RATEMCS13 = 0x19,
  234. ODM_RATEMCS14 = 0x1A,
  235. ODM_RATEMCS15 = 0x1B,
  236. ODM_RATEMCS16 = 0x1C,
  237. ODM_RATEMCS17 = 0x1D,
  238. ODM_RATEMCS18 = 0x1E,
  239. ODM_RATEMCS19 = 0x1F,
  240. ODM_RATEMCS20 = 0x20,
  241. ODM_RATEMCS21 = 0x21,
  242. ODM_RATEMCS22 = 0x22,
  243. ODM_RATEMCS23 = 0x23,
  244. ODM_RATEMCS24 = 0x24,
  245. ODM_RATEMCS25 = 0x25,
  246. ODM_RATEMCS26 = 0x26,
  247. ODM_RATEMCS27 = 0x27,
  248. ODM_RATEMCS28 = 0x28,
  249. ODM_RATEMCS29 = 0x29,
  250. ODM_RATEMCS30 = 0x2A,
  251. ODM_RATEMCS31 = 0x2B,
  252. ODM_RATEVHTSS1MCS0 = 0x2C,
  253. ODM_RATEVHTSS1MCS1 = 0x2D,
  254. ODM_RATEVHTSS1MCS2 = 0x2E,
  255. ODM_RATEVHTSS1MCS3 = 0x2F,
  256. ODM_RATEVHTSS1MCS4 = 0x30,
  257. ODM_RATEVHTSS1MCS5 = 0x31,
  258. ODM_RATEVHTSS1MCS6 = 0x32,
  259. ODM_RATEVHTSS1MCS7 = 0x33,
  260. ODM_RATEVHTSS1MCS8 = 0x34,
  261. ODM_RATEVHTSS1MCS9 = 0x35,
  262. ODM_RATEVHTSS2MCS0 = 0x36,
  263. ODM_RATEVHTSS2MCS1 = 0x37,
  264. ODM_RATEVHTSS2MCS2 = 0x38,
  265. ODM_RATEVHTSS2MCS3 = 0x39,
  266. ODM_RATEVHTSS2MCS4 = 0x3A,
  267. ODM_RATEVHTSS2MCS5 = 0x3B,
  268. ODM_RATEVHTSS2MCS6 = 0x3C,
  269. ODM_RATEVHTSS2MCS7 = 0x3D,
  270. ODM_RATEVHTSS2MCS8 = 0x3E,
  271. ODM_RATEVHTSS2MCS9 = 0x3F,
  272. ODM_RATEVHTSS3MCS0 = 0x40,
  273. ODM_RATEVHTSS3MCS1 = 0x41,
  274. ODM_RATEVHTSS3MCS2 = 0x42,
  275. ODM_RATEVHTSS3MCS3 = 0x43,
  276. ODM_RATEVHTSS3MCS4 = 0x44,
  277. ODM_RATEVHTSS3MCS5 = 0x45,
  278. ODM_RATEVHTSS3MCS6 = 0x46,
  279. ODM_RATEVHTSS3MCS7 = 0x47,
  280. ODM_RATEVHTSS3MCS8 = 0x48,
  281. ODM_RATEVHTSS3MCS9 = 0x49,
  282. ODM_RATEVHTSS4MCS0 = 0x4A,
  283. ODM_RATEVHTSS4MCS1 = 0x4B,
  284. ODM_RATEVHTSS4MCS2 = 0x4C,
  285. ODM_RATEVHTSS4MCS3 = 0x4D,
  286. ODM_RATEVHTSS4MCS4 = 0x4E,
  287. ODM_RATEVHTSS4MCS5 = 0x4F,
  288. ODM_RATEVHTSS4MCS6 = 0x50,
  289. ODM_RATEVHTSS4MCS7 = 0x51,
  290. ODM_RATEVHTSS4MCS8 = 0x52,
  291. ODM_RATEVHTSS4MCS9 = 0x53,
  292. };
  293. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  294. #define ODM_NUM_RATE_IDX (ODM_RATEVHTSS4MCS9 + 1)
  295. #else
  296. #if (RTL8192E_SUPPORT || RTL8197F_SUPPORT || RTL8192F_SUPPORT)
  297. #define ODM_NUM_RATE_IDX (ODM_RATEMCS15 + 1)
  298. #elif (RTL8723B_SUPPORT || RTL8188E_SUPPORT || RTL8188F_SUPPORT)
  299. #define ODM_NUM_RATE_IDX (ODM_RATEMCS7 + 1)
  300. #elif (RTL8821A_SUPPORT || RTL8881A_SUPPORT)
  301. #define ODM_NUM_RATE_IDX (ODM_RATEVHTSS1MCS9 + 1)
  302. #elif (RTL8812A_SUPPORT)
  303. #define ODM_NUM_RATE_IDX (ODM_RATEVHTSS2MCS9 + 1)
  304. #elif (RTL8814A_SUPPORT)
  305. #define ODM_NUM_RATE_IDX (ODM_RATEVHTSS3MCS9 + 1)
  306. #else
  307. #define ODM_NUM_RATE_IDX (ODM_RATEVHTSS4MCS9 + 1)
  308. #endif
  309. #endif
  310. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  311. #define CONFIG_SFW_SUPPORTED
  312. #endif
  313. /****************************************************************
  314. * 1 ============================================================
  315. * 1 enumeration
  316. * 1 ============================================================
  317. ***************************************************************/
  318. /* ODM_CMNINFO_INTERFACE */
  319. enum odm_interface {
  320. ODM_ITRF_PCIE = 0x1,
  321. ODM_ITRF_USB = 0x2,
  322. ODM_ITRF_SDIO = 0x4,
  323. ODM_ITRF_ALL = 0x7,
  324. };
  325. /*@========[Run time IC flag] ===================================*/
  326. enum phydm_ic {
  327. ODM_RTL8188E = BIT(0),
  328. ODM_RTL8812 = BIT(1),
  329. ODM_RTL8821 = BIT(2),
  330. ODM_RTL8192E = BIT(3),
  331. ODM_RTL8723B = BIT(4),
  332. ODM_RTL8814A = BIT(5),
  333. ODM_RTL8881A = BIT(6),
  334. ODM_RTL8822B = BIT(7),
  335. ODM_RTL8703B = BIT(8),
  336. ODM_RTL8195A = BIT(9),
  337. ODM_RTL8188F = BIT(10),
  338. ODM_RTL8723D = BIT(11),
  339. ODM_RTL8197F = BIT(12),
  340. ODM_RTL8821C = BIT(13),
  341. ODM_RTL8814B = BIT(14),
  342. ODM_RTL8198F = BIT(15),
  343. ODM_RTL8710B = BIT(16),
  344. ODM_RTL8192F = BIT(17),
  345. ODM_RTL8822C = BIT(18),
  346. ODM_RTL8195B = BIT(19)
  347. };
  348. #define ODM_IC_N_1SS (ODM_RTL8188E | ODM_RTL8188F | ODM_RTL8723B |\
  349. ODM_RTL8703B | ODM_RTL8723D | ODM_RTL8195A |\
  350. ODM_RTL8710B)
  351. #define ODM_IC_N_2SS (ODM_RTL8192E | ODM_RTL8197F | ODM_RTL8192F)
  352. #define ODM_IC_N_3SS 0
  353. #define ODM_IC_N_4SS 0
  354. #define ODM_IC_AC_1SS (ODM_RTL8881A | ODM_RTL8821 | ODM_RTL8821C |\
  355. ODM_RTL8195B)
  356. #define ODM_IC_AC_2SS (ODM_RTL8812 | ODM_RTL8822B)
  357. #define ODM_IC_AC_3SS 0
  358. #define ODM_IC_AC_4SS (ODM_RTL8814A)
  359. #define ODM_IC_JGR3_1SS 0
  360. #define ODM_IC_JGR3_2SS (ODM_RTL8822C)
  361. #define ODM_IC_JGR3_3SS 0
  362. #define ODM_IC_JGR3_4SS (ODM_RTL8198F | ODM_RTL8814B)
  363. /*@====the following macro DO NOT need to update when adding a new IC======= */
  364. #define ODM_IC_1SS (ODM_IC_N_1SS | ODM_IC_AC_1SS | ODM_IC_JGR3_1SS)
  365. #define ODM_IC_2SS (ODM_IC_N_2SS | ODM_IC_AC_2SS | ODM_IC_JGR3_2SS)
  366. #define ODM_IC_3SS (ODM_IC_N_3SS | ODM_IC_AC_3SS | ODM_IC_JGR3_3SS)
  367. #define ODM_IC_4SS (ODM_IC_N_4SS | ODM_IC_AC_4SS | ODM_IC_JGR3_4SS)
  368. #define PHYDM_IC_ABOVE_1SS (ODM_IC_1SS | ODM_IC_2SS | ODM_IC_3SS |\
  369. ODM_IC_4SS)
  370. #define PHYDM_IC_ABOVE_2SS (ODM_IC_2SS | ODM_IC_3SS | ODM_IC_4SS)
  371. #define PHYDM_IC_ABOVE_3SS (ODM_IC_3SS | ODM_IC_4SS)
  372. #define PHYDM_IC_ABOVE_4SS ODM_IC_4SS
  373. #define ODM_IC_11N_SERIES (ODM_IC_N_1SS | ODM_IC_N_2SS | ODM_IC_N_3SS |\
  374. ODM_IC_N_4SS)
  375. #define ODM_IC_11AC_SERIES (ODM_IC_AC_1SS | ODM_IC_AC_2SS |\
  376. ODM_IC_AC_3SS | ODM_IC_AC_4SS)
  377. #define ODM_IC_JGR3_SERIES (ODM_IC_JGR3_1SS | ODM_IC_JGR3_2SS |\
  378. ODM_IC_JGR3_3SS | ODM_IC_JGR3_4SS)
  379. /*@====================================================*/
  380. #define ODM_IC_11AC_1_SERIES (ODM_RTL8812 | ODM_RTL8821 | ODM_RTL8881A)
  381. #define ODM_IC_11AC_2_SERIES (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8821C |\
  382. ODM_RTL8195B)
  383. /*@[Phy status type]*/
  384. #define PHYSTS_2ND_TYPE_IC (ODM_RTL8197F | ODM_RTL8822B | ODM_RTL8723D |\
  385. ODM_RTL8821C | ODM_RTL8710B | ODM_RTL8195B |\
  386. ODM_RTL8192F)
  387. #define PHYSTS_3RD_TYPE_IC (ODM_RTL8198F | ODM_RTL8814B | ODM_RTL8822C)
  388. /*@[FW Type]*/
  389. #define PHYDM_IC_8051_SERIES (ODM_RTL8881A | ODM_RTL8812 | ODM_RTL8821 |\
  390. ODM_RTL8192E | ODM_RTL8723B | ODM_RTL8703B |\
  391. ODM_RTL8188F | ODM_RTL8192F)
  392. #define PHYDM_IC_3081_SERIES (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8197F |\
  393. ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8198F |\
  394. ODM_RTL8822C)
  395. /*@[LA mode]*/
  396. #define PHYDM_IC_SUPPORT_LA_MODE (ODM_RTL8814A | ODM_RTL8822B | ODM_RTL8197F |\
  397. ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8198F |\
  398. ODM_RTL8192F | ODM_RTL8822C)
  399. /*@[BF]*/
  400. #define ODM_IC_TXBF_SUPPORT (ODM_RTL8192E | ODM_RTL8812 | ODM_RTL8821 |\
  401. ODM_RTL8814A | ODM_RTL8881A | ODM_RTL8822B |\
  402. ODM_RTL8197F | ODM_RTL8821C | ODM_RTL8195B |\
  403. ODM_RTL8198F | ODM_RTL8822C)
  404. #define PHYDM_IC_SUPPORT_MU_BFEE (ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8814B |\
  405. ODM_RTL8195B | ODM_RTL8198F | ODM_RTL8822C)
  406. #define PHYDM_IC_SUPPORT_MU_BFER (ODM_RTL8822B | ODM_RTL8814B | ODM_RTL8198F |\
  407. ODM_RTL8822C)
  408. /*@[PHYDM API]*/
  409. #define CMN_API_SUPPORT_IC (ODM_RTL8822B | ODM_RTL8197F | ODM_RTL8192F |\
  410. ODM_RTL8821C | ODM_RTL8195B | ODM_RTL8822C |\
  411. ODM_RTL8198F)
  412. /*@========[Compile time IC flag] ========================*/
  413. /*@========[AC-3/AC/N Support] ===========================*/
  414. #if (RTL8814B_SUPPORT || RTL8198F_SUPPORT || RTL8822C_SUPPORT)
  415. #define PHYDM_IC_JGR3_SERIES_SUPPORT
  416. #if (RTL8814B_SUPPORT || RTL8822C_SUPPORT)
  417. #define PHYDM_IC_JGR3_80M_SUPPORT
  418. #endif
  419. #endif
  420. #if (DM_ODM_SUPPORT_TYPE == ODM_AP)
  421. #ifdef RTK_AC_SUPPORT
  422. #define ODM_IC_11AC_SERIES_SUPPORT 1
  423. #else
  424. #define ODM_IC_11AC_SERIES_SUPPORT 0
  425. #endif
  426. #define ODM_IC_11N_SERIES_SUPPORT 1
  427. #elif (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  428. #define ODM_IC_11AC_SERIES_SUPPORT 1
  429. #define ODM_IC_11N_SERIES_SUPPORT 1
  430. #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) && defined(DM_ODM_CE_MAC80211)
  431. #define ODM_IC_11AC_SERIES_SUPPORT 1
  432. #define ODM_IC_11N_SERIES_SUPPORT 1
  433. #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) && defined(DM_ODM_CE_MAC80211_V2)
  434. #define ODM_IC_11AC_SERIES_SUPPORT 1
  435. #define ODM_IC_11N_SERIES_SUPPORT 1
  436. #else /*ODM_CE*/
  437. #if (RTL8188E_SUPPORT || RTL8723B_SUPPORT || RTL8192E_SUPPORT ||\
  438. RTL8195A_SUPPORT || RTL8703B_SUPPORT || RTL8188F_SUPPORT ||\
  439. RTL8723D_SUPPORT || RTL8197F_SUPPORT || RTL8710B_SUPPORT ||\
  440. RTL8192F_SUPPORT)
  441. #define ODM_IC_11N_SERIES_SUPPORT 1
  442. #define ODM_IC_11AC_SERIES_SUPPORT 0
  443. #else
  444. #define ODM_IC_11N_SERIES_SUPPORT 0
  445. #define ODM_IC_11AC_SERIES_SUPPORT 1
  446. #endif
  447. #endif
  448. /*@===IC SS Compile Flag, prepare for code size reduction==============*/
  449. #if (RTL8188E_SUPPORT || RTL8188F_SUPPORT || RTL8723B_SUPPORT ||\
  450. RTL8703B_SUPPORT || RTL8723D_SUPPORT || RTL8881A_SUPPORT ||\
  451. RTL8821A_SUPPORT || RTL8821C_SUPPORT || RTL8195A_SUPPORT ||\
  452. RTL8710B_SUPPORT || RTL8195B_SUPPORT)
  453. #define PHYDM_COMPILE_IC_1SS
  454. #endif
  455. #if (RTL8192E_SUPPORT || RTL8197F_SUPPORT || RTL8812A_SUPPORT ||\
  456. RTL8822B_SUPPORT || RTL8192F_SUPPORT || RTL8822C_SUPPORT)
  457. #define PHYDM_COMPILE_IC_2SS
  458. #endif
  459. /*@#define PHYDM_COMPILE_IC_3SS*/
  460. #if ((RTL8814B_SUPPORT) || (RTL8814A_SUPPORT) || (RTL8198F_SUPPORT))
  461. #define PHYDM_COMPILE_IC_4SS
  462. #endif
  463. /*@==[ABOVE N-SS COMPILE FLAG]=================================================*/
  464. #if (defined(PHYDM_COMPILE_IC_1SS) || defined(PHYDM_COMPILE_IC_2SS) ||\
  465. defined(PHYDM_COMPILE_IC_3SS) || defined(PHYDM_COMPILE_IC_4SS))
  466. #define PHYDM_COMPILE_ABOVE_1SS
  467. #endif
  468. #if (defined(PHYDM_COMPILE_IC_2SS) || defined(PHYDM_COMPILE_IC_3SS) ||\
  469. defined(PHYDM_COMPILE_IC_4SS))
  470. #define PHYDM_COMPILE_ABOVE_2SS
  471. #endif
  472. #if (defined(PHYDM_COMPILE_IC_3SS) || defined(PHYDM_COMPILE_IC_4SS))
  473. #define PHYDM_COMPILE_ABOVE_3SS
  474. #endif
  475. #if (defined(PHYDM_COMPILE_IC_4SS))
  476. #define PHYDM_COMPILE_ABOVE_4SS
  477. #endif
  478. /*@========[New Phy-Status Support] ========================*/
  479. #if (RTL8197F_SUPPORT || RTL8723D_SUPPORT || RTL8822B_SUPPORT ||\
  480. RTL8821C_SUPPORT || RTL8710B_SUPPORT || RTL8195B_SUPPORT ||\
  481. RTL8192F_SUPPORT)
  482. #define ODM_PHY_STATUS_NEW_TYPE_SUPPORT 1
  483. #else
  484. #define ODM_PHY_STATUS_NEW_TYPE_SUPPORT 0
  485. #endif
  486. #if (RTL8198F_SUPPORT) || (RTL8814B_SUPPORT) || (RTL8822C_SUPPORT)
  487. #define PHYSTS_3RD_TYPE_SUPPORT
  488. #endif
  489. #if (RTL8198F_SUPPORT || RTL8814B_SUPPORT || RTL8822C_SUPPORT)
  490. #define BB_RAM_SUPPORT
  491. #endif
  492. /*@============================================================================*/
  493. #if (RTL8822B_SUPPORT || RTL8197F_SUPPORT || RTL8821C_SUPPORT ||\
  494. RTL8192F_SUPPORT || RTL8195B_SUPPORT || RTL8822C_SUPPORT ||\
  495. RTL8198F_SUPPORT)
  496. #define PHYDM_COMMON_API_SUPPORT
  497. #endif
  498. #define CCK_RATE_NUM 4
  499. #define OFDM_RATE_NUM 8
  500. #define LEGACY_RATE_NUM 12
  501. #define HT_RATE_NUM_4SS 32
  502. #define VHT_RATE_NUM_4SS 40
  503. #define HT_RATE_NUM_3SS 24
  504. #define VHT_RATE_NUM_3SS 30
  505. #define HT_RATE_NUM_2SS 16
  506. #define VHT_RATE_NUM_2SS 20
  507. #define HT_RATE_NUM_1SS 8
  508. #define VHT_RATE_NUM_1SS 10
  509. #if (defined(PHYDM_COMPILE_ABOVE_4SS))
  510. #define HT_RATE_NUM HT_RATE_NUM_4SS
  511. #define VHT_RATE_NUM VHT_RATE_NUM_4SS
  512. #elif (defined(PHYDM_COMPILE_ABOVE_3SS))
  513. #define HT_RATE_NUM HT_RATE_NUM_3SS
  514. #define VHT_RATE_NUM VHT_RATE_NUM_3SS
  515. #elif (defined(PHYDM_COMPILE_ABOVE_2SS))
  516. #define HT_RATE_NUM HT_RATE_NUM_2SS
  517. #define VHT_RATE_NUM VHT_RATE_NUM_2SS
  518. #else
  519. #define HT_RATE_NUM HT_RATE_NUM_1SS
  520. #define VHT_RATE_NUM VHT_RATE_NUM_1SS
  521. #endif
  522. #define LOW_BW_RATE_NUM VHT_RATE_NUM
  523. enum phydm_ic_ip {
  524. PHYDM_IC_N = 0,
  525. PHYDM_IC_AC = 1,
  526. PHYDM_IC_JGR3 = 2
  527. };
  528. /* ODM_CMNINFO_CUT_VER */
  529. enum odm_cut_version {
  530. ODM_CUT_A = 0,
  531. ODM_CUT_B = 1,
  532. ODM_CUT_C = 2,
  533. ODM_CUT_D = 3,
  534. ODM_CUT_E = 4,
  535. ODM_CUT_F = 5,
  536. ODM_CUT_G = 6,
  537. ODM_CUT_H = 7,
  538. ODM_CUT_I = 8,
  539. ODM_CUT_J = 9,
  540. ODM_CUT_K = 10,
  541. ODM_CUT_TEST = 15,
  542. };
  543. /* ODM_CMNINFO_FAB_VER */
  544. enum odm_fab {
  545. ODM_TSMC = 0,
  546. ODM_UMC = 1,
  547. };
  548. /* ODM_CMNINFO_OP_MODE */
  549. enum odm_operation_mode {
  550. ODM_NO_LINK = BIT(0),
  551. ODM_LINK = BIT(1),
  552. ODM_SCAN = BIT(2),
  553. ODM_POWERSAVE = BIT(3),
  554. ODM_AP_MODE = BIT(4),
  555. ODM_CLIENT_MODE = BIT(5),
  556. ODM_AD_HOC = BIT(6),
  557. ODM_WIFI_DIRECT = BIT(7),
  558. ODM_WIFI_DISPLAY = BIT(8),
  559. };
  560. /* ODM_CMNINFO_WM_MODE */
  561. #if (DM_ODM_SUPPORT_TYPE & (ODM_CE))
  562. enum odm_wireless_mode {
  563. ODM_WM_UNKNOW = 0x0,
  564. ODM_WM_B = BIT(0),
  565. ODM_WM_G = BIT(1),
  566. ODM_WM_A = BIT(2),
  567. ODM_WM_N24G = BIT(3),
  568. ODM_WM_N5G = BIT(4),
  569. ODM_WM_AUTO = BIT(5),
  570. ODM_WM_AC = BIT(6),
  571. };
  572. #else
  573. enum odm_wireless_mode {
  574. ODM_WM_UNKNOWN = 0x00,/*@0x0*/
  575. ODM_WM_A = BIT(0), /* @0x1*/
  576. ODM_WM_B = BIT(1), /* @0x2*/
  577. ODM_WM_G = BIT(2),/* @0x4*/
  578. ODM_WM_AUTO = BIT(3),/* @0x8*/
  579. ODM_WM_N24G = BIT(4),/* @0x10*/
  580. ODM_WM_N5G = BIT(5),/* @0x20*/
  581. ODM_WM_AC_5G = BIT(6),/* @0x40*/
  582. ODM_WM_AC_24G = BIT(7),/* @0x80*/
  583. ODM_WM_AC_ONLY = BIT(8),/* @0x100*/
  584. ODM_WM_MAX = BIT(11)/* @0x800*/
  585. };
  586. #endif
  587. /* ODM_CMNINFO_BAND */
  588. enum odm_band_type {
  589. #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
  590. ODM_BAND_2_4G = BIT(0),
  591. ODM_BAND_5G = BIT(1),
  592. #else
  593. ODM_BAND_2_4G = 0,
  594. ODM_BAND_5G,
  595. ODM_BAND_ON_BOTH,
  596. ODM_BANDMAX
  597. #endif
  598. };
  599. /* ODM_CMNINFO_SEC_CHNL_OFFSET */
  600. enum phydm_sec_chnl_offset {
  601. PHYDM_DONT_CARE = 0,
  602. PHYDM_BELOW = 1,
  603. PHYDM_ABOVE = 2
  604. };
  605. /* ODM_CMNINFO_SEC_MODE */
  606. enum odm_security {
  607. ODM_SEC_OPEN = 0,
  608. ODM_SEC_WEP40 = 1,
  609. ODM_SEC_TKIP = 2,
  610. ODM_SEC_RESERVE = 3,
  611. ODM_SEC_AESCCMP = 4,
  612. ODM_SEC_WEP104 = 5,
  613. ODM_WEP_WPA_MIXED = 6, /* WEP + WPA */
  614. ODM_SEC_SMS4 = 7,
  615. };
  616. /* ODM_CMNINFO_CHNL */
  617. /* ODM_CMNINFO_BOARD_TYPE */
  618. enum odm_board_type {
  619. ODM_BOARD_DEFAULT = 0, /* The DEFAULT case. */
  620. ODM_BOARD_MINICARD = BIT(0), /* @0 = non-mini card, 1= mini card. */
  621. ODM_BOARD_SLIM = BIT(1), /* @0 = non-slim card, 1 = slim card */
  622. ODM_BOARD_BT = BIT(2), /* @0 = without BT card, 1 = with BT */
  623. ODM_BOARD_EXT_PA = BIT(3), /* @0 = no 2G ext-PA, 1 = existing 2G ext-PA */
  624. ODM_BOARD_EXT_LNA = BIT(4), /* @0 = no 2G ext-LNA, 1 = existing 2G ext-LNA */
  625. ODM_BOARD_EXT_TRSW = BIT(5), /* @0 = no ext-TRSW, 1 = existing ext-TRSW */
  626. ODM_BOARD_EXT_PA_5G = BIT(6), /* @0 = no 5G ext-PA, 1 = existing 5G ext-PA */
  627. ODM_BOARD_EXT_LNA_5G = BIT(7), /* @0 = no 5G ext-LNA, 1 = existing 5G ext-LNA */
  628. };
  629. enum odm_package_type {
  630. ODM_PACKAGE_DEFAULT = 0,
  631. ODM_PACKAGE_QFN68 = BIT(0),
  632. ODM_PACKAGE_TFBGA90 = BIT(1),
  633. ODM_PACKAGE_TFBGA79 = BIT(2),
  634. };
  635. enum odm_type_gpa {
  636. TYPE_GPA0 = 0x0000,
  637. TYPE_GPA1 = 0x0055,
  638. TYPE_GPA2 = 0x00AA,
  639. TYPE_GPA3 = 0x00FF,
  640. TYPE_GPA4 = 0x5500,
  641. TYPE_GPA5 = 0x5555,
  642. TYPE_GPA6 = 0x55AA,
  643. TYPE_GPA7 = 0x55FF,
  644. TYPE_GPA8 = 0xAA00,
  645. TYPE_GPA9 = 0xAA55,
  646. TYPE_GPA10 = 0xAAAA,
  647. TYPE_GPA11 = 0xAAFF,
  648. TYPE_GPA12 = 0xFF00,
  649. TYPE_GPA13 = 0xFF55,
  650. TYPE_GPA14 = 0xFFAA,
  651. TYPE_GPA15 = 0xFFFF,
  652. };
  653. enum odm_type_apa {
  654. TYPE_APA0 = 0x0000,
  655. TYPE_APA1 = 0x0055,
  656. TYPE_APA2 = 0x00AA,
  657. TYPE_APA3 = 0x00FF,
  658. TYPE_APA4 = 0x5500,
  659. TYPE_APA5 = 0x5555,
  660. TYPE_APA6 = 0x55AA,
  661. TYPE_APA7 = 0x55FF,
  662. TYPE_APA8 = 0xAA00,
  663. TYPE_APA9 = 0xAA55,
  664. TYPE_APA10 = 0xAAAA,
  665. TYPE_APA11 = 0xAAFF,
  666. TYPE_APA12 = 0xFF00,
  667. TYPE_APA13 = 0xFF55,
  668. TYPE_APA14 = 0xFFAA,
  669. TYPE_APA15 = 0xFFFF,
  670. };
  671. enum odm_type_glna {
  672. TYPE_GLNA0 = 0x0000,
  673. TYPE_GLNA1 = 0x0055,
  674. TYPE_GLNA2 = 0x00AA,
  675. TYPE_GLNA3 = 0x00FF,
  676. TYPE_GLNA4 = 0x5500,
  677. TYPE_GLNA5 = 0x5555,
  678. TYPE_GLNA6 = 0x55AA,
  679. TYPE_GLNA7 = 0x55FF,
  680. TYPE_GLNA8 = 0xAA00,
  681. TYPE_GLNA9 = 0xAA55,
  682. TYPE_GLNA10 = 0xAAAA,
  683. TYPE_GLNA11 = 0xAAFF,
  684. TYPE_GLNA12 = 0xFF00,
  685. TYPE_GLNA13 = 0xFF55,
  686. TYPE_GLNA14 = 0xFFAA,
  687. TYPE_GLNA15 = 0xFFFF,
  688. };
  689. enum odm_type_alna {
  690. TYPE_ALNA0 = 0x0000,
  691. TYPE_ALNA1 = 0x0055,
  692. TYPE_ALNA2 = 0x00AA,
  693. TYPE_ALNA3 = 0x00FF,
  694. TYPE_ALNA4 = 0x5500,
  695. TYPE_ALNA5 = 0x5555,
  696. TYPE_ALNA6 = 0x55AA,
  697. TYPE_ALNA7 = 0x55FF,
  698. TYPE_ALNA8 = 0xAA00,
  699. TYPE_ALNA9 = 0xAA55,
  700. TYPE_ALNA10 = 0xAAAA,
  701. TYPE_ALNA11 = 0xAAFF,
  702. TYPE_ALNA12 = 0xFF00,
  703. TYPE_ALNA13 = 0xFF55,
  704. TYPE_ALNA14 = 0xFFAA,
  705. TYPE_ALNA15 = 0xFFFF,
  706. };
  707. #define PAUSE_FAIL 0
  708. #define PAUSE_SUCCESS 1
  709. enum odm_parameter_init {
  710. ODM_PRE_SETTING = 0,
  711. ODM_POST_SETTING = 1,
  712. ODM_INIT_FW_SETTING
  713. };
  714. enum phydm_pause_type {
  715. PHYDM_PAUSE = 1, /*Pause & Set new value*/
  716. PHYDM_PAUSE_NO_SET = 2, /*Pause & Stay in current value*/
  717. PHYDM_RESUME = 3
  718. };
  719. enum phydm_pause_level {
  720. PHYDM_PAUSE_RELEASE = -1,
  721. PHYDM_PAUSE_LEVEL_0 = 0, /* @Low Priority function */
  722. PHYDM_PAUSE_LEVEL_1 = 1, /* @Middle Priority function */
  723. PHYDM_PAUSE_LEVEL_2 = 2, /* @High priority function (ex: Check hang function) */
  724. PHYDM_PAUSE_LEVEL_3 = 3, /* @Debug function (the highest priority) */
  725. PHYDM_PAUSE_MAX_NUM = 4
  726. };
  727. enum phydm_dis_hw_fun {
  728. HW_FUN_DIS = 0, /*@Disable a cetain HW function & backup the original value*/
  729. HW_FUN_RESUME = 1 /*Revert */
  730. };
  731. #endif