Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/halrf/halrf_powertracking_iot.c
1308 views
/******************************************************************************1*2* Copyright(c) 2007 - 2017 Realtek Corporation.3*4* This program is free software; you can redistribute it and/or modify it5* under the terms of version 2 of the GNU General Public License as6* published by the Free Software Foundation.7*8* This program is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for11* more details.12*13* The full GNU General Public License is included in this distribution in the14* file called LICENSE.15*16* Contact Information:17* wlanfae <[email protected]>18* Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,19* Hsinchu 300, Taiwan.20*21* Larry Finger <[email protected]>22*23*****************************************************************************/2425/*============================================================ */26/* include files */27/*============================================================ */28#include "mp_precomp.h"29#include "phydm_precomp.h"3031/* ************************************************************32* Global var33* ************************************************************34*/3536u32 ofdm_swing_table[OFDM_TABLE_SIZE] = {370x7f8001fe, /* 0, +6.0dB */380x788001e2, /* 1, +5.5dB */390x71c001c7, /* 2, +5.0dB*/400x6b8001ae, /* 3, +4.5dB*/410x65400195, /* 4, +4.0dB*/420x5fc0017f, /* 5, +3.5dB*/430x5a400169, /* 6, +3.0dB*/440x55400155, /* 7, +2.5dB*/450x50800142, /* 8, +2.0dB*/460x4c000130, /* 9, +1.5dB*/470x47c0011f, /* 10, +1.0dB*/480x43c0010f, /* 11, +0.5dB*/490x40000100, /* 12, +0dB*/500x3c8000f2, /* 13, -0.5dB*/510x390000e4, /* 14, -1.0dB*/520x35c000d7, /* 15, -1.5dB*/530x32c000cb, /* 16, -2.0dB*/540x300000c0, /* 17, -2.5dB*/550x2d4000b5, /* 18, -3.0dB*/560x2ac000ab, /* 19, -3.5dB*/570x288000a2, /* 20, -4.0dB*/580x26000098, /* 21, -4.5dB*/590x24000090, /* 22, -5.0dB*/600x22000088, /* 23, -5.5dB*/610x20000080, /* 24, -6.0dB*/620x1e400079, /* 25, -6.5dB*/630x1c800072, /* 26, -7.0dB*/640x1b00006c, /* 27. -7.5dB*/650x19800066, /* 28, -8.0dB*/660x18000060, /* 29, -8.5dB*/670x16c0005b, /* 30, -9.0dB*/680x15800056, /* 31, -9.5dB*/690x14400051, /* 32, -10.0dB*/700x1300004c, /* 33, -10.5dB*/710x12000048, /* 34, -11.0dB*/720x11000044, /* 35, -11.5dB*/730x10000040, /* 36, -12.0dB*/74};7576u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8] = {77{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, /* 0, +0dB */78{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 1, -0.5dB */79{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 2, -1.0dB*/80{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 3, -1.5dB*/81{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 4, -2.0dB */82{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 5, -2.5dB*/83{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 6, -3.0dB*/84{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 7, -3.5dB*/85{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 8, -4.0dB */86{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 9, -4.5dB*/87{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 10, -5.0dB */88{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 11, -5.5dB*/89{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /* 12, -6.0dB <== default */90{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 13, -6.5dB*/91{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 14, -7.0dB */92{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 15, -7.5dB*/93{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */94{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 17, -8.5dB*/95{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 18, -9.0dB */96{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 19, -9.5dB*/97{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 20, -10.0dB*/98{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 21, -10.5dB*/99{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 22, -11.0dB*/100{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 23, -11.5dB*/101{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 24, -12.0dB*/102{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 25, -12.5dB*/103{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 26, -13.0dB*/104{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 27, -13.5dB*/105{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 28, -14.0dB*/106{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 29, -14.5dB*/107{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 30, -15.0dB*/108{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 31, -15.5dB*/109{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} /* 32, -16.0dB*/110};111112u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8] = {113{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, /* 0, +0dB */114{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 1, -0.5dB */115{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 2, -1.0dB */116{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 3, -1.5dB*/117{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 4, -2.0dB */118{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 5, -2.5dB*/119{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 6, -3.0dB */120{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 7, -3.5dB */121{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 8, -4.0dB */122{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 9, -4.5dB*/123{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 10, -5.0dB */124{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 11, -5.5dB*/125{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 12, -6.0dB <== default*/126{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 13, -6.5dB */127{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 14, -7.0dB */128{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 15, -7.5dB*/129{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */130{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 17, -8.5dB*/131{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 18, -9.0dB */132{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 19, -9.5dB*/133{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 20, -10.0dB*/134{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 21, -10.5dB*/135{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 22, -11.0dB*/136{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 23, -11.5dB*/137{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 24, -12.0dB*/138{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 25, -12.5dB*/139{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 26, -13.0dB*/140{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 27, -13.5dB*/141{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 28, -14.0dB*/142{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 29, -14.5dB*/143{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 30, -15.0dB*/144{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 31, -15.5dB*/145{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB*/146};147148u32 ofdm_swing_table_new[OFDM_TABLE_SIZE] = {1490x0b40002d, /* 0, -15.0dB */1500x0c000030, /* 1, -14.5dB*/1510x0cc00033, /* 2, -14.0dB*/1520x0d800036, /* 3, -13.5dB*/1530x0e400039, /* 4, -13.0dB */1540x0f00003c, /* 5, -12.5dB*/1550x10000040, /* 6, -12.0dB*/1560x11000044, /* 7, -11.5dB*/1570x12000048, /* 8, -11.0dB*/1580x1300004c, /* 9, -10.5dB*/1590x14400051, /* 10, -10.0dB*/1600x15800056, /* 11, -9.5dB*/1610x16c0005b, /* 12, -9.0dB*/1620x18000060, /* 13, -8.5dB*/1630x19800066, /* 14, -8.0dB*/1640x1b00006c, /* 15, -7.5dB*/1650x1c800072, /* 16, -7.0dB*/1660x1e400079, /* 17, -6.5dB*/1670x20000080, /* 18, -6.0dB*/1680x22000088, /* 19, -5.5dB*/1690x24000090, /* 20, -5.0dB*/1700x26000098, /* 21, -4.5dB*/1710x288000a2, /* 22, -4.0dB*/1720x2ac000ab, /* 23, -3.5dB*/1730x2d4000b5, /* 24, -3.0dB*/1740x300000c0, /* 25, -2.5dB*/1750x32c000cb, /* 26, -2.0dB*/1760x35c000d7, /* 27, -1.5dB*/1770x390000e4, /* 28, -1.0dB*/1780x3c8000f2, /* 29, -0.5dB*/1790x40000100, /* 30, +0dB*/1800x43c0010f, /* 31, +0.5dB*/1810x47c0011f, /* 32, +1.0dB*/1820x4c000130, /* 33, +1.5dB*/1830x50800142, /* 34, +2.0dB*/1840x55400155, /* 35, +2.5dB*/1850x5a400169, /* 36, +3.0dB*/1860x5fc0017f, /* 37, +3.5dB*/1870x65400195, /* 38, +4.0dB*/1880x6b8001ae, /* 39, +4.5dB*/1890x71c001c7, /* 40, +5.0dB*/1900x788001e2, /* 41, +5.5dB*/1910x7f8001fe /* 42, +6.0dB*/192};193194u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16] = {195{0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/196{0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/197{0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/198{0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/199{0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/200{0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/201{0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/202{0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/203{0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/204{0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/205{0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/206{0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/207{0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/208{0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/209{0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/210{0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/211{0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/212{0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/213{0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/214{0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/215{0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/216};217218u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16] = {219{0x44, 0x42, 0x3C, 0x33, 0x28, 0x1C, 0x13, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/220{0x48, 0x46, 0x3F, 0x36, 0x2A, 0x1E, 0x14, 0x0B, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/221{0x4D, 0x4A, 0x43, 0x39, 0x2C, 0x20, 0x15, 0x0C, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/222{0x51, 0x4F, 0x47, 0x3C, 0x2F, 0x22, 0x16, 0x0D, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/223{0x56, 0x53, 0x4B, 0x40, 0x32, 0x24, 0x17, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/224{0x5B, 0x58, 0x50, 0x43, 0x35, 0x26, 0x19, 0x0E, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/225{0x60, 0x5D, 0x54, 0x47, 0x38, 0x28, 0x1A, 0x0F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/226{0x66, 0x63, 0x59, 0x4C, 0x3B, 0x2B, 0x1C, 0x10, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/227{0x6C, 0x69, 0x5F, 0x50, 0x3F, 0x2D, 0x1E, 0x11, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/228{0x73, 0x6F, 0x64, 0x55, 0x42, 0x30, 0x1F, 0x12, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/229{0x79, 0x76, 0x6A, 0x5A, 0x46, 0x33, 0x21, 0x13, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/230{0x81, 0x7C, 0x71, 0x5F, 0x4A, 0x36, 0x23, 0x14, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/231{0x88, 0x84, 0x77, 0x65, 0x4F, 0x39, 0x25, 0x15, 0x0A, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/232{0x90, 0x8C, 0x7E, 0x6B, 0x54, 0x3C, 0x27, 0x17, 0x0B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/233{0x99, 0x94, 0x86, 0x71, 0x58, 0x40, 0x2A, 0x18, 0x0B, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/234{0xA2, 0x9D, 0x8E, 0x78, 0x5E, 0x43, 0x2C, 0x19, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/235{0xAC, 0xA6, 0x96, 0x7F, 0x63, 0x47, 0x2F, 0x1B, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/236{0xB6, 0xB0, 0x9F, 0x87, 0x69, 0x4C, 0x32, 0x1D, 0x0D, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/237{0xC1, 0xBA, 0xA8, 0x8F, 0x6F, 0x50, 0x35, 0x1E, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/238{0xCC, 0xC5, 0xB2, 0x97, 0x76, 0x55, 0x38, 0x20, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/239{0xD8, 0xD1, 0xBD, 0xA0, 0x7D, 0x5A, 0x3B, 0x22, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/240};241242u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16] = {243{0x44, 0x42, 0x3C, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-16dB*/244{0x48, 0x46, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15.5dB*/245{0x4D, 0x4A, 0x43, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-15dB*/246{0x51, 0x4F, 0x47, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14.5dB*/247{0x56, 0x53, 0x4B, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-14dB*/248{0x5B, 0x58, 0x50, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13.5dB*/249{0x60, 0x5D, 0x54, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-13dB*/250{0x66, 0x63, 0x59, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12.5dB*/251{0x6C, 0x69, 0x5F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-12dB*/252{0x73, 0x6F, 0x64, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11.5dB*/253{0x79, 0x76, 0x6A, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-11dB*/254{0x81, 0x7C, 0x71, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10.5dB*/255{0x88, 0x84, 0x77, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-10dB*/256{0x90, 0x8C, 0x7E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9.5dB*/257{0x99, 0x94, 0x86, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-9dB*/258{0xA2, 0x9D, 0x8E, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8.5dB*/259{0xAC, 0xA6, 0x96, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-8dB*/260{0xB6, 0xB0, 0x9F, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7.5dB*/261{0xC1, 0xBA, 0xA8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-7dB*/262{0xCC, 0xC5, 0xB2, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*-6.5dB*/263{0xD8, 0xD1, 0xBD, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} /*-6dB*/264};265266u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8] = {267{0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}, /* 0, -16.0dB*/268{0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 1, -15.5dB*/269{0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 2, -15.0dB*/270{0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 3, -14.5dB*/271{0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 4, -14.0dB*/272{0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 5, -13.5dB*/273{0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 6, -13.0dB*/274{0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 7, -12.5dB*/275{0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 8, -12.0dB*/276{0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 9, -11.5dB*/277{0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 10, -11.0dB*/278{0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 11, -10.5dB*/279{0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 12, -10.0dB*/280{0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 13, -9.5dB*/281{0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 14, -9.0dB */282{0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 15, -8.5dB*/283{0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */284{0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 17, -7.5dB*/285{0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 18, -7.0dB */286{0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 19, -6.5dB*/287{0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /*20, -6.0dB */288{0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 21, -5.5dB*/289{0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 22, -5.0dB */290{0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 23, -4.5dB*/291{0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 24, -4.0dB */292{0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 25, -3.5dB*/293{0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 26, -3.0dB*/294{0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 27, -2.5dB*/295{0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 28, -2.0dB */296{0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 29, -1.5dB*/297{0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 30, -1.0dB*/298{0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 31, -0.5dB*/299{0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04} /* 32, +0dB*/300};301302u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8] = {303{0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}, /* 0, -16.0dB*/304{0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 1, -15.5dB*/305{0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 2, -15.0dB*/306{0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 3, -14.5dB*/307{0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 4, -14.0dB*/308{0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /*5, -13.5dB*/309{0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 6, -13.0dB*/310{0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 7, -12.5dB*/311{0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 8, -12.0dB*/312{0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 9, -11.5dB*/313{0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 10, -11.0dB*/314{0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /*11, -10.5dB*/315{0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 12, -10.0dB*/316{0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 13, -9.5dB*/317{0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /*14, -9.0dB */318{0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 15, -8.5dB*/319{0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */320{0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 17, -7.5dB*/321{0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 18, -7.0dB */322{0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 19, -6.5dB */323{0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 20, -6.0dB */324{0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 21, -5.5dB*/325{0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 22, -5.0dB */326{0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /*23, -4.5dB*/327{0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 24, -4.0dB */328{0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 25, -3.5dB */329{0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 26, -3.0dB */330{0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /*27, -2.5dB*/331{0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 28, -2.0dB */332{0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /*29, -1.5dB*/333{0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 30, -1.0dB */334{0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 31, -0.5dB */335{0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00} /* 32, +0dB */336};337338u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D] = {3390x0CD, /*0 , -20dB*/3400x0D9,3410x0E6,3420x0F3,3430x102,3440x111,3450x121,3460x132,3470x144,3480x158,3490x16C,3500x182,3510x198,3520x1B1,3530x1CA,3540x1E5,3550x202,3560x221,3570x241,3580x263,3590x287,3600x2AE,3610x2D6,3620x301,3630x32F,3640x35F,3650x392,3660x3C9,3670x402,3680x43F,3690x47F,3700x4C3,3710x50C,3720x558,3730x5A9,3740x5FF,3750x65A,3760x6BA,3770x720,3780x78C,3790x7FF,380};381382/* JJ ADD 20161014 */383u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B] = {3840x0CD, /*0 , -20dB*/3850x0D9,3860x0E6,3870x0F3,3880x102,3890x111,3900x121,3910x132,3920x144,3930x158,3940x16C,3950x182,3960x198,3970x1B1,3980x1CA,3990x1E5,4000x202,4010x221,4020x241,4030x263,4040x287,4050x2AE,4060x2D6,4070x301,4080x32F,4090x35F,4100x392,4110x3C9,4120x402,4130x43F,4140x47F,4150x4C3,4160x50C,4170x558,4180x5A9,4190x5FF,4200x65A,4210x6BA,4220x720,4230x78C,4240x7FF,425};426427/* Winnita ADD 20171116 PathA 0xAB4[10:0],PathB 0xAB4[21:11]*/428u32 cck_swing_table_ch1_ch14_8192f[CCK_TABLE_SIZE_8192F] = {4290x0CD, /*0 , -20dB*/4300x0D9,4310x0E6,4320x0F3,4330x102,4340x111,4350x121,4360x132,4370x144,4380x158,4390x16C,4400x182,4410x198,4420x1B1,4430x1CA,4440x1E5,4450x202,4460x221,4470x241,4480x263, /*19*/4490x287, /*20*/4500x2AE, /*21*/4510x2D6, /*22*/4520x301, /*23*/4530x32F, /*24*/4540x35F, /*25*/4550x392, /*26*/4560x3C9, /*27*/4570x402, /*28*/4580x43F, /*29*/4590x47F, /*30*/4600x4C3, /*31*/4610x50C, /*32*/4620x558, /*33*/4630x5A9, /*34*/4640x5FF, /*35*/4650x65A, /*36*/4660x6BA,4670x720,4680x78C,4690x7FF,470};471472/* Winnita ADD 201805 PathA 0xAB4[10:0]*/473u32 cck_swing_table_ch1_ch14_8721d[CCK_TABLE_SIZE_8721D] = {4740x0CD, /*0 , -20dB*/4750x0D9,4760x0E6,4770x0F3,4780x102,4790x111,4800x121,4810x132,4820x144,4830x158,4840x16C,4850x182,4860x198,4870x1B1,4880x1CA,4890x1E5,4900x202,4910x221,4920x241,4930x263, /*19*/4940x287, /*20*/4950x2AE, /*21*/4960x2D6, /*22*/4970x301, /*23*/4980x32F, /*24*/4990x35F, /*25*/5000x392, /*26*/5010x3C9, /*27*/5020x402, /*28*/5030x43F, /*29*/5040x47F, /*30*/5050x4C3, /*31*/5060x50C, /*32*/5070x558, /*33*/5080x5A9, /*34*/5090x5FF, /*35*/5100x65A, /*36*/5110x6BA,5120x720,5130x78C,5140x7FF,515};516517u32 cck_swing_table_ch1_ch14_8710c[CCK_TABLE_SIZE_8710C] = {5180x0CD, /*0 , -20dB*/5190x0D9,5200x0E6,5210x0F3,5220x102,5230x111,5240x121,5250x132,5260x144,5270x158,5280x16C,5290x182,5300x198,5310x1B1,5320x1CA,5330x1E5,5340x202,5350x221,5360x241,5370x263,5380x287,5390x2AE,5400x2D6,5410x301,5420x32F,5430x35F,5440x392,5450x3C9,5460x402,5470x43F,5480x47F,5490x4C3,5500x50C,5510x558,5520x5A9,5530x5FF,5540x65A,5550x6BA,5560x720,5570x78C,5580x7FF,559};560561u32 cck_swing_table_03db_ch1_ch14_8710c[CCK_03DB_TABLE_SIZE_8710C] = {5620x143, /*0 , -4dB*/5630x14C, /*1 , -3.75dB*/5640x156, /*2 , -3.5dB*/5650x160,5660x16A,5670x175,5680x17F,5690x18B,5700x196,5710x1A2,5720x1AE,5730x1BB,5740x1C8,5750x1D5,5760x1E3,5770x1F1,5780x200,5790x20F,5800x21E,5810x22F,5820x23F,5830x250,5840x261,5850x273,5860x285,5870x298,5880x2AB,5890x2BF,5900x2D6,5910x2E9,5920x2FF,5930x315,5940x32C,5950x344,5960x35C,5970x375,5980x390,5990x3AA,6000x3C5,6010x3E1,6020x402, /*40 , +6dB default*/6030x41C,6040x43B,6050x45A,6060x47C,6070x49C,6080x4BF,6090x4E2,6100x510,6110x52C,6120x553,6130x57B,6140x5A5,6150x5CE,6160x5F9,6170x626,6180x655,6190x683,6200x6B5,6210x6E6,6220x71E,6230x74E,6240x786,6250x7BD,6260x7F9,6270x832,6280x871,6290x8AF,6300x8F2,6310x932,6320x977,6330x9BE,6340xA0E,6350xA52,6360xAA1,6370xAEE,6380xB54,6390xB95,6400xBEB,6410xC43,6420xCA3 /*80 , +16dB*/643};644645u32 ofdm_swing_table_03DB_8710c[OFDM_03DB_TABLE_SIZE_8710C] = {6460xE4, /*0 , -7dB*/6470xEB, /*1 , -6.75dB*/6480xF2, /*2 , -6.5dB*/6490xF9,6500x100,6510x108,6520x110,6530x118,6540x11F,6550x128,6560x131,6570x13A,6580x143,6590x14C,6600x156,6610x160,6620x16A,6630x175,6640x180,6650x18B,6660x196,6670x1A2,6680x1AE,6690x1BB,6700x1C8,6710x1D5,6720x1E3,6730x1F1,6740x200,6750x20F,6760x21F,6770x22F,6780x23F,6790x250,6800x261,6810x273,6820x286,6830x298,6840x2AB,6850x2BF,6860x2D6, /*40 , +3dB default*/6870x2E9,6880x2FF,6890x315,6900x32C,6910x344,6920x35C,6930x375,6940x390,6950x3AA,6960x3C5,6970x3E1,6980x3FF,6990x41C,7000x43B,7010x45A,7020x47B,7030x49C,7040x4BF,7050x4E2,7060x507,7070x52C,7080x553,7090x57B,7100x5A4,7110x5CE,7120x5F9,7130x626,7140x654,7150x683,7160x6B4,7170x6E6,7180x71B,7190x74E,7200x785,7210x7BD,7220x7F7,7230x832,7240x870,7250x8AF,7260x8F0 /*80 , +13dB*/727};728729730731u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE] = {7320x081, /* 0, -12.0dB*/7330x088, /* 1, -11.5dB*/7340x090, /* 2, -11.0dB*/7350x099, /* 3, -10.5dB*/7360x0A2, /* 4, -10.0dB*/7370x0AC, /* 5, -9.5dB*/7380x0B6, /* 6, -9.0dB*/7390x0C0, /*7, -8.5dB*/7400x0CC, /* 8, -8.0dB*/7410x0D8, /* 9, -7.5dB*/7420x0E5, /* 10, -7.0dB*/7430x0F2, /* 11, -6.5dB*/7440x101, /* 12, -6.0dB*/7450x110, /* 13, -5.5dB*/7460x120, /* 14, -5.0dB*/7470x131, /* 15, -4.5dB*/7480x143, /* 16, -4.0dB*/7490x156, /* 17, -3.5dB*/7500x16A, /* 18, -3.0dB*/7510x180, /* 19, -2.5dB*/7520x197, /* 20, -2.0dB*/7530x1AF, /* 21, -1.5dB*/7540x1C8, /* 22, -1.0dB*/7550x1E3, /* 23, -0.5dB*/7560x200, /* 24, +0 dB*/7570x21E, /* 25, +0.5dB*/7580x23E, /* 26, +1.0dB*/7590x261, /* 27, +1.5dB*/7600x285,/* 28, +2.0dB*/7610x2AB, /* 29, +2.5dB*/7620x2D3, /*30, +3.0dB*/7630x2FE, /* 31, +3.5dB*/7640x32B, /* 32, +4.0dB*/7650x35C, /* 33, +4.5dB*/7660x38E, /* 34, +5.0dB*/7670x3C4, /* 35, +5.5dB*/7680x3FE /* 36, +6.0dB */769};770771void772odm_txpowertracking_init(773void *dm_void774)775{776struct dm_struct *dm = (struct dm_struct *)dm_void;777778odm_txpowertracking_thermal_meter_init(dm);779}780781u8782get_swing_index(783void *dm_void784)785{786struct dm_struct *dm = (struct dm_struct *)dm_void;787788u8 i = 0;789u32 bb_swing;790u32 swing_table_size;791u32 *swing_table;792u32 table_value;793794if (dm->support_ic_type == ODM_RTL8710C) {795bb_swing = odm_get_bb_reg(dm, R_0xcc8, 0x000007ff);796797for (i = 0; i < OFDM_03DB_TABLE_SIZE_8710C; i++) {798if (bb_swing == ofdm_swing_table_03DB_8710c[i])799break;800}801}802803if (dm->support_ic_type == ODM_RTL8195B) {804bb_swing = odm_get_bb_reg(dm, R_0xc1c, 0xFFE00000);805swing_table = tx_scaling_table_jaguar;806swing_table_size = TXSCALE_TABLE_SIZE;807808for (i = 0; i < swing_table_size; i++) {809table_value = swing_table[i];810811table_value = table_value;812if (bb_swing == table_value)813break;814}815}816817return i;818}819820u8821get_cck_swing_index(822void *dm_void823)824{825struct dm_struct *dm = (struct dm_struct *)dm_void;826827u8 i = 0;828u32 bb_cck_swing;829830if (dm->support_ic_type == ODM_RTL8188E || dm->support_ic_type == ODM_RTL8723B ||831dm->support_ic_type == ODM_RTL8192E) {832bb_cck_swing = odm_read_1byte(dm, 0xa22);833834for (i = 0; i < CCK_TABLE_SIZE; i++) {835if (bb_cck_swing == cck_swing_table_ch1_ch13_new[i][0])836break;837}838} else if (dm->support_ic_type == ODM_RTL8703B) {839bb_cck_swing = odm_read_1byte(dm, 0xa22);840841for (i = 0; i < CCK_TABLE_SIZE_88F; i++) {842if (bb_cck_swing == cck_swing_table_ch1_ch14_88f[i][0])843break;844}845} else if (dm->support_ic_type == ODM_RTL8710C) {846bb_cck_swing = odm_get_bb_reg(dm, R_0xab4, 0x7ff);847848RF_DBG(dm, DBG_RF_TX_PWR_TRACK,849"bb_cck_swing = 0x%x\n", bb_cck_swing);850851for (i = 0; i < CCK_03DB_TABLE_SIZE_8710C; i++) {852if (bb_cck_swing == cck_swing_table_03db_ch1_ch14_8710c[i])853break;854}855}856857return i;858}859860void861odm_txpowertracking_thermal_meter_init(862void *dm_void863)864{865struct dm_struct *dm = (struct dm_struct *)dm_void;866u8 default_swing_index;867u8 p = 0;868struct dm_rf_calibration_struct *cali_info = &dm->rf_calibrate_info;869struct _hal_rf_ *rf = &dm->rf_table;870871if (!(*dm->mp_mode))872cali_info->txpowertrack_control = true;873else874cali_info->txpowertrack_control = false;875876RF_DBG(dm, DBG_RF_TX_PWR_TRACK, "dm txpowertrack_control = %d\n", cali_info->txpowertrack_control);877878/* dm->rf_calibrate_info.txpowertrack_control = true; */879cali_info->thermal_value = rf->eeprom_thermal;880cali_info->thermal_value_iqk = rf->eeprom_thermal;881cali_info->thermal_value_lck = rf->eeprom_thermal;882883if (!cali_info->default_bb_swing_index_flag) {884if (dm->support_ic_type == ODM_RTL8195B) {885default_swing_index = get_swing_index(dm);886cali_info->default_ofdm_index = (default_swing_index >= TXSCALE_TABLE_SIZE) ? 24 : default_swing_index;887cali_info->default_cck_index = 24;888} else if (dm->support_ic_type == ODM_RTL8721D) {889cali_info->default_ofdm_index = 28; /*OFDM: -1dB*/890cali_info->default_cck_index = 28; /*CCK: -6dB*/891} else if (dm->support_ic_type == ODM_RTL8710C) {892cali_info->default_ofdm_index = get_swing_index(dm);893cali_info->default_cck_index = get_cck_swing_index(dm);894}895cali_info->default_bb_swing_index_flag = true;896}897898cali_info->bb_swing_idx_cck_base = cali_info->default_cck_index;899cali_info->CCK_index = cali_info->default_cck_index;900901for (p = RF_PATH_A; p < MAX_RF_PATH; ++p) {902cali_info->bb_swing_idx_ofdm_base[p] = cali_info->default_ofdm_index;903cali_info->OFDM_index[p] = cali_info->default_ofdm_index;904cali_info->delta_power_index[p] = 0;905cali_info->delta_power_index_last[p] = 0;906cali_info->power_index_offset[p] = 0;907}908cali_info->modify_tx_agc_value_ofdm = 0;909cali_info->modify_tx_agc_value_cck = 0;910cali_info->tm_trigger = 0;911}912913void914odm_txpowertracking_check(915void *dm_void916)917{918struct dm_struct *dm = (struct dm_struct *)dm_void;919920odm_txpowertracking_check_iot(dm);921}922923void924odm_txpowertracking_check_iot(925void *dm_void926)927{928struct dm_struct *dm = (struct dm_struct *)dm_void;929struct _hal_rf_ *rf = &dm->rf_table;930931if (!(rf->rf_supportability & HAL_RF_TX_PWR_TRACK))932return;933934if (!dm->rf_calibrate_info.tm_trigger) {935if (dm->support_ic_type == ODM_RTL8195B)936odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW, (BIT(17) | BIT(16)), 0x03);937else if (dm->support_ic_type == ODM_RTL8721D ||938dm->support_ic_type == ODM_RTL8710C)939odm_set_rf_reg(dm, RF_PATH_A, RF_T_METER_NEW,940(BIT(12) | BIT(11)), 0x03);941942dm->rf_calibrate_info.tm_trigger = 1;943return;944}945odm_txpowertracking_callback_thermal_meter(dm);946dm->rf_calibrate_info.tm_trigger = 0;947}948949void950odm_txpowertracking_check_mp(951void *dm_void952)953{954#if (DM_ODM_SUPPORT_TYPE == ODM_WIN)955struct dm_struct *dm = (struct dm_struct *)dm_void;956void *adapter = dm->adapter;957958if (odm_check_power_status(adapter) == false) {959RT_TRACE(COMP_POWER_TRACKING, DBG_LOUD, ("check_pow_status, return false\n"));960return;961}962963odm_txpowertracking_thermal_meter_check(adapter);964#endif965}966967void968odm_txpowertracking_check_ap(969void *dm_void970)971{972#if (DM_ODM_SUPPORT_TYPE == ODM_AP)973struct dm_struct *dm = (struct dm_struct *)dm_void;974struct rtl8192cd_priv *priv = dm->priv;975976return;977978#endif979}980981982