#
# Copyright (C) 1999-2018, Broadcom Corporation
# 
#      Unless you and Broadcom execute a separate written software license
# agreement governing use of this software, this software is licensed to you
# under the terms of the GNU General Public License version 2 (the "GPL"),
# available at http://www.broadcom.com/licenses/GPLv2.php, with the
# following added to such license:
# 
#      As a special exception, the copyright holders of this software give you
# permission to link this software with independent modules, and to copy and
# distribute the resulting executable under terms of your choice, provided that
# you also meet, for each linked independent module, the terms and conditions of
# the license of that module.  An independent module is a module which is not
# derived from this software.  The special exception does not apply to any
# modifications of the software.
# 
#      Notwithstanding the above, under no circumstances may you combine this
# software in any way with any other Broadcom software provided under a license
# other than the GPL, without Broadcom's express prior written consent.
#
#
# <<Broadcom-WL-IPTag/Open:>>
#
# bcmdhd
#####################
# Basic feature
#####################

DHDCFLAGS += -Wall -Wstrict-prototypes -Dlinux -DLINUX -DBCMDRIVER      \
        -DBCMDONGLEHOST -DUNRELEASEDCHIP -DBCMDMA32 -DBCMFILEIMAGE      \
        -DDHDTHREAD -DDHD_BCMEVENTS -DSHOW_EVENTS -DBCMDBG -DWLP2P      \
        -DWIFI_ACT_FRAME -DARP_OFFLOAD_SUPPORT -DKEEP_ALIVE -DCSCAN     \
        -DPKT_FILTER_SUPPORT -DEMBEDDED_PLATFORM -DPNO_SUPPORT          \
        -DSEC_ENHANCEMENT

#####################
# Bus Interface Type
#####################
ifneq ($(CONFIG_BCMDHD_PCIE),)
	BUS_IFACE_PCIE=y
else
	BUS_IFACE_SDIO=y
endif

#####################
# SDIO I/F
#####################
ifeq ($(BUS_IFACE_SDIO),y)
	DHDCFLAGS += -DBDC -DDHD_BCMEVENTS -DMMC_SDIO_ABORT
	DHDCFLAGS += -DBCMSDIO -DBCMLXSDMMC -DUSE_SDIOFIFO_IOVAR
	DHDCFLAGS += -U__ARM_ARCH_7A__
ifeq ($(CONFIG_BCMDHD_OOB_HOST_WAKE),y)
	DHDCFLAGS += -DOOB_INTR_ONLY
endif
	# DPC priority
	DHDCFLAGS += -DCUSTOM_DPC_PRIO_SETTING=98
	# idle count
	DHDCFLAGS += -DDHD_USE_IDLECOUNT
	# SKB TAILPAD to avoid out of boundary memory access
	DHDCFLAGS += -DDHDENABLE_TAILPAD
	# Enable PROP_TXSTATUS
	DHDCFLAGS += -DPROP_TXSTATUS -DLIMIT_BORROW
	DHDCFLAGS += -DSUPPORT_P2P_GO_PS
	# Debug for DPC Thread watchdog bark
	DHDCFLAGS += -DDEBUG_DPC_THREAD_WATCHDOG
	# KSO Attempts count
	DHDCFLAGS += -DCUSTOM_MAX_KSO_ATTEMPTS=64
endif

#####################
# PCIE I/F
#####################
ifeq ($(BUS_IFACE_PCIE),y)
	DHDCFLAGS += -DPCIE_FULL_DONGLE -DBCMPCIE
	# Use the external WLAN_HOST_WAKE pin to wake up host
ifeq ($(CONFIG_BCMDHD_OOB_HOST_WAKE),y)
	DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
	# DPC priority
	DHDCFLAGS += -DCUSTOM_DPC_PRIO_SETTING=-1
	# Disable watchdog thread
	DHDCFLAGS += -DCUSTOM_DHD_WATCHDOG_MS=0
	# Set D3_ACK response timeout value
	DHDCFLAGS += -DD3_ACK_RESP_TIMEOUT=4000
	# Use Coherent memory for ring
	DHDCFLAGS += -DDHD_USE_COHERENT_MEM_FOR_RING
	# Alloc Coherent memory from DMA coherent pool
	DHDCFLAGS += -DDHD_ALLOC_COHERENT_MEM_FROM_ATOMIC_POOL
	# Enable Link down recovery
	DHDCFLAGS += -DSUPPORT_LINKDOWN_RECOVERY
	# Enable Dongle Isolation
	DHDCFLAGS += -DDONGLE_ENABLE_ISOLATION
	# Enable Firmware Coredump
	DHDCFLAGS += -DDHD_FW_COREDUMP
        # Enable PKTID AUDIT
        DHDCFLAGS += -DDHD_PKTID_AUDIT_ENABLED
	# Enable Load Balancing support by default.
	# DHD_LB_RXP - Perform RX Packet processing in parallel
	# DHD_LB_STATS - To display the Load Blancing statistics
	DHDCFLAGS += -DDHD_LB -DDHD_LB_RXP -DDHD_LB_TXP -DDHD_LB_STATS
ifeq ($(CONFIG_SOC_EXYNOS8890),y)
	DHDCFLAGS += -DWAKEUP_KSOFTIRQD_POST_NAPI_SCHEDULE
endif
	DHDCFLAGS += -DDHD_RECOVER_TIMEOUT
	# HEAP ASLR
	DHDCFLAGS += -DBCM_ASLR_HEAP
ifeq ($(filter y, $(CONFIG_SOC_EXYNOS8890) $(CONFIG_SOC_EXYNOS8895)), y)
	# Default Tx LB Enable
	DHDCFLAGS += -DDHD_LB_TXP_DEFAULT_ENAB
endif
endif



#################
# Common feature
#################

DHDCFLAGS += -DCUSTOMER_HW4 -DCUSTOMER_HW4_DEBUG -DCUSTOMER_HW4_PRIVATE_CMD
DHDCFLAGS += -DWL_CFG80211
#DHDCFLAGS += -DDHD_INIT_DEFAULT_MEMDUMP

# DMA64 suppports on 64bit Architecture
ifeq ($(CONFIG_64BIT),y)
DHDCFLAGS := $(filter-out -DBCMDMA32,$(DHDCFLAGS))
DHDCFLAGS += -DBCMDMA64OSL
endif

# Debug
DHDCFLAGS += -DSIMPLE_MAC_PRINT
DHDCFLAGS += -DDEBUGFS_CFG80211
# Enable wakelock for legacy scan
DHDCFLAGS += -DDHD_USE_SCAN_WAKELOCK
# Enable wakelock debug function
DHDCFLAGS += -DDHD_TRACE_WAKE_LOCK
# Print out kernel panic point of file and line info when assertion happened
DHDCFLAGS += -DBCMASSERT_LOG
# Collect Current Assoc/Reject Status for Big Data logging
DHDCFLAGS += -DDHD_ENABLE_BIGDATA_LOGGING
# Enable SI utility error log
DHDCFLAGS += -DSI_ERROR_ENFORCE

# Print 8021X
DHDCFLAGS += -DDHD_8021X_DUMP

# Print DHCP
DHDCFLAGS += -DDHD_DHCP_DUMP

