#############################################################################################
#
# The supported Target List. ( TARGET_PLATFORM = Core Name + Code Name + Product Name )
# Input one of the list below in TARGET_PLATFORM.
# If new target is needed, Add item in the list below and Fill the relative options later.
#
#	1. TARGET_AML8726M3_MESON_VI30
#	2. TARGET_MTK6575M_EAGLE75V1
#	3. TARGET_ALLWINNER_A10_EVB
#	4. TARGET_PANDABOARD_ES_EVB
#	5. TARGET_VIA_WMS8304
#	6. TARGET_VIA_WM8880
#	7. TARGET_ALLWINNER_A20
#	8. TARGET_ALLWINNER_A23
#	9. TARGET_CLG_CLM9722
#	10. TARGET_ALLWINNER_A31
#	11. TARGET_RKXXXX
#
#############################################################################################


#TARGET_PLATFORM = TARGET_AML8726M3_MESON_VI30
#TARGET_PLATFORM = TARGET_ALLWINNER_A10_EVB
#TARGET_PLATFORM = TARGET_PANDABOARD_ES_EVB
#TARGET_PLATFORM = TARGET_VIA_WMS8304
TARGET_PLATFORM = TARGET_VIA_WM8880
#TARGET_PLATFORM = TARGET_CLG_CLM9722
#TARGET_PLATFORM = TARGET_AMBRELLA
#TARGET_PLATFORM = TARGET_LINUX_X86
#TARGET_PLATFORM = TARGET_ALLWINNER_A20
#TARGET_PLATFORM = TARGET_ALLWINNER_A23
#TARGET_PLATFORM = TARGET_ALLWINNER_A31
#TARGET_PLATFORM = TARGET_RKXXXX

#############################################################################################
# Makefile generated by johnny
#
# If you want to use the current Makefile in another platform, modify environment value below.
#		1. TARGET_PLATFORM
#		2. NMC1000_SRC_VERSION [define for NMC1000 Driver Version ( This has to be equal to Driver folder and Firmware file name )]
#		   NMC1000_FW_VERSION [ Not define by default. But if there is the updated bin additionally, 1,2,3,... ]
#		3. MODULE_NAME
#		4. DEBFLAGS
#		5. bus type
#		6. Additional Bus type
#		7. CONFIG_DEBUGFS_ENABLE
#		8. Host AP
#############################################################################################

################################################################
# Amlogic
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_AML8726M3_MESON_VI30)

# 1.
	TARGET_ARCH = PLAT_AML8726_M3

# 2.
	NMC1000_SRC_VERSION = 5.1

# 3.
	MODULE_NAME = nmi_wifi

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	else

	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif


################################################################
# MediaTek
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_MTK6575M_EAGLE75V1)

# 1.
	TARGET_ARCH = PLAT_MT6575M

# 2.
	NMC1000_SRC_VERSION = 4.0

# 3.
	MODULE_NAME = nmi_wifi
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif

################################################################
# Allwinner (A10 EVB)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_ALLWINNER_A10_EVB)

# 1.
	TARGET_ARCH = PLAT_ALLWINNER_A10

# 2.
	NMC1000_SRC_VERSION = 6.2
	NMC1000_FW_VERSION = 1

# 3.
	MODULE_NAME = nmi_wifi
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	BUS_TYPE = NMI_SDIO

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
	endif

endif

################################################################
# Allwinner (A20)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_ALLWINNER_A20)

# 1.
	TARGET_ARCH = PLAT_ALLWINNER_A20

# 2.
	NMC1000_SRC_VERSION = 9.3
	PATCHLEVEL = 3
	NMC1000_FW_VERSION = 0
  
# 3.
	MODULE_NAME = nmi_wifi

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	else

	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif
	
endif

################################################################
# Allwinner (A23)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_ALLWINNER_A23)

# 1.
	TARGET_ARCH = PLAT_ALLWINNER_A23

# 2.
	NMC1000_SRC_VERSION = 9.3
	PATCHLEVEL = 3
	NMC1000_FW_VERSION = 0
  
# 3.
	MODULE_NAME = nmi_wifi

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	else

	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif
	
