/****************************************************************************** * * 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 __PHYDMCCX_H__ #define __PHYDMCCX_H__ #define CCX_EN 1 #define IGI_TO_NHM_TH_MULTIPLIER 2 #define CCA_CAP 14 enum nhm_setting { SET_NHM_SETTING, STORE_NHM_SETTING, RESTORE_NHM_SETTING }; enum nhm_inexclude_cca { NHM_EXCLUDE_CCA, NHM_INCLUDE_CCA }; enum nhm_inexclude_txon { NHM_EXCLUDE_TXON, NHM_INCLUDE_TXON }; struct _CCX_INFO { /*Settings*/ u8 nhm_th[11]; u16 nhm_period; /* 4us per unit */ u16 clm_period; /* 4us per unit */ enum nhm_inexclude_txon nhm_inexclude_txon; enum nhm_inexclude_cca nhm_inexclude_cca; /*Previous Settings*/ u8 nhm_th_restore[11]; u16 nhm_period_restore; /* 4us per unit */ u16 clm_period_restore; /* 4us per unit */ enum nhm_inexclude_txon nhm_inexclude_txon_restore; enum nhm_inexclude_cca nhm_inexclude_cca_restore; /*Report*/ u8 nhm_result[12]; u8 nhm_ratio; /*1% per nuit, it means the interference igi can't overcome.*/ u8 nhm_result_total; u16 nhm_duration; u16 clm_result; u8 clm_ratio; boolean echo_clm_en; u8 echo_igi; /* nhm_result comes from this igi */ }; /*NHM*/ void phydm_nhm_init( void *p_dm_void ); boolean phydm_cal_nhm_cnt( void *p_dm_void ); void phydm_nhm_setting( void *p_dm_void, u8 nhm_setting ); void phydm_nhm_trigger( void *p_dm_void ); void phydm_get_nhm_result( void *p_dm_void ); boolean phydm_check_nhm_rdy( void *p_dm_void ); /*CLM*/ void phydm_clm_setting( void *p_dm_void ); void phydm_clm_trigger( void *p_dm_void ); boolean phydm_check_clm_rdy( void *p_dm_void ); void phydm_get_clm_result( void *p_dm_void ); void phydm_ccx_monitor( void *p_dm_void ); void phydm_ccx_monitor_trigger( void *p_dm_void, u16 monitor_time ); void phydm_ccx_monitor_result( void *p_dm_void ); void phydm_set_nhm_th_by_igi( void *p_dm_void, u8 igi ); #endif