/* SPDX-License-Identifier: GPL-2.0 */
/******************************************************************************
 *
 * Copyright(c) 2007 - 2016  Realtek Corporation.
 *
 * Contact Information:
 * wlanfae <wlanfae@realtek.com>
 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
 * Hsinchu 300, Taiwan.
 *
 * Larry Finger <Larry.Finger@lwfinger.net>
 *
 *****************************************************************************/

#ifndef __PHYDMPOWERTRACKING_H__
#define __PHYDMPOWERTRACKING_H__

#define POWRTRACKING_VERSION "1.1"

#define DPK_DELTA_MAPPING_NUM 13
#define index_mapping_HP_NUM 15
#define OFDM_TABLE_SIZE 43
#define CCK_TABLE_SIZE 33
#define CCK_TABLE_SIZE_88F 21
#define TXSCALE_TABLE_SIZE 37
#define CCK_TABLE_SIZE_8723D 41
/* JJ ADD 20161014 */
#define CCK_TABLE_SIZE_8710B 41

#define TXPWR_TRACK_TABLE_SIZE 30
#define DELTA_SWINGIDX_SIZE 30
#define DELTA_SWINTSSI_SIZE 61
#define BAND_NUM 4

#define AVG_THERMAL_NUM 8
#define HP_THERMAL_NUM 8
#define IQK_MAC_REG_NUM 4
#define IQK_ADDA_REG_NUM 16
#define IQK_BB_REG_NUM_MAX 10

#define IQK_BB_REG_NUM 9

#define iqk_matrix_reg_num 8

extern u32 ofdm_swing_table[OFDM_TABLE_SIZE];
extern u8 cck_swing_table_ch1_ch13[CCK_TABLE_SIZE][8];
extern u8 cck_swing_table_ch14[CCK_TABLE_SIZE][8];

extern u32 ofdm_swing_table_new[OFDM_TABLE_SIZE];
extern u8 cck_swing_table_ch1_ch13_new[CCK_TABLE_SIZE][8];
extern u8 cck_swing_table_ch14_new[CCK_TABLE_SIZE][8];
extern u8 cck_swing_table_ch1_ch14_88f[CCK_TABLE_SIZE_88F][16];
extern u8 cck_swing_table_ch1_ch13_88f[CCK_TABLE_SIZE_88F][16];
extern u8 cck_swing_table_ch14_88f[CCK_TABLE_SIZE_88F][16];
extern u32 cck_swing_table_ch1_ch14_8723d[CCK_TABLE_SIZE_8723D];
/* JJ ADD 20161014 */
extern u32 cck_swing_table_ch1_ch14_8710b[CCK_TABLE_SIZE_8710B];

extern u32 tx_scaling_table_jaguar[TXSCALE_TABLE_SIZE];

/* <20121018, Kordan> In case fail to read TxPowerTrack.txt,
 * we use the table of 88E as the default table.
 */

#define dm_check_txpowertracking odm_txpowertracking_check

struct iqk_matrix_regs_setting {
	bool is_iqk_done;
	s32 value[3][iqk_matrix_reg_num];
	bool is_bw_iqk_result_saved[3];
};

struct dm_rf_calibration_struct {
	/* for tx power tracking */

	u32 rega24; /* for TempCCK */
	s32 rege94;
	s32 rege9c;
	s32 regeb4;
	s32 regebc;

	u8 tx_powercount;
	bool is_txpowertracking_init;
	bool is_txpowertracking;
	/* for mp mode, turn off txpwrtracking as default */
	u8 txpowertrack_control;
	u8 tm_trigger;
	u8 internal_pa_5g[2]; /* pathA / pathB */

	u8 thermal_meter
		[2]; /* thermal_meter, index 0 for RFIC0, and 1 for RFIC1 */
	u8 thermal_value;
	u8 thermal_value_lck;
	u8 thermal_value_iqk;
	s8 thermal_value_delta; /* delta of thermal_value and efuse thermal */
	u8 thermal_value_dpk;
	u8 thermal_value_avg[AVG_THERMAL_NUM];
	u8 thermal_value_avg_index;
	u8 thermal_value_rx_gain;
	u8 thermal_value_crystal;
	u8 thermal_value_dpk_store;
	u8 thermal_value_dpk_track;
	bool txpowertracking_in_progress;

	bool is_reloadtxpowerindex;
	u8 is_rf_pi_enable;
	u32 txpowertracking_callback_cnt; /* cosa add for debug */

	/* ---------------------- Tx power Tracking ------------------------- */
	u8 is_cck_in_ch14;
	u8 CCK_index;
	u8 OFDM_index[MAX_RF_PATH];
	s8 power_index_offset[MAX_RF_PATH];
	s8 delta_power_index[MAX_RF_PATH];
	s8 delta_power_index_last[MAX_RF_PATH];
	bool is_tx_power_changed;
	s8 xtal_offset;
	s8 xtal_offset_last;

