Skip to content

Commit 180df66

Browse files
krish2718kartben
authored andcommitted
modules: nrf_wifi: Add a new module for nRF70 Wi-Fi
This is a Zephyr shim for the nrf-wifi module. Signed-off-by: Chaitanya Tata <[email protected]>
1 parent f7dc9f8 commit 180df66

File tree

4 files changed

+188
-0
lines changed

4 files changed

+188
-0
lines changed

MAINTAINERS.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5057,6 +5057,16 @@ West:
50575057
labels:
50585058
- "area: native port"
50595059

5060+
"West project: nrf_wifi":
5061+
status: maintained
5062+
maintainers:
5063+
- krish2718
5064+
- sachinthegreen
5065+
files:
5066+
- modules/nrf_wifi/
5067+
labels:
5068+
- "area: Wi-Fi"
5069+
50605070
"West project: open-amp":
50615071
status: odd fixes
50625072
collaborators:

modules/nrf_wifi/CMakeLists.txt

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
# Copyright (c) 2024 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if(NOT CONFIG_WIFI_NRF70)
5+
return()
6+
endif()
7+
zephyr_interface_library_named(nrf-wifi-interface)
8+
zephyr_library()
9+
10+
set(NRF_WIFI_DIR ${ZEPHYR_CURRENT_MODULE_DIR})
11+
12+
# Translate the configuration to the OS agnostic code
13+
target_compile_definitions(
14+
nrf-wifi-interface
15+
INTERFACE
16+
$<$<BOOL:${CONFIG_NRF_WIFI_LOW_POWER}>:NRF_WIFI_LOW_POWER>
17+
$<$<BOOL:${CONFIG_NRF_WIFI_RPU_RECOVERY}>:NRF_WIFI_RPU_RECOVERY>
18+
$<$<BOOL:${CONFIG_NRF_WIFI_AP_DEAD_DETECT_TIMEOUT}>:NRF_WIFI_AP_DEAD_DETECT_TIMEOUT=${CONFIG_NRF_WIFI_AP_DEAD_DETECT_TIMEOUT}>
19+
$<$<BOOL:${CONFIG_NRF_WIFI_IFACE_MTU}>:NRF_WIFI_IFACE_MTU=${CONFIG_NRF_WIFI_IFACE_MTU}>
20+
$<$<BOOL:${CONFIG_NRF70_STA_MODE}>:NRF70_STA_MODE>
21+
$<$<BOOL:${CONFIG_NRF70_DATA_TX}>:NRF70_DATA_TX>
22+
$<$<BOOL:${CONFIG_NRF70_RAW_DATA_TX}>:NRF70_RAW_DATA_TX>
23+
$<$<BOOL:${CONFIG_NRF70_RAW_DATA_RX}>:NRF70_RAW_DATA_RX>
24+
$<$<BOOL:${CONFIG_NRF70_PROMISC_DATA_RX}>:NRF70_PROMISC_DATA_RX>
25+
$<$<BOOL:${CONFIG_NRF70_TX_DONE_WQ_ENABLED}>:NRF70_TX_DONE_WQ_ENABLED>
26+
$<$<BOOL:${CONFIG_NRF70_RX_WQ_ENABLED}>:NRF70_RX_WQ_ENABLED>
27+
$<$<BOOL:${CONFIG_NRF70_UTIL}>:NRF70_UTIL>
28+
$<$<BOOL:${CONFIG_NRF70_RADIO_TEST}>:NRF70_RADIO_TEST>
29+
$<$<BOOL:${CONFIG_NRF70_OFFLOADED_RAW_TX}>:NRF70_OFFLOADED_RAW_TX>
30+
$<$<BOOL:${CONFIG_NRF70_TCP_IP_CHECKSUM_OFFLOAD}>:NRF70_TCP_IP_CHECKSUM_OFFLOAD>
31+
$<$<BOOL:${CONFIG_NRF70_RPU_EXTEND_TWT_SP}>:NRF70_RPU_EXTEND_TWT_SP>
32+
$<$<BOOL:${CONFIG_NRF70_SYSTEM_WITH_RAW_MODES}>:NRF70_SYSTEM_WITH_RAW_MODES>
33+
$<$<BOOL:${CONFIG_NRF70_SCAN_ONLY}>:NRF70_SCAN_ONLY>
34+
$<$<BOOL:${CONFIG_NRF70_SYSTEM_MODE}>:NRF70_SYSTEM_MODE>
35+
$<$<BOOL:${CONFIG_NRF70_2_4G_ONLY}>:NRF70_2_4G_ONLY>
36+
$<$<BOOL:${CONFIG_NRF70_LOG_VERBOSE}>:NRF70_LOG_VERBOSE>
37+
$<$<BOOL:${CONFIG_NRF70_AP_MODE}>:NRF70_AP_MODE>
38+
$<$<BOOL:${CONFIG_NRF_WIFI_MGMT_BUFF_OFFLOAD}>:NRF_WIFI_MGMT_BUFF_OFFLOAD>
39+
$<$<BOOL:${CONFIG_NRF_WIFI_FEAT_KEEPALIVE}>:NRF_WIFI_FEAT_KEEPALIVE>
40+
$<$<BOOL:${CONFIG_NRF_WIFI_FEAT_KEEPALIVE}>:NRF_WIFI_KEEPALIVE_PERIOD_S=${CONFIG_NRF_WIFI_KEEPALIVE_PERIOD_S}>
41+
NRF70_RX_NUM_BUFS=${CONFIG_NRF70_RX_NUM_BUFS}
42+
NRF70_MAX_TX_TOKENS=${CONFIG_NRF70_MAX_TX_TOKENS}
43+
NRF70_RX_MAX_DATA_SIZE=${CONFIG_NRF70_RX_MAX_DATA_SIZE}
44+
NRF70_MAX_TX_PENDING_QLEN=${CONFIG_NRF70_MAX_TX_PENDING_QLEN}
45+
NRF70_RPU_PS_IDLE_TIMEOUT_MS=${CONFIG_NRF70_RPU_PS_IDLE_TIMEOUT_MS}
46+
NRF70_REG_DOMAIN=${CONFIG_NRF70_REG_DOMAIN}
47+
NRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS=${CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_DSSS}
48+
NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HT}
49+
NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_2G_LOWER_EDGE_BACKOFF_HE}
50+
NRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS=${CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_DSSS}
51+
NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HT}
52+
NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_2G_UPPER_EDGE_BACKOFF_HE}
53+
NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HT}
54+
NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_1_LOWER_EDGE_BACKOFF_HE}
55+
NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HT}
56+
NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_1_UPPER_EDGE_BACKOFF_HE}
57+
NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HT}
58+
NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_2A_LOWER_EDGE_BACKOFF_HE}
59+
NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HT}
60+
NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_2A_UPPER_EDGE_BACKOFF_HE}
61+
NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HT}
62+
NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_2C_LOWER_EDGE_BACKOFF_HE}
63+
NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HT}
64+
NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_2C_UPPER_EDGE_BACKOFF_HE}
65+
NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HT}
66+
NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_3_LOWER_EDGE_BACKOFF_HE}
67+
NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HT}
68+
NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_3_UPPER_EDGE_BACKOFF_HE}
69+
NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HT}
70+
NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_4_LOWER_EDGE_BACKOFF_HE}
71+
NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT=${CONFIG_NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HT}
72+
NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE=${CONFIG_NRF70_BAND_UNII_4_UPPER_EDGE_BACKOFF_HE}
73+
NRF70_PCB_LOSS_2G=${CONFIG_NRF70_PCB_LOSS_2G}
74+
NRF70_PCB_LOSS_5G_BAND1=${CONFIG_NRF70_PCB_LOSS_5G_BAND1}
75+
NRF70_PCB_LOSS_5G_BAND2=${CONFIG_NRF70_PCB_LOSS_5G_BAND2}
76+
NRF70_PCB_LOSS_5G_BAND3=${CONFIG_NRF70_PCB_LOSS_5G_BAND3}
77+
NRF70_ANT_GAIN_2G=${CONFIG_NRF70_ANT_GAIN_2G}
78+
NRF70_ANT_GAIN_5G_BAND1=${CONFIG_NRF70_ANT_GAIN_5G_BAND1}
79+
NRF70_ANT_GAIN_5G_BAND2=${CONFIG_NRF70_ANT_GAIN_5G_BAND2}
80+
NRF70_ANT_GAIN_5G_BAND3=${CONFIG_NRF70_ANT_GAIN_5G_BAND3}
81+
NRF_WIFI_PS_INT_PS=${CONFIG_NRF_WIFI_PS_INT_PS}
82+
NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS=${CONFIG_NRF_WIFI_RPU_RECOVERY_PS_ACTIVE_TIMEOUT_MS}
83+
)
84+
85+
target_include_directories(
86+
nrf-wifi-interface
87+
INTERFACE
88+
${CMAKE_CURRENT_LIST_DIR}
89+
${NRF_WIFI_DIR}/utils/inc
90+
${NRF_WIFI_DIR}/os_if/inc
91+
${NRF_WIFI_DIR}/bus_if/bus/qspi/inc
92+
${NRF_WIFI_DIR}/bus_if/bal/inc
93+
${NRF_WIFI_DIR}/fw_if/umac_if/inc
94+
${NRF_WIFI_DIR}/fw_load/mips/fw/inc
95+
${NRF_WIFI_DIR}/hw_if/hal/inc
96+
${NRF_WIFI_DIR}/hw_if/hal/inc/fw
97+
${NRF_WIFI_DIR}/fw_if/umac_if/inc/fw
98+
)
99+
100+
if(CONFIG_NRF70_RADIO_TEST)
101+
target_include_directories(nrf-wifi-interface INTERFACE
102+
${NRF_WIFI_DIR}/fw_if/umac_if/inc/radio_test
103+
)
104+
elseif(CONFIG_NRF70_OFFLOADED_RAW_TX)
105+
target_include_directories(nrf-wifi-interface INTERFACE
106+
${NRF_WIFI_DIR}/fw_if/umac_if/inc/offload_raw_tx
107+
off_raw_tx/inc
108+
)
109+
else()
110+
target_include_directories(nrf-wifi-interface INTERFACE
111+
${NRF_WIFI_DIR}/fw_if/umac_if/inc/default
112+
)
113+
endif()
114+
115+
zephyr_library_sources(
116+
${NRF_WIFI_DIR}/os_if/src/osal.c
117+
${NRF_WIFI_DIR}/utils/src/list.c
118+
${NRF_WIFI_DIR}/utils/src/queue.c
119+
${NRF_WIFI_DIR}/utils/src/util.c
120+
${NRF_WIFI_DIR}/hw_if/hal/src/hal_api.c
121+
${NRF_WIFI_DIR}/hw_if/hal/src/hal_fw_patch_loader.c
122+
${NRF_WIFI_DIR}/hw_if/hal/src/hal_interrupt.c
123+
${NRF_WIFI_DIR}/hw_if/hal/src/hal_mem.c
124+
${NRF_WIFI_DIR}/hw_if/hal/src/hal_reg.c
125+
${NRF_WIFI_DIR}/hw_if/hal/src/hpqm.c
126+
${NRF_WIFI_DIR}/hw_if/hal/src/pal.c
127+
${NRF_WIFI_DIR}/bus_if/bal/src/bal.c
128+
${NRF_WIFI_DIR}/bus_if/bus/qspi/src/qspi.c
129+
${NRF_WIFI_DIR}/fw_if/umac_if/src/cmd.c
130+
${NRF_WIFI_DIR}/fw_if/umac_if/src/event.c
131+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_api_common.c
132+
)
133+
134+
zephyr_library_sources_ifndef(CONFIG_NRF70_RADIO_TEST
135+
${NRF_WIFI_DIR}/fw_if/umac_if/src/rx.c
136+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_vif.c
137+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_util.c
138+
${NRF_WIFI_DIR}/fw_if/umac_if/src/default/fmac_api.c
139+
)
140+
141+
zephyr_library_sources_ifdef(CONFIG_NRF70_RADIO_TEST
142+
${NRF_WIFI_DIR}/fw_if/umac_if/src/radio_test/fmac_api.c
143+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_util.c
144+
)
145+
146+
zephyr_library_sources_ifdef(CONFIG_NRF70_DATA_TX
147+
${NRF_WIFI_DIR}/fw_if/umac_if/src/tx.c
148+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_peer.c
149+
)
150+
151+
zephyr_library_sources_ifdef(CONFIG_NRF70_STA_MODE
152+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_peer.c
153+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_util.c
154+
)
155+
156+
zephyr_library_sources_ifdef(CONFIG_NRF70_PROMISC_DATA_RX
157+
${OS_AGNOSTIC_BASE}/fw_if/umac_if/src/fmac_promisc.c
158+
)
159+
160+
zephyr_library_sources_ifdef(CONFIG_NRF70_AP_MODE
161+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_ap.c
162+
)
163+
164+
# Without WPA supplicant we only support scan
165+
zephyr_library_sources_ifdef(CONFIG_NRF70_STA_MODE
166+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_peer.c
167+
${NRF_WIFI_DIR}/fw_if/umac_if/src/fmac_util.c
168+
)
169+
170+
target_link_libraries(zephyr_interface INTERFACE nrf-wifi-interface)

modules/nrf_wifi/Kconfig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2024 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config ZEPHYR_NRF_WIFI_MODULE
5+
bool

west.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ manifest:
302302
- name: nrf_hw_models
303303
revision: 3cfca0192ff84da919e9bc7978bcc2239cd6a395
304304
path: modules/bsim_hw_models/nrf_hw_models
305+
- name: nrf_wifi
306+
revision: f9e2abdb70761003912b1b929a37b536f68a91da
307+
path: modules/lib/nrf_wifi
305308
- name: open-amp
306309
revision: b735edbc739ad59156eb55bb8ce2583d74537719
307310
path: modules/lib/open-amp

0 commit comments

Comments
 (0)