1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Customer HW 4 dependant file 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2020, Broadcom. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Unless you and Broadcom execute a separate written software license 7*4882a593Smuzhiyun * agreement governing use of this software, this software is licensed to you 8*4882a593Smuzhiyun * under the terms of the GNU General Public License version 2 (the "GPL"), 9*4882a593Smuzhiyun * available at http://www.broadcom.com/licenses/GPLv2.php, with the 10*4882a593Smuzhiyun * following added to such license: 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * As a special exception, the copyright holders of this software give you 13*4882a593Smuzhiyun * permission to link this software with independent modules, and to copy and 14*4882a593Smuzhiyun * distribute the resulting executable under terms of your choice, provided that 15*4882a593Smuzhiyun * you also meet, for each linked independent module, the terms and conditions of 16*4882a593Smuzhiyun * the license of that module. An independent module is a module which is not 17*4882a593Smuzhiyun * derived from this software. The special exception does not apply to any 18*4882a593Smuzhiyun * modifications of the software. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * 21*4882a593Smuzhiyun * <<Broadcom-WL-IPTag/Open:>> 22*4882a593Smuzhiyun * 23*4882a593Smuzhiyun * $Id: dhd_sec_feature.h$ 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* XXX This File managed by Samsung */ 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* 29*4882a593Smuzhiyun * ** Desciption *** 30*4882a593Smuzhiyun * 1. Module vs COB 31*4882a593Smuzhiyun * If your model's WIFI HW chip is COB type, you must add below feature 32*4882a593Smuzhiyun * - #undef USE_CID_CHECK 33*4882a593Smuzhiyun * - #define READ_MACADDR 34*4882a593Smuzhiyun * Because COB type chip have not CID and Mac address. 35*4882a593Smuzhiyun * So, you must add below feature to defconfig file. 36*4882a593Smuzhiyun * - CONFIG_WIFI_BROADCOM_COB 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * 2. PROJECTS 39*4882a593Smuzhiyun * If you want add some feature only own Project, you can add it in 'PROJECTS' part. 40*4882a593Smuzhiyun * 41*4882a593Smuzhiyun * 3. Region code 42*4882a593Smuzhiyun * If you want add some feature only own region model, you can use below code. 43*4882a593Smuzhiyun * - 100 : EUR OPEN 44*4882a593Smuzhiyun * - 101 : EUR ORG 45*4882a593Smuzhiyun * - 200 : KOR OPEN 46*4882a593Smuzhiyun * - 201 : KOR SKT 47*4882a593Smuzhiyun * - 202 : KOR KTT 48*4882a593Smuzhiyun * - 203 : KOR LGT 49*4882a593Smuzhiyun * - 300 : CHN OPEN 50*4882a593Smuzhiyun * - 400 : USA OPEN 51*4882a593Smuzhiyun * - 401 : USA ATT 52*4882a593Smuzhiyun * - 402 : USA TMO 53*4882a593Smuzhiyun * - 403 : USA VZW 54*4882a593Smuzhiyun * - 404 : USA SPR 55*4882a593Smuzhiyun * - 405 : USA USC 56*4882a593Smuzhiyun * You can refer how to using it below this file. 57*4882a593Smuzhiyun * And, you can add more region code, too. 58*4882a593Smuzhiyun */ 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun #ifndef _dhd_sec_feature_h_ 61*4882a593Smuzhiyun #define _dhd_sec_feature_h_ 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #include <linuxver.h> 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* For COB type feature */ 66*4882a593Smuzhiyun #ifdef CONFIG_WIFI_BROADCOM_COB 67*4882a593Smuzhiyun #undef USE_CID_CHECK 68*4882a593Smuzhiyun #define READ_MACADDR 69*4882a593Smuzhiyun #endif /* CONFIG_WIFI_BROADCOM_COB */ 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #if defined(CONFIG_MACH_UNIVERSAL7420) || defined(CONFIG_ARCH_MSM8994) || \ 72*4882a593Smuzhiyun defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) 73*4882a593Smuzhiyun #define SUPPORT_MULTIPLE_MODULE_CIS 74*4882a593Smuzhiyun #endif /* CONFIG_MACH_UNIVERSAL7420 || CONFIG_ARCH_MSM8994 || 75*4882a593Smuzhiyun * CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 76*4882a593Smuzhiyun */ 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #if defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_SOC_EXYNOS8890) 79*4882a593Smuzhiyun #define SUPPORT_BCM4359_MIXED_MODULES 80*4882a593Smuzhiyun #endif /* CONFIG_ARCH_MSM8996 || CONFIG_SOC_EXYNOS8890 */ 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #if defined(CONFIG_ARGOS) 83*4882a593Smuzhiyun #if defined(CONFIG_SPLIT_ARGOS_SET) 84*4882a593Smuzhiyun #define ARGOS_IRQ_WIFI_TABLE_LABEL "WIFI TX" 85*4882a593Smuzhiyun #define ARGOS_WIFI_TABLE_LABEL "WIFI RX" 86*4882a593Smuzhiyun #else /* CONFIG_SPLIT_ARGOS_SET */ 87*4882a593Smuzhiyun #define ARGOS_IRQ_WIFI_TABLE_LABEL "WIFI" 88*4882a593Smuzhiyun #define ARGOS_WIFI_TABLE_LABEL "WIFI" 89*4882a593Smuzhiyun #endif /* CONFIG_SPLIT_ARGOS_SET */ 90*4882a593Smuzhiyun #define ARGOS_P2P_TABLE_LABEL "P2P" 91*4882a593Smuzhiyun #endif /* CONFIG_ARGOS */ 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun /* PROJECTS START */ 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #if defined(CONFIG_MACH_UNIVERSAL7420) || defined(CONFIG_SOC_EXYNOS8890) || \ 96*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS8895) 97*4882a593Smuzhiyun #undef CUSTOM_SET_CPUCORE 98*4882a593Smuzhiyun #define PRIMARY_CPUCORE 0 99*4882a593Smuzhiyun #define DPC_CPUCORE 4 100*4882a593Smuzhiyun #define RXF_CPUCORE 5 101*4882a593Smuzhiyun #define TASKLET_CPUCORE 5 102*4882a593Smuzhiyun #define ARGOS_CPU_SCHEDULER 103*4882a593Smuzhiyun #define ARGOS_RPS_CPU_CTL 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #ifdef CONFIG_SOC_EXYNOS8895 106*4882a593Smuzhiyun #define ARGOS_DPC_TASKLET_CTL 107*4882a593Smuzhiyun #endif /* CONFIG_SOC_EXYNOS8895 */ 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #ifdef CONFIG_MACH_UNIVERSAL7420 110*4882a593Smuzhiyun #define EXYNOS_PCIE_DEBUG 111*4882a593Smuzhiyun #endif /* CONFIG_MACH_UNIVERSAL7420 */ 112*4882a593Smuzhiyun #endif /* CONFIG_MACH_UNIVERSAL7420 || CONFIG_SOC_EXYNOS8890 || CONFIG_SOC_EXYNOS8895 */ 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #if defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ 115*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS9830) || defined(CONFIG_SOC_EXYNOS2100) || \ 116*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS1000) 117*4882a593Smuzhiyun #define PCIE_IRQ_CPU_CORE 5 118*4882a593Smuzhiyun #endif /* CONFIG_SOC_EXYNOS9810 || CONFIG_SOC_EXYNOS9820 || defined(CONFIG_SOC_EXYNOS9830 */ 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #if defined(DHD_LB) 121*4882a593Smuzhiyun #if defined(CONFIG_ARCH_SM8150) || defined(CONFIG_ARCH_KONA) || defined(CONFIG_ARCH_LAHAINA) 122*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0x70) 123*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 124*4882a593Smuzhiyun #elif defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ 125*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS9830) || defined(CONFIG_SOC_EXYNOS2100) || \ 126*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS1000) 127*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0x70) 128*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 129*4882a593Smuzhiyun #elif defined(CONFIG_SOC_EXYNOS8890) 130*4882a593Smuzhiyun /* 131*4882a593Smuzhiyun * Removed core 6~7 from NAPI CPU mask. 132*4882a593Smuzhiyun * Exynos 8890 disabled core 6~7 by default. 133*4882a593Smuzhiyun */ 134*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0x30) 135*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 136*4882a593Smuzhiyun #elif defined(CONFIG_SOC_EXYNOS8895) 137*4882a593Smuzhiyun /* using whole big core with NAPI mask */ 138*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0xF0) 139*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 140*4882a593Smuzhiyun #elif defined(CONFIG_ARCH_MSM8998) 141*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0x20) 142*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 143*4882a593Smuzhiyun #elif defined(CONFIG_ARCH_MSM8996) 144*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0x0C) 145*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x03) 146*4882a593Smuzhiyun #else /* Default LB masks */ 147*4882a593Smuzhiyun /* using whole big core with NAPI mask */ 148*4882a593Smuzhiyun #define DHD_LB_PRIMARY_CPUS (0xF0) 149*4882a593Smuzhiyun #define DHD_LB_SECONDARY_CPUS (0x0E) 150*4882a593Smuzhiyun #endif /* CONFIG_SOC_EXYNOS8890 */ 151*4882a593Smuzhiyun #else /* !DHD_LB */ 152*4882a593Smuzhiyun #define ARGOS_DPC_TASKLET_CTL 153*4882a593Smuzhiyun #endif /* !DHD_LB */ 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #if defined(CONFIG_ARCH_MSM) || defined(CONFIG_SOC_EXYNOS8895) || \ 156*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS9810) || defined(CONFIG_SOC_EXYNOS9820) || \ 157*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS9830) || defined(CONFIG_SOC_EXYNOS2100) || \ 158*4882a593Smuzhiyun defined(CONFIG_SOC_EXYNOS1000) 159*4882a593Smuzhiyun #if defined(CONFIG_BCMDHD_PCIE) 160*4882a593Smuzhiyun #define BCMPCIE_DISABLE_ASYNC_SUSPEND 161*4882a593Smuzhiyun #endif /* CONFIG_BCMDHD_PCIE */ 162*4882a593Smuzhiyun #endif /* CONFIG_ARCH_MSM */ 163*4882a593Smuzhiyun /* PROJECTS END */ 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun /* REGION CODE START */ 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun #ifndef CONFIG_WLAN_REGION_CODE 168*4882a593Smuzhiyun #define CONFIG_WLAN_REGION_CODE 100 169*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE */ 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE >= 100) && (CONFIG_WLAN_REGION_CODE < 200) /* EUR */ 172*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE == 101) /* EUR ORG */ 173*4882a593Smuzhiyun /* GAN LITE NAT KEEPALIVE FILTER */ 174*4882a593Smuzhiyun #define GAN_LITE_NAT_KEEPALIVE_FILTER 175*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE == 101 */ 176*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE == 150) /* EUR FD(DualSIM) */ 177*4882a593Smuzhiyun #define SUPPORT_MULTIPLE_BOARD_REV_FROM_HW 178*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE == 150 */ 179*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE >= 100 && CONFIG_WLAN_REGION_CODE < 200 */ 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE >= 200) && (CONFIG_WLAN_REGION_CODE < 300) /* KOR */ 182*4882a593Smuzhiyun #undef USE_INITIAL_2G_SCAN 183*4882a593Smuzhiyun #ifndef ROAM_ENABLE 184*4882a593Smuzhiyun #define ROAM_ENABLE 185*4882a593Smuzhiyun #endif /* ROAM_ENABLE */ 186*4882a593Smuzhiyun #ifndef ROAM_API 187*4882a593Smuzhiyun #define ROAM_API 188*4882a593Smuzhiyun #endif /* ROAM_API */ 189*4882a593Smuzhiyun #ifndef ROAM_CHANNEL_CACHE 190*4882a593Smuzhiyun #define ROAM_CHANNEL_CACHE 191*4882a593Smuzhiyun #endif /* ROAM_CHANNEL_CACHE */ 192*4882a593Smuzhiyun #ifndef OKC_SUPPORT 193*4882a593Smuzhiyun #define OKC_SUPPORT 194*4882a593Smuzhiyun #endif /* OKC_SUPPORT */ 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun #ifndef ROAM_AP_ENV_DETECTION 197*4882a593Smuzhiyun #define ROAM_AP_ENV_DETECTION 198*4882a593Smuzhiyun #endif /* ROAM_AP_ENV_DETECTION */ 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun #undef WRITE_MACADDR 201*4882a593Smuzhiyun #ifndef READ_MACADDR 202*4882a593Smuzhiyun #define READ_MACADDR 203*4882a593Smuzhiyun #endif /* READ_MACADDR */ 204*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE >= 200 && CONFIG_WLAN_REGION_CODE < 300 */ 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE >= 300) && (CONFIG_WLAN_REGION_CODE < 400) /* CHN */ 207*4882a593Smuzhiyun #define BCMWAPI_WPI 208*4882a593Smuzhiyun #define BCMWAPI_WAI 209*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE >= 300 && CONFIG_WLAN_REGION_CODE < 400 */ 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun #if (CONFIG_WLAN_REGION_CODE == 500) /* JP */ 212*4882a593Smuzhiyun #if defined(BCM4375_CHIP) 213*4882a593Smuzhiyun #define DISABLE_HE_ENAB 214*4882a593Smuzhiyun #endif /* BCM4375_CHIP */ 215*4882a593Smuzhiyun #endif /* CONFIG_WLAN_REGION_CODE == 500 */ 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun /* REGION CODE END */ 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun #if !defined(READ_MACADDR) && !defined(WRITE_MACADDR) 220*4882a593Smuzhiyun #define GET_MAC_FROM_OTP 221*4882a593Smuzhiyun #define SHOW_NVRAM_TYPE 222*4882a593Smuzhiyun #endif /* !READ_MACADDR && !WRITE_MACADDR */ 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun #define WRITE_WLANINFO 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun #endif /* _dhd_sec_feature_h_ */ 227