# SPDX-License-Identifier: GPL-2.0-only
#
# Makefile for Realtek RTL8822CS SDIO WiFi driver
# Integrated for Linux Kernel (Kbuild)
#

MODULE_NAME := rtl8822cs
obj-$(CONFIG_RTL8822CS) += $(MODULE_NAME).o

ccflags-y += -I$(src)
ccflags-y += -I$(src)/include
ccflags-y += -I$(src)/hal/phydm
ccflags-y += -I$(src)/hal/btc
ccflags-y += -I$(src)/core/crypto
ccflags-y += -I$(src)/platform

ccflags-y += -Wno-date-time
ccflags-y += -Wno-unused-variable

ifeq ($(CC), clang)
ccflags-y += -Wno-uninitialized
ccflags-y += -Wno-enum-conversion
ccflags-y += -Wno-fortify-source
ccflags-y += -Wno-invalid-source-encoding
ccflags-y += -Wno-tautological-pointer-compare
ccflags-y += -Wno-tautological-overlap-compare
ccflags-y += -Wno-pointer-bool-conversion
ccflags-y += -Wno-misleading-indentation
ccflags-y += -Wno-parentheses-equality
ccflags-y += -Wno-self-assign
ccflags-y += -Wno-header-guard
endif

ccflags-y += -DCONFIG_RTL8822C
ccflags-y += -DCONFIG_SDIO_HCI
ccflags-y += -DCONFIG_LITTLE_ENDIAN
ccflags-y += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
ccflags-y += -DCONFIG_RTW_NAPI -DCONFIG_RTW_GRO -DCONFIG_RTW_NETIF_SG
ccflags-y += -DCONFIG_RTW_MBO -DCONFIG_RTW_80211K -DCONFIG_RTW_WNM -DCONFIG_RTW_BTM_ROAM -DCONFIG_RTW_80211R
ccflags-y += -DCONFIG_IEEE80211W
ccflags-y += -DCONFIG_BR_EXT
ccflags-y += -DCONFIG_BR_EXT_BRNAME=\"br0\"
ccflags-y += -DCONFIG_RTW_IOCTL_SET_COUNTRY
ccflags-y += -DCONFIG_EFUSE_CONFIG_FILE
ccflags-y += -DEFUSE_MAP_PATH=\"/system/etc/wifi/wifi_efuse_88x2cs.map\"
ccflags-y += -DWIFIMAC_PATH=\"/data/wifimac.txt\"
ccflags-y += -DCONFIG_TXPWR_BY_RATE=1 -DCONFIG_TXPWR_BY_RATE_EN=1 -DCONFIG_TXPWR_LIMIT=1 -DCONFIG_TXPWR_LIMIT_EN=0
ccflags-y += -DDM_ODM_SUPPORT_TYPE=0x04
ccflags-y += -DCONFIG_80211D
ccflags-y += -DCONFIG_LAYER2_ROAMING -DCONFIG_ROAMING_FLAG=0x3
ccflags-y += -DCONFIG_RTW_UP_MAPPING_RULE=0
ccflags-y += -DCONFIG_RTW_EDCCA_MODE_SEL=0
ccflags-y += -DCONFIG_RTW_ADAPTIVITY_EN=0
ccflags-y += -DCONFIG_RTW_ADAPTIVITY_MODE=0
ccflags-y += -DCONFIG_RTW_COUNTRY_IE_SLAVE_EN_MODE=0
ccflags-y += -DCONFIG_RTW_COUNTRY_IE_SLAVE_FLAGS=0x01
ccflags-y += -DCONFIG_RTW_COUNTRY_CODE=\"XX\"
ccflags-y += -DCONFIG_RTW_CHPLAN=0xFFFF
ccflags-y += -DCONFIG_RTW_CHPLAN_6G=0xFFFF

ccflags-$(CONFIG_RTW_AP_MODE) += -DCONFIG_AP_MODE
ccflags-$(CONFIG_RTW_BT_COEXIST) += -DCONFIG_BT_COEXIST
ccflags-$(CONFIG_RTW_DEBUG) += -DCONFIG_RTW_DEBUG -DRTW_LOG_LEVEL=4
ccflags-$(CONFIG_PROC_DEBUG) += -DCONFIG_PROC_DEBUG
ccflags-$(CONFIG_RTW_WOWLAN) += -DCONFIG_WOWLAN -DRTW_WAKEUP_EVENT=0x7 -DRTW_SUSPEND_TYPE=0
ccflags-$(CONFIG_RTW_SDIO_PM_KEEP_POWER) += -DCONFIG_RTW_SDIO_PM_KEEP_POWER