# Print ICMP
DHDCFLAGS += -DDHD_ICMP_DUMP

# VSDB
DHDCFLAGS += -DVSDB

# Wi-Fi Direct
DHDCFLAGS += -DWL_CFG80211_VSDB_PRIORITIZE_SCAN_REQUEST
# For p2p connection issue
DHDCFLAGS += -DWL_SCB_TIMEOUT=10
# For TDLS tear down inactive time 10 sec
DHDCFLAGS += -DCUSTOM_TDLS_IDLE_MODE_SETTING=10000
# for TDLS RSSI HIGH for establishing TDLS link
DHDCFLAGS += -DCUSTOM_TDLS_RSSI_THRESHOLD_HIGH=-80
# for TDLS RSSI HIGH for tearing down TDLS link
DHDCFLAGS += -DCUSTOM_TDLS_RSSI_THRESHOLD_LOW=-85

# Roaming
DHDCFLAGS += -DROAM_AP_ENV_DETECTION -DKEEP_CUSTOM_ROAM_TRIGGER
DHDCFLAGS += -DROAM_ENABLE -DROAM_CHANNEL_CACHE -DROAM_API
DHDCFLAGS += -DENABLE_FW_ROAM_SUSPEND
DHDCFLAGS += -DDHD_LOSSLESS_ROAMING

# Enable Roam time thresh
DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND
DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10
DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000
DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925

# CCX
ifeq ($(CONFIG_BRCM_CCX),y)
  DHDCFLAGS += -DBCMCCX
endif

# SoftAP
DHDCFLAGS += -DWL_SUPPORT_AUTO_CHANNEL -DSUPPORT_HIDDEN_AP
DHDCFLAGS += -DSUPPORT_SOFTAP_SINGL_DISASSOC
DHDCFLAGS += -DDISABLE_11H_SOFTAP
# For support WPA and WPA2 mixed mode
DHDCFLAGS += -DSUPPORT_SOFTAP_WPAWPA2_MIXED

# HW4 specific features
DHDCFLAGS += -DSUPPORT_PM2_ONLY
DHDCFLAGS += -DSUPPORT_DEEP_SLEEP
DHDCFLAGS += -DSUPPORT_AMPDU_MPDU_CMD
DHDCFLAGS += -DSOFTAP_SEND_HANGEVT
DHDCFLAGS += -DNUM_SCB_MAX_PROBE=3
DHDCFLAGS += -DDHD_USE_ATOMIC_PKTGET
DHDCFLAGS += -DTDLS_MSG_ONLY_WFD
DHDCFLAGS += -DCUSTOM_KEEP_ALIVE_SETTING=30000
DHDCFLAGS += -DCUSTOM_EVENT_PM_WAKE=30
DHDCFLAGS += -DENABLE_TDLS_AUTO_MODE
DHDCFLAGS += -DP2P_SKIP_DFS
DHDCFLAGS += -DKEEP_WIFION_OPTION
DHDCFLAGS += -DPREVENT_REOPEN_DURING_HANG
DHDCFLAGS += -DEXPLICIT_DISCIF_CLEANUP
DHDCFLAGS += -DSKIP_WLFC_ON_CONCURRENT
DHDCFLAGS += -DP2P_LISTEN_OFFLOADING
DHDCFLAGS += -DUNSET_FW_ROAM_WIPHY_FLAG
DHDCFLAGS += -DENABLE_IPMCAST_FILTER
# Extended HANG event with reason codes
DHDCFLAGS += -DDHD_USE_EXTENDED_HANG_REASON
DHDCFLAGS += -DDISABLE_ANDROID_PNO
DHDCFLAGS += -DCUSTOM_LONG_RETRY_LIMIT=12

# For special PNO Event keep wake lock for 10sec
DHDCFLAGS += -DCUSTOM_PNO_EVENT_LOCK_xTIME=10

# For IPV6 Neighbor Discovery Offload Support
DHDCFLAGS += -DIPV6_NDO_SUPPORT

# Early suspend
DHDCFLAGS += -DDHD_USE_EARLYSUSPEND

# WiFi turn off delay
DHDCFLAGS += -DWIFI_TURNOFF_DELAY=100

# For Scan result patch
DHDCFLAGS += -DESCAN_RESULT_PATCH
DHDCFLAGS += -DDUAL_ESCAN_RESULT_BUFFER
DHDCFLAGS += -DESCAN_BUF_OVERFLOW_MGMT

# For Static Buffer
ifeq ($(CONFIG_BROADCOM_WIFI_RESERVED_MEM),y)
  DHDCFLAGS += -DCONFIG_DHD_USE_STATIC_BUF
  DHDCFLAGS += -DENHANCED_STATIC_BUF
  DHDCFLAGS += -DSTATIC_WL_PRIV_STRUCT
ifeq ($(BUS_IFACE_PCIE),y)
  # Use preallocated IOCTL, EVENT and INFO buffer
  DHDCFLAGS += -DDHD_USE_STATIC_CTRLBUF
ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y)
  DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP
endif
endif # BUS_IFACE_PCIE
endif # CONFIG_BROADCOM_WIFI_RESERVED_MEM

# Ioctl timeout 5000ms
DHDCFLAGS += -DIOCTL_RESP_TIMEOUT=5000

# Priority mismatch fix with kernel stack
DHDCFLAGS += -DPKTPRIO_OVERRIDE

# Prevent rx thread monopolize
DHDCFLAGS += -DWAIT_DEQUEUE

# Control PM related value for MFG process(Read from file) 
DHDCFLAGS += -DDHD_PM_CONTROL_FROM_FILE

# Use Android wake lock mechanism
DHDCFLAGS += -DCONFIG_HAS_WAKELOCK

# Used short dwell time during initial scan
DHDCFLAGS += -DUSE_INITIAL_SHORT_DWELL_TIME

# Korea and Japan ccode revision will be fixed by nvram's value
DHDCFLAGS += -DKEEP_KR_REGREV
DHDCFLAGS += -DKEEP_JP_REGREV

# NAN feature
# Temporarily disabled NAN build.
# As changes required as per new wlioctl.h are in RB stage.
# Once RB gets ship it, will revert this change.
ifeq ($(CONFIG_WL_NAN),y)
# DHDCFLAGS += -DWL_NAN
endif

# FCC power limit control on ch12/13.
DHDCFLAGS += -DFCC_PWR_LIMIT_2G

# WFA Certification feature
DHDCFLAGS += -DUSE_WFA_CERT_CONF

# Change the WL_SCAN_TIMER_INTERVAL_MS of DHD
DHDCFLAGS += -DCUSTOMER_SCAN_TIMEOUT_SETTING

# Does not forword internal packet
DHDCFLAGS += -DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT

# Enable HANG event test private command
DHDCFLAGS += -DSUPPORT_TRIGGER_HANG_EVENT

# Enable Checking Blob existence
DHDCFLAGS += -DDHD_BLOB_EXISTENCE_CHECK

# Random mac scan
DHDCFLAGS += -DSUPPORT_RANDOM_MAC_SCAN

# WLC_E_SET_SSID fail
DHDCFLAGS += -DSET_SSID_FAIL_CUSTOM_RC=100

