1# Kernel build directory
2KDIR := /lib/modules/$(shell uname -r)/build
3RADIO_TEST := 0
4FW_LOAD_SUPPORT := 1
5FW_LOAD?=PATCH
6# Default is empty to force explicit selection
7BUS_IF := PCIE
8
9# Due to multiple Makefiles, we need to get the current directory
10NRF_WIFI_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
11
12INCLUDES = -I$(NRF_WIFI_DIR)/utils/inc \
13		   -I$(NRF_WIFI_DIR)/os_if/inc \
14		   -I$(NRF_WIFI_DIR)/bus_if/bal/inc/ \
15		   -I$(NRF_WIFI_DIR)/fw_if/umac_if/inc \
16		   -I$(NRF_WIFI_DIR)/fw_load/mips/fw/inc \
17		   -I$(NRF_WIFI_DIR)/hw_if/hal/inc/ \
18		   -I$(NRF_WIFI_DIR)/hw_if/hal/inc/fw \
19		   -I$(NRF_WIFI_DIR)/fw_if/umac_if/inc/fw
20
21ifeq ($(BUS_IF), QSPI)
22	INCLUDES += -I$(NRF_WIFI_DIR)/bus_if/bus/qspi/inc
23else ifeq ($(BUS_IF), SPI)
24	INCLUDES += -I$(NRF_WIFI_DIR)/bus_if/bus/spi/inc
25else ifeq ($(BUS_IF), PCIE)
26	INCLUDES += -I$(NRF_WIFI_DIR)/bus_if/bus/pcie/inc
27endif
28
29# TODO: Use Kconfig + menuconfig for this
30# For now, just comment/uncomment the flags you want
31ccflags-y += -DNRF_WIFI_LOW_POWER
32ccflags-y += -DNRF_WIFI_RPU_RECOVERY
33ccflags-y += -DNRF_WIFI_AP_DEAD_DETECT_TIMEOUT=20
34ccflags-y += -DNRF_WIFI_IFACE_MTU=1500
35ccflags-y += -DNRF70_STA_MODE
36ccflags-y += -DNRF70_DATA_TX
37#ccflags-y += -DNRF70_RAW_DATA_TX
38#ccflags-y += -DNRF70_RAW_DATA_RX
39#ccflags-y += -DNRF70_PROMISC_DATA_RX
40#ccflags-y += -DNRF70_TX_DONE_WQ_ENABLED
41#ccflags-y += -DNRF70_RX_WQ_ENABLED
42ccflags-y += -DNRF70_UTIL
43#ccflags-y += -DNRF70_OFFLOADED_RAW_TX
44ccflags-y += -DNRF70_TCP_IP_CHECKSUM_OFFLOAD
45ccflags-y += -DNRF70_RPU_EXTEND_TWT_SP
46#ccflags-y += -DNRF70_SYSTEM_WITH_RAW_MODES
47#ccflags-y += -DNRF70_SCAN_ONLY
48#ccflags-y += -DNRF70_2_4G_ONLY
49ccflags-y += -DNRF70_LOG_VERBOSE
50#ccflags-y += -DNRF70_AP_MODE
51ccflags-y += -DNRF_WIFI_MGMT_BUFF_OFFLOAD
52ccflags-y += -DNRF_WIFI_FEAT_KEEPALIVE
53ccflags-y += -DNRF_WIFI_KEEPALIVE_PERIOD_S=60
54#ccflags-y += -DWIFI_MGMT_RAW_SCAN_RESULTS
55#ccflags-y += -DNRF_WIFI_COEX_DISABLE_PRIORITY_WINDOW_FOR_SCAN
56ccflags-y += -DNRF70_RX_NUM_BUFS=48
57ccflags-y += -DNRF70_MAX_TX_TOKENS=10
58ccflags-y += -DNRF70_RX_MAX_DATA_SIZE=1600
59ccflags-y += -DNRF70_MAX_TX_PENDING_QLEN=18
60ccflags-y += -DNRF70_RPU_PS_IDLE_TIMEOUT_MS=10
61ccflags-y += -DNRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS=0
62ccflags-y += -DNRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT=0
63ccflags-y += -DNRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE=0
64ccflags-y += -DNRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS=0
65ccflags-y += -DNRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT=0
66ccflags-y += -DNRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE=0
67ccflags-y += -DNRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT=0
68ccflags-y += -DNRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE=0
69ccflags-y += -DNRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT=0
70ccflags-y += -DNRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE=0
71ccflags-y += -DNRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT=0
72ccflags-y += -DNRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE=0
73ccflags-y += -DNRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT=0
74ccflags-y += -DNRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE=0
75ccflags-y += -DNRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT=0
76ccflags-y += -DNRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE=0
77ccflags-y += -DNRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT=0
78ccflags-y += -DNRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE=0
79ccflags-y += -DNRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT=0
80ccflags-y += -DNRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE=0
81ccflags-y += -DNRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT=0
82ccflags-y += -DNRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE=0
83ccflags-y += -DNRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT=0
84ccflags-y += -DNRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE=0
85ccflags-y += -DNRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT=0
86ccflags-y += -DNRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE=0
87ccflags-y += -DNRF70_PCB_LOSS_2G=0
88ccflags-y += -DNRF70_PCB_LOSS_5G_BAND1=0
89ccflags-y += -DNRF70_PCB_LOSS_5G_BAND2=0
90ccflags-y += -DNRF70_PCB_LOSS_5G_BAND3=0
91ccflags-y += -DNRF70_ANT_GAIN_2G=0
92ccflags-y += -DNRF70_ANT_GAIN_5G_BAND1=0
93ccflags-y += -DNRF70_ANT_GAIN_5G_BAND2=0
94ccflags-y += -DNRF70_ANT_GAIN_5G_BAND3=0
95ccflags-y += -DNRF_WIFI_PS_INT_PS
96ccflags-y += -DNRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS=50000
97ccflags-y += -DNRF_WIFI_DISPLAY_SCAN_BSS_LIMIT=150
98ccflags-y += -DNRF_WIFI_RPU_MIN_TIME_TO_ENTER_SLEEP_MS=1000
99ccflags-y += -DWIFI_NRF70_LOG_LEVEL=1
100
101# Source files
102SRCS = os_if/src/osal.c \
103	   utils/src/list.c \
104	   utils/src/queue.c \
105	   utils/src/util.c \
106	   hw_if/hal/src/common/hal_interrupt.c \
107	   hw_if/hal/src/common/hal_mem.c \
108	   hw_if/hal/src/common/hal_reg.c \
109	   hw_if/hal/src/common/hpqm.c \
110	   hw_if/hal/src/common/pal.c \
111	   bus_if/bal/src/bal.c \
112	   fw_if/umac_if/src/common/fmac_cmd_common.c \
113	   fw_if/umac_if/src/common/fmac_api_common.c \
114	   fw_if/umac_if/src/common/fmac_util.c \
115	   hw_if/hal/src/common/hal_api_common.c \
116	   nrf_wifi_osal_module.c
117
118ifeq ($(BUS_IF), QSPI)
119	SRCS += bus_if/bus/qspi/src/qspi.c
120else ifeq ($(BUS_IF), SPI)
121	SRCS += bus_if/bus/pcie/src/spi.c
122else ifeq ($(BUS_IF), PCIE)
123	SRCS += bus_if/bus/pcie/src/pcie.c
124endif
125
126ifeq ($(RADIO_TEST), 1)
127	SRCS += fw_if/umac_if/src/radio_test/fmac_api.c
128	SRCS += fw_if/umac_if/src/radio_test/fmac_cmd.c
129	SRCS += fw_if/umac_if/src/radio_test/fmac_event.c
130	ccflags-y += -DNRF70_RADIO_TEST
131	INCLUDES += -I$(NRF_WIFI_DIR)/fw_if/umac_if/inc/radio_test
132else
133	SRCS += fw_if/umac_if/src/system/fmac_peer.c
134	SRCS += fw_if/umac_if/src/system/fmac_vif.c
135	SRCS += fw_if/umac_if/src/system/fmac_api.c
136	SRCS += fw_if/umac_if/src/system/fmac_cmd.c
137	SRCS += fw_if/umac_if/src/system/fmac_event.c
138	SRCS += fw_if/umac_if/src/system/rx.c
139	SRCS += fw_if/umac_if/src/system/tx.c
140	SRCS += hw_if/hal/src/system/hal_api.c
141	ccflags-y += -DNRF70_SYSTEM_MODE
142	INCLUDES += -I$(NRF_WIFI_DIR)/fw_if/umac_if/inc/system
143endif
144
145ifeq ($(FW_LOAD_SUPPORT), 1)
146ifeq ($(FW_LOAD), $(filter $(FW_LOAD), ROM ROM_PATCH))
147SRCS += hw_if/hal/src/hal_fw_rom_loader.c
148endif
149ifeq ($(FW_LOAD), $(filter $(FW_LOAD), PATCH ROM_PATCH))
150SRCS += hw_if/hal/src/common/hal_fw_patch_loader.c
151endif
152ifeq ($(FW_LOAD), $(filter $(FW_LOAD), RAM))
153SRCS += hw_if/hal/src/hal_fw_ram_loader.c
154endif
155endif
156
157ccflags-y += $(INCLUDES)
158# Object files
159OBJS = $(SRCS:.c=.o)
160
161# Module
162obj-m := nrf_wifi_osal.o
163nrf_wifi_osal-objs := $(OBJS)
164
165all:
166	@echo "Building nrf_wifi_osal module: $(NRF_WIFI_DIR)"
167	$(MAKE) -C $(KDIR) M=$(NRF_WIFI_DIR) modules
168
169menuconfig:
170	$(MAKE) -C $(KDIR) M=$(NRF_WIFI_DIR) menuconfig
171
172clean:
173	make -C $(KDIR) M=$(NRF_WIFI_DIR) clean
174
175install:
176	$(MAKE) -C $(KDIR) M=$(NRF_WIFI_DIR) modules_install
177
178.PHONY: all clean install menuconfig
179