Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NXP Iw416 and nw61x wifi and bt soc support #512

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
118 changes: 79 additions & 39 deletions mcux/middleware/wifi_nxp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,120 +24,150 @@ zephyr_compile_definitions_ifdef(CONFIG_NXP_RW610
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW_rw610.h"
)

zephyr_compile_definitions_ifdef(CONFIG_88W8987_AW_CM358_USD
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8987_AW_CM358_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_88W8987_AW_CM358MA_M2
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8987_AW_CM358MA_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_88W8987_MURATA_1ZM_USD
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8987_MURATA_1ZM_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1ZM_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x06
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x06
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_88W8987_MURATA_1ZM_M2
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8987_MURATA_1ZM_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1ZM_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x06
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x06
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_AW_AM457_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_AW_AM457_USD
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_AW_AM457MA_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_AW_AM457MA_M2
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_AW_AM510_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_AW_AM510_USD
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_AW_AM510MA_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_AW_AM510MA_M2
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x09
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_MURATA_1XK_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_MURATA_1XK_USD
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x00
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW416_MURATA_1XK_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_MURATA_1XK_M2
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x00
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0C
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW612_MURATA_2EL_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_EU
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_EU.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_CA
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_CA.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_WW
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_WW.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_US
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_US.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_JP
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_JP.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW416_REGION_CA
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_1XK_CA.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_IW612_MURATA_2EL_USD
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0A
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0A
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW612_MURATA_2EL_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW612_MURATA_2EL_M2
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0A
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0A
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW611_MURATA_2DL_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW611_MURATA_2DL_USD
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0A
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0A
WIFI_BT_USE_USD_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_IW611_MURATA_2DL_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_WW.h"
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW611_MURATA_2DL_M2
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0A
CONFIG_NXP_WIFI_ED_OFFSET_5G=0x0A
WIFI_BT_USE_M2_INTERFACE
)

zephyr_compile_definitions_ifdef(CONFIG_88W8801_AW_NM191_USD
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW61X_REGION_US
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_US_RU_Tx_power.h"
)
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW61X_REGION_JP
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_JP_RU_Tx_power.h"
)
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW61X_REGION_CA
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_CA_RU_Tx_power.h"
)
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW61X_REGION_EU
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_EU_RU_Tx_power.h"
)
zephyr_compile_definitions_ifdef(CONFIG_NXP_IW61X_REGION_WW
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2EL_WW.h"
)

zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8801_AW_NM191_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x1B
)

zephyr_compile_definitions_ifdef(CONFIG_88W8801_AW_NM191MA_M2
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8801_AW_NM191MA_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x1B
)

zephyr_compile_definitions_ifdef(CONFIG_88W8801_MURATA_2DS_USD
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8801_MURATA_2DS_USD
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2DS_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0E
)

zephyr_compile_definitions_ifdef(CONFIG_88W8801_MURATA_2DS_M2
zephyr_compile_definitions_ifdef(CONFIG_NXP_88W8801_MURATA_2DS_M2
WIFI_BT_TX_PWR_LIMITS="wlan_txpwrlimit_cfg_murata_2DS_WW.h"
CONFIG_NXP_WIFI_ED_OFFSET_2G=0x0E
)
Expand Down Expand Up @@ -253,6 +283,13 @@ zephyr_library_compile_definitions_ifdef(CONFIG_WIFI_NM_HOSTAPD_AP

if(CONFIG_CODE_DATA_RELOCATION)
if(CONFIG_SPEED_OPTIMIZATIONS OR CONFIG_SIZE_OPTIMIZATIONS)

if(CONFIG_NXP_RW610)
set(QUICK_ACCESS_CODE_AREA RAM_TEXT)
else()
set(QUICK_ACCESS_CODE_AREA ITCM_TEXT)
endif()

# critical path code relocated to SRAM
zephyr_code_relocate(FILES
port/osa/osa.c
Expand All @@ -263,51 +300,54 @@ zephyr_code_relocate(FILES
wifidriver/mlan_11n_rxreorder.c
wifidriver/mlan_wmm.c
wifidriver/wifi.c
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})

if(CONFIG_SDIO_STACK)
zephyr_code_relocate(FILES
sdio_nxp_abs/mlan_sdio.c
wifidriver/wifi-sdio.c
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})
endif()

if(CONFIG_NXP_RW610)
zephyr_code_relocate(FILES
wifidriver/wifi-imu.c
${ZEPHYR_HAL_NXP_MODULE_DIR}/mcux/mcux-sdk/drivers/imu/fsl_imu.c
${ZEPHYR_HAL_NXP_MODULE_DIR}/mcux/mcux-sdk/components/rpmsg/fsl_adapter_rfimu.c
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})
endif()