# Enable to block Band A(5G), Only support Band B(2G)
ifeq ($(CONFIG_WLAN_5GDISABLE),y)
DHDCFLAGS += -DDHD_2G_ONLY_SUPPORT
endif
# Disable VHT(5G HT80) mode
ifeq ($(CONFIG_WLAN_VHTDISABLE),y)
DHDCFLAGS += -DDHD_DISABLE_VHTMODE
endif

# Android Version Check from Platform source
ifneq ($(ANDROID_VERSION),)
MAJOR_VERSION := $(shell echo $(ANDROID_VERSION) | rev | cut -c 5- | rev)
DHDCFLAGS += -DANDROID_PLATFORM_VERSION=$(MAJOR_VERSION)
else
ifneq ($(PLATFORM_VERSION),)
MAJOR_VERSION := $(shell echo $(PLATFORM_VERSION) | cut -d "." -f 1)
DHDCFLAGS += -DANDROID_PLATFORM_VERSION=$(MAJOR_VERSION)
endif
endif

ifneq ($(PLATFORM_VERSION),)
# Android O-OS (version 8) support
ifeq ($(shell expr $(PLATFORM_VERSION) \>= 8.0),1)
DHDCFLAGS += -DCUSTOM_ASSOC_TIMEOUT=20
endif
endif

# Use Legacy dump path
ifneq ($(USE_LEGACY_DUMP_PATH),)
  DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/media/wifi/log/\""
else
  DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/data/log/wifi/\""
endif

# TCP SYNC flood attack block
DHDCFLAGS += -DDHDTCPSYNC_FLOOD_BLK -DTCP_SYNC_FLOOD_LIMIT=50

##############################
# Android Platform Definition
##############################


# bcmdhd
#######################
# Android N features
#######################

# Definitions are filtered by Kernel version
DHDCFLAGS += -DWL_ENABLE_P2P_IF
DHDCFLAGS += -DWL_SUPPORT_BACKPORTED_KPATCHES

# Default definitions for KitKat, Lollipop
DHDCFLAGS += -DWL_CFG80211_STA_EVENT
DHDCFLAGS += -DWL_IFACE_COMB_NUM_CHANNELS

# To support p2p private command on kernel 3.8 or above
DHDCFLAGS += -DWL_NEWCFG_PRIVCMD_SUPPORT

# Link Statistics feature
DHDCFLAGS += -DLINKSTAT_SUPPORT

# To support WL_VENDOR_EXT_SUPPORT
DHDCFLAGS += -DWL_VENDOR_EXT_SUPPORT

# Extra file list for Lollipop
DHD_ANDROID_OFILES := wl_cfgvendor.o bcmxtlv.o bcm_app_utils.o

#PNO Scan Result Version
DHDCFLAGS += -DPFN_SCANRESULT_2

#RSSI Monitor
DHDCFLAGS += -DRSSI_MONITOR_SUPPORT

#APF
DHDCFLAGS += -DAPF

#Get valid channels on SoftAP
DHDCFLAGS += -DDHD_GET_VALID_CHANNELS

#Debugaility
DHDCFLAGS += -DDNGL_EVENT_SUPPORT

# GN4 platform still disabled Lollipop features
ifeq ($(filter y,$(CONFIG_MACH_UNIVERSAL5433) $(CONFIG_ARCH_APQ8084)),y)
DHD_ANDROID_OFILES :=$(filter-out wl_cfgvendor.o,$(DHD_ANDROID_OFILES))
DHDCFLAGS :=$(filter-out -DLINKSTAT_SUPPORT,$(DHDCFLAGS))
DHDCFLAGS :=$(filter-out -DWL_VENDOR_EXT_SUPPORT,$(DHDCFLAGS))
endif



##########################
# driver type
# m: module type driver
# y: built-in type driver
##########################
DRIVER_TYPE ?= m

#########################
# Chip dependent feature
#########################
# Chipsets supported both SDIO and PCIE
ifneq ($(CONFIG_BCM4361),)
 DHDCFLAGS += -DBCM4361_CHIP -DSUPPORT_MULTIPLE_REVISION
 DHDCFLAGS += -DSUPPORT_BCM4361_MIXED_MODULES -DSUPPORT_MULTIPLE_BOARDTYPE
 DHDCFLAGS += -DMIMO_ANT_SETTING
 DHDCFLAGS += -DUSE_CID_CHECK
 DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
 DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT=6
 DHDCFLAGS += -DSOFTAP_UAPSD_OFF
 DHDCFLAGS += -DDHD_SSSR_DUMP
# tput enhancement for common
 DHDCFLAGS += -DUSE_WL_TXBF
 DHDCFLAGS += -DUSE_WL_FRAMEBURST
 DHDCFLAGS += -DDISABLE_FRAMEBURST_VSDB
 DHDCFLAGS += -DDISABLE_PM_BCNRX
 DHDCFLAGS += -DALLOW_CHSW_EVT
# Customer ant select and set PM
 DHDCFLAGS += -DCUSTOM_SET_ANTNPM
 DHDCFLAGS += -DCUSTOM_BLOCK_DEAUTH_AT_EAP_FAILURE
# Customer ocl disabe
 DHDCFLAGS += -DCUSTOM_SET_OCLOFF
# tput enhancement for PCIE
ifeq ($(BUS_IFACE_PCIE),y)
  DHDCFLAGS += -DCUSTOM_TCPACK_SUPP_RATIO=15
  DHDCFLAGS += -DCUSTOM_TCPACK_DELAY_TIME=10
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
endif

ifeq ($(CONFIG_ARCH_MSM),y)
  DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS))
endif

# New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS -DWLAIBSS_PS
#  DHDCFLAGS += -DWLADPS
#  DHDCFLAGS += -DADPS_MODE_FROM_FILE
#  DHDCFLAGS += -DWLADPS_SEAK_AP_WAR
  DHDCFLAGS += -DWLADPS_PRIVATE_CMD
  DHDCFLAGS += -DWL_BAM
  DHDCFLAGS += -DWL_BAM_FILE_PATH="\"/data/misc/conn/\""
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT -DSUPPORT_5G_1024QAM_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
# virtual interface for RSDB
  DHDCFLAGS += -DWL_VIRTUAL_APSTA
# disable pruned scan
  DHDCFLAGS += -DDISABLE_PRUNED_SCAN
# Remove common feature for BCM4361
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
# Block ARP during DHCP on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP
# Use restricted channels on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL
  DHDCFLAGS += -DDHD_LOG_DUMP
# Higher rate beacon transmission at softAP
  DHDCFLAGS += -DSUPPORT_AP_HIGHER_BEACONRATE
# Enhanced radio power save with NOA at softAP
  DHDCFLAGS += -DSUPPORT_AP_RADIO_PWRSAVE
# WBTEXT (11kv) feature
  DHDCFLAGS += -DWBTEXT
# LOGTRACE_EVENT
  DHDCFLAGS += -DSHOW_LOGTRACE
  DHDCFLAGS += -DLOGTRACE_FROM_FILE
ifeq ($(CONFIG_ARCH_MSM8998),y)
# Use SMMU for IOMEM
  DHDCFLAGS += -DUSE_SMMU_ARCH_MSM
  DHDCFLAGS += -DSET_DMA_MASK_64BIT