	u8 thermal_value_hp[HP_THERMAL_NUM];
	u8 thermal_value_hp_index;
	struct iqk_matrix_regs_setting
		iqk_matrix_reg_setting[IQK_MATRIX_SETTINGS_NUM];
	u8 delta_lck;
	s8 bb_swing_diff_2g, bb_swing_diff_5g; /* Unit: dB */
	u8 delta_swing_table_idx_2g_cck_a_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_a_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_b_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_b_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_c_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_c_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_d_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2g_cck_d_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2ga_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2ga_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gb_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gb_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gc_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gc_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gd_p[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2gd_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5ga_p[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5ga_n[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gb_p[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gb_n[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gc_p[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gc_n[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gd_p[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_5gd_n[BAND_NUM][DELTA_SWINGIDX_SIZE];
	u8 delta_swing_tssi_table_2g_cck_a[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2g_cck_b[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2g_cck_c[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2g_cck_d[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2ga[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2gb[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2gc[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_2gd[DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_5ga[BAND_NUM][DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_5gb[BAND_NUM][DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_5gc[BAND_NUM][DELTA_SWINTSSI_SIZE];
	u8 delta_swing_tssi_table_5gd[BAND_NUM][DELTA_SWINTSSI_SIZE];
	s8 delta_swing_table_xtal_p[DELTA_SWINGIDX_SIZE];
	s8 delta_swing_table_xtal_n[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2ga_p_8188e[DELTA_SWINGIDX_SIZE];
	u8 delta_swing_table_idx_2ga_n_8188e[DELTA_SWINGIDX_SIZE];

	u8 bb_swing_idx_ofdm[MAX_RF_PATH];
	u8 bb_swing_idx_ofdm_current;
	u8 bb_swing_idx_ofdm_base[MAX_RF_PATH];
	bool default_bb_swing_index_flag;
	bool bb_swing_flag_ofdm;
	u8 bb_swing_idx_cck;
	u8 bb_swing_idx_cck_current;
	u8 bb_swing_idx_cck_base;
	u8 default_ofdm_index;
	u8 default_cck_index;
	bool bb_swing_flag_cck;

	s8 absolute_ofdm_swing_idx[MAX_RF_PATH];
	s8 remnant_ofdm_swing_idx[MAX_RF_PATH];
	s8 absolute_cck_swing_idx[MAX_RF_PATH];
	s8 remnant_cck_swing_idx;
	s8 modify_tx_agc_value; /*Remnat compensate value at tx_agc */
	bool modify_tx_agc_flag_path_a;
	bool modify_tx_agc_flag_path_b;
	bool modify_tx_agc_flag_path_c;
	bool modify_tx_agc_flag_path_d;
	bool modify_tx_agc_flag_path_a_cck;

	s8 kfree_offset[MAX_RF_PATH];

	/* ------------------------------------------------------------------ */

	/* for IQK */
	u32 regc04;
	u32 reg874;
	u32 regc08;
	u32 regb68;
	u32 regb6c;
	u32 reg870;
	u32 reg860;
	u32 reg864;

	bool is_iqk_initialized;
	bool is_lck_in_progress;
	bool is_antenna_detected;
	bool is_need_iqk;
	bool is_iqk_in_progress;
	bool is_iqk_pa_off;
	u8 delta_iqk;
	u32 ADDA_backup[IQK_ADDA_REG_NUM];
	u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
	u32 IQK_BB_backup_recover[9];
	/* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}} */
	u32 IQK_BB_backup[IQK_BB_REG_NUM];
	u32 tx_iqc_8723b[2][3][2];
	/* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}} */
	u32 rx_iqc_8723b[2][2][2];
	/* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/
	u32 tx_iqc_8703b[3][2];
	/* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}*/
	u32 rx_iqc_8703b[2][2];
	/* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/
	u32 tx_iqc_8723d[2][3][2];
	/* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}*/
	u32 rx_iqc_8723d[2][2][2];
	/* JJ ADD 20161014 */
	/* { {S1: 0xc94, 0xc80, 0xc4c} , {S0: 0xc9c, 0xc88, 0xc4c}}*/
	u32 tx_iqc_8710b[2][3][2];
	/* { {S1: 0xc14, 0xca0} ,           {S0: 0xc14, 0xca0}}*/
	u32 rx_iqc_8710b[2][2][2];

	u8 iqk_step;
	u8 kcount;
	u8 retry_count[4][2]; /* [4]: path ABCD, [2] TXK, RXK */
	bool is_mp_mode;

	/* <James> IQK time measurement */
	u64 iqk_start_time;
	u64 iqk_progressing_time;
	u64 iqk_total_progressing_time;

	u32 lok_result;

	/* for APK */
	u32 ap_koutput[2][2]; /* path A/B; output1_1a/output1_2a */
	u8 is_ap_kdone;
	u8 is_apk_thermal_meter_ignore;

	/* DPK */
	bool is_dpk_fail;
	u8 is_dp_done;
	u8 is_dp_path_aok;
	u8 is_dp_path_bok;

	u32 tx_lok[2];
	u32 dpk_tx_agc;
	s32 dpk_gain;
	u32 dpk_thermal[4];
	s8 modify_tx_agc_value_ofdm;
	s8 modify_tx_agc_value_cck;

	/*Add by Yuchen for Kfree Phydm*/
	u8 reg_rf_kfree_enable; /*for registry*/
	u8 rf_kfree_enable; /*for efuse enable check*/
};

void odm_txpowertracking_check(void *dm_void);

void odm_txpowertracking_init(void *dm_void);

void odm_txpowertracking_check_ap(void *dm_void);

void odm_txpowertracking_thermal_meter_init(void *dm_void);

void odm_txpowertracking_init(void *dm_void);

void odm_txpowertracking_check_mp(void *dm_void);

void odm_txpowertracking_check_ce(void *dm_void);

#endif
