Path: blob/master/ALFA-W1F1/RTL8814AU/hal/phydm/halrf/halrf.h
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#ifndef __HALRF_H__26#define __HALRF_H__2728/*@============================================================*/29/*@include files*/30/*@============================================================*/31#include "halrf/halrf_psd.h"32#if (RTL8822B_SUPPORT == 1)33#include "halrf/rtl8822b/halrf_rfk_init_8822b.h"34#endif35#if (RTL8822C_SUPPORT == 1)36#include "halrf/rtl8822c/halrf_rfk_init_8822c.h"37#include "halrf/rtl8822c/halrf_iqk_8822c.h"38#include "halrf/rtl8822c/halrf_tssi_8822c.h"39#include "halrf/rtl8822c/halrf_dpk_8822c.h"40#endif4142#if (DM_ODM_SUPPORT_TYPE & ODM_AP)43#if (RTL8197G_SUPPORT == 1)44#include "halrf/rtl8197g/halrf_rfk_init_8197g.h"45#endif46#if (RTL8198F_SUPPORT == 1)47#include "halrf/rtl8198f/halrf_rfk_init_8198f.h"48#endif49#if (RTL8812F_SUPPORT == 1)50#include "halrf/rtl8812f/halrf_rfk_init_8812f.h"51#endif5253#endif5455#if (RTL8814B_SUPPORT == 1)56#include "halrf/rtl8814b/halrf_rfk_init_8814b.h"57#include "halrf/rtl8814b/halrf_iqk_8814b.h"58#include "halrf/rtl8814b/halrf_dpk_8814b.h"59#endif6061/*@============================================================*/62/*@Definition */63/*@============================================================*/64/*IQK version*/65#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))66#define IQK_VER_8188E "0x14"67#define IQK_VER_8192E "0x01"68#define IQK_VER_8192F "0x01"69#define IQK_VER_8723B "0x1e"70#define IQK_VER_8812A "0x02"71#define IQK_VER_8821A "0x01"72#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE))73#define IQK_VER_8188E "0x01"74#define IQK_VER_8192E "0x01"75#define IQK_VER_8192F "0x01"76#define IQK_VER_8723B "0x1e"77#define IQK_VER_8812A "0x01"78#define IQK_VER_8821A "0x01"79#elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))80#define IQK_VER_8188E "0x01"81#define IQK_VER_8192E "0x01"82#define IQK_VER_8192F "0x01"83#define IQK_VER_8723B "0x1e"84#define IQK_VER_8812A "0x01"85#define IQK_VER_8821A "0x01"86#elif (DM_ODM_SUPPORT_TYPE & (ODM_IOT))87#define IQK_VER_8188E "0x01"88#define IQK_VER_8192E "0x01"89#define IQK_VER_8192F "0x01"90#define IQK_VER_8723B "0x1e"91#define IQK_VER_8812A "0x01"92#define IQK_VER_8821A "0x01"93#endif94#define IQK_VER_8814A "0x0f"95#define IQK_VER_8188F "0x01"96#define IQK_VER_8197F "0x1d"97#define IQK_VER_8703B "0x05"98#define IQK_VER_8710B "0x01"99#define IQK_VER_8723D "0x02"100#define IQK_VER_8822B "0x30"101#define IQK_VER_8822C "0x0c"102#define IQK_VER_8821C "0x23"103#define IQK_VER_8198F "0x0a"104#define IQK_VER_8814B "0x0e"105#define IQK_VER_8812F "0x08"106#define IQK_VER_8710C "0x05"107#define IQK_VER_8197G "0x02"108109/*LCK version*/110#define LCK_VER_8188E "0x01"111#define LCK_VER_8192E "0x01"112#define LCK_VER_8192F "0x01"113#define LCK_VER_8723B "0x01"114#define LCK_VER_8812A "0x01"115#define LCK_VER_8821A "0x01"116#define LCK_VER_8814A "0x01"117#define LCK_VER_8188F "0x01"118#define LCK_VER_8197F "0x01"119#define LCK_VER_8703B "0x01"120#define LCK_VER_8710B "0x01"121#define LCK_VER_8723D "0x01"122#define LCK_VER_8822B "0x02"123#define LCK_VER_8822C "0x00"124#define LCK_VER_8821C "0x02"125#define LCK_VER_8814B "0x01"126#define LCK_VER_8195B "0x02"127#define LCK_VER_8710C "0x01"128#define LCK_VER_8197G "0x00"129130/*power tracking version*/131#define PWRTRK_VER_8188E "0x01"132#define PWRTRK_VER_8192E "0x01"133#define PWRTRK_VER_8192F "0x01"134#define PWRTRK_VER_8723B "0x01"135#define PWRTRK_VER_8812A "0x01"136#define PWRTRK_VER_8821A "0x01"137#define PWRTRK_VER_8814A "0x01"138#define PWRTRK_VER_8188F "0x01"139#define PWRTRK_VER_8197F "0x01"140#define PWRTRK_VER_8703B "0x01"141#define PWRTRK_VER_8710B "0x01"142#define PWRTRK_VER_8723D "0x01"143#define PWRTRK_VER_8822B "0x01"144#define PWRTRK_VER_8822C "0x00"145#define PWRTRK_VER_8821C "0x01"146#define PWRTRK_VER_8814B "0x00"147#define PWRTRK_VER_8197G "0x00"148149/*DPK version*/150#define DPK_VER_8188E "NONE"151#define DPK_VER_8192E "NONE"152#define DPK_VER_8723B "NONE"153#define DPK_VER_8812A "NONE"154#define DPK_VER_8821A "NONE"155#define DPK_VER_8814A "NONE"156#define DPK_VER_8188F "NONE"157#define DPK_VER_8197F "0x08"158#define DPK_VER_8703B "NONE"159#define DPK_VER_8710B "NONE"160#define DPK_VER_8723D "NONE"161#define DPK_VER_8822B "NONE"162#define DPK_VER_8822C "0x19"163#define DPK_VER_8821C "NONE"164#define DPK_VER_8192F "0x0d"165#define DPK_VER_8198F "0x0e"166#define DPK_VER_8814B "0x08"167#define DPK_VER_8195B "0x0b"168#define DPK_VER_8812F "0x06"169#define DPK_VER_8197G "0x04"170171/*RFK_INIT version*/172#define RFK_INIT_VER_8822B "0x8"173#define RFK_INIT_VER_8822C "0x7"174#define RFK_INIT_VER_8195B "0x1"175#define RFK_INIT_VER_8198F "0x8"176#define RFK_INIT_VER_8814B "0xa"177#define RFK_INIT_VER_8812F "0x3"178#define RFK_INIT_VER_8197G "0x3"179180/*DACK version*/181#define DACK_VER_8822C "0x6"182#define DACK_VER_8814B "0x3"183184/*Kfree tracking version*/185#define KFREE_VER_8188E \186(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"187#define KFREE_VER_8192E \188(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"189#define KFREE_VER_8192F \190(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"191#define KFREE_VER_8723B \192(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"193#define KFREE_VER_8812A \194(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"195#define KFREE_VER_8821A \196(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"197#define KFREE_VER_8814A \198(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"199#define KFREE_VER_8188F \200(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"201#define KFREE_VER_8197F \202(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"203#define KFREE_VER_8703B \204(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"205#define KFREE_VER_8710B \206(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"207#define KFREE_VER_8723D \208(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"209#define KFREE_VER_8822B \210(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"211#define KFREE_VER_8822C \212(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"213#define KFREE_VER_8821C \214(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"215#define KFREE_VER_8814B \216(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"217#define KFREE_VER_8197G \218(dm->power_trim_data.flag & KFREE_FLAG_ON) ? "0x01" : "NONE"219220#define TSSI_VER_8812F "0x1"221#define TSSI_VER_8822C "0x1"222#define TSSI_VER_8821C "0x1"223#define TSSI_VER_8814B "0x1"224#define TSSI_VER_8197G "0x1"225226/*PA Bias Calibration version*/227#define PABIASK_VER_8188E \228(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"229#define PABIASK_VER_8192E \230(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"231#define PABIASK_VER_8192F \232(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"233#define PABIASK_VER_8723B \234(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"235#define PABIASK_VER_8812A \236(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"237#define PABIASK_VER_8821A \238(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"239#define PABIASK_VER_8814A \240(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"241#define PABIASK_VER_8188F \242(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"243#define PABIASK_VER_8197F \244(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"245#define PABIASK_VER_8703B \246(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"247#define PABIASK_VER_8710B \248(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"249#define PABIASK_VER_8723D \250(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"251#define PABIASK_VER_8822B \252(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"253#define PABIASK_VER_8822C \254(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"255#define PABIASK_VER_8821C \256(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"257#define PABIASK_VER_8814B \258(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"259#define PABIASK_VER_8197G \260(dm->power_trim_data.pa_bias_flag & PA_BIAS_FLAG_ON) ? "0x01" : "NONE"261262#define HALRF_IQK_VER \263(dm->support_ic_type == ODM_RTL8188E) ? IQK_VER_8188E : \264(dm->support_ic_type == ODM_RTL8192E) ? IQK_VER_8192E : \265(dm->support_ic_type == ODM_RTL8192F) ? IQK_VER_8192F : \266(dm->support_ic_type == ODM_RTL8723B) ? IQK_VER_8723B : \267(dm->support_ic_type == ODM_RTL8812) ? IQK_VER_8812A : \268(dm->support_ic_type == ODM_RTL8821) ? IQK_VER_8821A : \269(dm->support_ic_type == ODM_RTL8814A) ? IQK_VER_8814A : \270(dm->support_ic_type == ODM_RTL8188F) ? IQK_VER_8188F : \271(dm->support_ic_type == ODM_RTL8197F) ? IQK_VER_8197F : \272(dm->support_ic_type == ODM_RTL8703B) ? IQK_VER_8703B : \273(dm->support_ic_type == ODM_RTL8710B) ? IQK_VER_8710B : \274(dm->support_ic_type == ODM_RTL8723D) ? IQK_VER_8723D : \275(dm->support_ic_type == ODM_RTL8822B) ? IQK_VER_8822B : \276(dm->support_ic_type == ODM_RTL8822C) ? IQK_VER_8822C : \277(dm->support_ic_type == ODM_RTL8821C) ? IQK_VER_8821C : \278(dm->support_ic_type == ODM_RTL8814B) ? IQK_VER_8814B : \279(dm->support_ic_type == ODM_RTL8710C) ? IQK_VER_8710C : \280(dm->support_ic_type == ODM_RTL8197G) ? IQK_VER_8197G : "unknown"281282#define HALRF_LCK_VER \283(dm->support_ic_type == ODM_RTL8188E) ? LCK_VER_8188E : \284(dm->support_ic_type == ODM_RTL8192E) ? LCK_VER_8192E : \285(dm->support_ic_type == ODM_RTL8192F) ? LCK_VER_8192F : \286(dm->support_ic_type == ODM_RTL8723B) ? LCK_VER_8723B : \287(dm->support_ic_type == ODM_RTL8812) ? LCK_VER_8812A : \288(dm->support_ic_type == ODM_RTL8821) ? LCK_VER_8821A : \289(dm->support_ic_type == ODM_RTL8814A) ? LCK_VER_8814A : \290(dm->support_ic_type == ODM_RTL8188F) ? LCK_VER_8188F : \291(dm->support_ic_type == ODM_RTL8197F) ? LCK_VER_8197F : \292(dm->support_ic_type == ODM_RTL8703B) ? LCK_VER_8703B : \293(dm->support_ic_type == ODM_RTL8710B) ? LCK_VER_8710B : \294(dm->support_ic_type == ODM_RTL8723D) ? LCK_VER_8723D : \295(dm->support_ic_type == ODM_RTL8822B) ? LCK_VER_8822B : \296(dm->support_ic_type == ODM_RTL8822C) ? LCK_VER_8822C : \297(dm->support_ic_type == ODM_RTL8821C) ? LCK_VER_8821C : \298(dm->support_ic_type == ODM_RTL8814B) ? LCK_VER_8814B : \299(dm->support_ic_type == ODM_RTL8710C) ? LCK_VER_8710C : \300(dm->support_ic_type == ODM_RTL8710C) ? LCK_VER_8710C : "unknown"301#define HALRF_POWRTRACKING_VER \302(dm->support_ic_type == ODM_RTL8188E) ? PWRTRK_VER_8188E : \303(dm->support_ic_type == ODM_RTL8192E) ? PWRTRK_VER_8192E : \304(dm->support_ic_type == ODM_RTL8192F) ? PWRTRK_VER_8192F : \305(dm->support_ic_type == ODM_RTL8723B) ? PWRTRK_VER_8723B : \306(dm->support_ic_type == ODM_RTL8812) ? PWRTRK_VER_8812A : \307(dm->support_ic_type == ODM_RTL8821) ? PWRTRK_VER_8821A : \308(dm->support_ic_type == ODM_RTL8814A) ? PWRTRK_VER_8814A : \309(dm->support_ic_type == ODM_RTL8188F) ? PWRTRK_VER_8188F : \310(dm->support_ic_type == ODM_RTL8197F) ? PWRTRK_VER_8197F : \311(dm->support_ic_type == ODM_RTL8703B) ? PWRTRK_VER_8703B : \312(dm->support_ic_type == ODM_RTL8710B) ? PWRTRK_VER_8710B : \313(dm->support_ic_type == ODM_RTL8723D) ? PWRTRK_VER_8723D : \314(dm->support_ic_type == ODM_RTL8822B) ? PWRTRK_VER_8822B : \315(dm->support_ic_type == ODM_RTL8822C) ? PWRTRK_VER_8822C : \316(dm->support_ic_type == ODM_RTL8821C) ? PWRTRK_VER_8821C : \317(dm->support_ic_type == ODM_RTL8197G) ? PWRTRK_VER_8197G : "unknown"318319#define HALRF_DPK_VER \320(dm->support_ic_type == ODM_RTL8188E) ? DPK_VER_8188E : \321(dm->support_ic_type == ODM_RTL8192E) ? DPK_VER_8192E : \322(dm->support_ic_type == ODM_RTL8192F) ? DPK_VER_8192F : \323(dm->support_ic_type == ODM_RTL8723B) ? DPK_VER_8723B : \324(dm->support_ic_type == ODM_RTL8812) ? DPK_VER_8812A : \325(dm->support_ic_type == ODM_RTL8821) ? DPK_VER_8821A : \326(dm->support_ic_type == ODM_RTL8814A) ? DPK_VER_8814A : \327(dm->support_ic_type == ODM_RTL8188F) ? DPK_VER_8188F : \328(dm->support_ic_type == ODM_RTL8197F) ? DPK_VER_8197F : \329(dm->support_ic_type == ODM_RTL8198F) ? DPK_VER_8198F : \330(dm->support_ic_type == ODM_RTL8703B) ? DPK_VER_8703B : \331(dm->support_ic_type == ODM_RTL8710B) ? DPK_VER_8710B : \332(dm->support_ic_type == ODM_RTL8723D) ? DPK_VER_8723D : \333(dm->support_ic_type == ODM_RTL8822B) ? DPK_VER_8822B : \334(dm->support_ic_type == ODM_RTL8822C) ? DPK_VER_8822C : \335(dm->support_ic_type == ODM_RTL8821C) ? DPK_VER_8821C : \336(dm->support_ic_type == ODM_RTL8814B) ? DPK_VER_8814B : \337(dm->support_ic_type == ODM_RTL8197G) ? DPK_VER_8197G : "unknown"338339#define HALRF_KFREE_VER \340(dm->support_ic_type == ODM_RTL8188E) ? KFREE_VER_8188E : \341(dm->support_ic_type == ODM_RTL8192E) ? KFREE_VER_8192E : \342(dm->support_ic_type == ODM_RTL8192F) ? KFREE_VER_8192F : \343(dm->support_ic_type == ODM_RTL8723B) ? KFREE_VER_8723B : \344(dm->support_ic_type == ODM_RTL8812) ? KFREE_VER_8812A : \345(dm->support_ic_type == ODM_RTL8821) ? KFREE_VER_8821A : \346(dm->support_ic_type == ODM_RTL8814A) ? KFREE_VER_8814A : \347(dm->support_ic_type == ODM_RTL8188F) ? KFREE_VER_8188F : \348(dm->support_ic_type == ODM_RTL8197F) ? KFREE_VER_8197F : \349(dm->support_ic_type == ODM_RTL8703B) ? KFREE_VER_8703B : \350(dm->support_ic_type == ODM_RTL8710B) ? KFREE_VER_8710B : \351(dm->support_ic_type == ODM_RTL8723D) ? KFREE_VER_8723D : \352(dm->support_ic_type == ODM_RTL8822B) ? KFREE_VER_8822B : \353(dm->support_ic_type == ODM_RTL8822C) ? KFREE_VER_8822C : \354(dm->support_ic_type == ODM_RTL8821C) ? KFREE_VER_8821C : \355(dm->support_ic_type == ODM_RTL8814B) ? KFREE_VER_8814B : \356(dm->support_ic_type == ODM_RTL8197G) ? KFREE_VER_8197G : "unknown"357358#define HALRF_TSSI_VER \359(dm->support_ic_type == ODM_RTL8812F) ? TSSI_VER_8812F : \360(dm->support_ic_type == ODM_RTL8822C) ? TSSI_VER_8822C : \361(dm->support_ic_type == ODM_RTL8821C) ? TSSI_VER_8821C : \362(dm->support_ic_type == ODM_RTL8814B) ? TSSI_VER_8814B : \363(dm->support_ic_type == ODM_RTL8197G) ? TSSI_VER_8197G : "unknown"364365#define HALRF_PABIASK_VER \366(dm->support_ic_type == ODM_RTL8188E) ? PABIASK_VER_8188E : \367(dm->support_ic_type == ODM_RTL8192E) ? PABIASK_VER_8192E : \368(dm->support_ic_type == ODM_RTL8192F) ? PABIASK_VER_8192F : \369(dm->support_ic_type == ODM_RTL8723B) ? PABIASK_VER_8723B : \370(dm->support_ic_type == ODM_RTL8812) ? PABIASK_VER_8812A : \371(dm->support_ic_type == ODM_RTL8821) ? PABIASK_VER_8821A : \372(dm->support_ic_type == ODM_RTL8814A) ? PABIASK_VER_8814A : \373(dm->support_ic_type == ODM_RTL8188F) ? PABIASK_VER_8188F : \374(dm->support_ic_type == ODM_RTL8197F) ? PABIASK_VER_8197F : \375(dm->support_ic_type == ODM_RTL8703B) ? PABIASK_VER_8703B : \376(dm->support_ic_type == ODM_RTL8710B) ? PABIASK_VER_8710B : \377(dm->support_ic_type == ODM_RTL8723D) ? PABIASK_VER_8723D : \378(dm->support_ic_type == ODM_RTL8822B) ? PABIASK_VER_8822B : \379(dm->support_ic_type == ODM_RTL8822C) ? PABIASK_VER_8822C : \380(dm->support_ic_type == ODM_RTL8821C) ? PABIASK_VER_8821C : \381(dm->support_ic_type == ODM_RTL8814B) ? PABIASK_VER_8814B : \382(dm->support_ic_type == ODM_RTL8197G) ? PABIASK_VER_8197G : "unknown"383384#define HALRF_RFK_INIT_VER \385(dm->support_ic_type == ODM_RTL8822B) ? RFK_INIT_VER_8822B : \386(dm->support_ic_type == ODM_RTL8822C) ? RFK_INIT_VER_8822C : \387(dm->support_ic_type == ODM_RTL8198F) ? RFK_INIT_VER_8198F : \388(dm->support_ic_type == ODM_RTL8814B) ? RFK_INIT_VER_8814B : \389(dm->support_ic_type == ODM_RTL8197G) ? RFK_INIT_VER_8197G : "unknown"390391#define HALRF_DACK_VER \392(dm->support_ic_type == ODM_RTL8822C) ? DACK_VER_8822C : \393(dm->support_ic_type == ODM_RTL8814B) ? DACK_VER_8814B : "unknown"394395#define IQK_THRESHOLD 8396#define DPK_THRESHOLD 4397#define HALRF_ABS(a,b) ((a>b) ? (a-b) : (b-a))398#define SN 100399400#define CCK_TSSI_NUM 6401#define OFDM_2G_TSSI_NUM 5402#define OFDM_5G_TSSI_NUM 14403404405406/*@===========================================================*/407/*AGC RX High Power mode*/408/*@===========================================================*/409#define lna_low_gain_1 0x64410#define lna_low_gain_2 0x5A411#define lna_low_gain_3 0x58412413/*@============================================================*/414/*@ enumeration */415/*@============================================================*/416417enum halrf_func_idx { /*F_XXX = PHYDM XXX function*/418RF00_PWR_TRK = 0, /*Pow_trk, TSSI_trk*/419RF01_IQK = 1, /*LOK, IQK*/420RF02_LCK = 2,421RF03_DPK = 3,422RF04_TXGAPK = 4,423RF05_DACK = 5,424RF06_DPK_TRK = 6,425RF07_2GBAND_SHIFT = 7426};427428enum halrf_ability {429HAL_RF_TX_PWR_TRACK = BIT(RF00_PWR_TRK),430HAL_RF_IQK = BIT(RF01_IQK),431HAL_RF_LCK = BIT(RF02_LCK),432HAL_RF_DPK = BIT(RF03_DPK),433HAL_RF_TXGAPK = BIT(RF04_TXGAPK),434HAL_RF_DACK = BIT(RF05_DACK),435HAL_RF_DPK_TRACK = BIT(RF06_DPK_TRK),436HAL_2GBAND_SHIFT = BIT(RF07_2GBAND_SHIFT)437};438439enum halrf_shift_band {440HAL_RF_2P4 = 0,441HAL_RF_2P3 = 1,442HAL_RF_2P5 = 2443};444445enum halrf_dbg_comp {446DBG_RF_TX_PWR_TRACK = BIT(RF00_PWR_TRK),447DBG_RF_IQK = BIT(RF01_IQK),448DBG_RF_LCK = BIT(RF02_LCK),449DBG_RF_DPK = BIT(RF03_DPK),450DBG_RF_TXGAPK = BIT(RF04_TXGAPK),451DBG_RF_DACK = BIT(RF05_DACK),452DBG_RF_MP = BIT(29),453DBG_RF_TMP = BIT(30),454DBG_RF_INIT = BIT(31)455};456457enum halrf_cmninfo_init {458HALRF_CMNINFO_ABILITY = 0,459HALRF_CMNINFO_DPK_EN = 1,460HALRF_CMNINFO_EEPROM_THERMAL_VALUE,461HALRF_CMNINFO_RFK_FORBIDDEN,462HALRF_CMNINFO_IQK_SEGMENT,463HALRF_CMNINFO_RATE_INDEX,464HALRF_CMNINFO_PWT_TYPE,465HALRF_CMNINFO_MP_PSD_POINT,466HALRF_CMNINFO_MP_PSD_START_POINT,467HALRF_CMNINFO_MP_PSD_STOP_POINT,468HALRF_CMNINFO_MP_PSD_AVERAGE,469HALRF_CMNINFO_IQK_TIMES470};471472enum halrf_cmninfo_hook {473HALRF_CMNINFO_CON_TX,474HALRF_CMNINFO_SINGLE_TONE,475HALRF_CMNINFO_CARRIER_SUPPRESSION,476HALRF_CMNINFO_MP_RATE_INDEX,477HALRF_CMNINFO_MANUAL_RF_SUPPORTABILITY478};479480enum halrf_lna_set {481HALRF_LNA_DISABLE = 0,482HALRF_LNA_ENABLE = 1,483};484485enum halrf_k_segment_time {486SEGMENT_FREE = 0,487SEGMENT_10MS = 10, /*10ms*/488SEGMENT_30MS = 30, /*30ms*/489SEGMENT_50MS = 50, /*50ms*/490};491492#define POWER_INDEX_DIFF 4493#define TSSI_TXAGC_DIFF 2494495#define TSSI_CODE_NUM 84496497#define TSSI_SLOPE_2G 8498#define TSSI_SLOPE_5G 5499500#define TSSI_EFUSE_NUM 25501#define TSSI_EFUSE_KFREE_NUM 4502503struct _halrf_tssi_data {504s32 cck_offset_patha;505s32 cck_offset_pathb;506s32 tssi_trk_txagc_offset[PHYDM_MAX_RF_PATH];507s32 delta_tssi_txagc_offset[PHYDM_MAX_RF_PATH];508s16 txagc_codeword[TSSI_CODE_NUM];509u16 tssi_codeword[TSSI_CODE_NUM];510s8 tssi_efuse[PHYDM_MAX_RF_PATH][TSSI_EFUSE_NUM];511s8 tssi_kfree_efuse[PHYDM_MAX_RF_PATH][TSSI_EFUSE_KFREE_NUM];512u8 thermal[PHYDM_MAX_RF_PATH];513u32 index[PHYDM_MAX_RF_PATH][14];514u8 do_tssi;515u8 get_thermal;516u8 tssi_finish_bit[PHYDM_MAX_RF_PATH];517u8 thermal_trigger;518};519520/*@============================================================*/521/*@ structure */522/*@============================================================*/523524struct _hal_rf_ {525/*hook*/526u8 *test1;527528/*update*/529u32 rf_supportability;530u8 rf_shift_band;531/*u32 halrf_tssi_data;*/532533u8 eeprom_thermal;534u8 dpk_en; /*Enable Function DPK OFF/ON = 0/1*/535boolean dpk_done;536u64 dpk_progressing_time;537u64 iqk_progressing_time;538u32 fw_ver;539540boolean *is_con_tx;541boolean *is_single_tone;542boolean *is_carrier_suppresion;543boolean is_dpk_in_progress;544boolean is_tssi_in_progress;545boolean is_bt_iqk_timeout;546boolean aac_checked;547548u8 *mp_rate_index;549u32 *manual_rf_supportability;550u32 p_rate_index;551u8 pwt_type;552u32 rf_dbg_comp;553struct _halrf_psd_data halrf_psd_data;554struct _halrf_tssi_data halrf_tssi_data;555u8 power_track_type;556u8 pre_band_type;557};558559/*@============================================================*/560/*@ function prototype */561/*@============================================================*/562563#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\564RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\565RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\566RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\567RTL8197G_SUPPORT == 1)568void halrf_iqk_info_dump(void *dm_void, u32 *_used, char *output,569u32 *_out_len);570571void halrf_iqk_hwtx_check(void *dm_void, boolean is_check);572#endif573574u8 halrf_match_iqk_version(void *dm_void);575576void halrf_support_ability_debug(void *dm_void, char input[][16], u32 *_used,577char *output, u32 *_out_len);578#ifdef CONFIG_2G_BAND_SHIFT579void halrf_support_band_shift_debug(void *dm_void, char input[][16], u32 *_used,580char *output, u32 *_out_len);581#endif582void halrf_cmn_info_init(void *dm_void, enum halrf_cmninfo_init cmn_info,583u32 value);584585void halrf_cmn_info_hook(void *dm_void, enum halrf_cmninfo_hook cmn_info,586void *value);587588void halrf_cmn_info_set(void *dm_void, u32 cmn_info, u64 value);589590u64 halrf_cmn_info_get(void *dm_void, u32 cmn_info);591592void halrf_watchdog(void *dm_void);593594void halrf_supportability_init(void *dm_void);595596void halrf_init(void *dm_void);597598void halrf_iqk_trigger(void *dm_void, boolean is_recovery);599600void halrf_rfk_handshake(void *dm_void, boolean is_before_k);601602void halrf_rf_k_connect_trigger(void *dm_void, boolean is_recovery,603enum halrf_k_segment_time seg_time);604605void halrf_segment_iqk_trigger(void *dm_void, boolean clear,606boolean segment_iqk);607608void halrf_lck_trigger(void *dm_void);609610void halrf_iqk_debug(void *dm_void, u32 *const dm_value, u32 *_used,611char *output, u32 *_out_len);612613void phydm_get_iqk_cfir(void *dm_void, u8 idx, u8 path, boolean debug);614615void halrf_iqk_xym_read(void *dm_void, u8 path, u8 xym_type);616617void halrf_rf_lna_setting(void *dm_void, enum halrf_lna_set type);618619void halrf_do_imr_test(void *dm_void, u8 data);620621u32 halrf_psd_log2base(u32 val);622623void halrf_dpk_trigger(void *dm_void);624625u8 halrf_dpk_result_check(void *dm_void);626627void halrf_dpk_sram_read(void *dm_void);628629void halrf_dpk_enable_disable(void *dm_void);630631void halrf_dpk_track(void *dm_void);632633void halrf_dpk_reload(void *dm_void);634635void halrf_dpk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size);636637/*Global function*/638639void halrf_reload_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num);640641void halrf_reload_bprf(void *dm_void, u32 *bp_reg, u32 bp[][4], u32 num,642u8 ss);643644void halrf_bp(void *dm_void, u32 *bp_reg, u32 *bp, u32 num);645646void halrf_bprf(void *dm_void, u32 *bp_reg, u32 bp[][4], u32 num, u8 ss);647648void halrf_mode(void *dm_void, u32 *i_value, u32 *q_value);649650boolean halrf_compare(void *dm_void, u32 value);651652u32 halrf_delta(void *dm_void, u32 v1, u32 v2);653654void halrf_minmax_compare(void *dm_void, u32 value, u32 *min, u32 *max);655656void halrf_b_sort(void *dm_void, u32 *iv, u32 *qv);657658void halrf_bubble(void *dm_void, u32 *v1, u32 *v2);659660void halrf_swap(void *dm_void, u32 *v1, u32 *v2);661662enum hal_status663halrf_config_rfk_with_header_file(void *dm_void, u32 config_type);664665#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1 ||\666RTL8195B_SUPPORT == 1 || RTL8198F_SUPPORT == 1 ||\667RTL8814B_SUPPORT == 1 || RTL8822C_SUPPORT == 1 ||\668RTL8812F_SUPPORT == 1 || RTL8710C_SUPPORT == 1 ||\669RTL8197G_SUPPORT == 1)670void halrf_iqk_dbg(void *dm_void);671#endif672673void halrf_tssi_get_efuse(void *dm_void);674675void halrf_do_tssi(void *dm_void);676677void halrf_do_thermal(void *dm_void);678679u32 halrf_set_tssi_value(void *dm_void, u32 tssi_value);680681void halrf_set_tssi_power(void *dm_void, s8 power);682683void halrf_tssi_set_de_for_tx_verify(void *dm_void, u32 tssi_de, u8 path);684685u32 halrf_query_tssi_value(void *dm_void);686687void halrf_tssi_cck(void *dm_void);688689void halrf_thermal_cck(void *dm_void);690691void halrf_tssi_set_de(void *dm_void);692693void halrf_tssi_dck(void *dm_void, u8 direct_do);694695void halrf_calculate_tssi_codeword(void *dm_void);696697void halrf_set_tssi_codeword(void *dm_void);698699u8 halrf_get_tssi_codeword_for_txindex(void *dm_void);700701u32 halrf_tssi_get_de(void *dm_void, u8 path);702703void halrf_tssi_trigger(void *dm_void);704705void halrf_set_dpk_track(void *dm_void, u8 enable);706707void halrf_set_dpkbychannel(void *dm_void, boolean dpk_by_ch);708709void halrf_set_dpkenable(void *dm_void, boolean is_dpk_enable);710711boolean halrf_get_dpkbychannel(void *dm_void);712713boolean halrf_get_dpkenable(void *dm_void);714715void _iqk_check_if_reload(void *dm_void);716717void halrf_do_rxbb_dck(void *dm_void);718719void config_halrf_path_adda_setting_trigger(void *dm_void);720721void halrf_reload_iqk(void *dm_void, boolean reset);722723void halrf_dack_dbg(void *dm_void);724725void halrf_iqk_info_rsvd_page(void *dm_void, u8 *buf, u32 *buf_size);726727void halrf_set_rfsupportability(void *dm_void);728#endif /*__HALRF_H__*/729730731