halrf_powertracking_ap.c 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219
  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. *****************************************************************************/
  15. /* ************************************************************
  16. * include files
  17. * ************************************************************ */
  18. #include "mp_precomp.h"
  19. #include "phydm_precomp.h"
  20. #if !defined(_OUTSRC_COEXIST)
  21. /* ************************************************************
  22. * Global var
  23. * ************************************************************ */
  24. u32 ofdm_swing_table_new[OFDM_TABLE_SIZE_92D] = {
  25. 0x0b40002d, /* 0, -15.0dB */
  26. 0x0c000030, /* 1, -14.5dB */
  27. 0x0cc00033, /* 2, -14.0dB */
  28. 0x0d800036, /* 3, -13.5dB */
  29. 0x0e400039, /* 4, -13.0dB */
  30. 0x0f00003c, /* 5, -12.5dB */
  31. 0x10000040, /* 6, -12.0dB */
  32. 0x11000044, /* 7, -11.5dB */
  33. 0x12000048, /* 8, -11.0dB */
  34. 0x1300004c, /* 9, -10.5dB */
  35. 0x14400051, /* 10, -10.0dB */
  36. 0x15800056, /* 11, -9.5dB */
  37. 0x16c0005b, /* 12, -9.0dB */
  38. 0x18000060, /* 13, -8.5dB */
  39. 0x19800066, /* 14, -8.0dB */
  40. 0x1b00006c, /* 15, -7.5dB */
  41. 0x1c800072, /* 16, -7.0dB */
  42. 0x1e400079, /* 17, -6.5dB */
  43. 0x20000080, /* 18, -6.0dB */
  44. 0x22000088, /* 19, -5.5dB */
  45. 0x24000090, /* 20, -5.0dB */
  46. 0x26000098, /* 21, -4.5dB */
  47. 0x288000a2, /* 22, -4.0dB */
  48. 0x2ac000ab, /* 23, -3.5dB */
  49. 0x2d4000b5, /* 24, -3.0dB */
  50. 0x300000c0, /* 25, -2.5dB */
  51. 0x32c000cb, /* 26, -2.0dB */
  52. 0x35c000d7, /* 27, -1.5dB */
  53. 0x390000e4, /* 28, -1.0dB */
  54. 0x3c8000f2, /* 29, -0.5dB */
  55. 0x40000100, /* 30, +0dB */
  56. 0x43c0010f, /* 31, +0.5dB */
  57. 0x47c0011f, /* 32, +1.0dB */
  58. 0x4c000130, /* 33, +1.5dB */
  59. 0x50800142, /* 34, +2.0dB */
  60. 0x55400155, /* 35, +2.5dB */
  61. 0x5a400169, /* 36, +3.0dB */
  62. 0x5fc0017f, /* 37, +3.5dB */
  63. 0x65400195, /* 38, +4.0dB */
  64. 0x6b8001ae, /* 39, +4.5dB */
  65. 0x71c001c7, /* 40, +5.0dB */
  66. 0x788001e2, /* 41, +5.5dB */
  67. 0x7f8001fe /* 42, +6.0dB */
  68. };
  69. u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {
  70. {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB */
  71. {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB */
  72. {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB */
  73. {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB */
  74. {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB */
  75. {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB */
  76. {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB */
  77. {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB */
  78. {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB */
  79. {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB */
  80. {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB */
  81. {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB */
  82. {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB */
  83. {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB */
  84. {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
  85. {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB */
  86. {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
  87. {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB */
  88. {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
  89. {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB */
  90. {0x1c, 0x1a, 0x18, 0x12, 0x0e, 0x08, 0x04, 0x02}, /* 20, -6.0dB */
  91. {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB */
  92. {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
  93. {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB */
  94. {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
  95. {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB */
  96. {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB */
  97. {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB */
  98. {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
  99. {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB */
  100. {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB */
  101. {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB */
  102. {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB */
  103. };
  104. u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {
  105. {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB */
  106. {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB */
  107. {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB */
  108. {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB */
  109. {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB */
  110. {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 5, -13.5dB */
  111. {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB */
  112. {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB */
  113. {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB */
  114. {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB */
  115. {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB */
  116. {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 11, -10.5dB */
  117. {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB */
  118. {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB */
  119. {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 14, -9.0dB */
  120. {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB */
  121. {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
  122. {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB */
  123. {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
  124. {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
  125. {0x1c, 0x1a, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
  126. {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB */
  127. {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
  128. {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 23, -4.5dB */
  129. {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
  130. {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
  131. {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
  132. {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 27, -2.5dB */
  133. {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
  134. {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 29, -1.5dB */
  135. {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
  136. {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
  137. {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
  138. };
  139. u32 ofdm_swing_table[OFDM_TABLE_SIZE_92D] = {
  140. 0x0b40002d, /* 0, -15.0dB */
  141. 0x0c000030, /* 1, -14.5dB */
  142. 0x0cc00033, /* 2, -14.0dB */
  143. 0x0d800036, /* 3, -13.5dB */
  144. 0x0e400039, /* 4, -13.0dB */
  145. 0x0f00003c, /* 5, -12.5dB */
  146. 0x10000040, /* 6, -12.0dB */
  147. 0x11000044, /* 7, -11.5dB */
  148. 0x12000048, /* 8, -11.0dB */
  149. 0x1300004c, /* 9, -10.5dB */
  150. 0x14400051, /* 10, -10.0dB */
  151. 0x15800056, /* 11, -9.5dB */
  152. 0x16c0005b, /* 12, -9.0dB */
  153. 0x18000060, /* 13, -8.5dB */
  154. 0x19800066, /* 14, -8.0dB */
  155. 0x1b00006c, /* 15, -7.5dB */
  156. 0x1c800072, /* 16, -7.0dB */
  157. 0x1e400079, /* 17, -6.5dB */
  158. 0x20000080, /* 18, -6.0dB */
  159. 0x22000088, /* 19, -5.5dB */
  160. 0x24000090, /* 20, -5.0dB */
  161. 0x26000098, /* 21, -4.5dB */
  162. 0x288000a2, /* 22, -4.0dB */
  163. 0x2ac000ab, /* 23, -3.5dB */
  164. 0x2d4000b5, /* 24, -3.0dB */
  165. 0x300000c0, /* 25, -2.5dB */
  166. 0x32c000cb, /* 26, -2.0dB */
  167. 0x35c000d7, /* 27, -1.5dB */
  168. 0x390000e4, /* 28, -1.0dB */
  169. 0x3c8000f2, /* 29, -0.5dB */
  170. 0x40000100, /* 30, +0dB */
  171. 0x43c0010f, /* 31, +0.5dB */
  172. 0x47c0011f, /* 32, +1.0dB */
  173. 0x4c000130, /* 33, +1.5dB */
  174. 0x50800142, /* 34, +2.0dB */
  175. 0x55400155, /* 35, +2.5dB */
  176. 0x5a400169, /* 36, +3.0dB */
  177. 0x5fc0017f, /* 37, +3.5dB */
  178. 0x65400195, /* 38, +4.0dB */
  179. 0x6b8001ae, /* 39, +4.5dB */
  180. 0x71c001c7, /* 40, +5.0dB */
  181. 0x788001e2, /* 41, +5.5dB */
  182. 0x7f8001fe /* 42, +6.0dB */
  183. };
  184. u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {
  185. {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB */
  186. {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB */
  187. {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB */
  188. {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB */
  189. {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB */
  190. {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB */
  191. {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB */
  192. {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB */
  193. {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB */
  194. {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB */
  195. {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB */
  196. {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB */
  197. {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB */
  198. {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB */
  199. {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */
  200. {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB */
  201. {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
  202. {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB */
  203. {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */
  204. {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB */
  205. {0x1c, 0x1a, 0x18, 0x12, 0x0e, 0x08, 0x04, 0x02}, /* 20, -6.0dB */
  206. {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB */
  207. {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */
  208. {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB */
  209. {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */
  210. {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB */
  211. {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB */
  212. {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB */
  213. {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */
  214. {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB */
  215. {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB */
  216. {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB */
  217. {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB */
  218. };
  219. u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8] = {
  220. {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB */
  221. {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB */
  222. {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB */
  223. {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB */
  224. {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB */
  225. {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 5, -13.5dB */
  226. {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB */
  227. {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB */
  228. {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB */
  229. {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB */
  230. {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB */
  231. {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 11, -10.5dB */
  232. {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB */
  233. {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB */
  234. {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 14, -9.0dB */
  235. {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB */
  236. {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
  237. {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB */
  238. {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */
  239. {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */
  240. {0x1c, 0x1a, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */
  241. {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB */
  242. {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */
  243. {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 23, -4.5dB */
  244. {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */
  245. {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */
  246. {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */
  247. {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 27, -2.5dB */
  248. {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */
  249. {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 29, -1.5dB */
  250. {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */
  251. {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */
  252. {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */
  253. };
  254. u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
  255. {0x16, 0x15, 0x13, 0x10, 0xD, 0x9, 0x6, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 0 -16dB */
  256. {0x18, 0x17, 0x15, 0x12, 0xE, 0xA, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 1 -15.5dB */
  257. {0x1B, 0x1A, 0x18, 0x14, 0x10, 0xB, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 2 -15dB */
  258. {0x1F, 0x1E, 0x1B, 0x17, 0x12, 0xD, 0x8, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 3 -14.5dB */
  259. {0x22, 0x21, 0x1E, 0x19, 0x14, 0xE, 0x9, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 4 -14dB */
  260. {0x26, 0x25, 0x22, 0x1C, 0x16, 0x10, 0xA, 0x6, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 5 -13.5dB */
  261. {0x2B, 0x2A, 0x26, 0x20, 0x19, 0x12, 0xC, 0x7, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 6 -13dB */
  262. {0x30, 0x2F, 0x2A, 0x24, 0x1C, 0x14, 0xD, 0x8, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 7 -12.5dB */
  263. {0x36, 0x34, 0x2F, 0x28, 0x1F, 0x17, 0xF, 0x9, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 8 -12dB */
  264. {0x3D, 0x3B, 0x35, 0x2D, 0x23, 0x19, 0x11, 0xA, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 9 -11.5dB */
  265. {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0xB, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 10 -11dB */
  266. {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0xC, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 11 -10.5dB */
  267. {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0xE, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 12 -10dB */
  268. {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0xF, 0x7, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 13 -9.5dB */
  269. {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 14 -9dB */
  270. {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x9, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 15 -8.5dB */
  271. {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0xA, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 16 -8dB */
  272. {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0xB, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 17 -7.5dB */
  273. {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0xD, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 18 -7dB */
  274. {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0xE, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 19 -6.5dB */
  275. {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} /* 20 -6dB */
  276. };
  277. u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {
  278. {0x16, 0x15, 0x13, 0x10, 0xD, 0x9, 0x6, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 0 -16dB */
  279. {0x18, 0x17, 0x15, 0x12, 0xE, 0xA, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 1 -15.5dB */
  280. {0x1B, 0x1A, 0x18, 0x14, 0x10, 0xB, 0x7, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 2 -15dB */
  281. {0x1F, 0x1E, 0x1B, 0x17, 0x12, 0xD, 0x8, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 3 -14.5dB */
  282. {0x22, 0x21, 0x1E, 0x19, 0x14, 0xE, 0x9, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 4 -14dB */
  283. {0x26, 0x25, 0x22, 0x1C, 0x16, 0x10, 0xA, 0x6, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 5 -13.5dB */
  284. {0x2B, 0x2A, 0x26, 0x20, 0x19, 0x12, 0xC, 0x7, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 6 -13dB */
  285. {0x30, 0x2F, 0x2A, 0x24, 0x1C, 0x14, 0xD, 0x8, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 7 -12.5dB */
  286. {0x36, 0x34, 0x2F, 0x28, 0x1F, 0x17, 0xF, 0x9, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 8 -12dB */
  287. {0x3D, 0x3B, 0x35, 0x2D, 0x23, 0x19, 0x11, 0xA, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 9 -11.5dB */
  288. {0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0xB, 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 10 -11dB */
  289. {0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0xC, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 11 -10.5dB */
  290. {0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0xE, 0x6, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 12 -10dB */
  291. {0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0xF, 0x7, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 13 -9.5dB */
  292. {0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x8, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 14 -9dB */
  293. {0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x9, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 15 -8.5dB */
  294. {0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0xA, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 16 -8dB */
  295. {0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0xB, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 17 -7.5dB */
  296. {0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0xD, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 18 -7dB */
  297. {0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0xE, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* 19 -6.5dB */
  298. {0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} /* 20 -6dB */
  299. };
  300. u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {
  301. {0x44, 0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/
  302. {0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/
  303. {0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/
  304. {0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/
  305. {0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/
  306. {0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/
  307. {0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/
  308. {0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/
  309. {0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/
  310. {0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/
  311. {0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/
  312. {0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/
  313. {0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/
  314. {0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/
  315. {0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/
  316. {0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/
  317. {0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/
  318. {0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/
  319. {0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/
  320. {0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/
  321. {0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/
  322. };
  323. /* Winnita ADD 20171113 PathA 0xAB4[10:0],PathB 0xAB4[21:11]*/
  324. u32 cck_swing_table_ch1_ch14_8192f[CCK_TABLE_SIZE_8192F] = {
  325. 0x0CD, /*0 , -20dB*/
  326. 0x0D9,
  327. 0x0E6,
  328. 0x0F3,
  329. 0x102,
  330. 0x111,
  331. 0x121,
  332. 0x132,
  333. 0x144,
  334. 0x158,
  335. 0x16C,
  336. 0x182,
  337. 0x198,
  338. 0x1B1,
  339. 0x1CA,
  340. 0x1E5,
  341. 0x202,
  342. 0x221,
  343. 0x241,
  344. 0x263, /*19*/
  345. 0x287, /*20*/
  346. 0x2AE, /*21*/
  347. 0x2D6, /*22*/
  348. 0x301, /*23*/
  349. 0x32F, /*24*/
  350. 0x35F, /*25*/
  351. 0x392, /*26*/
  352. 0x3C9, /*27*/
  353. 0x402, /*28*/
  354. 0x43F, /*29*/
  355. 0x47F, /*30*/
  356. 0x4C3, /*31*/
  357. 0x50C, /*32*/
  358. 0x558, /*33*/
  359. 0x5A9, /*34*/
  360. 0x5FF, /*35*/
  361. 0x65A, /*36*/
  362. 0x6BA,
  363. 0x720,
  364. 0x78C,
  365. 0x7FF,
  366. };
  367. #if 0
  368. u32 ofdm_swing_table_92e[OFDM_TABLE_SIZE_92E] = {
  369. /* Index0 6 dB */ 0x7fc001ff,
  370. /* Index1 5.7dB */ 0x7b4001ed,
  371. /* Index2 5.4dB */ 0x774001dd,
  372. /* Index3 5.1dB */ 0x734001cd,
  373. /* Index4 4.8dB */ 0x6f4001bd,
  374. /* Index5 4.5dB */ 0x6b8001ae,
  375. /* Index6 4.2dB */ 0x67c0019f,
  376. /* Index7 3.9dB */ 0x64400191,
  377. /* Index8 3.6dB */ 0x60c00183,
  378. /* Index9 3.3dB */ 0x5d800176,
  379. /* Index10 3 dB */ 0x5a80016a,
  380. /* Index11 2.7dB */ 0x5740015d,
  381. /* Index12 2.4dB */ 0x54400151,
  382. /* Index13 2.1dB */ 0x51800146,
  383. /* Index14 1.8dB */ 0x4ec0013b,
  384. /* Index15 1.5dB */ 0x4c000130,
  385. /* Index16 1.2dB */ 0x49800126,
  386. /* Index17 0.9dB */ 0x4700011c,
  387. /* Index18 0.6dB */ 0x44800112,
  388. /* Index19 0.3dB */ 0x42000108,
  389. /* Index20 0 dB */ 0x40000100, /* 20 This is OFDM base index */
  390. /* Index21 -0.3dB */ 0x3dc000f7,
  391. /* Index22 -0.6dB */ 0x3bc000ef,
  392. /* Index23 -0.9dB */ 0x39c000e7,
  393. /* Index24 -1.2dB */ 0x37c000df,
  394. /* Index25 -1.5dB */ 0x35c000d7,
  395. /* Index26 -1.8dB */ 0x340000d0,
  396. /* Index27 -2.1dB */ 0x324000c9,
  397. /* Index28 -2.4dB */ 0x308000c2,
  398. /* Index29 -2.7dB */ 0x2f0000bc,
  399. /* Index30 -3 dB */ 0x2d4000b5,
  400. /* Index31 -3.3dB */ 0x2bc000af,
  401. /* Index32 -3.6dB */ 0x2a4000a9,
  402. /* Index33 -3.9dB */ 0x28c000a3,
  403. /* Index34 -4.2dB */ 0x2780009e,
  404. /* Index35 -4.5dB */ 0x26000098,
  405. /* Index36 -4.8dB */ 0x24c00093,
  406. /* Index37 -5.1dB */ 0x2380008e,
  407. /* Index38 -5.4dB */ 0x22400089,
  408. /* Index39 -5.7dB */ 0x21400085,
  409. /* Index40 -6 dB */ 0x20000080,
  410. /* Index41 -6.3dB */ 0x1f00007c,
  411. /* Index42 -6.6dB */ 0x1e000078,
  412. /* Index43 -6.9dB */ 0x1d000074,
  413. /* Index44 -7.2dB */ 0x1c000070,
  414. /* Index45 -7.5dB */ 0x1b00006c,
  415. /* Index46 -7.8dB */ 0x1a000068,
  416. /* Index47 -8.1dB */ 0x19400065,
  417. /* Index48 -8.4dB */ 0x18400061,
  418. /* Index49 -8.7dB */ 0x1780005e,
  419. /* Index50 -9 dB */ 0x16c0005b,
  420. /* Index51 -9.3dB */ 0x16000058,
  421. /* Index52 -9.6dB */ 0x15400055,
  422. /* Index53 -9.9dB */ 0x14800052
  423. };
  424. u8 cck_swing_table_ch1_ch13_92e[CCK_TABLE_SIZE_92E][8] = {
  425. /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x1C, 0x12, 0x08, 0x04},
  426. /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x1B, 0x11, 0x08, 0x04},
  427. /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x1A, 0x11, 0x07, 0x04},
  428. /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x19, 0x10, 0x07, 0x04},
  429. /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x18, 0x10, 0x07, 0x03},
  430. /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x18, 0x0F, 0x07, 0x03},
  431. /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x17, 0x0F, 0x06, 0x03},
  432. /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x16, 0x0E, 0x06, 0x03},
  433. /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x15, 0x0E, 0x06, 0x03},
  434. /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x14, 0x0D, 0x06, 0x03},
  435. /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x14, 0x0D, 0x06, 0x03},
  436. /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x13, 0x0C, 0x05, 0x03},
  437. /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x12, 0x0C, 0x05, 0x03},
  438. /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x12, 0x0B, 0x05, 0x03},
  439. /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x11, 0x0B, 0x05, 0x02},
  440. /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x11, 0x0B, 0x05, 0x02},
  441. /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x10, 0x0A, 0x05, 0x02},
  442. /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x10, 0x0A, 0x04, 0x02},
  443. /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x0F, 0x0A, 0x04, 0x02},
  444. /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x0E, 0x09, 0x04, 0x02},
  445. /* Index20 -6.0dB */ {0x1B, 0x1A, 0x17, 0x13, 0x0E, 0x09, 0x04, 0x02}, /* 20 This is CCK base index */
  446. /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x0E, 0x09, 0x04, 0x02},
  447. /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x0D, 0x08, 0x04, 0x02},
  448. /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x0D, 0x08, 0x04, 0x02},
  449. /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x0C, 0x08, 0x03, 0x02},
  450. /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x0C, 0x08, 0x03, 0x02},
  451. /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x0B, 0x07, 0x03, 0x02},
  452. /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x0B, 0x07, 0x03, 0x02},
  453. /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x0B, 0x07, 0x03, 0x02},
  454. /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x0A, 0x07, 0x03, 0x01},
  455. /* Index30 -9.0dB */ {0x13, 0x12, 0x10, 0x0D, 0x0A, 0x06, 0x03, 0x01}, /* 30 This is hp CCK base index */
  456. /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x0A, 0x06, 0x03, 0x01},
  457. /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x09, 0x06, 0x03, 0x01},
  458. /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x09, 0x06, 0x03, 0x01},
  459. /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x09, 0x06, 0x02, 0x01},
  460. /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x08, 0x05, 0x02, 0x01},
  461. /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x08, 0x05, 0x02, 0x01},
  462. /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x08, 0x05, 0x02, 0x01},
  463. /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  464. /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  465. /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  466. /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
  467. /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
  468. /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x06, 0x04, 0x02, 0x01},
  469. /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
  470. /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
  471. /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},
  472. /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x06, 0x04, 0x02, 0x01},
  473. /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},
  474. /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
  475. /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
  476. /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
  477. /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
  478. /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}
  479. };
  480. u8 cck_swing_table_ch14_92e[CCK_TABLE_SIZE_92E][8] = {
  481. /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x00, 0x00, 0x00, 0x00},
  482. /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x00, 0x00, 0x00, 0x00},
  483. /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x00, 0x00, 0x00, 0x00},
  484. /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x00, 0x00, 0x00, 0x00},
  485. /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x00, 0x00, 0x00, 0x00},
  486. /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00},
  487. /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x00, 0x00, 0x00, 0x00},
  488. /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x00, 0x00, 0x00, 0x00},
  489. /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x00, 0x00, 0x00, 0x00},
  490. /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00},
  491. /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x00, 0x00, 0x00, 0x00},
  492. /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x00, 0x00, 0x00, 0x00},
  493. /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x00, 0x00, 0x00, 0x00},
  494. /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x00, 0x00, 0x00, 0x00},
  495. /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x00, 0x00, 0x00, 0x00},
  496. /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x00, 0x00, 0x00, 0x00},
  497. /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x00, 0x00, 0x00, 0x00},
  498. /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x00, 0x00, 0x00, 0x00},
  499. /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00},
  500. /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00},
  501. /* Index20 -6 dB */ {0x1B, 0x1A, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00},
  502. /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00},
  503. /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00},
  504. /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00},
  505. /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x00, 0x00, 0x00, 0x00},
  506. /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x00, 0x00, 0x00, 0x00},
  507. /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00},
  508. /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x00, 0x00, 0x00, 0x00},
  509. /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
  510. /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
  511. /* Index30 -9 dB */ {0x13, 0x12, 0x10, 0x0D, 0x00, 0x00, 0x00, 0x00},
  512. /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
  513. /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
  514. /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00},
  515. /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00},
  516. /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x00, 0x00, 0x00, 0x00},
  517. /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x00, 0x00, 0x00, 0x00},
  518. /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00},
  519. /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  520. /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  521. /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  522. /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
  523. /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
  524. /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x00, 0x00, 0x00, 0x00},
  525. /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
  526. /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
  527. /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00},
  528. /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
  529. /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
  530. /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
  531. /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
  532. /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
  533. /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
  534. /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00}
  535. };
  536. #endif
  537. #endif
  538. u8 delta_swing_table_idx_2ga_p_default[DELTA_SWINGIDX_SIZE] = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3
  539. , 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9
  540. };
  541. u8 delta_swing_table_idx_2ga_n_default[DELTA_SWINGIDX_SIZE] = {0, 0, 0, 2, 2, 3, 3, 4, 4, 4
  542. , 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 10, 10, 10, 11, 11, 11, 11
  543. };
  544. #ifdef CONFIG_WLAN_HAL_8192EE
  545. u32 ofdm_swing_table_92e[OFDM_TABLE_SIZE_92E] = {
  546. /* Index0 6 dB */ 0x7fc001ff,
  547. /* Index1 5.7dB */ 0x7b4001ed,
  548. /* Index2 5.4dB */ 0x774001dd,
  549. /* Index3 5.1dB */ 0x734001cd,
  550. /* Index4 4.8dB */ 0x6f4001bd,
  551. /* Index5 4.5dB */ 0x6b8001ae,
  552. /* Index6 4.2dB */ 0x67c0019f,
  553. /* Index7 3.9dB */ 0x64400191,
  554. /* Index8 3.6dB */ 0x60c00183,
  555. /* Index9 3.3dB */ 0x5d800176,
  556. /* Index10 3 dB */ 0x5a80016a,
  557. /* Index11 2.7dB */ 0x5740015d,
  558. /* Index12 2.4dB */ 0x54400151,
  559. /* Index13 2.1dB */ 0x51800146,
  560. /* Index14 1.8dB */ 0x4ec0013b,
  561. /* Index15 1.5dB */ 0x4c000130,
  562. /* Index16 1.2dB */ 0x49800126,
  563. /* Index17 0.9dB */ 0x4700011c,
  564. /* Index18 0.6dB */ 0x44800112,
  565. /* Index19 0.3dB */ 0x42000108,
  566. /* Index20 0 dB */ 0x40000100, /* 20 This is OFDM base index */
  567. /* Index21 -0.3dB */ 0x3dc000f7,
  568. /* Index22 -0.6dB */ 0x3bc000ef,
  569. /* Index23 -0.9dB */ 0x39c000e7,
  570. /* Index24 -1.2dB */ 0x37c000df,
  571. /* Index25 -1.5dB */ 0x35c000d7,
  572. /* Index26 -1.8dB */ 0x340000d0,
  573. /* Index27 -2.1dB */ 0x324000c9,
  574. /* Index28 -2.4dB */ 0x308000c2,
  575. /* Index29 -2.7dB */ 0x2f0000bc,
  576. /* Index30 -3 dB */ 0x2d4000b5,
  577. /* Index31 -3.3dB */ 0x2bc000af,
  578. /* Index32 -3.6dB */ 0x2a4000a9,
  579. /* Index33 -3.9dB */ 0x28c000a3,
  580. /* Index34 -4.2dB */ 0x2780009e,
  581. /* Index35 -4.5dB */ 0x26000098,
  582. /* Index36 -4.8dB */ 0x24c00093,
  583. /* Index37 -5.1dB */ 0x2380008e,
  584. /* Index38 -5.4dB */ 0x22400089,
  585. /* Index39 -5.7dB */ 0x21400085,
  586. /* Index40 -6 dB */ 0x20000080,
  587. /* Index41 -6.3dB */ 0x1f00007c,
  588. /* Index42 -6.6dB */ 0x1e000078,
  589. /* Index43 -6.9dB */ 0x1d000074,
  590. /* Index44 -7.2dB */ 0x1c000070,
  591. /* Index45 -7.5dB */ 0x1b00006c,
  592. /* Index46 -7.8dB */ 0x1a000068,
  593. /* Index47 -8.1dB */ 0x19400065,
  594. /* Index48 -8.4dB */ 0x18400061,
  595. /* Index49 -8.7dB */ 0x1780005e,
  596. /* Index50 -9 dB */ 0x16c0005b,
  597. /* Index51 -9.3dB */ 0x16000058,
  598. /* Index52 -9.6dB */ 0x15400055,
  599. /* Index53 -9.9dB */ 0x14800052
  600. };
  601. u8 cck_swing_table_ch1_ch13_92e[CCK_TABLE_SIZE_92E][8] = {
  602. /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x1C, 0x12, 0x08, 0x04},
  603. /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x1B, 0x11, 0x08, 0x04},
  604. /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x1A, 0x11, 0x07, 0x04},
  605. /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x19, 0x10, 0x07, 0x04},
  606. /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x18, 0x10, 0x07, 0x03},
  607. /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x18, 0x0F, 0x07, 0x03},
  608. /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x17, 0x0F, 0x06, 0x03},
  609. /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x16, 0x0E, 0x06, 0x03},
  610. /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x15, 0x0E, 0x06, 0x03},
  611. /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x14, 0x0D, 0x06, 0x03},
  612. /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x14, 0x0D, 0x06, 0x03},
  613. /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x13, 0x0C, 0x05, 0x03},
  614. /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x12, 0x0C, 0x05, 0x03},
  615. /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x12, 0x0B, 0x05, 0x03},
  616. /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x11, 0x0B, 0x05, 0x02},
  617. /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x11, 0x0B, 0x05, 0x02},
  618. /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x10, 0x0A, 0x05, 0x02},
  619. /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x10, 0x0A, 0x04, 0x02},
  620. /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x0F, 0x0A, 0x04, 0x02},
  621. /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x0E, 0x09, 0x04, 0x02},
  622. /* Index20 -6.0dB */ {0x1B, 0x1A, 0x17, 0x13, 0x0E, 0x09, 0x04, 0x02}, /* 20 This is CCK base index */
  623. /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x0E, 0x09, 0x04, 0x02},
  624. /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x0D, 0x08, 0x04, 0x02},
  625. /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x0D, 0x08, 0x04, 0x02},
  626. /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x0C, 0x08, 0x03, 0x02},
  627. /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x0C, 0x08, 0x03, 0x02},
  628. /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x0B, 0x07, 0x03, 0x02},
  629. /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x0B, 0x07, 0x03, 0x02},
  630. /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x0B, 0x07, 0x03, 0x02},
  631. /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x0A, 0x07, 0x03, 0x01},
  632. /* Index30 -9.0dB */ {0x13, 0x12, 0x10, 0x0D, 0x0A, 0x06, 0x03, 0x01}, /* 30 This is hp CCK base index */
  633. /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x0A, 0x06, 0x03, 0x01},
  634. /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x09, 0x06, 0x03, 0x01},
  635. /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x09, 0x06, 0x03, 0x01},
  636. /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x09, 0x06, 0x02, 0x01},
  637. /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x08, 0x05, 0x02, 0x01},
  638. /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x08, 0x05, 0x02, 0x01},
  639. /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x08, 0x05, 0x02, 0x01},
  640. /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  641. /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  642. /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x07, 0x05, 0x02, 0x01},
  643. /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
  644. /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x07, 0x04, 0x02, 0x01},
  645. /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x06, 0x04, 0x02, 0x01},
  646. /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
  647. /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x01},
  648. /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},
  649. /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x06, 0x04, 0x02, 0x01},
  650. /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},
  651. /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
  652. /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x05, 0x03, 0x01, 0x01},
  653. /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
  654. /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
  655. /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}
  656. };
  657. u8 cck_swing_table_ch14_92e[CCK_TABLE_SIZE_92E][8] = {
  658. /* Index0 0 dB */ {0x36, 0x34, 0x2E, 0x26, 0x00, 0x00, 0x00, 0x00},
  659. /* Index1 -0.3dB */ {0x34, 0x32, 0x2C, 0x25, 0x00, 0x00, 0x00, 0x00},
  660. /* Index2 -0.6dB */ {0x32, 0x30, 0x2B, 0x23, 0x00, 0x00, 0x00, 0x00},
  661. /* Index3 -0.9dB */ {0x31, 0x2F, 0x29, 0x22, 0x00, 0x00, 0x00, 0x00},
  662. /* Index4 -1.2dB */ {0x2F, 0x2D, 0x28, 0x21, 0x00, 0x00, 0x00, 0x00},
  663. /* Index5 -1.5dB */ {0x2D, 0x2C, 0x27, 0x20, 0x00, 0x00, 0x00, 0x00},
  664. /* Index6 -1.8dB */ {0x2C, 0x2A, 0x25, 0x1F, 0x00, 0x00, 0x00, 0x00},
  665. /* Index7 -2.1dB */ {0x2A, 0x29, 0x24, 0x1E, 0x00, 0x00, 0x00, 0x00},
  666. /* Index8 -2.4dB */ {0x29, 0x27, 0x23, 0x1D, 0x00, 0x00, 0x00, 0x00},
  667. /* Index9 -2.7dB */ {0x27, 0x26, 0x22, 0x1C, 0x00, 0x00, 0x00, 0x00},
  668. /* Index10 -3 dB */ {0x26, 0x25, 0x20, 0x1B, 0x00, 0x00, 0x00, 0x00},
  669. /* Index11 -3.3dB */ {0x25, 0x23, 0x1F, 0x1A, 0x00, 0x00, 0x00, 0x00},
  670. /* Index12 -3.6dB */ {0x24, 0x22, 0x1E, 0x19, 0x00, 0x00, 0x00, 0x00},
  671. /* Index13 -3.9dB */ {0x22, 0x21, 0x1D, 0x18, 0x00, 0x00, 0x00, 0x00},
  672. /* Index14 -4.2dB */ {0x21, 0x20, 0x1C, 0x17, 0x00, 0x00, 0x00, 0x00},
  673. /* Index15 -4.5dB */ {0x20, 0x1F, 0x1B, 0x17, 0x00, 0x00, 0x00, 0x00},
  674. /* Index16 -4.8dB */ {0x1F, 0x1E, 0x1A, 0x16, 0x00, 0x00, 0x00, 0x00},
  675. /* Index17 -5.1dB */ {0x1E, 0x1D, 0x1A, 0x15, 0x00, 0x00, 0x00, 0x00},
  676. /* Index18 -5.4dB */ {0x1D, 0x1C, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00},
  677. /* Index19 -5.7dB */ {0x1C, 0x1B, 0x18, 0x14, 0x00, 0x00, 0x00, 0x00},
  678. /* Index20 -6 dB */ {0x1B, 0x1A, 0x17, 0x13, 0x00, 0x00, 0x00, 0x00},
  679. /* Index21 -6.3dB */ {0x1A, 0x19, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00},
  680. /* Index22 -6.6dB */ {0x19, 0x18, 0x15, 0x12, 0x00, 0x00, 0x00, 0x00},
  681. /* Index23 -6.9dB */ {0x18, 0x17, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00},
  682. /* Index24 -7.2dB */ {0x18, 0x17, 0x14, 0x11, 0x00, 0x00, 0x00, 0x00},
  683. /* Index25 -7.5dB */ {0x17, 0x16, 0x13, 0x10, 0x00, 0x00, 0x00, 0x00},
  684. /* Index26 -7.8dB */ {0x16, 0x15, 0x13, 0x0F, 0x00, 0x00, 0x00, 0x00},
  685. /* Index27 -8.1dB */ {0x15, 0x14, 0x12, 0x0F, 0x00, 0x00, 0x00, 0x00},
  686. /* Index28 -8.4dB */ {0x14, 0x14, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
  687. /* Index29 -8.7dB */ {0x14, 0x13, 0x11, 0x0E, 0x00, 0x00, 0x00, 0x00},
  688. /* Index30 -9 dB */ {0x13, 0x12, 0x10, 0x0D, 0x00, 0x00, 0x00, 0x00},
  689. /* Index31 -9.3dB */ {0x12, 0x12, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
  690. /* Index32 -9.6dB */ {0x12, 0x11, 0x0F, 0x0D, 0x00, 0x00, 0x00, 0x00},
  691. /* Index33 -9.9dB */ {0x11, 0x11, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x00},
  692. /* Index34 -10.2dB */ {0x11, 0x11, 0x0E, 0x0C, 0x00, 0x00, 0x00, 0x00},
  693. /* Index35 -10.5dB */ {0x10, 0x0F, 0x0E, 0x0B, 0x00, 0x00, 0x00, 0x00},
  694. /* Index36 -10.8dB */ {0x10, 0x0F, 0x0D, 0x0B, 0x00, 0x00, 0x00, 0x00},
  695. /* Index37 -11.1dB */ {0x0F, 0x0E, 0x0D, 0x0A, 0x00, 0x00, 0x00, 0x00},
  696. /* Index38 -11.4dB */ {0x0E, 0x0E, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  697. /* Index39 -11.7dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  698. /* Index40 -12 dB */ {0x0E, 0x0D, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00},
  699. /* Index41 -12.3dB */ {0x0D, 0x0D, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
  700. /* Index42 -12.6dB */ {0x0D, 0x0C, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00},
  701. /* Index43 -12.9dB */ {0x0C, 0x0C, 0x0A, 0x09, 0x00, 0x00, 0x00, 0x00},
  702. /* Index44 -13.2dB */ {0x0C, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
  703. /* Index45 -13.5dB */ {0x0B, 0x0B, 0x0A, 0x08, 0x00, 0x00, 0x00, 0x00},
  704. /* Index46 -13.8dB */ {0x0B, 0x0B, 0x09, 0x08, 0x00, 0x00, 0x00, 0x00},
  705. /* Index47 -14.1dB */ {0x0B, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
  706. /* Index48 -14.4dB */ {0x0A, 0x0A, 0x09, 0x07, 0x00, 0x00, 0x00, 0x00},
  707. /* Index49 -14.7dB */ {0x0A, 0x0A, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
  708. /* Index50 -15 dB */ {0x0A, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 0x00},
  709. /* Index51 -15.3dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
  710. /* Index52 -15.6dB */ {0x09, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00},
  711. /* Index53 -15.9dB */ {0x09, 0x08, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00}
  712. };
  713. #endif
  714. #if (RTL8814A_SUPPORT == 1 || RTL8822B_SUPPORT == 1 ||\
  715. RTL8821C_SUPPORT == 1 || RTL8198F_SUPPORT == 1)
  716. u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {
  717. 0x081, /* 0, -12.0dB */
  718. 0x088, /* 1, -11.5dB */
  719. 0x090, /* 2, -11.0dB */
  720. 0x099, /* 3, -10.5dB */
  721. 0x0A2, /* 4, -10.0dB */
  722. 0x0AC, /* 5, -9.5dB */
  723. 0x0B6, /* 6, -9.0dB */
  724. 0x0C0, /* 7, -8.5dB */
  725. 0x0CC, /* 8, -8.0dB */
  726. 0x0D8, /* 9, -7.5dB */
  727. 0x0E5, /* 10, -7.0dB */
  728. 0x0F2, /* 11, -6.5dB */
  729. 0x101, /* 12, -6.0dB */
  730. 0x110, /* 13, -5.5dB */
  731. 0x120, /* 14, -5.0dB */
  732. 0x131, /* 15, -4.5dB */
  733. 0x143, /* 16, -4.0dB */
  734. 0x156, /* 17, -3.5dB */
  735. 0x16A, /* 18, -3.0dB */
  736. 0x180, /* 19, -2.5dB */
  737. 0x197, /* 20, -2.0dB */
  738. 0x1AF, /* 21, -1.5dB */
  739. 0x1C8, /* 22, -1.0dB */
  740. 0x1E3, /* 23, -0.5dB */
  741. 0x200, /* 24, +0 dB */
  742. 0x21E, /* 25, +0.5dB */
  743. 0x23E, /* 26, +1.0dB */
  744. 0x261, /* 27, +1.5dB */
  745. 0x285, /* 28, +2.0dB */
  746. 0x2AB, /* 29, +2.5dB */
  747. 0x2D3, /* 30, +3.0dB */
  748. 0x2FE, /* 31, +3.5dB */
  749. 0x32B, /* 32, +4.0dB */
  750. 0x35C, /* 33, +4.5dB */
  751. 0x38E, /* 34, +5.0dB */
  752. 0x3C4, /* 35, +5.5dB */
  753. 0x3FE /* 36, +6.0dB */
  754. };
  755. #elif(ODM_IC_11AC_SERIES_SUPPORT)
  756. u32 ofdm_swing_table_8812[OFDM_TABLE_SIZE_8812] = {
  757. 0x3FE, /* 0, (6dB) */
  758. 0x3C4, /* 1, (5.5dB) */
  759. 0x38E, /* 2, (5dB) */
  760. 0x35C, /* 3, (4.5dB) */
  761. 0x32B, /* 4, (4dB) */
  762. 0x2FE, /* 5, (3.5dB) */
  763. 0x2D3, /* 6, (3dB) */
  764. 0x2AB, /* 7, (2.5dB) */
  765. 0x285, /* 8, (2dB) */
  766. 0x261, /* 9, (1.5dB */
  767. 0x23E, /* 10, (1dB) */
  768. 0x21E, /* 11, (0.5dB) */
  769. 0x200, /* 12, (0dB) 8814 int PA 2G default */
  770. 0x1E3, /* 13, (-0.5dB) */
  771. 0x1C8, /* 14, (-1dB) */
  772. 0x1AF, /* 15, (-1.5dB) */
  773. 0x197, /* 16, (-2dB) */
  774. 0x180, /* 17, (-2.5dB) */
  775. 0x16A, /* 18, (-3dB) 8812 / 8814 int PA 5G / 8814 ext PA 2G5G default */
  776. 0x156, /* 19, (-3.5dB) */
  777. 0x143, /* 20, (-4dB) 8812 HP default */
  778. 0x131, /* 21, (-4.5dB) */
  779. 0x120, /* 22, (-5dB) */
  780. 0x110, /* 23, (-5.5dB) */
  781. 0x101, /* 24, (-6dB) */
  782. 0x0F2, /* 25, (-6.5dB) */
  783. 0x0E5, /* 26, (-7dB) */
  784. 0x0D8, /* 27, (-7.5dB) */
  785. 0x0CC, /* 28, (-8dB) */
  786. 0x0C0, /* 29, (-8.5dB) */
  787. 0x0B6, /* 30, (-9dB) */
  788. 0x0AC, /* 31, (-9.5dB) */
  789. 0x0A2, /* 32, (-10dB) */
  790. 0x099, /* 33, (-10.5dB) */
  791. 0x090, /* 34, (-11dB) */
  792. 0x088, /* 35, (-11.5dB) */
  793. 0x081, /* 36, (-12dB) */
  794. 0x079, /* 37, (-12.5dB) */
  795. 0x072, /* 38, (-13dB) */
  796. 0x06c, /* 39, (-13.5dB) */
  797. 0x066, /* 40, (-14dB) */
  798. 0x060, /* 41, (-14.5dB) */
  799. 0x05B /* 42, (-15dB) */
  800. };
  801. #endif
  802. u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {
  803. 0x0CD,
  804. 0x0D9,
  805. 0x0E6,
  806. 0x0F3,
  807. 0x102,
  808. 0x111,
  809. 0x121,
  810. 0x132,
  811. 0x144,
  812. 0x158,
  813. 0x16C,
  814. 0x182,
  815. 0x198,
  816. 0x1B1,
  817. 0x1CA,
  818. 0x1E5,
  819. 0x202,
  820. 0x221,
  821. 0x241,
  822. 0x263,
  823. 0x287,
  824. 0x2AE,
  825. 0x2D6,
  826. 0x301,
  827. 0x32F,
  828. 0x35F,
  829. 0x392,
  830. 0x3C9,
  831. 0x402,
  832. 0x43F,
  833. 0x47F,
  834. 0x4C3,
  835. 0x50C,
  836. 0x558,
  837. 0x5A9,
  838. 0x5FF,
  839. 0x65A,
  840. 0x6BA,
  841. 0x720,
  842. 0x78C,
  843. 0x7FF,
  844. };
  845. /* JJ ADD 20161014 */
  846. u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {
  847. 0x0CD,
  848. 0x0D9,
  849. 0x0E6,
  850. 0x0F3,
  851. 0x102,
  852. 0x111,
  853. 0x121,
  854. 0x132,
  855. 0x144,
  856. 0x158,
  857. 0x16C,
  858. 0x182,
  859. 0x198,
  860. 0x1B1,
  861. 0x1CA,
  862. 0x1E5,
  863. 0x202,
  864. 0x221,
  865. 0x241,
  866. 0x263,
  867. 0x287,
  868. 0x2AE,
  869. 0x2D6,
  870. 0x301,
  871. 0x32F,
  872. 0x35F,
  873. 0x392,
  874. 0x3C9,
  875. 0x402,
  876. 0x43F,
  877. 0x47F,
  878. 0x4C3,
  879. 0x50C,
  880. 0x558,
  881. 0x5A9,
  882. 0x5FF,
  883. 0x65A,
  884. 0x6BA,
  885. 0x720,
  886. 0x78C,
  887. 0x7FF,
  888. };
  889. /* #endif */
  890. /* 3============================================================
  891. * 3 Tx Power Tracking
  892. * 3============================================================ */
  893. void
  894. odm_txpowertracking_init(
  895. void *dm_void
  896. )
  897. {
  898. struct dm_struct *dm = (struct dm_struct *)dm_void;
  899. #if (DM_ODM_SUPPORT_TYPE & (ODM_AP))
  900. if (!(dm->support_ic_type & (ODM_RTL8814A | ODM_RTL8822B | ODM_IC_11N_SERIES)))
  901. return;
  902. #endif
  903. odm_txpowertracking_thermal_meter_init(dm);
  904. }
  905. u8
  906. get_swing_index(
  907. void *dm_void
  908. )
  909. {
  910. struct dm_struct *dm = (struct dm_struct *)dm_void;
  911. u8 i = 0, bb_swing_mask = 0;
  912. u32 bb_swing = 0;
  913. u32 swing_table_size = 0;
  914. u32 *swing_table = 0;
  915. struct rtl8192cd_priv *priv = dm->priv;
  916. #if (RTL8197F_SUPPORT == 1)
  917. if (GET_CHIP_VER(priv) == VERSION_8197F) {
  918. bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
  919. swing_table = ofdm_swing_table_new;
  920. swing_table_size = OFDM_TABLE_SIZE_92D;
  921. bb_swing_mask = 22;
  922. }
  923. #endif
  924. #if (RTL8192F_SUPPORT == 1)
  925. if (GET_CHIP_VER(priv) == VERSION_8192F) {
  926. bb_swing = phy_query_bb_reg(priv, REG_OFDM_0_XA_TX_IQ_IMBALANCE, MASKOFDM_D);
  927. swing_table = ofdm_swing_table_new;
  928. swing_table_size = OFDM_TABLE_SIZE_92D;
  929. bb_swing_mask = 22;
  930. }
  931. #endif
  932. #if (RTL8822B_SUPPORT == 1)
  933. if (GET_CHIP_VER(priv) == VERSION_8822B) {
  934. bb_swing = phy_query_bb_reg(priv, REG_A_TX_SCALE_JAGUAR, 0xFFE00000);
  935. swing_table = tx_scaling_table_jaguar;
  936. swing_table_size = TXSCALE_TABLE_SIZE;
  937. bb_swing_mask = 0;
  938. }
  939. #endif
  940. for (i = 0; i < swing_table_size - 1; i++) {
  941. u32 table_value = swing_table[i] >> bb_swing_mask;
  942. if (bb_swing == table_value)
  943. break;
  944. }
  945. RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "bb_swing=0x%x bbswing_index=%d\n", bb_swing, i);
  946. return i;
  947. }
  948. void
  949. odm_txpowertracking_thermal_meter_init(
  950. void *dm_void
  951. )
  952. {
  953. struct dm_struct *dm = (struct dm_struct *)dm_void;
  954. struct dm_rf_calibration_struct *cali_info = &(dm->rf_calibrate_info);
  955. struct rtl8192cd_priv *priv = dm->priv;
  956. u8 p;
  957. u8 default_swing_index;
  958. #if (RTL8197F_SUPPORT == 1 || RTL8822B_SUPPORT == 1 || RTL8192F_SUPPORT == 1)
  959. if ((GET_CHIP_VER(priv) == VERSION_8197F) || (GET_CHIP_VER(priv) == VERSION_8822B) ||(GET_CHIP_VER(priv) == VERSION_8192F))
  960. default_swing_index = get_swing_index(dm);
  961. #endif
  962. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  963. void *adapter = dm->adapter;
  964. PMGNT_INFO mgnt_info = &adapter->MgntInfo;
  965. HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
  966. mgnt_info->is_txpowertracking = true;
  967. hal_data->tx_powercount = 0;
  968. hal_data->is_txpowertracking_init = false;
  969. if (*(dm->mp_mode) == false)
  970. hal_data->txpowertrack_control = true;
  971. RF_DBG(dm, COMP_POWER_TRACKING, "mgnt_info->is_txpowertracking = %d\n", mgnt_info->is_txpowertracking);
  972. #elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
  973. #ifdef CONFIG_RTL8188E
  974. {
  975. dm->rf_calibrate_info.is_txpowertracking = true;
  976. dm->rf_calibrate_info.tx_powercount = 0;
  977. dm->rf_calibrate_info.is_txpowertracking_init = false;
  978. if (*(dm->mp_mode) == false)
  979. dm->rf_calibrate_info.txpowertrack_control = true;
  980. MSG_8192C("dm txpowertrack_control = %d\n", dm->rf_calibrate_info.txpowertrack_control);
  981. }
  982. #else
  983. {
  984. void *adapter = dm->adapter;
  985. HAL_DATA_TYPE *hal_data = GET_HAL_DATA(((PADAPTER)adapter));
  986. struct dm_priv *pdmpriv = &hal_data->dmpriv;
  987. pdmpriv->is_txpowertracking = true;
  988. pdmpriv->tx_powercount = 0;
  989. pdmpriv->is_txpowertracking_init = false;
  990. if (*(dm->mp_mode) == false) /* for mp driver, turn off txpwrtracking as default */
  991. pdmpriv->txpowertrack_control = true;
  992. MSG_8192C("pdmpriv->txpowertrack_control = %d\n", pdmpriv->txpowertrack_control);
  993. }
  994. #endif/* endif (CONFIG_RTL8188E==1) */
  995. #elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))
  996. #ifdef RTL8188E_SUPPORT
  997. {
  998. dm->rf_calibrate_info.is_txpowertracking = true;
  999. dm->rf_calibrate_info.tx_powercount = 0;
  1000. dm->rf_calibrate_info.is_txpowertracking_init = false;
  1001. dm->rf_calibrate_info.txpowertrack_control = true;
  1002. dm->rf_calibrate_info.tm_trigger = 0;
  1003. }
  1004. #endif
  1005. #endif
  1006. dm->rf_calibrate_info.txpowertrack_control = true;
  1007. dm->rf_calibrate_info.delta_power_index = 0;
  1008. dm->rf_calibrate_info.delta_power_index_last = 0;
  1009. dm->rf_calibrate_info.power_index_offset = 0;
  1010. dm->rf_calibrate_info.thermal_value = 0;
  1011. cali_info->default_ofdm_index = 28;
  1012. #if (RTL8197F_SUPPORT == 1)
  1013. if (GET_CHIP_VER(priv) == VERSION_8197F) {
  1014. cali_info->default_ofdm_index = (default_swing_index >= (OFDM_TABLE_SIZE_92D - 1)) ? 30 : default_swing_index;
  1015. cali_info->default_cck_index = 28;
  1016. }
  1017. #endif
  1018. #if (RTL8192F_SUPPORT == 1)
  1019. if (GET_CHIP_VER(priv) == VERSION_8192F) {
  1020. cali_info->default_ofdm_index = 30;
  1021. cali_info->default_cck_index = 28;
  1022. }
  1023. #endif
  1024. #if (RTL8822B_SUPPORT == 1)
  1025. if (GET_CHIP_VER(priv) == VERSION_8822B) {
  1026. cali_info->default_ofdm_index = (default_swing_index >= (TXSCALE_TABLE_SIZE - 1)) ? 24 : default_swing_index;
  1027. cali_info->default_cck_index = 20;
  1028. }
  1029. #endif
  1030. #if RTL8188E_SUPPORT
  1031. cali_info->default_cck_index = 20; /* -6 dB */
  1032. #elif RTL8192E_SUPPORT
  1033. cali_info->default_cck_index = 8; /* -12 dB */
  1034. #endif
  1035. cali_info->bb_swing_idx_ofdm_base = cali_info->default_ofdm_index;
  1036. cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;
  1037. dm->rf_calibrate_info.CCK_index = cali_info->default_cck_index;
  1038. for (p = 0; p < MAX_RF_PATH; p++) {
  1039. dm->rf_calibrate_info.OFDM_index[p] = cali_info->default_ofdm_index;
  1040. cali_info->bb_swing_idx_ofdm[p] = cali_info->default_ofdm_index;
  1041. cali_info->kfree_offset[p] = 0; /* for 8814 kfree*/
  1042. }
  1043. cali_info->bb_swing_idx_cck = cali_info->default_cck_index;
  1044. RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "cali_info->default_ofdm_index=%d cali_info->default_cck_index=%d\n", cali_info->default_ofdm_index, cali_info->default_cck_index);
  1045. cali_info->tm_trigger = 0;
  1046. }
  1047. void
  1048. odm_txpowertracking_check(
  1049. void *dm_void
  1050. )
  1051. {
  1052. /* */
  1053. /* For AP/ADSL use struct rtl8192cd_priv* */
  1054. /* For CE/NIC use struct void* */
  1055. /* */
  1056. struct dm_struct *dm = (struct dm_struct *)dm_void;
  1057. struct _hal_rf_ *rf = &(dm->rf_table);
  1058. if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
  1059. return;
  1060. /* */
  1061. /* 2011/09/29 MH In HW integration first stage, we provide 4 different handle to operate */
  1062. /* at the same time. In the stage2/3, we need to prive universal interface and merge all */
  1063. /* HW dynamic mechanism. */
  1064. /* */
  1065. switch (dm->support_platform) {
  1066. case ODM_WIN:
  1067. odm_txpowertracking_check_mp(dm);
  1068. break;
  1069. case ODM_CE:
  1070. odm_txpowertracking_check_ce(dm);
  1071. break;
  1072. case ODM_AP:
  1073. odm_txpowertracking_check_ap(dm);
  1074. break;
  1075. }
  1076. }
  1077. void
  1078. odm_txpowertracking_check_ce(
  1079. void *dm_void
  1080. )
  1081. {
  1082. #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
  1083. struct dm_struct *dm = (struct dm_struct *)dm_void;
  1084. void *adapter = dm->adapter;
  1085. struct _hal_rf_ *rf = &(dm->rf_table);
  1086. #if (RTL8188E_SUPPORT == 1)
  1087. /* if(!mgnt_info->is_txpowertracking || (!pdmpriv->txpowertrack_control && pdmpriv->is_ap_kdone)) */
  1088. if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))
  1089. return;
  1090. if (!dm->rf_calibrate_info.tm_trigger) { /* at least delay 1 sec */
  1091. /* hal_data->TxPowerCheckCnt++; */ /* cosa add for debug */
  1092. odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER, RFREGOFFSETMASK, 0x60);
  1093. /* DBG_8192C("Trigger 92C Thermal Meter!!\n"); */
  1094. dm->rf_calibrate_info.tm_trigger = 1;
  1095. return;
  1096. } else {
  1097. /* DBG_8192C("Schedule TxPowerTracking direct call!!\n"); */
  1098. odm_txpowertracking_callback_thermal_meter_8188e(adapter);
  1099. dm->rf_calibrate_info.tm_trigger = 0;
  1100. }
  1101. #endif
  1102. #endif
  1103. }
  1104. void
  1105. odm_txpowertracking_check_mp(
  1106. void *dm_void
  1107. )
  1108. {
  1109. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  1110. struct dm_struct *dm = (struct dm_struct *)dm_void;
  1111. void *adapter = dm->adapter;
  1112. if (odm_check_power_status(adapter) == false)
  1113. return;
  1114. if (!adapter->is_slave_of_dmsp || adapter->dual_mac_smart_concurrent == false)
  1115. odm_txpowertracking_thermal_meter_check(adapter);
  1116. #endif
  1117. }
  1118. void
  1119. odm_txpowertracking_check_ap(
  1120. void *dm_void
  1121. )
  1122. {
  1123. struct dm_struct *dm = (struct dm_struct *)dm_void;
  1124. #if (DM_ODM_SUPPORT_TYPE == ODM_AP)
  1125. struct rtl8192cd_priv *priv = dm->priv;
  1126. #if ((RTL8188E_SUPPORT == 1) || (RTL8192E_SUPPORT == 1) || (RTL8812A_SUPPORT == 1) || (RTL8881A_SUPPORT == 1) || (RTL8814A_SUPPORT == 1) || (RTL8197F_SUPPORT == 1) || (RTL8192F_SUPPORT == 1) || (RTL8198F_SUPPORT == 1))
  1127. if (dm->support_ic_type & (ODM_RTL8188E | ODM_RTL8192E | ODM_RTL8812 | ODM_RTL8881A | ODM_RTL8814A | ODM_RTL8197F | ODM_RTL8822B | ODM_RTL8821C | ODM_RTL8192F | ODM_RTL8198F))
  1128. odm_txpowertracking_callback_thermal_meter(dm);
  1129. else
  1130. #endif
  1131. {
  1132. }
  1133. #endif
  1134. }