endif

################################################################
# Allwinner (A31)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_ALLWINNER_A31)

# 1.
	TARGET_ARCH = PLAT_ALLWINNER_A31

# 2.
	NMC1000_SRC_VERSION = 9.3
	PATCHLEVEL = 6
	NMC1000_FW_VERSION = 0

# 3.
	MODULE_NAME = nmi_wifi

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	else

	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif
	
endif

################################################################
# Pandaboard
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_PANDABOARD_ES_EVB)

# 1.
	TARGET_ARCH = PLAT_PANDA_ES_OMAP4460

# 2.
	NMC1000_SRC_VERSION = 7.0
	#NMC1000_FW_VERSION = 1

# 3.
	MODULE_NAME = nmi_wifi
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	BUS_TYPE = NMI_SDIO
endif

################################################################
# VIA WM8801 ( == Masking Name)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_VIA_WMS8304)

# 1.
	TARGET_ARCH = PLAT_WMS8304

# 2.
	NMC1000_SRC_VERSION = 6.2
	#NMC1000_FW_VERSION = 1

# 3.
	MODULE_NAME = nmc1000
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		#EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif

################################################################
# VIA WM8880 ( == Masking Name)
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_VIA_WM8880)

# 1.
	TARGET_ARCH = PLAT_WM8880

# 2.
	NMC1000_SRC_VERSION = 9.3
	PATCHLEVEL = 6
	NMC1000_FW_VERSION = 0

# 3.
	MODULE_NAME = nmc1000_android4.4
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	CONFIG_NMC1XXX_USE_SDIO_BUS = y
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	CONFIG_NMC1XXX_HW_OOB_INTR = y
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		#EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif

################################################################
# CORELOGIC CLM9722
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_CLG_CLM9722)

# 1.
	TARGET_ARCH = PLAT_CLM9722

# 2.
	NMC1000_SRC_VERSION = 7.2
	PATCHLEVEL = 4
	NMC1000_FW_VERSION = 3
	
# 3.
	MODULE_NAME = nmi_wifi
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		#EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif

################################################################
# Rockchip
################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_RKXXXX)

# 1.
	TARGET_ARCH = PLAT_RKXXXX

# 2.
	NMC1000_SRC_VERSION = 9.3
	PATCHLEVEL = 4
	NMC1000_FW_VERSION = 0

# 3.
	MODULE_NAME = nmc1000
	CONFIG_NMC1XXX_WIFI_MODULE=m

# 4.
	DEBFLAGS = -O -g

# 5.
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)),y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif

# 6.
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)),y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	endif

# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif

endif


#################################################################
# AMBRELLA LINUX PLATFORM
#################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_AMBRELLA)
	TARGET_ARCH = PLAT_AMBRELLA
	NMC1000_SRC_VERSION = 7.2
	PATCHLEVEL = 4
	NMC1000_FW_VERSION = 3
		
	MODULE_NAME = nmi_wifi
	CONFIG_NMC1XXX_WIFI_MODULE=m
	DEBFLAGS = -O -g
	
	ifeq ($(strip $(CONFIG_NMC1XXX_USE_SDIO_BUS)), y)
		BUS_TYPE = NMI_SDIO
	else
		BUS_TYPE = NMI_SPI
	endif
	
	ifeq ($(strip $(CONFIG_NMC1XXX_HW_OOB_INTR)), y)
		IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
	endif

	ifeq ($(strip, $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)), y)
		EXTRA_CFLAGS += -DNMC_DEBUGFS
	endif
endif
######################################################################################

#################################################################
# AMBRELLA LINUX PLATFORM
#################################################################
ifeq ($(strip $(TARGET_PLATFORM)), TARGET_LINUX_X86)
     TARGET_ARCH = PLAT_UBUNTU_X86
     NMC1000_SRC_VERSION = 7.2
     NMC1000_FW_VERSION = 2
     MODULE_NAME = nmi_wifi
     CONFIG_NMC1XXX_WIFI_MODULE=m
     DEBFLAGS = -O -g
 
     BUS_TYPE = NMI_SDIO
 
     #IRQ_MODE = USE_EXT_IRQ_FOR_SDIO
     #EXTRA_CFLAGS += -DNMC_DEBUGFS
 endif