# Core (core/)
rtk_core := core/rtw_cmd.o \
	core/rtw_security.o \
	core/rtw_debug.o \
	core/rtw_io.o \
	core/rtw_ioctl_query.o \
	core/rtw_ioctl_set.o \
	core/rtw_ieee80211.o \
	core/rtw_mlme.o \
	core/rtw_mlme_ext.o \
	core/rtw_mi.o \
	core/rtw_wlan_util.o \
	core/rtw_vht.o \
	core/rtw_pwrctrl.o \
	core/rtw_rf.o \
	core/rtw_chplan.o \
	core/rtw_regdb_rtk.o \
	core/rtw_chset.o \
	core/rtw_dfs.o \
	core/rtw_txpwr.o \
	core/monitor/rtw_radiotap.o \
	core/rtw_recv.o \
	core/rtw_sta_mgt.o \
	core/rtw_ap.o \
	core/wds/rtw_wds.o \
	core/mesh/rtw_mesh.o \
	core/mesh/rtw_mesh_pathtbl.o \
	core/mesh/rtw_mesh_hwmp.o \
	core/rtw_xmit.o \
	core/rtw_p2p.o \
	core/rtw_rson.o \
	core/rtw_tdls.o \
	core/rtw_br_ext.o \
	core/rtw_iol.o \
	core/rtw_sreset.o \
	core/rtw_btcoex_wifionly.o \
	core/rtw_btcoex.o \
	core/rtw_beamforming.o \
	core/rtw_odm.o \
	core/rtw_rm.o \
	core/rtw_rm_fsm.o \
	core/rtw_ft.o \
	core/rtw_wnm.o \
	core/rtw_mbo.o \
	core/rtw_rm_util.o \
	core/efuse/rtw_efuse.o \
	core/rtw_roch.o \
	core/rtw_sdio.o \
	core/crypto/aes-internal.o \
	core/crypto/aes-internal-enc.o \
	core/crypto/aes-gcm.o \
	core/crypto/aes-ccm.o \
	core/crypto/aes-omac1.o \
	core/crypto/ccmp.o \
	core/crypto/gcmp.o \
	core/crypto/aes-siv.o \
	core/crypto/aes-ctr.o \
	core/crypto/sha256-internal.o \
	core/crypto/sha256.o \
	core/crypto/sha256-prf.o \
	core/crypto/rtw_crypto_wrap.o \
	core/rtw_swcrypto.o

# OS dependency layer (os_dep/)
rtk_os := os_dep/osdep_service.o \
	os_dep/linux/os_intfs.o \
	os_dep/linux/sdio_intf.o \
	os_dep/linux/sdio_ops_linux.o \
	os_dep/linux/ioctl_linux.o \
	os_dep/linux/xmit_linux.o \
	os_dep/linux/mlme_linux.o \
	os_dep/linux/recv_linux.o \
	os_dep/linux/ioctl_cfg80211.o \
	os_dep/linux/rtw_cfgvendor.o \
	os_dep/linux/os_ch_utils.o \
	os_dep/linux/wifi_regd.o \
	os_dep/linux/rtw_android.o \
	os_dep/linux/rtw_proc.o \
	os_dep/linux/nlrtw.o \
	os_dep/linux/rtw_rhashtable.o \
	os_dep/linux/ioctl_mp.o \
	os_dep/linux/custom_gpio_linux.o

# HAL layer (hal/rtl8822c/)
rtk_hal := hal/hal_intf.o \
	hal/hal_com.o \
	hal/hal_com_phycfg.o \
	hal/hal_phy.o \
	hal/hal_dm.o \
	hal/hal_dm_acs.o \
	hal/hal_pwr_table.o \
	hal/hal_dfs.o \
	hal/hal_btcoex_wifionly.o \
	hal/hal_btcoex.o \
	hal/hal_mp.o \
	hal/hal_mcc.o \
	hal/hal_hci/hal_sdio.o \
	hal/led/hal_led.o \
	hal/led/hal_sdio_led.o \
	hal/rtl8822c/rtl8822c_halinit.o \
	hal/rtl8822c/rtl8822c_mac.o \
	hal/rtl8822c/rtl8822c_cmd.o \
	hal/rtl8822c/rtl8822c_phy.o \
	hal/rtl8822c/rtl8822c_ops.o \
	hal/rtl8822c/hal8822c_fw.o \
	hal/rtl8822c/sdio/rtl8822cs_halinit.o \
	hal/rtl8822c/sdio/rtl8822cs_halmac.o \
	hal/rtl8822c/sdio/rtl8822cs_io.o \
	hal/rtl8822c/sdio/rtl8822cs_xmit.o \
	hal/rtl8822c/sdio/rtl8822cs_recv.o \
	hal/rtl8822c/sdio/rtl8822cs_led.o \
	hal/rtl8822c/sdio/rtl8822cs_ops.o \
	hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.o \
	hal/hal_hci/hal_sdio_coex.o