zephyr_code_relocate(FILES
${ZEPHYR_HAL_NXP_MODULE_DIR}/mcux/mcux-sdk/components/osa/fsl_os_abstraction_zephyr.c
${ZEPHYR_HAL_NXP_MODULE_DIR}/mcux/mcux-sdk/utilities/misc_utilities/fsl_memcpy.S
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})

file(GLOB ZPERF_SRC ${ZEPHYR_BASE}/subsys/net/lib/zperf/*.c)
zephyr_code_relocate(FILES ${ZPERF_SRC} LOCATION RAM_TEXT)

zephyr_code_relocate(FILES
${ZEPHYR_BASE}/subsys/net/ip/connection.c
${ZEPHYR_BASE}/subsys/net/ip/ipv6.c
${ZEPHYR_BASE}/subsys/net/ip/ipv6_fragment.c
${ZEPHYR_BASE}/subsys/net/ip/packet_socket.c
${ZEPHYR_BASE}/subsys/net/ip/utils.c
LOCATION RAM_TEXT)

zephyr_code_relocate(FILES
${ZEPHYR_BASE}/subsys/net/lib/sockets/sockets_packet.c
${ZEPHYR_BASE}/subsys/net/lib/sockets/sockets.c
${ZEPHYR_BASE}/subsys/net/ip/connection.c
${ZEPHYR_BASE}/subsys/net/ip/ipv4.c
${ZEPHYR_BASE}/subsys/net/ip/ipv4_fragment.c
${ZEPHYR_BASE}/subsys/net/ip/ipv6.c
${ZEPHYR_BASE}/subsys/net/ip/ipv6_fragment.c
${ZEPHYR_BASE}/subsys/net/ip/net_context.c
${ZEPHYR_BASE}/subsys/net/ip/net_core.c
${ZEPHYR_BASE}/subsys/net/ip/net_if.c
${ZEPHYR_BASE}/subsys/net/ip/net_pkt.c
${ZEPHYR_BASE}/subsys/net/ip/net_tc.c
${ZEPHYR_BASE}/subsys/net/ip/packet_socket.c
${ZEPHYR_BASE}/subsys/net/ip/tcp.c
${ZEPHYR_BASE}/subsys/net/ip/udp.c
${ZEPHYR_BASE}/subsys/net/ip/utils.c
${ZEPHYR_BASE}/subsys/net/l2/ethernet/ethernet.c
${ZEPHYR_BASE}/lib/net_buf/buf.c
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})

zephyr_code_relocate(FILES
${ZEPHYR_BASE}/kernel/mem_slab.c
Expand All @@ -319,7 +359,7 @@ zephyr_code_relocate(FILES
${ZEPHYR_BASE}/kernel/sem.c
${ZEPHYR_BASE}/kernel/thread.c
${ZEPHYR_BASE}/kernel/work.c
LOCATION RAM_TEXT)
LOCATION ${QUICK_ACCESS_CODE_AREA})
endif()
endif()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1791,6 +1791,7 @@
*/
#define MBEDTLS_SSL_SESSION_TICKETS

#ifndef MBEDTLS_SSL_EXPORT_KEYS
/**
* \def MBEDTLS_SSL_EXPORT_KEYS
*
Expand All @@ -1800,6 +1801,7 @@
* Comment this macro to disable support for key export
*/
#define MBEDTLS_SSL_EXPORT_KEYS
#endif

/**
* \def MBEDTLS_SSL_SERVER_NAME_INDICATION
Expand Down Expand Up @@ -3750,6 +3752,8 @@
#undef MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES
#endif /* CONFIG_BUILD_WITH_TFM */

#undef MBEDTLS_PSA_P256M_DRIVER_ENABLED

/*
* CBC-MAC is not yet supported via the PSA API in Mbed TLS.
*/
Expand Down
9 changes: 6 additions & 3 deletions mcux/middleware/wifi_nxp/incl/wifidriver/wifi.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2008-2024 NXP
* Copyright 2008-2025 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*
Expand Down Expand Up @@ -190,11 +190,13 @@ int wifi_init_fcc(const uint8_t *fw_start_addr, const size_t size);
*
*/
void wifi_deinit(void);
#ifdef RW610

/**
* This API can be used to destroy all wifi driver tasks.
*/
void wifi_destroy_wifidriver_tasks(void);

#ifdef RW610
/**
* This API can be used to get IMU task lock.
*/
Expand Down Expand Up @@ -907,7 +909,8 @@ unsigned short wifi_get_listen_interval();
unsigned int wifi_get_delay_to_ps();
void wifi_configure_null_pkt_interval(unsigned int null_pkt_interval);
int wrapper_wifi_assoc(
const unsigned char *bssid, int wlan_security, bool is_wpa_tkip, unsigned int owe_trans_mode, bool is_ft);
const unsigned char *bssid, int wlan_security, bool is_wpa_tkip,
unsigned int owe_trans_mode, bool is_ft, int key_mgmt);
bool wifi_get_xfer_pending(void);
void wifi_set_xfer_pending(bool xfer_val);
int wrapper_wlan_cmd_11n_ba_stream_timeout(void *saved_event_buff);
Expand Down
14 changes: 7 additions & 7 deletions mcux/middleware/wifi_nxp/incl/wlcmgr/wlan.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
#include <wifi_events.h>
#include <wifi.h>