######################################################################################

#_____________________________________________________________________________________

# 1.
EXTRA_CFLAGS += -D$(TARGET_ARCH)

# 2.
NMC1000_STA_FW_VERSION = STA_FIRMWARE=\"wifi_firmware$(NMC1000_SRC_VERSION).$(NMC1000_FW_VERSION).bin\"
NMC1000_AP_FW_VERSION = AP_FIRMWARE=\"wifi_firmware_ap$(NMC1000_SRC_VERSION).$(NMC1000_FW_VERSION).bin\"
NMC1000_P2P_CONCURRENCY_FIRMWARE = P2P_CONCURRENCY_FIRMWARE=\"wifi_firmware_p2p_concurrency$(NMC1000_SRC_VERSION).$(NMC1000_FW_VERSION).bin\"

#EXTRA_CFLAGS += -D$(NMC1000_STA_FW_VERSION)
#EXTRA_CFLAGS += -D$(NMC1000_AP_FW_VERSION)
#EXTRA_CFLAGS += -D$(NMC1000_P2P_CONCURRENCY_FIRMWARE)

EXTRA_CFLAGS += -D__DRIVER_VERSION__=\"$(NMC1000_SRC_VERSION).$(PATCHLEVEL)\"

ifeq ($(strip $(NMC1000_SRC_VERSION)), 3.2)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 4.0)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 5.0)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 5.1)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 5.2)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST

	#	EXTRA_CFLAGS += -DNMI_AP_EXTERNAL_MLME
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 6.0)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	#	EXTRA_CFLAGS += -DVCO_14_SUPPLY

endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 6.1)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	#	EXTRA_CFLAGS += -DVCO_14_SUPPLY

	#johnny private debug (default use)
	#EXTRA_CFLAGS += -DUNUSE_POWER_MGMT
endif

ifeq ($(strip $(NMC1000_SRC_VERSION)), 6.2)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	# EXTRA_CFLAGS += -DVCO_14_SUPPLY

	#johnny private debug (default use)
	#EXTRA_CFLAGS += -DUNUSE_POWER_MGMT

	#Host AP
	#FULLY_HOSTING_AP = Y
endif #6.2

ifeq ($(strip $(NMC1000_SRC_VERSION)), 7.0)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	#EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX
	
	ifeq ($(strip $(NMC1000_FW_VERSION)), 2)	
		EXTRA_CFLAGS += -DTCP_ACK_FILTER
	endif
	
	ifeq ($(strip $(NMC1000_FW_VERSION)), 3)	
		EXTRA_CFLAGS += -DTCP_ACK_FILTER
	endif

	ifeq ($(strip $(NMC1000_FW_VERSION)), 4)	
		EXTRA_CFLAGS += -DAGING_ALG
		EXTRA_CFLAGS += -DDISABLE_PWRSAVE_AND_SCAN_DURING_IP
	endif

	#Use external 1.4V VDD_VCO
	#	EXTRA_CFLAGS += -DVCO_14_SUPPLY

	#Host AP
	#FULLY_HOSTING_AP = Y

	#firmware log prints in the host
	#EXTRA_CFLAGS += -DSWITCH_LOG_TERMINAL

	# to support SoftAP mode
	EXTRA_CFLAGS += -DNMI_AP_EXTERNAL_MLME
	EXTRA_CFLAGS += -DSTATIC_MACADDRESS
endif #7.0

ifeq ($(strip $(NMC1000_SRC_VERSION)), 7.1)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	#EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	# EXTRA_CFLAGS += -DVCO_14_SUPPLY
	
	#Host AP
	#FULLY_HOSTING_AP = Y
	
	#firmware log prints in the host
	#EXTRA_CFLAGS += -DSWITCH_LOG_TERMINAL
	
	# to support SoftAP mode
	EXTRA_CFLAGS += -DNMI_AP_EXTERNAL_MLME
	
	EXTRA_CFLAGS += -DDISABLE_PWRSAVE_AND_SCAN_DURING_IP
	
	ifeq ($(strip $(BUS_TYPE)),NMI_SDIO)	
		EXTRA_CFLAGS += -DNMI_SDIO -DNMI_OPTIMIZE_SLEEP_INT
	endif
	
	EXTRA_CFLAGS += -DTCP_ACK_FILTER
	EXTRA_CFLAGS += -DSTATIC_MACADDRESS
