# bcmdhd
# 1. WL_IFACE_COMB_NUM_CHANNELS must be added if Android version is 4.4 with Kernel version 3.0~3.4,
#    otherwise please remove it.

ifneq ($(CONFIG_BCMDHD),)
PWD=$(src)
else
CONFIG_BCMDHD := m
CONFIG_BCMDHD_FW_PATH="/system/etc/firmware/fw_bcmdhd.bin"
CONFIG_BCMDHD_NVRAM_PATH="/system/etc/firmware/nvram.txt"
CONFIG_BCMDHD_SDIO := y
CONFIG_BCMDHD_OOB := y
endif
CONFIG_BCMDHD_DISABLE_WOWLAN := y
CONFIG_MACH_PLATFORM := y

$(warning "PWD=$(PWD)")

DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER                 \
	-DBCMDONGLEHOST -DUNRELEASEDCHIP -DBCMDMA32 -DBCMFILEIMAGE            \
	-DDHDTHREAD -DDHD_DEBUG -DSHOW_EVENTS -DBCMDBG -DGET_OTP_MAC_ENABLE   \
	-DWIFI_ACT_FRAME -DARP_OFFLOAD_SUPPORT -DSUPPORT_PM2_ONLY             \
	-DPKT_FILTER_SUPPORT -DPNO_SUPPORT -DDHDTCPACK_SUPPRESS  \
	-DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT                           \
	-DMULTIPLE_SUPPLICANT -DMFP                                           \
	-DWL_EXT_IAPSTA -DKEEP_ALIVE                                          \
	-I$(PWD) -I$(PWD)/include

DHDOFILES = aiutils.o siutils.o sbutils.o bcmutils.o bcmwifi_channels.o   \
	dhd_linux.o dhd_linux_platdev.o dhd_linux_sched.o dhd_pno.o           \
	dhd_common.o dhd_ip.o dhd_linux_wq.o dhd_custom_gpio.o                \
	bcmevent.o hndpmu.o linux_osl.o wldev_common.o wl_android.o           \
	hnd_pktq.o hnd_pktpool.o dhd_config.o wl_android_ext.o

ifeq ($(CONFIG_BCMDHD),y)
DHDCFLAGS += -DDHD_BUILTIN
$(warning "Built-in DHD")
else
$(warning "Module DHD")
endif
DHDCFLAGS += -DBCOL_TCPKA_SYNC -DBCOL_TCPKA_SYNC_MATCHED_BY_PORT
DHDCFLAGS += -DTCPKA_REPAIR
DHDCFLAGS += -DPF_HOSTWAKE
DHDCFLAGS += -DDHCPC_SUPPORT
DHDCFLAGS += -DONLINECHK_SUPPORT
DHDCFLAGS += -DIDSUP_STATS -DSDIO_TRAITS_STATS
DHDCFLAGS += -DHAL_API -DPF_SETUP_COMMAND
DHDCFLAGS += -DEVENT_SETUP
DHDCFLAGS += -DDHD_SK_PACING_SHIFT=8
DHDCFLAGS += -DWNM_NEST
DHDCFLAGS += -DEVENT_DATA_HOSTWAKE -DHOSTWAKE_EVENT_TIMEOUT=5000
DHDCFLAGS += -DSCHED_WAKE
DHDCFLAGS += -DUART_HB_CONFIG
DHDCFLAGS += -DTCPKA_BYPASS
DHDCFLAGS += -DRESUME_INIT
DHDCFLAGS += -DDHD_WAKE_STATUS -DDHD_WAKE_EVENT_STATUS -DDHD_WAKE_RX_STATUS
#DHDCFLAGS += -DDHD_WAKEPKT_DUMP
DHDCFLAGS += -DTXSEQ_SYNC
DHDCFLAGS += -DDHD_CONSOLE_IDX_SYNC
DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=10
DHDCFLAGS += -DASSOC_PREFER_BAND
DHDCFLAGS += -DWIFI_STATS
DHDCFLAGS += -DSIMPLE_MAC_PRINT
DHDCFLAGS += -DPSPOLL_WAIT -DPSPOLL_KA_WAIT -DPM_KEEP_ALIVE
DHDCFLAGS += -DGARP_KEEP_ALIVE
DHDCFLAGS += -DBLOCK_LIST_CFG -DRELOAD_WIFI
DHDCFLAGS += -DNOTI_BITBANG