endif
# Expand TCP tx queue to 10 times of default size
  DHDCFLAGS += -DTSQ_MULTIPLIER=10
# HANG simulation
  DHDCFLAGS += -DDHD_HANG_SEND_UP_TEST
ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_ARCH_MSM8998) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_SOC_EXYNOS8895) $(CONFIG_ARCH_TEGRA)),y)
# Runtime PM
  DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100
# Disable SOFTAP_SEND_HANGEVT
  DHDCFLAGS := $(filter-out -DSOFTAP_SEND_HANGEVT,$(DHDCFLAGS))
# Enable LQCM
  DHDCFLAGS += -DSUPPORT_LQCM
endif
ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_ARCH_MSM8998) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_SOC_EXYNOS8895)), y)
# DHD_LB_IRQSET - CPU migration by IRQ Affinity Set
  DHDCFLAGS += -DDHD_LB_IRQSET
endif
# Generate .softap.info
  DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE

ifneq ($(PLATFORM_VERSION),)
# DREAM Android N OS should not use below features
ifeq ($(shell expr $(PLATFORM_VERSION) \< 8.0),1)
ifneq ($(filter y,$(CONFIG_WLAN_GREAT) $(CONFIG_SEC_GREATQLTE_PROJECT)),y)
 DREAM_NOS_DISCARD_FEATURES := y
endif
endif

# Feature Set used for GREAT N OS and Android O OS
ifneq ($(DREAM_NOS_DISCARD_FEATURES),y)
# Debugaility
  DHDCFLAGS += -DDEBUGABILITY
  DHDCFLAGS += -DDHD_PKT_LOGGING
# Debug Wakeup pkt reason
  DHDCFLAGS += -DDHD_WAKE_STATUS -DDHD_WAKE_RX_STATUS -DDHD_WAKE_EVENT_STATUS
  DHDCFLAGS += -DDHD_WAKEPKT_DUMP
# To support CAC
  DHDCFLAGS += -DSUPPORT_SET_CAC
# LAST ROAM EVENT LOG
  DHDCFLAGS += -DWL_LASTEVT
# Use single nvram file
  DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE
#STAT REPORT
#stat report shall be defined only if LINK STAT is defined
  DHDCFLAGS += -DSTAT_REPORT
#define temp static only when SDK doesn't support static memory for STAT REPORT
#  DHDCFLAGS += -DSTAT_REPORT_TEMP_STATIC
# Enable DHD_DUMP_MNGR
  DHDCFLAGS += -DDHD_DUMP_MNGR
endif

# RSSI_SUM_REPORT is used over Android O OS only
ifeq ($(shell expr $(PLATFORM_VERSION) \>= 8.0),1)
# RSSI Logging
  DHDCFLAGS += -DSUPPORT_RSSI_SUM_REPORT
# Enable NDO_CONFIG_SUPPORT in HAL
  DHDCFLAGS += -DNDO_CONFIG_SUPPORT
endif
endif

# For Samsung factory mode only
ifeq ($(CONFIG_SEC_FACTORY),y)
# Detect NON DMA M2M corruption
  DHDCFLAGS += -DDHD_NON_DMA_M2M_CORRUPTION
# Detect FW Memory Corruption
  DHDCFLAGS += -DDHD_FW_MEM_CORRUPTION
endif # CONFIG_SEC_FACTORY

ifeq ($(CONFIG_BCM4361),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4359),)
  DHDCFLAGS += -DBCM4359_CHIP -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DMIMO_ANT_SETTING
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT=6
  DHDCFLAGS += -DSOFTAP_UAPSD_OFF
  DHDCFLAGS += -DDHD_SSSR_DUMP
# tput enhancement for common
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST
  DHDCFLAGS += -DDISABLE_FRAMEBURST_VSDB
  DHDCFLAGS += -DDISABLE_PM_BCNRX
  DHDCFLAGS += -DALLOW_CHSW_EVT

# tput enhancement for PCIE
ifeq ($(BUS_IFACE_PCIE),y)
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_AMPDU_MPDU=48
  DHDCFLAGS += -DCUSTOM_AMPDU_RELEASE=32
  DHDCFLAGS += -DCUSTOM_AMSDU_AGGSF=2
  DHDCFLAGS += -DCUSTOM_TCPACK_SUPP_RATIO=15
  DHDCFLAGS += -DCUSTOM_TCPACK_DELAY_TIME=10
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
endif

ifeq ($(CONFIG_ARCH_QCOM),y)
  DHDCFLAGS += -DCONFIG_ARCH_MSM
  DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS))
endif

ifeq ($(CONFIG_ARCH_MSM),y)
  DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS))
endif

# New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS -DWLAIBSS_PS
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
  DHDCFLAGS += -DWL11ULB
 #DHDCFLAGS += -DSUPPORT_SENSORHUB
 # virtual interface for RSDB
  DHDCFLAGS += -DWL_VIRTUAL_APSTA
 # virtual interface support for BCM4359 only
  DHDCFLAGS += -DDHD_USE_CHECK_DONGLE_IDLE
  DHDCFLAGS += -DDHD_ABORT_SCAN_CREATE_INTERFACE
 # disable pruned scan
  DHDCFLAGS += -DDISABLE_PRUNED_SCAN
 # Remove common feature for BCM4359
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
 # Temperature Throttling control
  DHDCFLAGS += -DENABLE_TEMP_THROTTLING
 # Block ARP during DHCP on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP
 # Use restricted channels on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL
  DHDCFLAGS += -DDHD_LOG_DUMP
# To support CAC
  DHDCFLAGS += -DSUPPORT_SET_CAC
  DHDCFLAGS += -DSUPPORT_CUSTOM_SET_CAC
# To support Enable EVENT SDB Transition log.
  DHDCFLAGS += -DSUPPORT_EVT_SDB_LOG
ifeq ($(filter y,$(CONFIG_ARCH_MSM8996) $(CONFIG_ARCH_MSM8998) $(CONFIG_SOC_EXYNOS8890) $(CONFIG_ARCH_TEGRA) $(CONFIG_ARCH_SDM845)),y)
 # Runtime PM
  DHDCFLAGS += -DDHD_PCIE_RUNTIMEPM -DMAX_IDLE_COUNT=11 -DCUSTOM_DHD_RUNTIME_MS=100
 # IRQ affinity setting for RX Load Balance
  DHDCFLAGS += -DDHD_LB_IRQSET
 # Disable SOFTAP_SEND_HANGEVT
  DHDCFLAGS := $(filter-out -DSOFTAP_SEND_HANGEVT,$(DHDCFLAGS))
 # CLM
  DHDCFLAGS += -DDHD_SUPPORT_GB_999
 # Configure MU-MIMO capability
ifeq ($(CONFIG_SOC_EXYNOS8890),y)
  DHDCFLAGS += -DDYNAMIC_MUMIMO_CONTROL
endif
ifeq ($(filter y,$(CONFIG_ARCH_MSM8998) $(CONFIG_ARCH_SDM845)),y)
# Use SMMU for IOMEM
  DHDCFLAGS += -DUSE_SMMU_ARCH_MSM
  DHDCFLAGS += -DSET_DMA_MASK_64BIT