endif #7.1

ifeq ($(strip $(NMC1000_SRC_VERSION)), 7.2)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	#EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	#	EXTRA_CFLAGS += -DVCO_14_SUPPLY

	#firmware log prints in the host
	#EXTRA_CFLAGS += -DSWITCH_LOG_TERMINAL
	
	# to support SoftAP mode
	#EXTRA_CFLAGS += -DNMI_AP_EXTERNAL_MLME
	
	ifeq ($(strip $(BUS_TYPE)),NMI_SDIO)	
		EXTRA_CFLAGS += -DNMI_SDIO -DNMI_OPTIMIZE_SLEEP_INT
	endif
	
	#EXTRA_CFLAGS += -DTCP_ACK_FILTER
	EXTRA_CFLAGS += -DAGING_ALG
	EXTRA_CFLAGS += -DDISABLE_PWRSAVE_AND_SCAN_DURING_IP
	EXTRA_CFLAGS += -DSTATIC_MACADDRESS

	#Host AP (?????)
	#FULLY_HOSTING_AP = Y
	#EXTRA_CFLAGS += -DNMI_FULLY_HOSTING_AP
	
	ifeq ($(strip $(NMC1000_FW_VERSION)),2)
		# Check boot status
		EXTRA_CFLAGS += -DCOMPLEMENT_BOOT
	endif

	ifeq ($(strip $(NMC1000_FW_VERSION)), 3)
		EXTRA_CFLAGS += -DCOMPLEMENT_BOOT
	endif
endif #7.2


ifeq ($(findstring 9.,$(NMC1000_SRC_VERSION)), 9.)
	EXTRA_CFLAGS += -DNMC_ASIC_A0
	EXTRA_CFLAGS += -DPLL_WORKAROUND
	EXTRA_CFLAGS += -DCONNECT_DIRECT
	EXTRA_CFLAGS += -DNMI_PARSE_SCAN_IN_HOST
	#EXTRA_CFLAGS += -DREG_0XF6_NOT_CLEAR_BUG_FIX

	#Use external 1.4V VDD_VCO
	#	EXTRA_CFLAGS += -DVCO_14_SUPPLY

	#firmware log prints in the host
	#EXTRA_CFLAGS += -DSWITCH_LOG_TERMINAL
	
	# to support SoftAP mode
	#EXTRA_CFLAGS += -DNMI_AP_EXTERNAL_MLME
	
	ifeq ($(strip $(BUS_TYPE)),NMI_SDIO)	
		EXTRA_CFLAGS += -DNMI_SDIO -DNMI_OPTIMIZE_SLEEP_INT
	endif
	
	#EXTRA_CFLAGS += -DTCP_ACK_FILTER
	EXTRA_CFLAGS += -DAGING_ALG
	EXTRA_CFLAGS += -DDISABLE_PWRSAVE_AND_SCAN_DURING_IP
	
	#Host AP (?????)
	#FULLY_HOSTING_AP = Y
	#EXTRA_CFLAGS += -DNMI_FULLY_HOSTING_AP

	#EXTRA_CFLAGS += -DXTAL_24
	#EXTRA_CFLAGS += -DDISABLE_NMC_UART

	#[[ Add KR Team
	EXTRA_CFLAGS += -DSTATIC_MACADDRESS
	EXTRA_CFLAGS += -DCOMPLEMENT_BOOT
	#EXTRA_CFLAGS += -DFW_VERSION_VERIFICATION

	ifeq ($(strip $(CONFIG_NMC1XXX_PREALLOCATE_DURING_SYSTEM_BOOT)),y)
		EXTRA_CFLAGS += -DNMC_PREALLOC_AT_BOOT
		# for rx_buffer
		EXTRA_CFLAGS += -DMEMORY_STATIC
	else
		ifeq ($(strip $(CONFIG_NMC1XXX_PREALLOCATE_AT_LOADING_DRIVER)),y)
			EXTRA_CFLAGS += -DMEMORY_STATIC
			EXTRA_CFLAGS += -DNMC_PREALLOC_AT_INSMOD
		else
			ifeq ($(strip $(CONFIG_NMC1XXX_DYNAMICALLY_ALLOCATE_MEMROY)),y)
				EXTRA_CFLAGS += -DNMC_NORMAL_ALLOC
			endif
		endif
	endif
	#]]