#BCMDHD_SDIO
ifneq ($(CONFIG_BCMDHD_SDIO),)
DHDCFLAGS += \
	-DBCMSDIO -DMMC_SDIO_ABORT -DBCMLXSDMMC -DUSE_SDIOFIFO_IOVAR          \
	-DSDTEST -DBDC -DDHD_USE_IDLECOUNT -DCUSTOM_SDIO_F2_BLKSIZE=128       \
	-DBCMSDIOH_TXGLOM -DBCMSDIOH_TXGLOM_EXT
DHDCFLAGS += -DRXFRAME_THREAD

ifeq ($(CONFIG_HISILICON_PLATFORM),y)
	DHDCFLAGS += -DSDIO_ISR_THREAD
else
ifeq ($(CONFIG_BCMDHD_OOB),y)
	DHDCFLAGS += -DOOB_INTR_ONLY -DCUSTOMER_OOB -DHW_OOB
ifeq ($(CONFIG_BCMDHD_DISABLE_WOWLAN),y)
	DHDCFLAGS += -DDISABLE_WOWLAN
endif
else
	DHDCFLAGS += -DSDIO_ISR_THREAD
endif
endif

DHDOFILES += bcmsdh.o bcmsdh_linux.o bcmsdh_sdmmc.o bcmsdh_sdmmc_linux.o  \
	dhd_sdio.o dhd_cdc.o dhd_wlfc.o
endif

#BCMDHD_PCIE
ifneq ($(CONFIG_BCMDHD_PCIE),)
DHDCFLAGS += -DPCIE_FULL_DONGLE -DBCMPCIE -DCUSTOM_DPC_PRIO_SETTING=-1    \
	-DDONGLE_ENABLE_ISOLATION
ifneq ($(CONFIG_PCI_MSI),)
	DHDCFLAGS += -DDHD_USE_MSI
endif
ifeq ($(CONFIG_DHD_USE_STATIC_BUF),y)
	DHDCFLAGS += -DDHD_USE_STATIC_CTRLBUF
endif

DHDOFILES += dhd_pcie.o dhd_pcie_linux.o pcie_core.o dhd_flowring.o       \
	dhd_msgbuf.o
endif

#BCMDHD_USB
ifneq ($(CONFIG_BCMDHD_USB),)
DHDCFLAGS += -DUSBOS_TX_THREAD -DBCMDBUS -DBCMTRXV2 -DDBUS_USB_LOOPBACK   \
	-DBDC
DHDCFLAGS += -DBCM_REQUEST_FW -DEXTERNAL_FW_PATH
#DHDCFLAGS :=$(filter-out -DENABLE_INSMOD_NO_FW_LOAD,$(DHDCFLAGS))

DHDOFILES += dbus.o dbus_usb.o dbus_usb_linux.o dhd_cdc.o dhd_wlfc.o
endif

ifeq ($(CONFIG_BCMDHD_PROPTXSTATUS),y)
ifneq ($(CONFIG_BCMDHD_USB),)
	DHDCFLAGS += -DPROP_TXSTATUS
endif
ifneq ($(CONFIG_BCMDHD_SDIO),)
	DHDCFLAGS += -DPROP_TXSTATUS
endif
ifneq ($(CONFIG_CFG80211),)
	DHDCFLAGS += -DPROP_TXSTATUS_VSDB
endif
endif

ifeq ($(CONFIG_VTS_SUPPORT),y)
ifneq ($(CONFIG_CFG80211),)
DHDCFLAGS += \
	-DGSCAN_SUPPORT -DRTT_SUPPORT -DCUSTOM_FORCE_NODFS_FLAG               \
	-DLINKSTAT_SUPPORT -DDEBUGABILITY -DDBG_PKT_MON -DPKT_FILTER_SUPPORT  \
	-DAPF -DDHD_WAKE_STATUS                                               \
	-DCUSTOM_COUNTRY_CODE -DDHD_FW_COREDUMP -DEXPLICIT_DISCIF_CLEANUP

DHDOFILES += dhd_debug_linux.o dhd_debug.o bcmxtlv.o dhd_rtt.o            \
	bcm_app_utils.o
endif
endif

# MESH support for kernel 3.10 later
ifeq ($(CONFIG_WL_MESH),y)
	DHDCFLAGS += -DWLMESH
ifneq ($(CONFIG_BCMDHD_PCIE),)
	DHDCFLAGS += -DBCM_HOST_BUF -DDMA_HOST_BUFFER_LEN=0x80000
endif
	DHDCFLAGS += -DDHD_UPDATE_INTF_MAC
	DHDCFLAGS :=$(filter-out -DDHD_FW_COREDUMP,$(DHDCFLAGS))
	DHDCFLAGS :=$(filter-out -DSET_RANDOM_MAC_SOFTAP,$(DHDCFLAGS))
