2018-06-22 16:48:32 +00:00
|
|
|
/******************************************************************************
|
|
|
|
*
|
|
|
|
* Copyright(c) 2007 - 2017 Realtek Corporation.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
|
|
* under the terms of version 2 of the GNU General Public License as
|
|
|
|
* published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
|
* more details.
|
|
|
|
*
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _HALRF_H__
|
|
|
|
#define _HALRF_H__
|
|
|
|
|
|
|
|
/*============================================================*/
|
|
|
|
/*include files*/
|
|
|
|
/*============================================================*/
|
2018-07-02 16:49:32 +00:00
|
|
|
#include "halrf/halrf_psd.h"
|
2018-06-22 16:48:32 +00:00
|
|
|
|
|
|
|
|
|
|
|
/*============================================================*/
|
|
|
|
/*Definition */
|
|
|
|
/*============================================================*/
|
|
|
|
/*IQK version*/
|
|
|
|
#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN))
|
|
|
|
#define IQK_VERSION_8188E "0x14"
|
|
|
|
#define IQK_VERSION_8192E "0x01"
|
2018-07-02 16:49:32 +00:00
|
|
|
#define IQK_VERSION_8723B "0x1e"
|
2018-06-22 16:48:32 +00:00
|
|
|
#define IQK_VERSION_8812A "0x01"
|
|
|
|
#define IQK_VERSION_8821A "0x01"
|
|
|
|
#elif (DM_ODM_SUPPORT_TYPE & (ODM_CE))
|
|
|
|
#define IQK_VERSION_8188E "0x01"
|
|
|
|
#define IQK_VERSION_8192E "0x01"
|
2018-07-02 16:49:32 +00:00
|
|
|
#define IQK_VERSION_8723B "0x1e"
|
2018-06-22 16:48:32 +00:00
|
|
|
#define IQK_VERSION_8812A "0x01"
|
|
|
|
#define IQK_VERSION_8821A "0x01"
|
|
|
|
#elif (DM_ODM_SUPPORT_TYPE & (ODM_AP))
|
|
|
|
#define IQK_VERSION_8188E "0x01"
|
|
|
|
#define IQK_VERSION_8192E "0x01"
|
2018-07-02 16:49:32 +00:00
|
|
|
#define IQK_VERSION_8723B "0x1e"
|
2018-06-22 16:48:32 +00:00
|
|
|
#define IQK_VERSION_8812A "0x01"
|
|
|
|
#define IQK_VERSION_8821A "0x01"
|
|
|
|
#endif
|
|
|
|
#define IQK_VERSION_8814A "0x0f"
|
|
|
|
#define IQK_VERSION_8188F "0x01"
|
|
|
|
#define IQK_VERSION_8197F "0x01"
|
2018-07-02 16:49:32 +00:00
|
|
|
#define IQK_VERSION_8703B "0x05"
|
2018-06-22 16:48:32 +00:00
|
|
|
#define IQK_VERSION_8710B "0x01"
|
2018-07-02 16:49:32 +00:00
|
|
|
#define IQK_VERSION_8723D "0x02"
|
|
|
|
#define IQK_VERSION_8822B "0x2f"
|
2018-06-22 16:48:32 +00:00
|
|
|
#define IQK_VERSION_8821C "0x23"
|
|
|
|
|
|
|
|
/*LCK version*/
|
|
|
|
#define LCK_VERSION_8188E "0x01"
|
|
|
|
#define LCK_VERSION_8192E "0x01"
|
|
|
|
#define LCK_VERSION_8723B "0x01"
|
|
|
|
#define LCK_VERSION_8812A "0x01"
|
|
|
|
#define LCK_VERSION_8821A "0x01"
|
|
|
|
#define LCK_VERSION_8814A "0x01"
|
|
|
|
#define LCK_VERSION_8188F "0x01"
|
|
|
|
#define LCK_VERSION_8197F "0x01"
|
|
|
|
#define LCK_VERSION_8703B "0x01"
|
|
|
|
#define LCK_VERSION_8710B "0x01"
|
|
|
|
#define LCK_VERSION_8723D "0x01"
|
|
|
|
#define LCK_VERSION_8822B "0x01"
|
|
|
|
#define LCK_VERSION_8821C "0x01"
|
|
|
|
|
|
|
|
|
|
|
|
#define HALRF_IQK_VER (p_dm->support_ic_type == ODM_RTL8188E)? IQK_VERSION_8188E :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8192E)? IQK_VERSION_8192E :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8723B)? IQK_VERSION_8723B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8812)? IQK_VERSION_8812A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8821)? IQK_VERSION_8821A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8814A)? IQK_VERSION_8814A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8188F)? IQK_VERSION_8188F :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8197F)? IQK_VERSION_8197F :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8703B)? IQK_VERSION_8703B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8710B)? IQK_VERSION_8710B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8723D)? IQK_VERSION_8723D :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8822B)? IQK_VERSION_8822B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8821C)? IQK_VERSION_8821C :"unknown"
|
|
|
|
|
|
|
|
|
|
|
|
#define HALRF_LCK_VER (p_dm->support_ic_type == ODM_RTL8188E)? LCK_VERSION_8188E :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8192E)? LCK_VERSION_8192E :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8723B)? LCK_VERSION_8723B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8812)? LCK_VERSION_8812A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8821)? LCK_VERSION_8821A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8814A)? LCK_VERSION_8814A :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8188F)? LCK_VERSION_8188F :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8197F)? LCK_VERSION_8197F :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8703B)? LCK_VERSION_8703B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8710B)? LCK_VERSION_8710B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8723D)? LCK_VERSION_8723D :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8822B)? LCK_VERSION_8822B :\
|
|
|
|
(p_dm->support_ic_type == ODM_RTL8821C)? LCK_VERSION_8821C :"unknown"
|
|
|
|
#define HALRF_DPK_VER "0x02"
|
|
|
|
|
|
|
|
#define IQK_THRESHOLD 8
|
|
|
|
#define DPK_THRESHOLD 4
|
|
|
|
|
|
|
|
/*============================================================*/
|
|
|
|
/* enumeration */
|
|
|
|
/*============================================================*/
|
|
|
|
enum halrf_ability_e {
|
|
|
|
|
|
|
|
HAL_RF_TX_PWR_TRACK = BIT(0),
|
|
|
|
HAL_RF_IQK = BIT(1),
|
|
|
|
HAL_RF_LCK = BIT(2),
|
|
|
|
HAL_RF_DPK = BIT(3),
|
|
|
|
HAL_RF_TXGAPK = BIT(4)
|
|
|
|
};
|
|
|
|
|
|
|
|
enum halrf_cmninfo_init_e {
|
|
|
|
HALRF_CMNINFO_ABILITY = 0,
|
|
|
|
HALRF_CMNINFO_DPK_EN = 1,
|
|
|
|
HALRF_CMNINFO_EEPROM_THERMAL_VALUE,
|
|
|
|
HALRF_CMNINFO_FW_VER,
|
|
|
|
HALRF_CMNINFO_RFK_FORBIDDEN,
|
|
|
|
HALRF_CMNINFO_IQK_SEGMENT,
|
2018-07-02 16:49:32 +00:00
|
|
|
HALRF_CMNINFO_RATE_INDEX,
|
|
|
|
HALRF_CMNINFO_MP_PSD_POINT,
|
|
|
|
HALRF_CMNINFO_MP_PSD_START_POINT,
|
|
|
|
HALRF_CMNINFO_MP_PSD_STOP_POINT,
|
|
|
|
HALRF_CMNINFO_MP_PSD_AVERAGE
|
2018-06-22 16:48:32 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
enum halrf_cmninfo_hook_e {
|
|
|
|
HALRF_CMNINFO_CON_TX,
|
|
|
|
HALRF_CMNINFO_SINGLE_TONE,
|
|
|
|
HALRF_CMNINFO_CARRIER_SUPPRESSION,
|
|
|
|
HALRF_CMNINFO_MP_RATE_INDEX
|
|
|
|
};
|
|
|
|
|
|
|
|
enum phydm_lna_set {
|
|
|
|
phydm_lna_disable = 0,
|
|
|
|
phydm_lna_enable = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*============================================================*/
|
|
|
|
/* structure */
|
|
|
|
/*============================================================*/
|
|
|
|
|
|
|
|
struct _hal_rf_ {
|
|
|
|
/*hook*/
|
|
|
|
u8 *test1;
|
|
|
|
|
|
|
|
/*update*/
|
|
|
|
u32 rf_supportability;
|
|
|
|
|
|
|
|
u8 eeprom_thermal;
|
|
|
|
u8 dpk_en; /*Enable Function DPK OFF/ON = 0/1*/
|
|
|
|
boolean dpk_done;
|
|
|
|
u32 fw_ver;
|
|
|
|
|
|
|
|
boolean *p_is_con_tx;
|
|
|
|
boolean *p_is_single_tone;
|
|
|
|
boolean *p_is_carrier_suppresion;
|
|
|
|
|
|
|
|
u8 *p_mp_rate_index;
|
|
|
|
u32 p_rate_index;
|
2018-07-02 16:49:32 +00:00
|
|
|
#if (DM_ODM_SUPPORT_TYPE & ODM_WIN)
|
|
|
|
struct _halrf_psd_data halrf_psd_data;
|
|
|
|
#endif
|
2018-06-22 16:48:32 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/*============================================================*/
|
|
|
|
/* function prototype */
|
|
|
|
/*============================================================*/
|
|
|
|
|
|
|
|
void halrf_basic_profile(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 *_used,
|
|
|
|
char *output,
|
|
|
|
u32 *_out_len
|
|
|
|
);
|
|
|
|
#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
|
|
|
|
void halrf_iqk_info_dump(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 *_used,
|
|
|
|
char *output,
|
|
|
|
u32 *_out_len
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_iqk_hwtx_check(
|
|
|
|
void *p_dm_void,
|
|
|
|
boolean is_check
|
|
|
|
);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_support_ability_debug(
|
|
|
|
void *p_dm_void,
|
|
|
|
char input[][16],
|
|
|
|
u32 *_used,
|
|
|
|
char *output,
|
|
|
|
u32 *_out_len
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_cmn_info_init(
|
|
|
|
void *p_dm_void,
|
|
|
|
enum halrf_cmninfo_init_e cmn_info,
|
|
|
|
u32 value
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_cmn_info_hook(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 cmn_info,
|
|
|
|
void *p_value
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_cmn_info_set(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 cmn_info,
|
|
|
|
u64 value
|
|
|
|
);
|
|
|
|
|
|
|
|
u64
|
|
|
|
halrf_cmn_info_get(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 cmn_info
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_watchdog(
|
|
|
|
void *p_dm_void
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_supportability_init(
|
|
|
|
void *p_dm_void
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_init(
|
|
|
|
void *p_dm_void
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_iqk_trigger(
|
|
|
|
void *p_dm_void,
|
|
|
|
boolean is_recovery
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_segment_iqk_trigger(
|
|
|
|
void *p_dm_void,
|
|
|
|
boolean clear,
|
|
|
|
boolean segment_iqk
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_lck_trigger(
|
|
|
|
void *p_dm_void
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_iqk_debug(
|
|
|
|
void *p_dm_void,
|
|
|
|
u32 *const dm_value,
|
|
|
|
u32 *_used,
|
|
|
|
char *output,
|
|
|
|
u32 *_out_len
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
phydm_get_iqk_cfir(
|
|
|
|
void *p_dm_void,
|
|
|
|
u8 idx,
|
|
|
|
u8 path,
|
|
|
|
boolean debug
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_iqk_xym_read(
|
|
|
|
void *p_dm_void,
|
|
|
|
u8 path,
|
|
|
|
u8 xym_type
|
|
|
|
);
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_rf_lna_setting(
|
|
|
|
void *p_dm_void,
|
|
|
|
enum phydm_lna_set type
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
halrf_do_imr_test(
|
|
|
|
void *p_dm_void,
|
|
|
|
u8 data
|
|
|
|
);
|
|
|
|
|
|
|
|
u32
|
|
|
|
halrf_psd_log2base(
|
|
|
|
IN u32 val
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
#if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
|
|
|
|
void halrf_iqk_dbg(void *p_dm_void);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|