1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2016 - 2017 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef __HALBTC_WIFIONLY_H__ 16*4882a593Smuzhiyun #define __HALBTC_WIFIONLY_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #include <drv_types.h> 19*4882a593Smuzhiyun #include <hal_data.h> 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* Define the ICs that support wifi only cfg in coex. codes */ 22*4882a593Smuzhiyun #if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8822B) || defined(CONFIG_RTL8821C) || defined(CONFIG_RTL8822C) || defined(CONFIG_RTL8814B) 23*4882a593Smuzhiyun #define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 1 24*4882a593Smuzhiyun #else 25*4882a593Smuzhiyun #define CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG 0 26*4882a593Smuzhiyun #endif 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* Define the ICs that support hal btc common file structure */ 29*4882a593Smuzhiyun #if defined(CONFIG_RTL8822C) || (defined(CONFIG_RTL8192F) && defined(CONFIG_BT_COEXIST)) 30*4882a593Smuzhiyun #define CONFIG_BTCOEX_SUPPORT_BTC_CMN 1 31*4882a593Smuzhiyun #else 32*4882a593Smuzhiyun #define CONFIG_BTCOEX_SUPPORT_BTC_CMN 0 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #if (CONFIG_BTCOEX_SUPPORT_WIFI_ONLY_CFG == 1) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun typedef enum _WIFIONLY_CHIP_INTERFACE { 38*4882a593Smuzhiyun WIFIONLY_INTF_UNKNOWN = 0, 39*4882a593Smuzhiyun WIFIONLY_INTF_PCI = 1, 40*4882a593Smuzhiyun WIFIONLY_INTF_USB = 2, 41*4882a593Smuzhiyun WIFIONLY_INTF_SDIO = 3, 42*4882a593Smuzhiyun WIFIONLY_INTF_MAX 43*4882a593Smuzhiyun } WIFIONLY_CHIP_INTERFACE, *PWIFIONLY_CHIP_INTERFACE; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun typedef enum _WIFIONLY_CUSTOMER_ID { 46*4882a593Smuzhiyun CUSTOMER_NORMAL = 0, 47*4882a593Smuzhiyun CUSTOMER_HP_1 = 1 48*4882a593Smuzhiyun } WIFIONLY_CUSTOMER_ID, *PWIFIONLY_CUSTOMER_ID; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun struct wifi_only_haldata { 51*4882a593Smuzhiyun u16 customer_id; 52*4882a593Smuzhiyun u8 efuse_pg_antnum; 53*4882a593Smuzhiyun u8 efuse_pg_antpath; 54*4882a593Smuzhiyun u8 rfe_type; 55*4882a593Smuzhiyun u8 ant_div_cfg; 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun struct wifi_only_cfg { 59*4882a593Smuzhiyun void *Adapter; 60*4882a593Smuzhiyun struct wifi_only_haldata haldata_info; 61*4882a593Smuzhiyun WIFIONLY_CHIP_INTERFACE chip_interface; 62*4882a593Smuzhiyun }; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun void halwifionly_write1byte(void *pwifionlyContext, u32 RegAddr, u8 Data); 65*4882a593Smuzhiyun void halwifionly_write2byte(void *pwifionlyContext, u32 RegAddr, u16 Data); 66*4882a593Smuzhiyun void halwifionly_write4byte(void *pwifionlyContext, u32 RegAddr, u32 Data); 67*4882a593Smuzhiyun u8 halwifionly_read1byte(void *pwifionlyContext, u32 RegAddr); 68*4882a593Smuzhiyun u16 halwifionly_read2byte(void *pwifionlyContext, u32 RegAddr); 69*4882a593Smuzhiyun u32 halwifionly_read4byte(void *pwifionlyContext, u32 RegAddr); 70*4882a593Smuzhiyun void halwifionly_bitmaskwrite1byte(void *pwifionlyContext, u32 regAddr, u8 bitMask, u8 data); 71*4882a593Smuzhiyun void halwifionly_phy_set_rf_reg(void *pwifionlyContext, enum rf_path eRFPath, u32 RegAddr, u32 BitMask, u32 Data); 72*4882a593Smuzhiyun void halwifionly_phy_set_bb_reg(void *pwifionlyContext, u32 RegAddr, u32 BitMask, u32 Data); 73*4882a593Smuzhiyun void hal_btcoex_wifionly_switchband_notify(PADAPTER padapter); 74*4882a593Smuzhiyun void hal_btcoex_wifionly_scan_notify(PADAPTER padapter); 75*4882a593Smuzhiyun void hal_btcoex_wifionly_connect_notify(PADAPTER padapter); 76*4882a593Smuzhiyun void hal_btcoex_wifionly_hw_config(PADAPTER padapter); 77*4882a593Smuzhiyun void hal_btcoex_wifionly_initlizevariables(PADAPTER padapter); 78*4882a593Smuzhiyun void hal_btcoex_wifionly_AntInfoSetting(PADAPTER padapter); 79*4882a593Smuzhiyun #else 80*4882a593Smuzhiyun #define hal_btcoex_wifionly_switchband_notify(padapter) 81*4882a593Smuzhiyun #define hal_btcoex_wifionly_scan_notify(padapter) 82*4882a593Smuzhiyun #define hal_btcoex_wifionly_connect_notify(padapter) 83*4882a593Smuzhiyun #define hal_btcoex_wifionly_hw_config(padapter) 84*4882a593Smuzhiyun #define hal_btcoex_wifionly_initlizevariables(padapter) 85*4882a593Smuzhiyun #define hal_btcoex_wifionly_AntInfoSetting(padapter) 86*4882a593Smuzhiyun #endif 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #endif 89