endif
endif

ifeq ($(filter y,$(CONFIG_WLAN_HERO) $(CONFIG_SEC_HEROQLTE_PROJECT)),y)
  DHDCFLAGS += -DDHD_SUPPORT_US_949
  DHDCFLAGS += -DDHD_SUPPORT_QA_6
endif

ifeq ($(filter y,$(CONFIG_WLAN_HERO2) $(CONFIG_SEC_HERO2QLTE_PROJECT)),y)
  DHDCFLAGS += -DDHD_SUPPORT_US_945
  DHDCFLAGS += -DDHD_SUPPORT_QA_6
endif
# HANG simulation
  DHDCFLAGS += -DDHD_HANG_SEND_UP_TEST

ifeq ($(filter y,$(CONFIG_WLAN_GRACE) $(CONFIG_SEC_GRACEQLTE_PROJECT)),y)
  # WBTEXT (11kv) feature
  DHDCFLAGS += -DWBTEXT
  DHDCFLAGS += -DDHD_USE_CLMINFO_PARSER
endif

 # RSDB mode from file config
  DHDCFLAGS += -DRSDB_MODE_FROM_FILE
 # LOGTRACE_EVENT
  DHDCFLAGS += -DSHOW_LOGTRACE
  DHDCFLAGS += -DLOGTRACE_FROM_FILE

# Enable concate blob path
    DHDCFLAGS += -DCONCATE_BLOB

# For Samsung factory mode only
ifeq ($(CONFIG_SEC_FACTORY),y)
# Detect NON DMA M2M corruption
  DHDCFLAGS += -DDHD_NON_DMA_M2M_CORRUPTION
# Detect FW Memory Corruption
  DHDCFLAGS += -DDHD_FW_MEM_CORRUPTION
endif # CONFIG_SEC_FACTORY

ifeq ($(CONFIG_BCM4359),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4358),)
  DHDCFLAGS += -DBCM4358_CHIP -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DMIMO_ANT_SETTING
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DSOFTAP_UAPSD_OFF
# tput enhancement for common
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST
  DHDCFLAGS += -DDISABLE_FRAMEBURST_VSDB

# tput enhancement for SDIO
ifeq ($(BUS_IFACE_SDIO),y)
  DHDCFLAGS += -DHW_OOB
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DRXFRAME_THREAD
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
  DHDCFLAGS += -DCUSTOM_DEF_TXGLOM_SIZE=40 -DDHD_TXBOUND=40
  DHDCFLAGS += -DENABLE_ADAPTIVE_SCHED -DCUSTOM_CPUFREQ_THRESH=1000000
  DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=40
  DHDCFLAGS += -DMAX_HDR_READ=128
  DHDCFLAGS += -DDHD_FIRSTREAD=128
  DHDCFLAGS += -DCUSTOM_AMPDU_MPDU=16
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
endif

# tput enhancement for PCIE
ifeq ($(BUS_IFACE_PCIE),y)
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_AMPDU_MPDU=32
  DHDCFLAGS += -DCUSTOM_AMPDU_RELEASE=16
  DHDCFLAGS += -DCUSTOM_AMSDU_AGGSF=4
  DHDCFLAGS += -DCUSTOM_TCPACK_SUPP_RATIO=15
  DHDCFLAGS += -DCUSTOM_TCPACK_DELAY_TIME=10
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
endif

# Disabled DHDTCPACK_SUPPRESS for T Project / Enabled for Zero Project
ifeq ($(filter y,$(CONFIG_MACH_UNIVERSAL5433) $(CONFIG_ARCH_APQ8084)),y)
  DHDCFLAGS :=$(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS))
endif

ifeq ($(CONFIG_ARCH_MSM),y)
  DHDCFLAGS += -DSET_RPS_CPUS
  DHDCFLAGS := $(filter-out -DDHDTCPACK_SUPPRESS,$(DHDCFLAGS))
endif

# New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS -DWLAIBSS_PS
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
ifeq ($(CONFIG_BCM4358),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4354),)
  DHDCFLAGS += -DBCM4354_CHIP -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DMIMO_ANT_SETTING
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DSOFTAP_UAPSD_OFF
  DHDCFLAGS += -DFORCE_DISABLE_SINGLECORE_SCAN
# tput enhancement for common
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST

# tput enhancement for SDIO
ifeq ($(BUS_IFACE_SDIO),y)
  DHDCFLAGS += -DHW_OOB
  DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DRXFRAME_THREAD
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
  DHDCFLAGS += -DCUSTOM_DEF_TXGLOM_SIZE=40 -DDHD_TXBOUND=40
  DHDCFLAGS += -DENABLE_ADAPTIVE_SCHED -DCUSTOM_CPUFREQ_THRESH=1000000
  DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=40
  DHDCFLAGS += -DMAX_HDR_READ=128
  DHDCFLAGS += -DDHD_FIRSTREAD=128
  DHDCFLAGS += -DCUSTOM_AMPDU_MPDU=16
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
endif

# tput enhancement for PCIE
ifeq ($(BUS_IFACE_PCIE),y)
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_AMPDU_MPDU=32
  DHDCFLAGS += -DCUSTOM_AMPDU_RELEASE=16
endif


# New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
ifeq ($(CONFIG_BCM4354),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

# Chipsets supported SDIO only
ifeq ($(BUS_IFACE_SDIO),y)
ifneq ($(CONFIG_BCM4339),)
  DHDCFLAGS += -DBCM4339_CHIP -DHW_OOB
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR

  # tput enhancement
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST
  DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1
  DHDCFLAGS += -DRXFRAME_THREAD
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
ifeq ($(CONFIG_ARCH_MSM),y)
  DHDCFLAGS += -DCUSTOM_DEF_TXGLOM_SIZE=32 -DDHD_TXBOUND=32
  DHDCFLAGS += -DENABLE_ADAPTIVE_SCHED -DCUSTOM_CPUFREQ_THRESH=1000000
endif
  DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32

  # New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS -DWLTDLS_AUTO_ENABLE
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
  DHDCFLAGS += -DBCMCCX_S69
ifeq ($(CONFIG_BCM4339),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM43456),)
  DHDCFLAGS += -DBCM43456_CHIP
  DHDCFLAGS += -DWLADPS_PRIVATE_CMD
endif
ifneq ($(CONFIG_BCM43455),)
  DHDCFLAGS += -DBCM43455_CHIP
endif
ifneq ($(CONFIG_BCM43454),)
  DHDCFLAGS += -DBCM43454_CHIP
endif

# BCM43454/43455/43456 common difine.
ifneq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)))
  DHDCFLAGS += -DHW_OOB
  DHDCFLAGS += -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR

  # tput enhancement
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST
  DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1
  DHDCFLAGS += -DRXFRAME_THREAD
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB

  # New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS -DWLTDLS_AUTO_ENABLE
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
  DHDCFLAGS += -DBCMCCX_S69
ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455) $(CONFIG_BCM43456)),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
  DHDCFLAGS += -DDHD_LOG_DUMP

  # FCC power limit control on ch12/13.
  #   DHDCFLAGS += -DFCC_PWR_LIMIT_2G
  #
  # Enable Roam time thresh
  DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND
  DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10
  DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000
  DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925

