/******************************************************************************
 *
 * 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.
 *
 * The full GNU General Public License is included in this distribution in the
 * file called LICENSE.
 *
 * 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 __PHYDM_CCK_PD_H__
#define __PHYDM_CCK_PD_H__

#define CCK_PD_VERSION "1.0" /* 2017.05.09  Dino, Add phydm_cck_pd.h*/

/*
 * 1 ============================================================
 * 1  Definition
 * 1 ============================================================
 */

#define AAA_BASE 4
#define AAA_STEP 2

#define CCK_FA_MA_RESET 0xffffffff

#define EXTEND_CCK_CCATH_AAA_IC (ODM_RTL8197F | ODM_RTL8821C | ODM_RTL8723D | ODM_RTL8710B)
#define EXTEND_CCK_CCATH_92F_IC ODM_RTL8192F

/*
 * 1 ============================================================
 * 1  structure
 * 1 ============================================================
 */

#ifdef PHYDM_SUPPORT_CCKPD
struct phydm_cckpd_struct {
	u8		cur_cck_cca_thres; /*0xA0A*/
	u8		cck_cca_th_aaa; /*0xAAA*/
	u8		cur_cck_pd_20m_1r;
	u8		cur_cck_pd_20m_2r;
	u8		cur_cck_pd_40m_1r;
	u8		cur_cck_pd_40m_2r;
	u8		cur_cck_cs_ratio_20m_1r;
	u8		cur_cck_cs_ratio_20m_2r;
	u8		cur_cck_cs_ratio_40m_1r;
	u8		cur_cck_cs_ratio_40m_2r;
	u32		cck_fa_ma;
	u8		cckpd_bkp;
	u32		rvrt_val[2];
	u8		pause_lv;
};
#endif

/*
 * 1 ============================================================
 * 1  enumeration
 * 1 ============================================================
 */

/*
 * 1 ============================================================
 * 1  function prototype
 * 1 ============================================================
 */

void phydm_set_cckpd_val(void *dm_void, u32 *val_buf, u8 val_len);

void phydm_cck_pd_th(void *dm_void);

void odm_pause_cck_packet_detection(void *dm_void,
				    enum phydm_pause_type pause_type,
				    enum phydm_pause_level pause_level,
				    u8 cck_pd_threshold);

void phydm_cck_pd_init(void *dm_void);

#endif