endif #9.X


NMC1000_ROOT_PATH = $(src)/src/driver/linux
NMC1000_SRC_PATH = src/driver/linux

# 3.
obj-$(CONFIG_NMC1XXX_WIFI_MODULE) += $(MODULE_NAME).o

# 4.
EXTRA_CFLAGS += $(DEBFLAGS)

# 5.
EXTRA_CFLAGS += -D$(BUS_TYPE)

# 6.
ifeq ($(strip $(IRQ_MODE)), USE_EXT_IRQ_FOR_SDIO)
	EXTRA_CFLAGS += -DNMI_SDIO_IRQ_GPIO
endif

OUT_ARCH = ARM-3.0

EXTRA_CFLAGS += -I$(NMC1000_ROOT_PATH)/../../NMI_OsWrapper/include/ 
EXTRA_CFLAGS += -I$(NMC1000_ROOT_PATH)/../../
EXTRA_CFLAGS += -I$(NMC1000_ROOT_PATH)/../include
EXTRA_CFLAGS += -I$(NMC1000_ROOT_PATH)/../
EXTRA_CFLAGS += -I$(NMC1000_ROOT_PATH)/include
EXTRA_CFLAGS += -DNMI_PLATFORM=NMI_LINUXKERNEL  
EXTRA_CFLAGS += -Wno-unused-function
EXTRA_CFLAGS += -DUSE_WIRELESS
#EXTRA_CFLAGS += -DNMC1000_SINGLE_TRANSFER


#EXTRA_CFLAGS += -L$(NMC1000_ROOT_PATH)/../binary/linux/$(OUT_ARCH) -lNMI_WiFi_Driver

ifneq ($(KERNELRELEASE),)

	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/NMI_WFI_NetDevice.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/NMI_WFI_CfgOperations.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/linux_wlan.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/linux_mon.o
	
	# 5.
	ifeq ($(strip $(BUS_TYPE)),NMI_SDIO)
		$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/linux_wlan_sdio.o
	else
		$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/linux_wlan_spi.o
	endif
	
	# 7.
	ifeq ($(strip $(CONFIG_NMC1XXX_ENABLE_DEBUGFS)),y)
		$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/nmi_debugfs.o
		$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/source/nmi_queue.o
	endif
	
	# OS Wrapper #
	#$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/binary/linux/$(OUT_ARCH)/NMI_OsWrapper.a
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Memory.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_MsgQueue.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Semaphore.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Sleep.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_StrUtils.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Thread.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Time.o
	$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../../NMI_OsWrapper/source/linuxkernel/source/NMI_Timer.o
	
	# NMC1000 Core #
	#$(MODULE_NAME)-objs 	+= $(NMC1000_SRC_PATH)/../binary/linux/$(OUT_ARCH)/NMI_WiFi_Driver.a
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../core_configurator/CoreConfigurator.o
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../nmi_driver_interface/host_interface.o
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../core_simulator/FIFO_Buffer.o
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../nmi_sdio.o
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../nmi_spi.o
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../nmi_wlan_cfg.o
ifeq ($(strip $(NMC1000_SRC_VERSION)), 7.2)
	$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../nmi_wlan.o
endif

	# 8.
	ifeq ($(strip $(FULLY_HOSTING_AP)), Y)
		$(MODULE_NAME)-objs		+= $(NMC1000_SRC_PATH)/../NMI_host_AP.o
	endif

else

	CONFIG_NMC1XXX_ENABLE_DEBUGFS = y


endif