1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2007 - 2017 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun * The full GNU General Public License is included in this distribution in the 15*4882a593Smuzhiyun * file called LICENSE. 16*4882a593Smuzhiyun * 17*4882a593Smuzhiyun * Contact Information: 18*4882a593Smuzhiyun * wlanfae <wlanfae@realtek.com> 19*4882a593Smuzhiyun * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 20*4882a593Smuzhiyun * Hsinchu 300, Taiwan. 21*4882a593Smuzhiyun * 22*4882a593Smuzhiyun * Larry Finger <Larry.Finger@lwfinger.net> 23*4882a593Smuzhiyun * 24*4882a593Smuzhiyun *****************************************************************************/ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #ifndef __HALRF_H__ 27*4882a593Smuzhiyun #define __HALRF_H__ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /*@============================================================*/ 30*4882a593Smuzhiyun /*@include files*/ 31*4882a593Smuzhiyun /*@============================================================*/ 32*4882a593Smuzhiyun #include "halrf/halrf_psd.h" 33*4882a593Smuzhiyun #if (RTL8822B_SUPPORT == 1) 34*4882a593Smuzhiyun #include "halrf/rtl8822b/halrf_rfk_init_8822b.h" 35*4882a593Smuzhiyun #endif 36*4882a593Smuzhiyun #if (RTL8822C_SUPPORT == 1) 37*4882a593Smuzhiyun #include "halrf/rtl8822c/halrf_rfk_init_8822c.h" 38*4882a593Smuzhiyun #include "halrf/rtl8822c/halrf_iqk_8822c.h" 39*4882a593Smuzhiyun #include "halrf/rtl8822c/halrf_tssi_8822c.h" 40*4882a593Smuzhiyun #include "halrf/rtl8822c/halrf_dpk_8822c.h" 41*4882a593Smuzhiyun #include "halrf/rtl8822c/halrf_txgapk_8822c.h" 42*4882a593Smuzhiyun #endif 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE & ODM_AP) 45*4882a593Smuzhiyun #if (RTL8197G_SUPPORT == 1) 46*4882a593Smuzhiyun #include "halrf/rtl8197g/halrf_rfk_init_8197g.h" 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun #if (RTL8198F_SUPPORT == 1) 49*4882a593Smuzhiyun #include "halrf/rtl8198f/halrf_rfk_init_8198f.h" 50*4882a593Smuzhiyun #endif 51*4882a593Smuzhiyun #if (RTL8812F_SUPPORT == 1) 52*4882a593Smuzhiyun #include "halrf/rtl8812f/halrf_rfk_init_8812f.h" 53*4882a593Smuzhiyun #endif 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun #endif 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #if (RTL8814B_SUPPORT == 1) 58*4882a593Smuzhiyun #include "halrf/rtl8814b/halrf_rfk_init_8814b.h" 59*4882a593Smuzhiyun #include "halrf/rtl8814b/halrf_iqk_8814b.h" 60*4882a593Smuzhiyun #include "halrf/rtl8814b/halrf_dpk_8814b.h" 61*4882a593Smuzhiyun #include "halrf/rtl8814b/halrf_txgapk_8814b.h" 62*4882a593Smuzhiyun #endif 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #if (RTL8814C_SUPPORT == 1) 65*4882a593Smuzhiyun #include "halrf/rtl8814c/halrf_rfk_init_8814c.h" 66*4882a593Smuzhiyun #include "halrf/rtl8814c/halrf_iqk_8814c.h" 67*4882a593Smuzhiyun #include "halrf/rtl8814c/halrf_dpk_8814c.h" 68*4882a593Smuzhiyun #include "halrf/rtl8814c/halrf_txgapk_8814c.h" 69*4882a593Smuzhiyun #endif 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /*@============================================================*/ 73*4882a593Smuzhiyun /*@Definition */ 74*4882a593Smuzhiyun /*@============================================================*/ 75*4882a593Smuzhiyun /*IQK version*/ 76*4882a593Smuzhiyun #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN)) 77*4882a593Smuzhiyun #define IQK_VER_8188E "0x14" 78*4882a593Smuzhiyun #define IQK_VER_8192E "0x01" 79*4882a593Smuzhiyun #define IQK_VER_8192F "0x01" 80*4882a593Smuzhiyun #define IQK_VER_8723B "0x1e" 81*4882a593Smuzhiyun #define IQK_VER_8812A "0x02" 82*4882a593Smuzhiyun #define IQK_VER_8821A "0x02" 83*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE & (ODM_CE)) 84*4882a593Smuzhiyun #define IQK_VER_8188E "0x01" 85*4882a593Smuzhiyun #define IQK_VER_8192E "0x01" 86*4882a593Smuzhiyun #define IQK_VER_8192F "0x01" 87*4882a593Smuzhiyun #define IQK_VER_8723B "0x1f" 88*4882a593Smuzhiyun #define IQK_VER_8812A "0x01" 89*4882a593Smuzhiyun #define IQK_VER_8821A "0x01" 90*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE & (ODM_AP)) 91*4882a593Smuzhiyun #define IQK_VER_8188E "0x01" 92*4882a593Smuzhiyun #define IQK_VER_8192E "0x01" 93*4882a593Smuzhiyun #define IQK_VER_8192F "0x01" 94*4882a593Smuzhiyun #define IQK_VER_8723B "0x1e" 95*4882a593Smuzhiyun #define IQK_VER_8812A "0x01" 96*4882a593Smuzhiyun #define IQK_VER_8821A "0x01" 97*4882a593Smuzhiyun #elif (DM_ODM_SUPPORT_TYPE & (ODM_IOT)) 98*4882a593Smuzhiyun #define IQK_VER_8188E "0x01" 99*4882a593Smuzhiyun #define IQK_VER_8192E "0x01" 100*4882a593Smuzhiyun #define IQK_VER_8192F "0x01" 101*4882a593Smuzhiyun #define IQK_VER_8723B "0x1e" 102*4882a593Smuzhiyun #define IQK_VER_8812A "0x01" 103*4882a593Smuzhiyun #define IQK_VER_8821A "0x01" 104*4882a593Smuzhiyun #endif 105*4882a593Smuzhiyun #define IQK_VER_8814A "0x0f" 106*4882a593Smuzhiyun #define IQK_VER_8188F "0x01" 107*4882a593Smuzhiyun #define IQK_VER_8197F "0x1d" 108*4882a593Smuzhiyun #define IQK_VER_8703B "0x05" 109*4882a593Smuzhiyun #define IQK_VER_8710B "0x01" 110*4882a593Smuzhiyun #define IQK_VER_8723D "0x02" 111*4882a593Smuzhiyun #define IQK_VER_8822B "0x32" 112*4882a593Smuzhiyun #define IQK_VER_8822C "0x14" 113*4882a593Smuzhiyun #define IQK_VER_8821C "0x23" 114*4882a593Smuzhiyun #define IQK_VER_8198F "0x0b" 115*4882a593Smuzhiyun #define IQK_VER_8814B "0x15" 116*4882a593Smuzhiyun #define IQK_VER_8812F "0x0c" 117*4882a593Smuzhiyun #define IQK_VER_8710C "0x0a" 118*4882a593Smuzhiyun #define IQK_VER_8197G "0x03" 119*4882a593Smuzhiyun #define IQK_VER_8723F "0x00" 120*4882a593Smuzhiyun #define IQK_VER_8814C "0x00" 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /*LCK version*/ 123*4882a593Smuzhiyun #define LCK_VER_8188E "0x02" 124*4882a593Smuzhiyun #define LCK_VER_8192E "0x02" 125*4882a593Smuzhiyun #define LCK_VER_8192F "0x01" 126*4882a593Smuzhiyun #define LCK_VER_8723B "0x02" 127*4882a593Smuzhiyun #define LCK_VER_8812A "0x01" 128*4882a593Smuzhiyun #define LCK_VER_8821A "0x01" 129*4882a593Smuzhiyun #define LCK_VER_8814A "0x01" 130*4882a593Smuzhiyun #define LCK_VER_8188F "0x01" 131*4882a593Smuzhiyun #define LCK_VER_8197F "0x01" 132*4882a593Smuzhiyun #define LCK_VER_8703B "0x01" 133*4882a593Smuzhiyun #define LCK_VER_8710B "0x01" 134*4882a593Smuzhiyun #define LCK_VER_8723D "0x01" 135*4882a593Smuzhiyun #define LCK_VER_8822B "0x02" 136*4882a593Smuzhiyun #define LCK_VER_8822C "0x00" 137*4882a593Smuzhiyun #define LCK_VER_8821C "0x03" 138*4882a593Smuzhiyun #define LCK_VER_8814B "0x02" 139*4882a593Smuzhiyun #define LCK_VER_8195B "0x02" 140*4882a593Smuzhiyun #define LCK_VER_8710C "0x02" 141*4882a593Smuzhiyun #define LCK_VER_8197G "0x01" 142*4882a593Smuzhiyun #define LCK_VER_8198F "0x01" 143*4882a593Smuzhiyun #define LCK_VER_8814C "0x00" 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun /*power tracking version*/ 146*4882a593Smuzhiyun #define PWRTRK_VER_8188E "0x01" 147*4882a593Smuzhiyun #define PWRTRK_VER_8192E "0x01" 148*4882a593Smuzhiyun #define PWRTRK_VER_8192F "0x01" 149*4882a593Smuzhiyun #define PWRTRK_VER_8723B "0x01" 150*4882a593Smuzhiyun #define PWRTRK_VER_8812A "0x01" 151*4882a593Smuzhiyun #define PWRTRK_VER_8821A "0x01" 152*4882a593Smuzhiyun #define PWRTRK_VER_8814A "0x01" 153*4882a593Smuzhiyun #define PWRTRK_VER_8188F "0x01" 154*4882a593Smuzhiyun #define PWRTRK_VER_8197F "0x01" 155*4882a593Smuzhiyun #define PWRTRK_VER_8703B "0x01" 156*4882a593Smuzhiyun #define PWRTRK_VER_8710B "0x01" 157*4882a593Smuzhiyun #define PWRTRK_VER_8723D "0x01" 158*4882a593Smuzhiyun #define PWRTRK_VER_8822B "0x01" 159*4882a593Smuzhiyun #define PWRTRK_VER_8822C "0x00" 160*4882a593Smuzhiyun #define PWRTRK_VER_8821C "0x01" 161*4882a593Smuzhiyun #define PWRTRK_VER_8814B "0x00" 162*4882a593Smuzhiyun #define PWRTRK_VER_8197G "0x00" 163*4882a593Smuzhiyun #define PWRTRK_VER_8814C "0x00" 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun /*DPK version*/ 166*4882a593Smuzhiyun #define DPK_VER_8188E "NONE" 167*4882a593Smuzhiyun #define DPK_VER_8192E "NONE" 168*4882a593Smuzhiyun #define DPK_VER_8723B "NONE" 169*4882a593Smuzhiyun #define DPK_VER_8812A "NONE" 170*4882a593Smuzhiyun #define DPK_VER_8821A "NONE" 171*4882a593Smuzhiyun #define DPK_VER_8814A "NONE" 172*4882a593Smuzhiyun #define DPK_VER_8188F "NONE" 173*4882a593Smuzhiyun #define DPK_VER_8197F "0x08" 174*4882a593Smuzhiyun #define DPK_VER_8703B "NONE" 175*4882a593Smuzhiyun #define DPK_VER_8710B "NONE" 176*4882a593Smuzhiyun #define DPK_VER_8723D "NONE" 177*4882a593Smuzhiyun #define DPK_VER_8822B "NONE" 178*4882a593Smuzhiyun #define DPK_VER_8822C "0x20" 179*4882a593Smuzhiyun #define DPK_VER_8821C "NONE" 180*4882a593Smuzhiyun #define DPK_VER_8192F "0x13" 181*4882a593Smuzhiyun #define DPK_VER_8198F "0x0e" 182*4882a593Smuzhiyun #define DPK_VER_8814B "0x0f" 183*4882a593Smuzhiyun #define DPK_VER_8195B "0x0c" 184*4882a593Smuzhiyun #define DPK_VER_8812F "0x0a" 185*4882a593Smuzhiyun #define DPK_VER_8197G "0x09" 186*4882a593Smuzhiyun #define DPK_VER_8814C "0x01" 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun /*RFK_INIT version*/ 189*4882a593Smuzhiyun #define RFK_INIT_VER_8822B "0x8" 190*4882a593Smuzhiyun #define RFK_INIT_VER_8822C "0x8" 191*4882a593Smuzhiyun #define RFK_INIT_VER_8195B "0x1" 192*4882a593Smuzhiyun #define RFK_INIT_VER_8198F "0x8" 193*4882a593Smuzhiyun #define RFK_INIT_VER_8814B "0xa" 194*4882a593Smuzhiyun #define RFK_INIT_VER_8812F "0x4" 195*4882a593Smuzhiyun #define RFK_INIT_VER_8197G "0x4" 196*4882a593Smuzhiyun #define RFK_INIT_VER_8814C "0x0" 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun /*DACK version*/ 199*4882a593Smuzhiyun #define DACK_VER_8822C "0xa" 200*4882a593Smuzhiyun #define DACK_VER_8814B "0x4" 201*4882a593Smuzhiyun #define DACK_VER_8814C "0x0" 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun /*TXGAPK version*/ 204*4882a593Smuzhiyun #define TXGAPK_VER_8814B "0x1" 205*4882a593Smuzhiyun #define TXGAPK_VER_8195B "0x2" 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun /*Kfree tracking version*/ 208*4882a593Smuzhiyun #define KFREE_VER_8188E \ 209*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 210*4882a593Smuzhiyun #define KFREE_VER_8192E \ 211*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 212*4882a593Smuzhiyun #define KFREE_VER_8192F \ 213*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 214*4882a593Smuzhiyun #define KFREE_VER_8723B \ 215*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 216*4882a593Smuzhiyun #define KFREE_VER_8812A \ 217*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 218*4882a593Smuzhiyun #define KFREE_VER_8821A \ 219*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 220*4882a593Smuzhiyun #define KFREE_VER_8814A \ 221*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 222*4882a593Smuzhiyun #define KFREE_VER_8188F \ 223*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 224*4882a593Smuzhiyun #define KFREE_VER_8197F \ 225*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 226*4882a593Smuzhiyun #define KFREE_VER_8703B \ 227*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 228*4882a593Smuzhiyun #define KFREE_VER_8710B \ 229*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 230*4882a593Smuzhiyun #define KFREE_VER_8723D \ 231*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 232*4882a593Smuzhiyun #define KFREE_VER_8822B \ 233*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 234*4882a593Smuzhiyun #define KFREE_VER_8822C \ 235*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 236*4882a593Smuzhiyun #define KFREE_VER_8821C \ 237*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 238*4882a593Smuzhiyun #define KFREE_VER_8814B \ 239*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 240*4882a593Smuzhiyun #define KFREE_VER_8197G \ 241*4882a593Smuzhiyun (dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE" 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun #define TSSI_VER_8812F "0x1" 244*4882a593Smuzhiyun #define TSSI_VER_8822C "0x1" 245*4882a593Smuzhiyun #define TSSI_VER_8821C "0x1" 246*4882a593Smuzhiyun #define TSSI_VER_8814B "0x1" 247*4882a593Smuzhiyun #define TSSI_VER_8197G "0x1" 248*4882a593Smuzhiyun #define TSSI_VER_8723F "0x1" 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun /*PA Bias Calibration version*/ 251*4882a593Smuzhiyun #define PABIASK_VER_8188E \ 252*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 253*4882a593Smuzhiyun #define PABIASK_VER_8192E \ 254*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 255*4882a593Smuzhiyun #define PABIASK_VER_8192F \ 256*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 257*4882a593Smuzhiyun #define PABIASK_VER_8723B \ 258*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 259*4882a593Smuzhiyun #define PABIASK_VER_8812A \ 260*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 261*4882a593Smuzhiyun #define PABIASK_VER_8821A \ 262*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 263*4882a593Smuzhiyun #define PABIASK_VER_8814A \ 264*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 265*4882a593Smuzhiyun #define PABIASK_VER_8188F \ 266*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 267*4882a593Smuzhiyun #define PABIASK_VER_8197F \ 268*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 269*4882a593Smuzhiyun #define PABIASK_VER_8703B \ 270*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 271*4882a593Smuzhiyun #define PABIASK_VER_8710B \ 272*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 273*4882a593Smuzhiyun #define PABIASK_VER_8723D \ 274*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 275*4882a593Smuzhiyun #define PABIASK_VER_8822B \ 276*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 277*4882a593Smuzhiyun #define PABIASK_VER_8822C \ 278*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 279*4882a593Smuzhiyun #define PABIASK_VER_8821C \ 280*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 281*4882a593Smuzhiyun #define PABIASK_VER_8814B \ 282*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 283*4882a593Smuzhiyun #define PABIASK_VER_8197G \ 284*4882a593Smuzhiyun (dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE" 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun #define HALRF_IQK_VER \ 287*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? IQK_VER_8188E : \ 288*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? IQK_VER_8192E : \ 289*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? IQK_VER_8192F : \ 290*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? IQK_VER_8723B : \ 291*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? IQK_VER_8812A : \ 292*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? IQK_VER_8821A : \ 293*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? IQK_VER_8814A : \ 294*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? IQK_VER_8188F : \ 295*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? IQK_VER_8197F : \ 296*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? IQK_VER_8703B : \ 297*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? IQK_VER_8710B : \ 298*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? IQK_VER_8723D : \ 299*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? IQK_VER_8822B : \ 300*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? IQK_VER_8822C : \ 301*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? IQK_VER_8821C : \ 302*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? IQK_VER_8814B : \ 303*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710C) ? IQK_VER_8710C : \ 304*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723F) ? IQK_VER_8723F : \ 305*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? IQK_VER_8197G : "unknown" 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun #define HALRF_LCK_VER \ 308*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? LCK_VER_8188E : \ 309*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? LCK_VER_8192E : \ 310*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? LCK_VER_8192F : \ 311*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? LCK_VER_8723B : \ 312*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? LCK_VER_8812A : \ 313*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? LCK_VER_8821A : \ 314*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? LCK_VER_8814A : \ 315*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? LCK_VER_8188F : \ 316*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? LCK_VER_8197F : \ 317*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? LCK_VER_8703B : \ 318*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? LCK_VER_8710B : \ 319*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? LCK_VER_8723D : \ 320*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? LCK_VER_8822B : \ 321*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? LCK_VER_8822C : \ 322*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? LCK_VER_8821C : \ 323*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? LCK_VER_8814B : \ 324*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710C) ? LCK_VER_8710C : \ 325*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710C) ? LCK_VER_8710C : "unknown" 326*4882a593Smuzhiyun #define HALRF_POWRTRACKING_VER \ 327*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? PWRTRK_VER_8188E : \ 328*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? PWRTRK_VER_8192E : \ 329*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? PWRTRK_VER_8192F : \ 330*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? PWRTRK_VER_8723B : \ 331*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? PWRTRK_VER_8812A : \ 332*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? PWRTRK_VER_8821A : \ 333*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? PWRTRK_VER_8814A : \ 334*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? PWRTRK_VER_8188F : \ 335*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? PWRTRK_VER_8197F : \ 336*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? PWRTRK_VER_8703B : \ 337*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? PWRTRK_VER_8710B : \ 338*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? PWRTRK_VER_8723D : \ 339*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? PWRTRK_VER_8822B : \ 340*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? PWRTRK_VER_8822C : \ 341*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? PWRTRK_VER_8821C : \ 342*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? PWRTRK_VER_8197G : "unknown" 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun #define HALRF_DPK_VER \ 345*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? DPK_VER_8188E : \ 346*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? DPK_VER_8192E : \ 347*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? DPK_VER_8192F : \ 348*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? DPK_VER_8723B : \ 349*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? DPK_VER_8812A : \ 350*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? DPK_VER_8821A : \ 351*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? DPK_VER_8814A : \ 352*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? DPK_VER_8188F : \ 353*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? DPK_VER_8197F : \ 354*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8198F) ? DPK_VER_8198F : \ 355*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? DPK_VER_8703B : \ 356*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? DPK_VER_8710B : \ 357*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? DPK_VER_8723D : \ 358*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? DPK_VER_8822B : \ 359*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? DPK_VER_8822C : \ 360*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812F) ? DPK_VER_8812F : \ 361*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? DPK_VER_8821C : \ 362*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? DPK_VER_8814B : \ 363*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? DPK_VER_8197G : "unknown" 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun #define HALRF_KFREE_VER \ 366*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? KFREE_VER_8188E : \ 367*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? KFREE_VER_8192E : \ 368*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? KFREE_VER_8192F : \ 369*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? KFREE_VER_8723B : \ 370*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? KFREE_VER_8812A : \ 371*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? KFREE_VER_8821A : \ 372*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? KFREE_VER_8814A : \ 373*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? KFREE_VER_8188F : \ 374*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? KFREE_VER_8197F : \ 375*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? KFREE_VER_8703B : \ 376*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? KFREE_VER_8710B : \ 377*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? KFREE_VER_8723D : \ 378*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? KFREE_VER_8822B : \ 379*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? KFREE_VER_8822C : \ 380*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? KFREE_VER_8821C : \ 381*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? KFREE_VER_8814B : \ 382*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? KFREE_VER_8197G : "unknown" 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun #define HALRF_TSSI_VER \ 385*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812F) ? TSSI_VER_8812F : \ 386*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? TSSI_VER_8822C : \ 387*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? TSSI_VER_8821C : \ 388*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? TSSI_VER_8814B : \ 389*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? TSSI_VER_8197G : \ 390*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723F) ? TSSI_VER_8723F : "unknown" 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun #define HALRF_PABIASK_VER \ 393*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188E) ? PABIASK_VER_8188E : \ 394*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192E) ? PABIASK_VER_8192E : \ 395*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8192F) ? PABIASK_VER_8192F : \ 396*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723B) ? PABIASK_VER_8723B : \ 397*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812) ? PABIASK_VER_8812A : \ 398*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821) ? PABIASK_VER_8821A : \ 399*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814A) ? PABIASK_VER_8814A : \ 400*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8188F) ? PABIASK_VER_8188F : \ 401*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197F) ? PABIASK_VER_8197F : \ 402*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8703B) ? PABIASK_VER_8703B : \ 403*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8710B) ? PABIASK_VER_8710B : \ 404*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8723D) ? PABIASK_VER_8723D : \ 405*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? PABIASK_VER_8822B : \ 406*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? PABIASK_VER_8822C : \ 407*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8821C) ? PABIASK_VER_8821C : \ 408*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? PABIASK_VER_8814B : \ 409*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? PABIASK_VER_8197G : "unknown" 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun #define HALRF_RFK_INIT_VER \ 412*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822B) ? RFK_INIT_VER_8822B : \ 413*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? RFK_INIT_VER_8822C : \ 414*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8812F) ? RFK_INIT_VER_8812F : \ 415*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8198F) ? RFK_INIT_VER_8198F : \ 416*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? RFK_INIT_VER_8814B : \ 417*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8197G) ? RFK_INIT_VER_8197G : "unknown" 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun #define HALRF_DACK_VER \ 420*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8822C) ? DACK_VER_8822C : \ 421*4882a593Smuzhiyun (dm->support_ic_type == ODM_RTL8814B) ? DACK_VER_8814B : "unknown" 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun #define IQK_THRESHOLD 8 424*4882a593Smuzhiyun #define DPK_THRESHOLD 4 425*4882a593Smuzhiyun #define HALRF_ABS(a,b) ((a>b) ? (a-b) : (b-a)) 426*4882a593Smuzhiyun #define SN 100 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun #define CCK_TSSI_NUM 6 429*4882a593Smuzhiyun #define OFDM_2G_TSSI_NUM 5 430*4882a593Smuzhiyun #define OFDM_5G_TSSI_NUM 14 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun /*@===========================================================*/ 435*4882a593Smuzhiyun /*AGC RX High Power mode*/ 436*4882a593Smuzhiyun /*@===========================================================*/ 437*4882a593Smuzhiyun #define lna_low_gain_1 0x64 438*4882a593Smuzhiyun #define lna_low_gain_2 0x5A 439*4882a593Smuzhiyun #define lna_low_gain_3 0x58 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun /*@============================================================*/ 442*4882a593Smuzhiyun /*@ enumeration */ 443*4882a593Smuzhiyun /*@============================================================*/ 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun enum halrf_func_idx { /*F_XXX = PHYDM XXX function*/ 446*4882a593Smuzhiyun RF00_PWR_TRK = 0, /*Pow_trk, TSSI_trk*/ 447*4882a593Smuzhiyun RF01_IQK = 1, /*LOK, IQK*/ 448*4882a593Smuzhiyun RF02_LCK = 2, 449*4882a593Smuzhiyun RF03_DPK = 3, 450*4882a593Smuzhiyun RF04_TXGAPK = 4, 451*4882a593Smuzhiyun RF05_DACK = 5, 452*4882a593Smuzhiyun RF06_DPK_TRK = 6, 453*4882a593Smuzhiyun RF07_2GBAND_SHIFT = 7, 454*4882a593Smuzhiyun RF08_RXDCK = 8, 455*4882a593Smuzhiyun RF09_RFK = 9 456*4882a593Smuzhiyun }; 457*4882a593Smuzhiyun 458*4882a593Smuzhiyun enum halrf_ability { 459*4882a593Smuzhiyun HAL_RF_TX_PWR_TRACK = BIT(RF00_PWR_TRK), 460*4882a593Smuzhiyun HAL_RF_IQK = BIT(RF01_IQK), 461*4882a593Smuzhiyun HAL_RF_LCK = BIT(RF02_LCK), 462*4882a593Smuzhiyun HAL_RF_DPK = BIT(RF03_DPK), 463*4882a593Smuzhiyun HAL_RF_TXGAPK = BIT(RF04_TXGAPK), 464*4882a593Smuzhiyun HAL_RF_DACK = BIT(RF05_DACK), 465*4882a593Smuzhiyun HAL_RF_DPK_TRACK = BIT(RF06_DPK_TRK), 466*4882a593Smuzhiyun HAL_2GBAND_SHIFT = BIT(RF07_2GBAND_SHIFT), 467*4882a593Smuzhiyun HAL_RF_RXDCK = BIT(RF08_RXDCK) 468*4882a593Smuzhiyun }; 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun enum halrf_shift_band { 471*4882a593Smuzhiyun HAL_RF_2P4 = 0, 472*4882a593Smuzhiyun HAL_RF_2P3 = 1, 473*4882a593Smuzhiyun HAL_RF_2P5 = 2 474*4882a593Smuzhiyun }; 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun enum halrf_dbg_comp { 477*4882a593Smuzhiyun DBG_RF_TX_PWR_TRACK = BIT(RF00_PWR_TRK), 478*4882a593Smuzhiyun DBG_RF_IQK = BIT(RF01_IQK), 479*4882a593Smuzhiyun DBG_RF_LCK = BIT(RF02_LCK), 480*4882a593Smuzhiyun DBG_RF_DPK = BIT(RF03_DPK), 481*4882a593Smuzhiyun DBG_RF_TXGAPK = BIT(RF04_TXGAPK), 482*4882a593Smuzhiyun DBG_RF_DACK = BIT(RF05_DACK), 483*4882a593Smuzhiyun DBG_RF_DPK_TRACK = BIT(RF06_DPK_TRK), 484*4882a593Smuzhiyun DBG_RF_RFK = BIT(RF09_RFK), 485*4882a593Smuzhiyun DBG_RF_MP = BIT(29), 486*4882a593Smuzhiyun DBG_RF_TMP = BIT(30), 487*4882a593Smuzhiyun DBG_RF_INIT = BIT(31) 488*4882a593Smuzhiyun }; 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun enum halrf_cmninfo_init { 491*4882a593Smuzhiyun HALRF_CMNINFO_ABILITY = 0, 492*4882a593Smuzhiyun HALRF_CMNINFO_DPK_EN = 1, 493*4882a593Smuzhiyun HALRF_CMNINFO_EEPROM_THERMAL_VALUE, 494*4882a593Smuzhiyun HALRF_CMNINFO_RFK_FORBIDDEN, 495*4882a593Smuzhiyun HALRF_CMNINFO_IQK_SEGMENT, 496*4882a593Smuzhiyun HALRF_CMNINFO_RATE_INDEX, 497*4882a593Smuzhiyun HALRF_CMNINFO_PWT_TYPE, 498*4882a593Smuzhiyun HALRF_CMNINFO_MP_PSD_POINT, 499*4882a593Smuzhiyun HALRF_CMNINFO_MP_PSD_START_POINT, 500*4882a593Smuzhiyun HALRF_CMNINFO_MP_PSD_STOP_POINT, 501*4882a593Smuzhiyun HALRF_CMNINFO_MP_PSD_AVERAGE, 502*4882a593Smuzhiyun HALRF_CMNINFO_IQK_TIMES, 503*4882a593Smuzhiyun HALRF_CMNINFO_MP_POWER_TRACKING_TYPE, 504*4882a593Smuzhiyun HALRF_CMNINFO_POWER_TRACK_CONTROL 505*4882a593Smuzhiyun }; 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun enum halrf_cmninfo_hook { 508*4882a593Smuzhiyun HALRF_CMNINFO_CON_TX, 509*4882a593Smuzhiyun HALRF_CMNINFO_SINGLE_TONE, 510*4882a593Smuzhiyun HALRF_CMNINFO_CARRIER_SUPPRESSION, 511*4882a593Smuzhiyun HALRF_CMNINFO_MP_RATE_INDEX, 512*4882a593Smuzhiyun HALRF_CMNINFO_MANUAL_RF_SUPPORTABILITY 513*4882a593Smuzhiyun }; 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun enum halrf_lna_set { 516*4882a593Smuzhiyun HALRF_LNA_DISABLE = 0, 517*4882a593Smuzhiyun HALRF_LNA_ENABLE = 1, 518*4882a593Smuzhiyun }; 519*4882a593Smuzhiyun 520*4882a593Smuzhiyun enum halrf_k_segment_time { 521*4882a593Smuzhiyun SEGMENT_FREE = 0, 522*4882a593Smuzhiyun SEGMENT_10MS = 10, /*10ms*/ 523*4882a593Smuzhiyun SEGMENT_30MS = 30, /*30ms*/ 524*4882a593Smuzhiyun SEGMENT_50MS = 50, /*50ms*/ 525*4882a593Smuzhiyun }; 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun #define POWER_INDEX_DIFF 4 528*4882a593Smuzhiyun #define TSSI_TXAGC_DIFF 2 529*4882a593Smuzhiyun 530*4882a593Smuzhiyun #define TSSI_CODE_NUM 84 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun #define TSSI_SLOPE_2G 8 533*4882a593Smuzhiyun #define TSSI_SLOPE_5G 5 534*4882a593Smuzhiyun 535*4882a593Smuzhiyun #define TSSI_EFUSE_NUM 25 536*4882a593Smuzhiyun #define TSSI_EFUSE_KFREE_NUM 4 537*4882a593Smuzhiyun #define TSSI_DE_DIFF_EFUSE_NUM 10 538*4882a593Smuzhiyun 539*4882a593Smuzhiyun struct _halrf_tssi_data { 540*4882a593Smuzhiyun s32 cck_offset_patha; 541*4882a593Smuzhiyun s32 cck_offset_pathb; 542*4882a593Smuzhiyun s32 tssi_trk_txagc_offset[PHYDM_MAX_RF_PATH]; 543*4882a593Smuzhiyun s32 delta_tssi_txagc_offset[PHYDM_MAX_RF_PATH]; 544*4882a593Smuzhiyun s16 txagc_codeword[TSSI_CODE_NUM]; 545*4882a593Smuzhiyun u16 tssi_codeword[TSSI_CODE_NUM]; 546*4882a593Smuzhiyun s8 tssi_efuse[PHYDM_MAX_RF_PATH][TSSI_EFUSE_NUM]; 547*4882a593Smuzhiyun s8 tssi_de_diff_efuse[PHYDM_MAX_RF_PATH][TSSI_DE_DIFF_EFUSE_NUM]; 548*4882a593Smuzhiyun s8 tssi_kfree_efuse[PHYDM_MAX_RF_PATH][TSSI_EFUSE_KFREE_NUM]; 549*4882a593Smuzhiyun u8 thermal[PHYDM_MAX_RF_PATH]; 550*4882a593Smuzhiyun u32 index[PHYDM_MAX_RF_PATH][14]; 551*4882a593Smuzhiyun u8 do_tssi; 552*4882a593Smuzhiyun u8 get_thermal; 553*4882a593Smuzhiyun u8 tssi_finish_bit[PHYDM_MAX_RF_PATH]; 554*4882a593Smuzhiyun u8 thermal_trigger; 555*4882a593Smuzhiyun s8 tssi_de; 556*4882a593Smuzhiyun #if (RTL8723F_SUPPORT == 1) 557*4882a593Smuzhiyun s8 txagc_offset_thermaltrack[MAX_PATH_NUM_8723F]; 558*4882a593Smuzhiyun u8 thermal_cal; 559*4882a593Smuzhiyun #endif 560*4882a593Smuzhiyun }; 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun struct _halrf_txgapk_info { 563*4882a593Smuzhiyun u32 txgapk_rf3f_bp[5][12][PHYDM_MAX_RF_PATH]; /* band(2Gcck/2GOFDM/5GL/5GM/5GH)/idx/path */ 564*4882a593Smuzhiyun boolean txgapk_bp_done; 565*4882a593Smuzhiyun s8 offset[12][PHYDM_MAX_RF_PATH]; 566*4882a593Smuzhiyun s8 fianl_offset[12][PHYDM_MAX_RF_PATH]; 567*4882a593Smuzhiyun u8 read_txgain; 568*4882a593Smuzhiyun }; 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun /*@============================================================*/ 572*4882a593Smuzhiyun /*@ structure */ 573*4882a593Smuzhiyun /*@============================================================*/ 574*4882a593Smuzhiyun 575*4882a593Smuzhiyun struct _hal_rf_ { 576*4882a593Smuzhiyun /*hook*/ 577*4882a593Smuzhiyun u8 *test1; 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun /*update*/ 580*4882a593Smuzhiyun u32 rf_supportability; 581*4882a593Smuzhiyun u8 rf_shift_band; 582*4882a593Smuzhiyun /*u32 halrf_tssi_data;*/ 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun u8 eeprom_thermal; 585*4882a593Smuzhiyun u8 dpk_en; /*Enable Function DPK OFF/ON = 0/1*/ 586*4882a593Smuzhiyun boolean dpk_done; 587*4882a593Smuzhiyun u64 dpk_progressing_time; 588*4882a593Smuzhiyun u64 iqk_progressing_time; 589*4882a593Smuzhiyun u32 fw_ver; 590*4882a593Smuzhiyun 591*4882a593Smuzhiyun boolean *is_con_tx; 592*4882a593Smuzhiyun boolean *is_single_tone; 593*4882a593Smuzhiyun boolean *is_carrier_suppresion; 594*4882a593Smuzhiyun boolean is_dpk_in_progress; 595*4882a593Smuzhiyun boolean is_tssi_in_progress; 596*4882a593Smuzhiyun boolean is_bt_iqk_timeout; 597*4882a593Smuzhiyun boolean is_rfk_h2c_timeout; 598*4882a593Smuzhiyun boolean aac_checked; 599*4882a593Smuzhiyun boolean is_txgapk_in_progress; 600*4882a593Smuzhiyun 601*4882a593Smuzhiyun u8 *mp_rate_index; 602*4882a593Smuzhiyun u32 *manual_rf_supportability; 603*4882a593Smuzhiyun u32 p_rate_index; 604*4882a593Smuzhiyun u8 pwt_type; 605*4882a593Smuzhiyun u32 rf_dbg_comp; 606*4882a593Smuzhiyun u8 rfk_type; 607*4882a593Smuzhiyun u32 gnt_control; 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun u8 ext_lna; /*@with 2G external LNA NO/Yes = 0/1*/ 610*4882a593Smuzhiyun u8 ext_lna_5g; /*@with 5G external LNA NO/Yes = 0/1*/ 611*4882a593Smuzhiyun u8 ext_pa; /*@with 2G external PNA NO/Yes = 0/1*/ 612*4882a593Smuzhiyun u8 ext_pa_5g; /*@with 5G external PNA NO/Yes = 0/1*/ 613*4882a593Smuzhiyun #if !(DM_ODM_SUPPORT_TYPE & ODM_IOT) 614*4882a593Smuzhiyun struct _halrf_psd_data halrf_psd_data; 615*4882a593Smuzhiyun struct _halrf_tssi_data halrf_tssi_data; 616*4882a593Smuzhiyun #endif 617*4882a593Smuzhiyun struct _halrf_txgapk_info halrf_txgapk_info; 618*4882a593Smuzhiyun u8 power_track_type; 619*4882a593Smuzhiyun u8 mp_pwt_type; 620*4882a593Smuzhiyun u8 pre_band_type; 621*4882a593Smuzhiyun }; 622*4882a593Smuzhiyun 623*4882a593Smuzhiyun /*@============================================================*/ 624*4882a593Smuzhiyun /*@ function prototype */ 625*4882a593Smuzhiyun /*@============================================================*/ 626*4882a593Smuzhiyun 627*4882a593Smuzhiyun #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ 628*4882a593Smuzhiyun RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ 629*4882a593Smuzhiyun RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ 630*4882a593Smuzhiyun RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\ 631*4882a593Smuzhiyun RTL8197G_SUPPORT == 1) 632*4882a593Smuzhiyun void halrf_iqk_info_dump(void *dm_void, u32 *_used, char *output, 633*4882a593Smuzhiyun u32 *_out_len); 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun void halrf_iqk_hwtx_check(void *dm_void, boolean is_check); 636*4882a593Smuzhiyun #endif 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun u8 halrf_match_iqk_version(void *dm_void); 639*4882a593Smuzhiyun 640*4882a593Smuzhiyun void halrf_support_ability_debug(void *dm_void, char input[][16], u32 *_used, 641*4882a593Smuzhiyun char *output, u32 *_out_len); 642*4882a593Smuzhiyun #ifdef CONFIG_2G_BAND_SHIFT 643*4882a593Smuzhiyun void halrf_support_band_shift_debug(void *dm_void, char input[][16], u32 *_used, 644*4882a593Smuzhiyun char *output, u32 *_out_len); 645*4882a593Smuzhiyun #endif 646*4882a593Smuzhiyun void halrf_cmn_info_init(void *dm_void, enum halrf_cmninfo_init cmn_info, 647*4882a593Smuzhiyun u32 value); 648*4882a593Smuzhiyun 649*4882a593Smuzhiyun void halrf_cmn_info_hook(void *dm_void, enum halrf_cmninfo_hook cmn_info, 650*4882a593Smuzhiyun void *value); 651*4882a593Smuzhiyun 652*4882a593Smuzhiyun void halrf_cmn_info_set(void *dm_void, u32 cmn_info, u64 value); 653*4882a593Smuzhiyun 654*4882a593Smuzhiyun u64 halrf_cmn_info_get(void *dm_void, u32 cmn_info); 655*4882a593Smuzhiyun 656*4882a593Smuzhiyun void halrf_watchdog(void *dm_void); 657*4882a593Smuzhiyun 658*4882a593Smuzhiyun void halrf_supportability_init(void *dm_void); 659*4882a593Smuzhiyun 660*4882a593Smuzhiyun void halrf_init(void *dm_void); 661*4882a593Smuzhiyun 662*4882a593Smuzhiyun void halrf_iqk_trigger(void *dm_void, boolean is_recovery); 663*4882a593Smuzhiyun 664*4882a593Smuzhiyun void halrf_rfk_handshake(void *dm_void, boolean is_before_k); 665*4882a593Smuzhiyun 666*4882a593Smuzhiyun void halrf_rf_k_connect_trigger(void *dm_void, boolean is_recovery, 667*4882a593Smuzhiyun enum halrf_k_segment_time seg_time); 668*4882a593Smuzhiyun 669*4882a593Smuzhiyun void halrf_segment_iqk_trigger(void *dm_void, boolean clear, 670*4882a593Smuzhiyun boolean segment_iqk); 671*4882a593Smuzhiyun 672*4882a593Smuzhiyun void halrf_lck_trigger(void *dm_void); 673*4882a593Smuzhiyun 674*4882a593Smuzhiyun void halrf_iqk_debug(void *dm_void, u32 *const dm_value, u32 *_used, 675*4882a593Smuzhiyun char *output, u32 *_out_len); 676*4882a593Smuzhiyun 677*4882a593Smuzhiyun void phydm_get_iqk_cfir(void *dm_void, u8 idx, u8 path, boolean debug); 678*4882a593Smuzhiyun 679*4882a593Smuzhiyun void halrf_iqk_xym_read(void *dm_void, u8 path, u8 xym_type); 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun void halrf_rf_lna_setting(void *dm_void, enum halrf_lna_set type); 682*4882a593Smuzhiyun 683*4882a593Smuzhiyun void halrf_do_imr_test(void *dm_void, u8 data); 684*4882a593Smuzhiyun 685*4882a593Smuzhiyun u32 halrf_psd_log2base(u32 val); 686*4882a593Smuzhiyun 687*4882a593Smuzhiyun void halrf_dpk_trigger(void *dm_void); 688*4882a593Smuzhiyun 689*4882a593Smuzhiyun void halrf_txgapk_trigger(void *dm_void); 690*4882a593Smuzhiyun 691*4882a593Smuzhiyun u8 halrf_dpk_result_check(void *dm_void); 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun void halrf_dpk_sram_read(void *dm_void); 694*4882a593Smuzhiyun 695*4882a593Smuzhiyun void halrf_dpk_enable_disable(void *dm_void); 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun void halrf_dpk_track(void *dm_void); 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun void halrf_dpk_reload(void *dm_void); 700*4882a593Smuzhiyun 701*4882a593Smuzhiyun void halrf_dpk_switch(void *dm_void, u8 enable); 702*4882a593Smuzhiyun 703*4882a593Smuzhiyun void halrf_dpk_debug_cmd(void *dm_void, char input[][16], u32 *_used, 704*4882a593Smuzhiyun char *output, u32 *_out_len); 705*4882a593Smuzhiyun 706*4882a593Smuzhiyun void halrf_dpk_c2h_report_transfer(void *dm_void, boolean is_ok, u8 *buf, u8 buf_size); 707*4882a593Smuzhiyun 708*4882a593Smuzhiyun void halrf_dpk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size); 709*4882a593Smuzhiyun 710*4882a593Smuzhiyun /*Global function*/ 711*4882a593Smuzhiyun 712*4882a593Smuzhiyun void halrf_reload_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num); 713*4882a593Smuzhiyun 714*4882a593Smuzhiyun void halrf_reload_bprf(void *dm_void, u32 *bp_reg, u32 bp[][4], u32 num, 715*4882a593Smuzhiyun u8 ss); 716*4882a593Smuzhiyun 717*4882a593Smuzhiyun void halrf_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num); 718*4882a593Smuzhiyun 719*4882a593Smuzhiyun void halrf_bprf(void *dm_void, u32 *bp_reg, u32 bp[][4], u32 num, u8 ss); 720*4882a593Smuzhiyun 721*4882a593Smuzhiyun void halrf_mode(void *dm_void, u32 *i_value, u32 *q_value); 722*4882a593Smuzhiyun 723*4882a593Smuzhiyun boolean halrf_compare(void *dm_void, u32 value); 724*4882a593Smuzhiyun 725*4882a593Smuzhiyun u32 halrf_delta(void *dm_void, u32 v1, u32 v2); 726*4882a593Smuzhiyun 727*4882a593Smuzhiyun void halrf_minmax_compare(void *dm_void, u32 value, u32 *min, u32 *max); 728*4882a593Smuzhiyun 729*4882a593Smuzhiyun void halrf_b_sort(void *dm_void, u32 *iv, u32 *qv); 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun void halrf_bubble(void *dm_void, u32 *v1, u32 *v2); 732*4882a593Smuzhiyun 733*4882a593Smuzhiyun void halrf_swap(void *dm_void, u32 *v1, u32 *v2); 734*4882a593Smuzhiyun 735*4882a593Smuzhiyun enum hal_status 736*4882a593Smuzhiyun halrf_config_rfk_with_header_file(void *dm_void, u32 config_type); 737*4882a593Smuzhiyun 738*4882a593Smuzhiyun #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\ 739*4882a593Smuzhiyun RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\ 740*4882a593Smuzhiyun RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\ 741*4882a593Smuzhiyun RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\ 742*4882a593Smuzhiyun RTL8197G_SUPPORT == 1) 743*4882a593Smuzhiyun void halrf_iqk_dbg(void *dm_void); 744*4882a593Smuzhiyun #endif 745*4882a593Smuzhiyun 746*4882a593Smuzhiyun void halrf_tssi_get_efuse(void *dm_void); 747*4882a593Smuzhiyun 748*4882a593Smuzhiyun void halrf_do_tssi(void *dm_void); 749*4882a593Smuzhiyun 750*4882a593Smuzhiyun u8 halrf_do_tssi_by_manual(void *dm_void, u8 path); 751*4882a593Smuzhiyun 752*4882a593Smuzhiyun 753*4882a593Smuzhiyun void halrf_set_tssi_enable(void *dm_void, boolean enable); 754*4882a593Smuzhiyun 755*4882a593Smuzhiyun void halrf_do_thermal(void *dm_void); 756*4882a593Smuzhiyun 757*4882a593Smuzhiyun u32 halrf_set_tssi_value(void *dm_void, u32 tssi_value); 758*4882a593Smuzhiyun 759*4882a593Smuzhiyun void halrf_set_tssi_power(void *dm_void, s8 power); 760*4882a593Smuzhiyun 761*4882a593Smuzhiyun void halrf_tssi_set_de_for_tx_verify(void *dm_void, u32 tssi_de, u8 path); 762*4882a593Smuzhiyun 763*4882a593Smuzhiyun u32 halrf_query_tssi_value(void *dm_void); 764*4882a593Smuzhiyun 765*4882a593Smuzhiyun void halrf_tssi_cck(void *dm_void); 766*4882a593Smuzhiyun 767*4882a593Smuzhiyun void halrf_thermal_cck(void *dm_void); 768*4882a593Smuzhiyun 769*4882a593Smuzhiyun void halrf_tssi_set_de(void *dm_void); 770*4882a593Smuzhiyun 771*4882a593Smuzhiyun void halrf_tssi_dck(void *dm_void, u8 direct_do); 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun void halrf_calculate_tssi_codeword(void *dm_void); 774*4882a593Smuzhiyun 775*4882a593Smuzhiyun void halrf_set_tssi_codeword(void *dm_void); 776*4882a593Smuzhiyun 777*4882a593Smuzhiyun u8 halrf_get_tssi_codeword_for_txindex(void *dm_void); 778*4882a593Smuzhiyun 779*4882a593Smuzhiyun void halrf_tssi_clean_de(void *dm_void); 780*4882a593Smuzhiyun 781*4882a593Smuzhiyun u32 halrf_tssi_trigger_de(void *dm_void, u8 path); 782*4882a593Smuzhiyun 783*4882a593Smuzhiyun u32 halrf_tssi_get_de(void *dm_void, u8 path); 784*4882a593Smuzhiyun 785*4882a593Smuzhiyun u32 halrf_get_online_tssi_de(void *dm_void, u8 path, s32 pout); 786*4882a593Smuzhiyun 787*4882a593Smuzhiyun void halrf_tssi_trigger(void *dm_void); 788*4882a593Smuzhiyun 789*4882a593Smuzhiyun void halrf_spur_compensation(void *dm_void); 790*4882a593Smuzhiyun 791*4882a593Smuzhiyun void halrf_txgapk_write_gain_table(void *dm_void); 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun void halrf_txgapk_reload_tx_gain(void *dm_void); 794*4882a593Smuzhiyun 795*4882a593Smuzhiyun void halrf_txgap_enable_disable(void *dm_void, u8 enable); 796*4882a593Smuzhiyun 797*4882a593Smuzhiyun void halrf_set_dpk_track(void *dm_void, u8 enable); 798*4882a593Smuzhiyun 799*4882a593Smuzhiyun void halrf_set_dpkbychannel(void *dm_void, boolean dpk_by_ch); 800*4882a593Smuzhiyun 801*4882a593Smuzhiyun void halrf_set_dpkenable(void *dm_void, boolean is_dpk_enable); 802*4882a593Smuzhiyun 803*4882a593Smuzhiyun boolean halrf_get_dpkbychannel(void *dm_void); 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun boolean halrf_get_dpkenable(void *dm_void); 806*4882a593Smuzhiyun 807*4882a593Smuzhiyun void _iqk_check_if_reload(void *dm_void); 808*4882a593Smuzhiyun 809*4882a593Smuzhiyun void halrf_do_rxbb_dck(void *dm_void); 810*4882a593Smuzhiyun 811*4882a593Smuzhiyun void config_halrf_path_adda_setting_trigger(void *dm_void); 812*4882a593Smuzhiyun 813*4882a593Smuzhiyun void halrf_reload_iqk(void *dm_void, boolean reset); 814*4882a593Smuzhiyun 815*4882a593Smuzhiyun void halrf_dack_dbg(void *dm_void); 816*4882a593Smuzhiyun 817*4882a593Smuzhiyun void halrf_dack_trigger(void *dm_void, boolean force); 818*4882a593Smuzhiyun 819*4882a593Smuzhiyun void halrf_dack_restore(void *dm_void); 820*4882a593Smuzhiyun 821*4882a593Smuzhiyun void halrf_iqk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size); 822*4882a593Smuzhiyun 823*4882a593Smuzhiyun void halrf_set_rfsupportability(void *dm_void); 824*4882a593Smuzhiyun 825*4882a593Smuzhiyun void halrf_rxdck(void *dm_void); 826*4882a593Smuzhiyun 827*4882a593Smuzhiyun void halrf_delay_10us(u16 v1); 828*4882a593Smuzhiyun 829*4882a593Smuzhiyun void halrf_dump_rfk_reg(void *dm_void, char input[][16], u32 *_used, 830*4882a593Smuzhiyun char *output, u32 *_out_len); 831*4882a593Smuzhiyun 832*4882a593Smuzhiyun void halrf_xtal_thermal_track(void *dm_void); 833*4882a593Smuzhiyun 834*4882a593Smuzhiyun void halrf_powertracking_thermal(void *dm_void); 835*4882a593Smuzhiyun 836*4882a593Smuzhiyun u32 halrf_tssi_turn_target_power(void *dm_void, s16 power_offset, u8 path); 837*4882a593Smuzhiyun 838*4882a593Smuzhiyun void halrf_tssi_set_power_offset(void *dm_void, s16 power_offset, u8 path); 839*4882a593Smuzhiyun 840*4882a593Smuzhiyun void halrf_rfk_power_save(void *dm_void, boolean is_power_save); 841*4882a593Smuzhiyun 842*4882a593Smuzhiyun #endif /*__HALRF_H__*/ 843