ifeq ($(filter y,$(CONFIG_BCM43454) $(CONFIG_BCM43455)), y)
  #Support Qatar 5G band 36-64, 100-144, 149-165 channels
  DHDCFLAGS += -DDHD_SUPPORT_QA_6
endif

ifneq ($(PLATFORM_VERSION),)
# Android O OS use below features
ifeq ($(shell expr $(PLATFORM_VERSION) \>= 8.0),1)
# Use single nvram file
  DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE
endif
endif

ifneq ($(filter y,$(CONFIG_BCM43455) $(CONFIG_BCM43456)),$(filter m,$(CONFIG_BCM43455) $(CONFIG_BCM43456)))
# Enable Firmware Coredump
    DHDCFLAGS += -DDHD_FW_COREDUMP
ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y)
    DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP
endif

# Enable concate blob path
    DHDCFLAGS += -DCONCATE_BLOB
# Generate .softap.info
    DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE

ifneq ($(CONFIG_BCM43456),)
# STA/SoftAP Concurrent Mode Support for legacy chip
  DHDCFLAGS += -DWL_VIRTUAL_APSTA
  DHDCFLAGS += -DWL_RESTRICTED_APSTA_SCC
  DHDCFLAGS += -DSOFTAP_UAPSD_OFF
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
# Use restricted channels on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_RESTRICTED_CHANNEL
# Block ARP during DHCP on STA/SoftAP concurrent mode
  DHDCFLAGS += -DAPSTA_BLOCK_ARP_DURING_DHCP
endif
endif
endif

ifneq ($(CONFIG_BCM4335),)
  DHDCFLAGS += -DBCM4335_CHIP -DHW_OOB -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR

  # tput enhancement
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DDHDTCPACK_SUPPRESS
# DHDCFLAGS += -DDHD_SET_FW_HIGHSPEED
  DHDCFLAGS += -DUSE_WL_TXBF
  DHDCFLAGS += -DUSE_WL_FRAMEBURST
  DHDCFLAGS += -DCUSTOM_FRAMEBURST_SET=1
  DHDCFLAGS += -DRXFRAME_THREAD
  DHDCFLAGS += -DREPEAT_READFRAME
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
# DHDCFLAGS += -DTPUT_DEBUG
ifeq ($(CONFIG_MACH_JF),y)
  DHDCFLAGS += -DCUSTOM_DEF_TXGLOM_SIZE=32 -DDHD_TXBOUND=32
endif
ifeq ($(CONFIG_ARCH_MSM),y)
  DHDCFLAGS += -DCUSTOM_DEF_TXGLOM_SIZE=32 -DDHD_TXBOUND=32
  DHDCFLAGS += -DENABLE_ADAPTIVE_SCHED -DCUSTOM_CPUFREQ_THRESH=1000000
endif
  DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32

  # New Features
  DHDCFLAGS += -DWL11U -DMFP
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLTDLS -DWLTDLS_AUTO_ENABLE
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DDHD_ENABLE_LPC
  DHDCFLAGS += -DWLAIBSS
  DHDCFLAGS += -DWL_RELMCAST
  DHDCFLAGS += -DSUPPORT_LTECX
  DHDCFLAGS += -DSUPPORT_2G_VHT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
# For BT LOCK
ifeq ($(CONFIG_BCM4335BT),y)
  DHDCFLAGS += -DENABLE_4335BT_WAR
endif
ifeq ($(CONFIG_BCM4335),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4334),)
  DHDCFLAGS += -DBCM4334_CHIP -DHW_OOB -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=64
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=5
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
ifeq ($(CONFIG_ARCH_MSM8960),y)
  DHDCFLAGS += -DDHD_SDALIGN=4
endif
  # New Features
  DHDCFLAGS += -DWL11U
ifeq ($(CONFIG_BCM4334),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4334W),)
  DHDCFLAGS += -DBCM4334W_CHIP -DHW_OOB -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=64
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=5
  DHDCFLAGS += -DPROP_TXSTATUS_VSDB
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DSUPPORT_WL_TXPOWER
ifeq ($(CONFIG_ARCH_MSM8960),y)
  DHDCFLAGS += -DDHD_SDALIGN=4
endif
  # New Features
  DHDCFLAGS += -DWL11U
ifeq ($(CONFIG_BCM4334W),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif

ifneq ($(CONFIG_BCM4343),)
  DHDCFLAGS += -DBCM43430_CHIP -DSUPPORT_MULTIPLE_REVISION -DHW_OOB
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=7
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
# tput enhancement
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DRXFRAME_THREAD -DRXTHREAD_ONLYSTA
  DHDCFLAGS += -DMAX_HDR_READ=128
  DHDCFLAGS += -DDHD_FIRSTREAD=128
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
ifeq ($(CONFIG_BCM43436),y)
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8
  DHDCFLAGS += -DCUSTOM_DPC_CPUCORE=0
# Enable Firmware Coredump
  DHDCFLAGS += -DDHD_FW_COREDUMP
ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y)
  DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP
endif
else
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0
endif

  # New Features
  DHDCFLAGS += -DWL11U
  DHDCFLAGS += -DBCMCCX
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DWLTDLS -DWLTDLS_AUTO_ENABLE
  DHDCFLAGS += -DDHD_LOG_DUMP
  DHDCFLAGS += -DDHD_UNSUPPORT_IF_CNTS
ifeq ($(CONFIG_BCM4343),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
  # FCC power limit control on ch12/13.
  DHDCFLAGS += -DFCC_PWR_LIMIT_2G
  # Enable Roam time thresh
  DHDCFLAGS += -DENABLE_MAX_DTIM_IN_SUSPEND
  DHDCFLAGS += -DCUSTOM_BCN_TIMEOUT_IN_SUSPEND=10
  DHDCFLAGS += -DCUSTOM_ROAM_TIME_THRESH_IN_SUSPEND=6000
  DHDCFLAGS += -DMAX_DTIM_ALLOWED_INTERVAL=925
  # Remove common feature for BCM4343
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DSUPPORT_P2P_GO_PS,$(DHDCFLAGS))
# Generate .softap.info
  DHDCFLAGS += -DGEN_SOFTAP_INFO_FILE
ifneq ($(PLATFORM_VERSION),)
# Android O OS use below features
ifeq ($(shell expr $(PLATFORM_VERSION) \>= 8.0),1)
# Use single nvram file
  DHDCFLAGS += -DDHD_USE_SINGLE_NVRAM_FILE
endif
endif
endif

