1# SPDX-License-Identifier: GPL-2.0 2# bcmdhd 3 4MODULE_NAME := bcmdhd 5CONFIG_BCMDHD ?= m 6 7#CONFIG_BCMDHD_SDIO := y 8#CONFIG_BCMDHD_PCIE := y 9#CONFIG_BCMDHD_USB := y 10 11CONFIG_BCMDHD_OOB := y 12#CONFIG_BCMDHD_CUSB := y 13#CONFIG_BCMDHD_NO_POWER_OFF := y 14CONFIG_BCMDHD_PROPTXSTATUS := y 15CONFIG_BCMDHD_AG := y 16CONFIG_DHD_USE_STATIC_BUF := y 17#CONFIG_BCMDHD_STATIC_BUF_IN_DHD := y 18CONFIG_BCMDHD_ANDROID_VERSION := 12 19CONFIG_BCMDHD_AUTO_SELECT := y 20CONFIG_BCMDHD_DEBUG := y 21#CONFIG_BCMDHD_TIMESTAMP := y 22#CONFIG_BCMDHD_WAPI := y 23#CONFIG_BCMDHD_RANDOM_MAC := y 24CONFIG_BCMDHD_REQUEST_FW := y 25#CONFIG_BCMDHD_MULTIPLE_DRIVER := y 26#CONFIG_BCMDHD_DWDS := y 27CONFIG_BCMDHD_TPUT := y 28 29CONFIG_MACH_PLATFORM := y 30#CONFIG_BCMDHD_DTS := y 31 32DHDCFLAGS = -Wall -Wstrict-prototypes -Wno-date-time \ 33 -Wno-implicit-fallthrough -Wno-declaration-after-statement \ 34 -Wno-vla -Wno-vla-extension \ 35 -Dlinux -DLINUX -DBCMDRIVER \ 36 -DBCMDONGLEHOST -DBCMDMA32 -DBCMFILEIMAGE \ 37 -DDHDTHREAD -DDHD_DEBUG -DSHOW_EVENTS -DGET_OTP_MAC_ENABLE \ 38 -DWIFI_ACT_FRAME -DARP_OFFLOAD_SUPPORT -DSUPPORT_PM2_ONLY \ 39 -DKEEP_ALIVE -DPKT_FILTER_SUPPORT -DDHDTCPACK_SUPPRESS \ 40 -DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT -DOEM_ANDROID \ 41 -DMULTIPLE_SUPPLICANT -DTSQ_MULTIPLIER -DMFP -DDHD_8021X_DUMP \ 42 -DPOWERUP_MAX_RETRY=0 -DIFACE_HANG_FORCE_DEV_CLOSE -DWAIT_DEQUEUE \ 43 -DUSE_NEW_RSPEC_DEFS -DBCM_USE_PLATFORM_STRLCPY \ 44 -DWL_EXT_IAPSTA -DWL_ESCAN -DCCODE_LIST -DSUSPEND_EVENT \ 45 -DEAPOL_RESEND -DEAPOL_DYNAMATIC_RESEND -DWL_SCHED_SCAN \ 46 -DENABLE_INSMOD_NO_FW_LOAD -Wframe-larger-than=2048 \ 47 -DSCHED_SCAN_DELAYED_WORK -DDHD_PNO_FLAG 48 49DHDOFILES = aiutils.o siutils.o sbutils.o bcmutils.o bcmwifi_channels.o \ 50 dhd_linux.o dhd_linux_platdev.o dhd_linux_sched.o dhd_pno.o \ 51 dhd_common.o dhd_ip.o dhd_linux_wq.o dhd_custom_gpio.o \ 52 bcmevent.o hndpmu.o linux_osl.o wldev_common.o wl_android.o \ 53 dhd_debug_linux.o dhd_debug.o dhd_mschdbg.o dhd_dbg_ring.o \ 54 hnd_pktq.o hnd_pktpool.o bcmxtlv.o linux_pkt.o bcmstdlib_s.o frag.o \ 55 dhd_linux_exportfs.o dhd_linux_pktdump.o dhd_mschdbg.o \ 56 dhd_config.o dhd_ccode.o wl_event.o wl_android_ext.o \ 57 wl_iapsta.o wl_escan.o 58 59ifneq ($(CONFIG_WIRELESS_EXT),) 60 DHDOFILES += wl_iw.o 61 DHDCFLAGS += -DSOFTAP -DWL_WIRELESS_EXT -DUSE_IW 62endif 63ifneq ($(CONFIG_CFG80211),) 64 DHDOFILES += wl_cfg80211.o wl_cfgscan.o wl_cfgp2p.o 65 DHDOFILES += wl_linux_mon.o wl_cfg_btcoex.o wl_cfgvendor.o 66 DHDOFILES += dhd_cfg80211.o wl_cfgvif.o 67 DHDCFLAGS += -DWL_CFG80211 -DWLP2P -DWL_CFG80211_STA_EVENT 68# DHDCFLAGS += -DWL_IFACE_COMB_NUM_CHANNELS 69 DHDCFLAGS += -DCUSTOM_PNO_EVENT_LOCK_xTIME=10 70 DHDCFLAGS += -DWL_SUPPORT_AUTO_CHANNEL 71 DHDCFLAGS += -DWL_SUPPORT_BACKPORTED_KPATCHES 72 DHDCFLAGS += -DESCAN_RESULT_PATCH -DESCAN_BUF_OVERFLOW_MGMT 73 DHDCFLAGS += -DVSDB -DWL_CFG80211_VSDB_PRIORITIZE_SCAN_REQUEST 74 DHDCFLAGS += -DWLTDLS -DMIRACAST_AMPDU_SIZE=8 75 DHDCFLAGS += -DWL_VIRTUAL_APSTA 76 DHDCFLAGS += -DPNO_SUPPORT -DEXPLICIT_DISCIF_CLEANUP 77 DHDCFLAGS += -DDHD_USE_SCAN_WAKELOCK 78 DHDCFLAGS += -DSPECIFIC_MAC_GEN_SCHEME 79 DHDCFLAGS += -DWL_IFACE_MGMT 80 DHDCFLAGS += -DWLFBT -DWL_GCMP_SUPPORT 81 DHDCFLAGS += -DWL_EXT_RECONNECT 82 DHDCFLAGS += -DDHD_LOSSLESS_ROAMING 83 DHDCFLAGS += -DGTK_OFFLOAD_SUPPORT 84 DHDCFLAGS += -DRESTART_AP_WAR 85# DHDCFLAGS += -DWL_STATIC_IF 86 DHDCFLAGS += -DWL_CLIENT_SAE -DWL_OWE 87endif 88 89#BCMDHD_SDIO 90ifneq ($(CONFIG_BCMDHD_SDIO),) 91BUS_TYPE := "sdio" 92DHDCFLAGS += -DBCMSDIO -DMMC_SDIO_ABORT -DMMC_SW_RESET -DBCMLXSDMMC \ 93 -DUSE_SDIOFIFO_IOVAR -DSDTEST \ 94 -DBDC -DDHD_USE_IDLECOUNT -DCUSTOM_SDIO_F2_BLKSIZE=256 \ 95 -DBCMSDIOH_TXGLOM -DBCMSDIOH_TXGLOM_EXT -DRXFRAME_THREAD \ 96 -DDHDENABLE_TAILPAD -DSUPPORT_P2P_GO_PS \ 97 -DBCMSDIO_RXLIM_POST -DBCMSDIO_TXSEQ_SYNC -DCONSOLE_DPC \ 98 -DBCMSDIO_INTSTATUS_WAR 99ifeq ($(CONFIG_BCMDHD_OOB),y) 100 DHDCFLAGS += -DOOB_INTR_ONLY -DCUSTOMER_OOB -DHW_OOB 101ifeq ($(CONFIG_BCMDHD_DISABLE_WOWLAN),y) 102 DHDCFLAGS += -DDISABLE_WOWLAN 103endif 104else 105 DHDCFLAGS += -DSDIO_ISR_THREAD 106endif 107DHDOFILES += bcmsdh.o bcmsdh_linux.o bcmsdh_sdmmc.o bcmsdh_sdmmc_linux.o \ 108 dhd_sdio.o dhd_cdc.o dhd_wlfc.o 109endif 110 111#BCMDHD_PCIE 112ifneq ($(CONFIG_BCMDHD_PCIE),) 113BUS_TYPE := "pcie" 114DHDCFLAGS += -DPCIE_FULL_DONGLE -DBCMPCIE -DCUSTOM_DPC_PRIO_SETTING=-1 \ 115 -DDONGLE_ENABLE_ISOLATION 116DHDCFLAGS += -DDHD_LB -DDHD_LB_RXP -DDHD_LB_STATS -DDHD_LB_TXP 117#DHDCFLAGS += -DDHD_PKTID_AUDIT_ENABLED 118DHDCFLAGS += -DINSMOD_FW_LOAD 119DHDCFLAGS += -DCHIP_INTR_CONTROL 120#DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100 121DHDCFLAGS += -DDHD_CONTROL_PCIE_ASPM_WIFI_TURNON 122ifeq ($(CONFIG_BCMDHD_OOB),y) 123 DHDCFLAGS += -DCUSTOMER_OOB -DBCMPCIE_OOB_HOST_WAKE -DHW_OOB 124endif 125ifneq ($(CONFIG_PCI_MSI),) 126 DHDCFLAGS += -DDHD_MSI_SUPPORT 127endif 128DHDOFILES += dhd_pcie.o dhd_pcie_linux.o pcie_core.o dhd_flowring.o \ 129 dhd_msgbuf.o dhd_linux_lb.o 130endif 131 132#BCMDHD_USB 133ifneq ($(CONFIG_BCMDHD_USB),) 134BUS_TYPE := "usb" 135DHDCFLAGS += -DUSBOS_TX_THREAD -DBCMDBUS -DBCMTRXV2 -DDBUS_USB_LOOPBACK \ 136 -DBDC 137DHDCFLAGS += -DBCM_REQUEST_FW -DEXTERNAL_FW_PATH 138ifneq ($(CONFIG_BCMDHD_CUSB),) 139 DHDCFLAGS += -DBCMUSBDEV_COMPOSITE 140 CONFIG_BCMDHD_NO_POWER_OFF := y 141endif 142DHDOFILES += dbus.o dbus_usb.o dbus_usb_linux.o dhd_cdc.o dhd_wlfc.o 143endif 144 145ifeq ($(CONFIG_BCMDHD_NO_POWER_OFF),y) 146 DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD 147 DHDCFLAGS += -DENABLE_INSMOD_NO_POWER_OFF -DNO_POWER_OFF_AFTER_OPEN 148endif 149 150ifeq ($(CONFIG_BCMDHD_MULTIPLE_DRIVER),y) 151 DHDCFLAGS += -DBCMDHD_MDRIVER 152 DHDCFLAGS += -DBUS_TYPE=\"-$(BUS_TYPE)\" 153 DHDCFLAGS += -DDHD_LOG_PREFIX=\"[dhd-$(BUS_TYPE)]\" 154 MODULE_NAME := dhd$(BUS_TYPE) 155else 156 DHDCFLAGS += -DBUS_TYPE=\"\" 157endif 158 159ifeq ($(CONFIG_BCMDHD_TIMESTAMP),y) 160 DHDCFLAGS += -DKERNEL_TIMESTAMP 161 DHDCFLAGS += -DSYSTEM_TIMESTAMP 162endif 163 164#PROPTXSTATUS 165ifeq ($(CONFIG_BCMDHD_PROPTXSTATUS),y) 166ifneq ($(CONFIG_BCMDHD_USB),) 167 DHDCFLAGS += -DPROP_TXSTATUS 168endif 169ifneq ($(CONFIG_BCMDHD_SDIO),) 170 DHDCFLAGS += -DPROP_TXSTATUS -DPROPTX_MAXCOUNT 171endif 172ifneq ($(CONFIG_CFG80211),) 173 DHDCFLAGS += -DPROP_TXSTATUS_VSDB 174endif 175endif 176 177ifeq ($(CONFIG_64BIT),y) 178 DHDCFLAGS := $(filter-out -DBCMDMA32,$(DHDCFLAGS)) 179 DHDCFLAGS += -DBCMDMA64OSL 180endif 181 182# For Android VTS 183ifneq ($(CONFIG_BCMDHD_ANDROID_VERSION),) 184 DHDCFLAGS += -DANDROID_VERSION=$(CONFIG_BCMDHD_ANDROID_VERSION) 185 DHDCFLAGS += -DDHD_NOTIFY_MAC_CHANGED 186ifneq ($(CONFIG_CFG80211),) 187 DHDCFLAGS += -DGSCAN_SUPPORT -DRTT_SUPPORT 188 DHDCFLAGS += -DWL_SAR_TX_POWER 189# DHDCFLAGS += -DLINKSTAT_SUPPORT 190 DHDCFLAGS += -DCUSTOM_COUNTRY_CODE -DDHD_GET_VALID_CHANNELS 191 DHDCFLAGS += -DDEBUGABILITY -DDBG_PKT_MON 192# DHDCFLAGS += -DDHD_LOG_DUMP 193 DHDCFLAGS += -DDHD_FW_COREDUMP 194 DHDCFLAGS += -DWL_P2P_RAND 195 DHDCFLAGS += -DAPF -DNDO_CONFIG_SUPPORT -DRSSI_MONITOR_SUPPORT 196 DHDCFLAGS += -DDHD_WAKE_STATUS -DWL_LATENCY_MODE 197 DHDOFILES += dhd_rtt.o bcm_app_utils.o 198endif 199else 200 DHDCFLAGS += -DANDROID_VERSION=0 201endif 202 203# For Debug 204ifeq ($(CONFIG_BCMDHD_DEBUG),y) 205 DHDCFLAGS += -DDHD_ARP_DUMP -DDHD_DHCP_DUMP -DDHD_ICMP_DUMP 206 DHDCFLAGS += -DDHD_DNS_DUMP -DDHD_TRX_DUMP 207 DHDCFLAGS += -DTPUT_MONITOR 208# DHDCFLAGS += -DSCAN_SUPPRESS -DBSSCACHE 209 DHDCFLAGS += -DCHECK_DOWNLOAD_FW 210 DHDCFLAGS += -DPKT_STATICS 211 DHDCFLAGS += -DKSO_DEBUG 212# DHDCFLAGS += -DDHD_PKTDUMP_TOFW 213endif 214 215# For Debug2 216ifeq ($(CONFIG_BCMDHD_DEBUG2),y) 217 DHDCFLAGS += -DDEBUGFS_CFG80211 218 DHDCFLAGS += -DSHOW_LOGTRACE -DDHD_LOG_DUMP -DDHD_FW_COREDUMP 219 DHDCFLAGS += -DBCMASSERT_LOG -DSI_ERROR_ENFORCE 220ifneq ($(CONFIG_BCMDHD_PCIE),) 221 DHDCFLAGS += -DEWP_EDL 222 DHDCFLAGS += -DDNGL_EVENT_SUPPORT 223 DHDCFLAGS += -DDHD_SSSR_DUMP 224endif 225endif 226 227# MESH support for kernel 3.10 later 228ifeq ($(CONFIG_WL_MESH),y) 229 DHDCFLAGS += -DWLMESH 230ifneq ($(CONFIG_CFG80211),) 231 DHDCFLAGS += -DWLMESH_CFG80211 232endif 233ifneq ($(CONFIG_BCMDHD_PCIE),) 234 DHDCFLAGS += -DBCM_HOST_BUF -DDMA_HOST_BUFFER_LEN=0x80000 235endif 236 DHDCFLAGS += -DDHD_UPDATE_INTF_MAC 237 DHDCFLAGS :=$(filter-out -DDHD_FW_COREDUMP,$(DHDCFLAGS)) 238 DHDCFLAGS :=$(filter-out -DWL_STATIC_IF,$(DHDCFLAGS)) 239endif 240 241# EasyMesh 242ifeq ($(CONFIG_BCMDHD_EASYMESH),y) 243 DHDCFLAGS :=$(filter-out -DDHD_FW_COREDUMP,$(DHDCFLAGS)) 244 DHDCFLAGS :=$(filter-out -DDHD_LOG_DUMP,$(DHDCFLAGS)) 245 DHDCFLAGS += -DWLEASYMESH 246 CONFIG_BCMDHD_DWDS := y 247endif 248 249# DWDS 250ifeq ($(CONFIG_BCMDHD_DWDS),y) 251ifneq ($(CONFIG_CFG80211),) 252 DHDCFLAGS += -DWLDWDS -DFOURADDR_AUTO_BRG 253ifneq ($(CONFIG_BCMDHD_SDIO),) 254 DHDCFLAGS += -DRXF_DEQUEUE_ON_BUSY 255endif 256 DHDCFLAGS += -DWL_STATIC_IF 257endif 258endif 259 260# CSI_SUPPORT 261ifeq ($(CONFIG_CSI_SUPPORT),y) 262 DHDCFLAGS += -DCSI_SUPPORT 263 DHDOFILES += dhd_csi.o 264endif 265 266# For TPUT_IMPROVE 267ifeq ($(CONFIG_BCMDHD_TPUT),y) 268 DHDCFLAGS += -DDHD_TPUT_PATCH 269 DHDCFLAGS += -DTCPACK_INFO_MAXNUM=10 -DTCPDATA_INFO_MAXNUM=10 270ifneq ($(CONFIG_BCMDHD_SDIO),) 271 DHDCFLAGS += -DDYNAMIC_MAX_HDR_READ 272 DHDCFLAGS :=$(filter-out -DSDTEST,$(DHDCFLAGS)) 273endif 274ifneq ($(CONFIG_BCMDHD_PCIE),) 275 DHDCFLAGS += -DDHD_LB_TXP_DEFAULT_ENAB 276 DHDCFLAGS += -DSET_RPS_CPUS -DSET_XPS_CPUS 277 DHDCFLAGS += -DDHD_LB_PRIMARY_CPUS=0xF0 -DDHD_LB_SECONDARY_CPUS=0x0E 278endif 279endif 280 281# For Zero configure 282ifeq ($(CONFIG_BCMDHD_ZEROCONFIG),y) 283 DHDCFLAGS += -DWL_EXT_GENL -DSENDPROB 284 DHDOFILES += wl_ext_genl.o 285endif 286 287# For WAPI 288ifeq ($(CONFIG_BCMDHD_WAPI),y) 289 DHDCFLAGS += -DBCMWAPI_WPI -DBCMWAPI_WAI 290ifeq ($(CONFIG_BCMDHD_ANDROID_VERSION),11) 291 DHDCFLAGS += -DCFG80211_WAPI_BKPORT 292endif 293endif 294 295# For scan random mac 296ifneq ($(CONFIG_BCMDHD_RANDOM_MAC),) 297ifneq ($(CONFIG_CFG80211),) 298 DHDCFLAGS += -DSUPPORT_RANDOM_MAC_SCAN -DWL_USE_RANDOMIZED_SCAN 299endif 300endif 301 302# For NAN 303ifneq ($(CONFIG_BCMDHD_NAN),) 304 DHDCFLAGS += -DWL_NAN -DWL_NAN_DISC_CACHE 305 DHDOFILES += wl_cfgnan.o bcmbloom.o 306endif 307 308# For Module auto-selection 309ifeq ($(CONFIG_BCMDHD_AUTO_SELECT),y) 310 DHDCFLAGS += -DUPDATE_MODULE_NAME 311ifneq ($(CONFIG_BCMDHD_SDIO),) 312 DHDCFLAGS += -DGET_OTP_MODULE_NAME -DCOMPAT_OLD_MODULE 313endif 314endif 315 316ifeq ($(CONFIG_AP6XXX),m) 317 DHDCFLAGS += -DBCMDHD_MODULAR 318endif 319 320ifeq ($(CONFIG_MACH_PLATFORM),y) 321 DHDOFILES += dhd_gpio.o 322ifeq ($(CONFIG_BCMDHD_DTS),y) 323 DHDCFLAGS += -DBCMDHD_DTS 324endif 325 DHDCFLAGS += -DCUSTOMER_HW -DDHD_OF_SUPPORT 326 DHDCFLAGS += -DCUSTOMER_HW_ROCKCHIP 327endif 328 329ifeq ($(CONFIG_BCMDHD_REQUEST_FW),y) 330 DHDCFLAGS += -DDHD_LINUX_STD_FW_API 331 DHDCFLAGS += -DDHD_FW_NAME="\"fw_bcmdhd.bin\"" 332 DHDCFLAGS += -DDHD_NVRAM_NAME="\"nvram.txt\"" 333 DHDCFLAGS += -DDHD_CLM_NAME="\"clm_bcmdhd.blob\"" 334else 335ifeq ($(CONFIG_BCMDHD_FW_PATH),) 336 DHDCFLAGS += -DCONFIG_BCMDHD_FW_PATH="\"/system/etc/firmware/fw_bcmdhd.bin\"" 337 DHDCFLAGS += -DCONFIG_BCMDHD_NVRAM_PATH="\"/system/etc/firmware/nvram.txt\"" 338 DHDCFLAGS += -DCONFIG_BCMDHD_CLM_PATH="\"/system/etc/firmware/clm_bcmdhd.blob\"" 339endif 340endif 341 342ifeq ($(CONFIG_BCMDHD_AG),y) 343 DHDCFLAGS += -DBAND_AG 344endif 345 346ifeq ($(CONFIG_DHD_USE_STATIC_BUF),y) 347ifeq ($(CONFIG_BCMDHD_STATIC_BUF_IN_DHD),y) 348 DHDOFILES += dhd_static_buf.o 349 DHDCFLAGS += -DDHD_STATIC_IN_DRIVER 350else 351 obj-m += dhd_static_buf.o 352endif 353 DHDCFLAGS += -DSTATIC_WL_PRIV_STRUCT -DENHANCED_STATIC_BUF 354 DHDCFLAGS += -DCONFIG_DHD_USE_STATIC_BUF 355 DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP 356ifneq ($(CONFIG_BCMDHD_PCIE),) 357 DHDCFLAGS += -DDHD_USE_STATIC_CTRLBUF 358endif 359endif 360 361ARCH ?= arm64 362BCMDHD_ROOT = $(src) 363#$(warning "BCMDHD_ROOT=$(BCMDHD_ROOT)") 364EXTRA_CFLAGS = $(DHDCFLAGS) 365EXTRA_CFLAGS += -DDHD_COMPILED=\"$(BCMDHD_ROOT)\" 366EXTRA_CFLAGS += -I$(srctree)/$(BCMDHD_ROOT)/include/ -I$(srctree)/$(BCMDHD_ROOT)/ 367EXTRA_CFLAGS += $(call cc-disable-warning, unused-but-set-variable) 368ifeq ($(CONFIG_AP6XXX),m) 369EXTRA_LDFLAGS += --strip-debug 370endif 371 372obj-$(CONFIG_AP6XXX) += $(MODULE_NAME).o 373$(MODULE_NAME)-objs += $(DHDOFILES) 374ccflags-y := $(EXTRA_CFLAGS) 375 376all: bcmdhd_pcie bcmdhd_sdio bcmdhd_usb 377 378bcmdhd_pcie: 379 $(warning "building BCMDHD_PCIE..........") 380 $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_PCIE=y 381 382bcmdhd_sdio: 383 $(warning "building BCMDHD_SDIO..........") 384 $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_SDIO=y 385 386bcmdhd_usb: 387 $(warning "building BCMDHD_USB..........") 388 $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_USB=y 389 390clean: 391 rm -rf *.o *.ko *.mod.c *~ .*.cmd *.o.cmd .*.o.cmd *.mod \ 392 Module.symvers modules.order .tmp_versions modules.builtin 393