#define WLAN_DRV_VERSION "v1.3.r50.z_up.p6"
#define WLAN_DRV_VERSION "v1.3.r51.z_up.p1"

#if CONFIG_WPA2_ENTP
#include <wm_mbedtls_helper_api.h>
Expand Down Expand Up @@ -2043,14 +2043,13 @@ struct wlan_tx_pert_info
t_u16 tx_pert_check_num;
};
#endif
#if defined(RW610)

typedef enum
{
CLI_DISABLE_WIFI,
CLI_ENABLE_WIFI,
CLI_RESET_WIFI,
} cli_reset_option;
#endif

enum wlan_mon_task_event
{
Expand Down Expand Up @@ -2349,12 +2348,13 @@ int wlan_get_prov_session(void);
*/
int wlan_remove_all_network_profiles(void);

#if defined(RW610)
/** Reset the driver.
* \param[in] ResetOption: Option including enable, disable or reset Wi-Fi driver
* can be chosen.
*/
void wlan_reset(cli_reset_option ResetOption);

#if defined(RW610)
/** Stop and remove all Wi-Fi network (access point).
*
* \return WM_SUCCESS if successful.
Expand All @@ -2365,13 +2365,13 @@ int wlan_remove_all_networks(void);
* This API destroys all tasks.
*/
void wlan_destroy_all_tasks(void);

/** Retrieve the status information of if Wi-Fi started.
*
* \return TRUE if Wi-Fi network is started.
* \return FALSE if not started.
*/
int wlan_is_started(void);

#endif // RW610

#if CONFIG_NCP_BRIDGE
Expand Down Expand Up @@ -3520,7 +3520,7 @@ int wlan_set_ieeeps_cfg(struct wlan_ieeeps_config *ps_cfg);
* periodically wakes up to check if the AP has any pending packets for it. A
* longer listen interval implies that the Wi-Fi SoC stays in power save for a
* longer duration at the cost of additional delays while receiving data.
* Note that choosing incorrect value for listen interval
* Note that choosing incorrect value for listen interval
* causes poor response from device during data transfer.
* Actual listen interval selected by firmware is equal to closest DTIM.\n
* For example:\n
Expand Down Expand Up @@ -5751,7 +5751,7 @@ int wlan_set_crypto_AES_WRAP_encrypt(
int wlan_set_crypto_AES_WRAP_decrypt(
const t_u8 *Key, const t_u16 KeyLength, const t_u8 *KeyIV, const t_u16 KeyIVLength, t_u8 *Data, t_u16 *DataLength);

/** Set crypto AES_CCMP (counter mode with cipher block chaining message authentication code protocol)
/** Set crypto AES_CCMP (counter mode with cipher block chaining message authentication code protocol)
* algorithm encrypt command parameters.
*
* \param[in] Key: key
Expand Down
Loading