ifneq ($(CONFIG_BCM43012),)
  DHDCFLAGS += -DBCM43012_CHIP_ -DHW_OOB
  DHDCFLAGS += -DUSE_CID_CHECK
  DHDCFLAGS += -DCUSTOM_ASSOC_RETRY_MAX=7
  DHDCFLAGS += -DENABLE_BCN_LI_BCN_WAKEUP
  # tput enhancement
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=8 -DCUSTOM_RXCHAIN=1
  DHDCFLAGS += -DUSE_DYNAMIC_F2_BLKSIZE -DDYNAMIC_F2_BLKSIZE_FOR_NONLEGACY=128
  DHDCFLAGS += -DBCMSDIOH_TXGLOM -DCUSTOM_TXGLOM=1 -DBCMSDIOH_TXGLOM_HIGHSPEED
  DHDCFLAGS += -DRXFRAME_THREAD -DRXTHREAD_ONLYSTA
  DHDCFLAGS += -DMAX_HDR_READ=128
  DHDCFLAGS += -DDHD_FIRSTREAD=128
  DHDCFLAGS += -DCUSTOM_AMPDU_BA_WSIZE=64 -DCUSTOM_IBSS_AMPDU_BA_WSIZE=16
  # New Features
  DHDCFLAGS += -DWL11U
  DHDCFLAGS += -DWES_SUPPORT
  DHDCFLAGS += -DOKC_SUPPORT
  DHDCFLAGS += -DWLFBT
  DHDCFLAGS += -DWLTDLS -DWLTDLS_AUTO_ENABLE
ifneq  ($(CONFIG_BT_OVER_SDIO),)
  DHDCFLAGS += -DBT_OVER_SDIO
endif
ifeq ($(CONFIG_BCM43012),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
  DHDCFLAGS += -DDHD_FW_COREDUMP
  DHDCFLAGS += -DDHD_USE_EXTENDED_HANG_REASON
ifeq ($(CONFIG_BCMDHD_PREALLOC_MEMDUMP),y)
  DHDCFLAGS += -DDHD_USE_STATIC_MEMDUMP
endif
  DHDCFLAGS += -DDHD_LOG_DUMP
  DHDCFLAGS += -DSHOW_LOGTRACE
  DHDCFLAGS += -DLOGTRACE_FROM_FILE
  DHDCFLAGS += -UCUSTOM_MAX_KSO_ATTEMPTS
  DHDCFLAGS += -DCUSTOM_MAX_KSO_ATTEMPTS=512
  DHDCFLAGS += -DAPSTA_DISABLE_FOR_SOFTAP
  DHDCFLAGS += -DDISCARD_UDPNETBIOS_FLTR
ifeq ($(CONFIG_GALILEO),y)
  DHDCFLAGS += -USUPPORT_P2P_GO_PS
  DHDCFLAGS += -UP2P_LISTEN_OFFLOADING
  DHDCFLAGS += -DUSE_INITIAL_2G_SCAN
  DHDCFLAGS += -DPLATFORM_SLP
  DHDCFLAGS += -DWRITE_MACADDR
  DHDCFLAGS += -UCONFIG_HAS_WAKELOCK
  DHDCFLAGS += -UDHD_TRACE_WAKE_LOCK
  DHDCFLAGS += -DENABLE_WAKEUP_PKT_DUMP
  DHDCFLAGS += -DWL_CFGVENDOR_SEND_HANG_EVENT
  DHDCFLAGS += -DNOT_SUPPORT_EXT_TRAP_INFO
  DHDCFLAGS += -DDHD_USE_EXTENDED_HANG_REASON
  DHDCFLAGS += -DDHD_DUMP_MNGR
  DHDCFLAGS += -UDHD_COMMON_DUMP_PATH
  DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/opt/usr/data/network/\""
  DHDCFLAGS += -DTSQ_MULTIPLIER=10
else ifeq ($(CONFIG_SOLIS),y)
  DHDCFLAGS += -USUPPORT_P2P_GO_PS
  DHDCFLAGS += -UP2P_LISTEN_OFFLOADING
  DHDCFLAGS += -DUSE_INITIAL_2G_SCAN
  DHDCFLAGS += -DPLATFORM_SLP
  DHDCFLAGS += -DWRITE_MACADDR
  DHDCFLAGS += -UCONFIG_HAS_WAKELOCK
  DHDCFLAGS += -UDHD_TRACE_WAKE_LOCK
  DHDCFLAGS += -DDHD_USE_CLMINFO_PARSER
  DHDCFLAGS += -DENABLE_WAKEUP_PKT_DUMP
endif
  # Remove common feature for 43012
  DHDCFLAGS :=$(filter-out -DROAM_AP_ENV_DETECTION,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
endif

ifneq ($(CONFIG_BCM4330),)
  DHDCFLAGS += -DBCM4330_CHIP -DSUPPORT_MULTIPLE_REVISION
  DHDCFLAGS += -DMCAST_LIST_ACCUMULATION
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=0
  DHDCFLAGS += -DWL_CFG80211_GON_COLLISION
ifeq ($(CONFIG_BCM4330),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
  # Remove common feature for BCM4330
  DHDCFLAGS :=$(filter-out -DSUPPORT_AMPDU_MPDU_CMD,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DVSDB,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DPROP_TXSTATUS,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DLIMIT_BORROW,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DROAM_AP_ENV_DETECTION,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DDHD_USE_IDLECOUNT,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DDISABLE_11H_SOFTAP,$(DHDCFLAGS))
endif

ifneq ($(CONFIG_BCM43241),)
  DHDCFLAGS += -DBCM43241_CHIP -DHW_OOB
  DHDCFLAGS += -DMIMO_ANT_SETTING
  DHDCFLAGS += -DCUSTOM_GLOM_SETTING=1 -DCUSTOM_SDIO_F2_BLKSIZE=128
  DHDCFLAGS += -DUSE_SDIOFIFO_IOVAR
  DHDCFLAGS += -DAMPDU_HOSTREORDER
ifeq ($(CONFIG_BCM43241),m)
  DHDCFLAGS += -fno-pic
endif
ifeq ($(CONFIG_BCM43241),y)
  DHDCFLAGS += -DENABLE_INSMOD_NO_FW_LOAD
  DHDCFLAGS += -DUSE_LATE_INITCALL_SYNC
  DRIVER_TYPE = y
endif
endif
endif # chipset supported SDIO only


#############################
# Platform dependent feature
#############################

ifeq ($(CONFIG_SPI_SC8810),y)
  DHDCFLAGS += -DREAD_MACADDR -DBCMSPI -DBCMSPI_ANDROID -DSPI_PIO_32BIT_RW -DSPI_PIO_RW_BIGENDIAN
  DHDCFLAGS += -UCUSTOM_DPC_PRIO_SETTING
  DHDCFLAGS += -DCHANGE_SPI_INTR_POLARITY_ACTIVE_HIGH

  #Remove defines for SDMMC
  DHDCFLAGS :=$(filter-out -DOOB_INTR_ONLY,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DBCMLXSDMMC,$(DHDCFLAGS))

  #Remove defines for JB
  DHDCFLAGS :=$(filter-out -DWL_ENABLE_P2P_IF,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DMULTIPLE_SUPPLICANT,$(DHDCFLAGS))
  DHDCFLAGS :=$(filter-out -DWL_CFG80211_STA_EVENT,$(DHDCFLAGS))
endif

# For SLP feature
ifeq ($(CONFIG_SLP),y)
  DHDCFLAGS += -DUSE_INITIAL_2G_SCAN
  DHDCFLAGS += -DPLATFORM_SLP -DWRITE_MACADDR
  DHDCFLAGS += -DSUPPORT_MULTIPLE_CHIP
  DHDCFLAGS += -USUPPORT_MULTIPLE_REVISION -UCONFIG_HAS_WAKELOCK
endif

# GGSM_WIFI_5GHz_CHANNELS feature is define for only GGSM model
ifeq ($(GGSM_WIFI_5GHz_CHANNELS),true)
  DHDCFLAGS += -DCUSTOMER_SET_COUNTRY
endif

# Compiler option for specific platform
ifeq ($(CONFIG_SOC_EXYNOS7570),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_SOC_EXYNOS8890),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_SOC_EXYNOS8895),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_ARCH_MSM8996),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_ARCH_MSM8998),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_SOC_EXYNOS9110),y)
  DHDCFLAGS += -Wno-date-time