# PHYDM layer (hal/phydm/)
rtk_phydm := hal/phydm/phydm_debug.o \
	hal/phydm/phydm_antdiv.o \
	hal/phydm/phydm_soml.o \
	hal/phydm/phydm_smt_ant.o \
	hal/phydm/phydm_antdect.o \
	hal/phydm/phydm_interface.o \
	hal/phydm/phydm_phystatus.o \
	hal/phydm/phydm_hwconfig.o \
	hal/phydm/phydm.o \
	hal/phydm/phydm_dig.o \
	hal/phydm/phydm_pathdiv.o \
	hal/phydm/phydm_rainfo.o \
	hal/phydm/phydm_dynamictxpower.o \
	hal/phydm/phydm_adaptivity.o \
	hal/phydm/phydm_cfotracking.o \
	hal/phydm/phydm_noisemonitor.o \
	hal/phydm/phydm_beamforming.o \
	hal/phydm/phydm_direct_bf.o \
	hal/phydm/phydm_dfs.o \
	hal/phydm/txbf/halcomtxbf.o \
	hal/phydm/txbf/haltxbfinterface.o \
	hal/phydm/txbf/phydm_hal_txbf_api.o \
	hal/phydm/phydm_adc_sampling.o \
	hal/phydm/phydm_ccx.o \
	hal/phydm/phydm_psd.o \
	hal/phydm/phydm_primary_cca.o \
	hal/phydm/phydm_cck_pd.o \
	hal/phydm/phydm_rssi_monitor.o \
	hal/phydm/phydm_auto_dbg.o \
	hal/phydm/phydm_math_lib.o \
	hal/phydm/phydm_api.o \
	hal/phydm/phydm_pow_train.o \
	hal/phydm/phydm_lna_sat.o \
	hal/phydm/phydm_pmac_tx_setting.o \
	hal/phydm/phydm_mp.o \
	hal/phydm/phydm_cck_rx_pathdiv.o \
	hal/phydm/halrf/halrf.o \
	hal/phydm/halrf/halrf_debug.o \
	hal/phydm/halrf/halphyrf_ce.o \
	hal/phydm/halrf/halrf_powertracking_ce.o \
	hal/phydm/halrf/halrf_powertracking.o \
	hal/phydm/halrf/halrf_kfree.o \
	hal/phydm/halrf/halrf_psd.o \
	hal/phydm/rtl8822c/halhwimg8822c_bb.o \
	hal/phydm/rtl8822c/phydm_hal_api8822c.o \
	hal/phydm/rtl8822c/phydm_regconfig8822c.o \
	hal/phydm/rtl8822c/phydm_rtl8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_iqk_8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_tssi_8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_dpk_8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_txgapk_8822c.o \
	hal/phydm/halrf/rtl8822c/halrf_rfk_init_8822c.o \
	hal/phydm/halrf/rtl8822c/halhwimg8822c_rf.o

# HALMAC layer (hal/halmac/)
rtk_halmac := hal/hal_halmac.o \
	hal/halmac/halmac_api.o \
	hal/halmac/halmac_dbg.o \
	hal/halmac/halmac_88xx/halmac_bb_rf_88xx.o \
	hal/halmac/halmac_88xx/halmac_cfg_wmac_88xx.o \
	hal/halmac/halmac_88xx/halmac_common_88xx.o \
	hal/halmac/halmac_88xx/halmac_efuse_88xx.o \
	hal/halmac/halmac_88xx/halmac_flash_88xx.o \
	hal/halmac/halmac_88xx/halmac_fw_88xx.o \
	hal/halmac/halmac_88xx/halmac_gpio_88xx.o \
	hal/halmac/halmac_88xx/halmac_init_88xx.o \
	hal/halmac/halmac_88xx/halmac_mimo_88xx.o \
	hal/halmac/halmac_88xx/halmac_sdio_88xx.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_cfg_wmac_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_common_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_gpio_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_init_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_phy_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_pwr_seq_8822c.o \
	hal/halmac/halmac_88xx/halmac_8822c/halmac_sdio_8822c.o

# BT Coexistence (hal/btc/)
ifeq ($(CONFIG_RTW_BT_COEXIST), y)
rtk_btc := hal/btc/halbtc8822cwifionly.o \
	hal/btc/halbtccommon.o \
	hal/btc/halbtc8822c.o
rtk_btc += hal/btc/halbtccommon.o hal/btc/halbtc8822c.o
endif

rtk_platform :=  \
	platform/platform_ops.o \
	core/rtw_mp.o

$(MODULE_NAME)-y := $(rtk_core) $(rtk_os) $(rtk_hal) $(rtk_halmac) $(rtk_phydm) $(rtk_btc) $(rtk_platform)