endif

obj-$(CONFIG_BCMDHD) += dhd.o
dhd-objs += $(DHDOFILES)

ifeq ($(CONFIG_MACH_PLATFORM),y)
	DHDOFILES += dhd_gpio.o
ifeq ($(CONFIG_BCMDHD_DTS),y)
	DHDCFLAGS += -DCONFIG_DTS
else
	DHDCFLAGS += -DCUSTOMER_HW -DDHD_OF_SUPPORT
endif
else
ifneq ($(CONFIG_DHD_OF_SUPPORT),)
	DHDOFILES += dhd_custom_hikey.o
	DHDCFLAGS += -DDHD_OF_SUPPORT
ifneq ($(CONFIG_BROADCOM_WIFI_RESERVED_MEM),)
	DHDOFILES += dhd_custom_memprealloc.o
endif
endif
#	DHDCFLAGS += -DBCMWAPI_WPI -DBCMWAPI_WAI
endif

ifeq ($(CONFIG_BCMDHD_AG),y)
	DHDCFLAGS += -DBAND_AG
endif

ifeq ($(CONFIG_DHD_USE_STATIC_BUF),y)
	obj-m += dhd_static_buf.o
	DHDCFLAGS += -DSTATIC_WL_PRIV_STRUCT -DENHANCED_STATIC_BUF
	DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP -DCONFIG_DHD_USE_STATIC_BUF
endif

ifneq ($(CONFIG_WIRELESS_EXT),)
	DHDOFILES += wl_iw.o wl_escan.o
	DHDCFLAGS += -DSOFTAP -DWL_WIRELESS_EXT -DUSE_IW -DWL_ESCAN
endif
ifneq ($(CONFIG_CFG80211),)
	DHDOFILES += wl_cfg80211.o wl_cfgp2p.o wl_linux_mon.o wl_cfg_btcoex.o wl_cfgvendor.o
	DHDOFILES += dhd_cfg80211.o
	DHDCFLAGS += -DWL_CFG80211 -DWLP2P -DWL_CFG80211_STA_EVENT -DWL_ENABLE_P2P_IF
	DHDCFLAGS += -DWL_IFACE_COMB_NUM_CHANNELS
	DHDCFLAGS += -DCUSTOM_ROAM_TRIGGER_SETTING=-65
	DHDCFLAGS += -DCUSTOM_ROAM_DELTA_SETTING=15
	DHDCFLAGS += -DCUSTOM_KEEP_ALIVE_SETTING=28000
	DHDCFLAGS += -DCUSTOM_PNO_EVENT_LOCK_xTIME=7
	DHDCFLAGS += -DWL_SUPPORT_AUTO_CHANNEL
	DHDCFLAGS += -DWL_SUPPORT_BACKPORTED_KPATCHES
	DHDCFLAGS += -DESCAN_RESULT_PATCH -DESCAN_BUF_OVERFLOW_MGMT
	DHDCFLAGS += -DVSDB -DWL_CFG80211_VSDB_PRIORITIZE_SCAN_REQUEST
	DHDCFLAGS += -DMIRACAST_AMPDU_SIZE=8
	DHDCFLAGS += -DWL_VIRTUAL_APSTA -DWL_CCODE_RELOAD
endif
EXTRA_CFLAGS = $(DHDCFLAGS)
ifeq ($(CONFIG_BCMDHD),m)
EXTRA_LDFLAGS += --strip-debug
endif

DHDCFLAGS += -DCUSTOMER_HW_AMLOGIC
DHDCFLAGS += -DCONFIG_PATH_AUTO_SELECT
DHDCFLAGS += -DRMMOD_KEEP_F2 -DPOWERUP_MAX_RETRY=0 -DEXT_POWER_SET

ARCH ?= arm64
CROSS_COMPILE ?= ../prebuilt/toolchain/aarch64/bin/aarch64-cros-linux-gnu-
KDIR ?= ../../kernel

CFLAGS_MODULE   = -fno-pic
EXTRA_CFLAGS = $(DHDCFLAGS) -Wframe-larger-than=1312

all:
	$(warning "DHDFLAGS=$(DHDCFLAGS)")

	$(MAKE) -C $(KDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
	$(MAKE) -C $(KDIR) M=$(PWD) ARCH=$(ARCH) clean
	rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~
	rm .tmp_versions -fr ; rm Module.symvers -fr
	rm -fr Module.markers ; rm -fr modules.order