endif
ifeq ($(CONFIG_ARCH_SDM845),y)
  DHDCFLAGS += -Wno-date-time
endif

# DTS Support
ifeq ($(CONFIG_OF),y)
ifneq ($(CONFIG_MACH_UNIVERSAL5433),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_MACH_UNIVERSAL7420),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_SOC_EXYNOS8890),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_MACH_EXSOM7420),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
DHDCFLAGS += -DEXYNOS_PCIE_MODULE_PATCH
obj-$(CONFIG_MACH_EXSOM7420) += dhd_custom_exynos.o dhd_custom_memprealloc.o
endif
ifneq ($(CONFIG_SOC_EXYNOS8890),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_SOC_EXYNOS8895),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_MACH_UNIVERSAL5430),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_MACH_UNIVERSAL5422),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_ARCH_MSM8994),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_ARCH_MSM8996),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_ARCH_MSM8998),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
ifneq ($(CONFIG_MACH_UNIVERSAL3475),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_ARCH_SWA100),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_SOC_EXYNOS7870),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -Wno-date-time
endif
ifneq ($(CONFIG_SOC_EXYNOS7885),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -Wno-date-time
endif
ifneq ($(CONFIG_SOC_EXYNOS7570),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_MACH_UNIVERSAL7580),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_SOC_EXYNOS9110),)
DHDCFLAGS += -DDHD_OF_SUPPORT
endif
ifneq ($(CONFIG_ARCH_SDM845),)
DHDCFLAGS += -DDHD_OF_SUPPORT
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
endif
endif #CONFIG_OF

# DEBUG UART
#ifneq ($(CONFIG_WLAN_GRACE),)
#DHDCFLAGS += -DDHD_DEBUG_UART
#endif

#ifneq ($(CONFIG_SOC_EXYNOS8895),)
#DHDCFLAGS += -DDHD_DEBUG_UART
#endif

ifneq ($(CONFIG_ARCH_TEGRA),)
DHDCFLAGS += -DBCMPCIE_OOB_HOST_WAKE
DHDCFLAGS := $(filter-out -DDHD_ALLOC_COHERENT_MEM_FROM_ATOMIC_POOL,$(DHDCFLAGS))
DHDCFLAGS := $(filter-out -DWL_VENDOR_EXT_SUPPORT,$(DHDCFLAGS))
DHDCFLAGS := $(filter-out -DGSCAN_SUPPORT,$(DHDCFLAGS))
DHDCFLAGS := $(filter-out -DRTT_SUPPORT,$(DHDCFLAGS))
DHDCFLAGS := $(filter-out -DDHD_LB_IRQSET,$(DHDCFLAGS))
DHD_ANDROID_OFILES := $(filter-out wl_cfgvendor.o,$(DHD_ANDROID_OFILES))
DHD_ANDROID_OFILES := $(filter-out dhd_rtt.o,$(DHD_ANDROID_OFILES))
endif

##############################################################
# dhd_sec_feature.h
DHDCFLAGS += -include "dhd_sec_feature.h"
##############################################################

#########
# Others
#########

#EXTRA_LDFLAGS += --strip-debug

EXTRA_CFLAGS += $(DHDCFLAGS) -DDHD_DEBUG
EXTRA_CFLAGS += -DSRCBASE=\"$(src)\"
EXTRA_CFLAGS += -I$(src)/include/ -I$(src)/
EXTRA_CFLAGS += $(call cc-option, -Wunused-but-set-variable)
EXTRA_CFLAGS += $(call cc-option, -Wmaybe-uninitialized)
KBUILD_CFLAGS += -I$(LINUXDIR)/include -I$(shell pwd)

DHDOFILES := dhd_pno.o dhd_common.o dhd_ip.o dhd_custom_gpio.o dhd_custom_sec.o \
	dhd_linux.o dhd_linux_sched.o dhd_cfg80211.o dhd_linux_wq.o aiutils.o bcmevent.o \
	bcmutils.o bcmwifi_channels.o hndpmu.o linux_osl.o sbutils.o siutils.o \
	wl_android.o wl_cfg80211.o wl_cfgp2p.o wl_cfg_btcoex.o wldev_common.o \
	wl_linux_mon.o wl_roam.o dhd_linux_platdev.o dhd_linux_wq.o wl_cfg_btcoex.o \
	hnd_pktq.o hnd_pktpool.o dhd_debug.o dhd_debug_linux.o dhd_custom_cis.o dhd_mschdbg.o \
	dhd_pktlog.o

ifeq ($(BUS_IFACE_SDIO),y)
DHDOFILES += bcmsdh.o bcmsdh_linux.o bcmsdh_sdmmc.o bcmsdh_sdmmc_linux.o
DHDOFILES += dhd_cdc.o dhd_sdio.o
DHDOFILES += dhd_wlfc.o
endif

ifeq ($(BUS_IFACE_PCIE),y)
DHDOFILES += dhd_pcie.o dhd_pcie_linux.o pcie_core.o dhd_flowring.o dhd_msgbuf.o
endif

DHDOFILES += $(DHD_ANDROID_OFILES)

# For SPI projects
ifeq ($(CONFIG_SPI_SC8810),y)
DHDOFILES += bcmsdspi_linux.o bcmspibrcm.o
DHDOFILES :=$(filter-out bcmsdh_sdmmc.o,$(DHDOFILES))
DHDOFILES :=$(filter-out bcmsdh_sdmmc_linux.o,$(DHDOFILES))
endif

# NAN feature
# Temporarily disabled NAN build.
# As changes required as per new wlioctl.h are in RB stage.
# Once RB gets ship it, will revert this change.
ifeq ($(CONFIG_WL_NAN),y)
# DHDOFILES += wl_cfgnan.o bcmxtlv.o
endif

ifneq ($(filter -DSTAT_REPORT,$(DHDCFLAGS)),)
DHDOFILES += wl_statreport.o
endif

ifneq ($(filter -DWL_BAM,$(DHDCFLAGS)),)
DHDOFILES += wl_bam.o
endif

dhd-y := $(DHDOFILES)
obj-$(DRIVER_TYPE)   += dhd.o

all:
	@echo "$(MAKE) --no-print-directory -C $(KDIR) SUBDIRS=$(CURDIR) modules"
	@$(MAKE) --no-print-directory -C $(KDIR) SUBDIRS=$(CURDIR) modules

clean:
	rm -rf *.o *.ko *.mod.c *~ .*.cmd *.o.cmd .*.o.cmd \
	Module.symvers modules.order .tmp_versions modules.builtin

install:
	@$(MAKE) --no-print-directory -C $(KDIR) \
		SUBDIRS=$(CURDIR) modules_install
