-
Notifications
You must be signed in to change notification settings - Fork 7.3k
COEX (WIFI+BT) Enablement NXP IW416 SoC with RT1060EVKC Platform #86719
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
base: main
Are you sure you want to change the base?
Changes from all commits
812502c
49449d5
341b98f
7bcf092
365f410
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
/* | ||
* Copyright 2025 NXP | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
&m2_hci_bt_uart { | ||
bt_hci_uart: bt_hci_uart { | ||
m2_bt_module: m2_bt_module { | ||
/delete-property/ sdio-reset-gpios; | ||
/delete-property/ w-disable-gpios; | ||
}; | ||
}; | ||
}; | ||
|
||
&usdhc1 { | ||
nxp_wifi { | ||
pwr-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>; | ||
sd-gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>; | ||
}; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
##Optimized to support IW416, IW612 with RT1060EVKC | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As you state here, most of these Kconfigs are specifc to the combination of R1060 with either IW416 or IW612. We should move HW-specific Kconfigs to those shield files. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The configurations here are very specific to platform and middleware which includes fine tuning middleware component configuration to let COEX works on RT platform with IW416 and NW612 SoC. The configs are not specific to hardware, but it enables/disables/configure various configurations to make wifi-shell works with bt-shell for coex support. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Kconfigs like these listed below are dependent on the HW, and specifically on the HW module that is added to the EVK board. These should be configured in the shield files since they are specific to the shield connected for the build.
|
||
|
||
#wifi | ||
CONFIG_EARLY_CONSOLE=y | ||
CONFIG_NETWORKING=y | ||
CONFIG_TEST_RANDOM_GENERATOR=y | ||
CONFIG_MAIN_STACK_SIZE=5200 | ||
CONFIG_NET_TX_STACK_SIZE=2048 | ||
CONFIG_NET_RX_STACK_SIZE=2048 | ||
CONFIG_NET_MAX_CONTEXTS=10 | ||
CONFIG_NET_DHCPV4=y | ||
CONFIG_NET_TCP=y | ||
CONFIG_NET_LOG=y | ||
CONFIG_INIT_STACKS=y | ||
CONFIG_NET_SHELL=y | ||
CONFIG_NET_STATISTICS=y | ||
CONFIG_NET_STATISTICS_PERIODIC_OUTPUT=n | ||
CONFIG_WIFI=y | ||
CONFIG_WIFI_LOG_LEVEL_ERR=y | ||
CONFIG_NET_L2_WIFI_SHELL=y | ||
# printing of scan results puts pressure on queues in new locking | ||
# design in net_mgmt. So, use a higher timeout for a crowded | ||
# environment. | ||
CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT=5000 | ||
CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=20 | ||
#board | ||
CONFIG_WIFI_NXP=y | ||
CONFIG_NXP_IW416=y | ||
#CONFIG_NXP_IW61X=y | ||
CONFIG_NXP_WIFI_SHELL=y | ||
CONFIG_NXP_IW416_MURATA_1XK_M2=y | ||
#CONFIG_NXP_IW612_MURATA_2EL_M2=y | ||
# | ||
# C Library | ||
# | ||
CONFIG_REQUIRES_FULL_LIBC=y | ||
CONFIG_CBPRINTF_FP_SUPPORT=y | ||
#CONFIG_IW416_MURATA_1XK_M2=y | ||
#firmware | ||
CONFIG_NXP_MONOLITHIC_WIFI=y | ||
#CONFIG_NXP_FW_LOADER=y | ||
# os | ||
CONFIG_THREAD_CUSTOM_DATA=y | ||
CONFIG_EVENTS=y | ||
CONFIG_SYS_HEAP_AUTO=y | ||
CONFIG_SCHED_MULTIQ=y | ||
CONFIG_ASSERT=y | ||
CONFIG_LOG_MODE_IMMEDIATE=y | ||
|
||
# shell @coex | ||
CONFIG_SHELL_CMD_BUFF_SIZE=512 | ||
|
||
# net | ||
CONFIG_NET_L2_ETHERNET=y | ||
CONFIG_NET_DHCPV4_SERVER_ADDR_COUNT=32 | ||
CONFIG_NET_IPV4=y | ||
CONFIG_NET_IPV6=y | ||
CONFIG_ETH_MCUX=n | ||
CONFIG_NET_ZPERF=y | ||
CONFIG_NET_ZPERF_MAX_PACKET_SIZE=1500 | ||
CONFIG_ZPERF_WORK_Q_STACK_SIZE=4096 | ||
CONFIG_NET_BUF_LOG=y | ||
CONFIG_NET_PKT_RX_COUNT=40 | ||
CONFIG_NET_PKT_TX_COUNT=40 | ||
CONFIG_NET_BUF_RX_COUNT=100 | ||
CONFIG_NET_BUF_TX_COUNT=100 | ||
CONFIG_NET_BUF_DATA_SIZE=1744 | ||
CONFIG_NET_TC_TX_COUNT=1 | ||
CONFIG_NET_TC_RX_COUNT=1 | ||
#CONFIG_NET_MGMT_EVENT_QUEUE_SIZE=20 | ||
CONFIG_NET_IF_MAX_IPV4_COUNT=4 | ||
CONFIG_NET_IF_MAX_IPV6_COUNT=3 | ||
CONFIG_DNS_RESOLVER=y | ||
CONFIG_DNS_RESOLVER_MAX_SERVERS=2 | ||
CONFIG_NET_SOCKETS_POLL_MAX=14 | ||
CONFIG_NET_ZPERF_MAX_SESSIONS=6 | ||
CONFIG_NET_IPV4_FRAGMENT=y | ||
CONFIG_NET_IPV4_FRAGMENT_MAX_COUNT=3 | ||
CONFIG_NET_IPV4_FRAGMENT_MAX_PKT=7 | ||
CONFIG_NET_IPV4_FRAGMENT_TIMEOUT=3 | ||
CONFIG_NET_IPV6_FRAGMENT=y | ||
CONFIG_NET_IPV6_FRAGMENT_MAX_COUNT=3 | ||
CONFIG_NET_IPV6_FRAGMENT_MAX_PKT=8 | ||
CONFIG_NET_IPV6_FRAGMENT_TIMEOUT=3 | ||
CONFIG_NET_MAX_CONN=10 | ||
CONFIG_NET_DHCPV4_SERVER_ICMP_PROBE_TIMEOUT=100 | ||
CONFIG_ETH_DRIVER=n | ||
|
||
# net threads priority | ||
CONFIG_NET_TC_THREAD_PRIO_CUSTOM=y | ||
CONFIG_NET_TC_THREAD_PREEMPTIVE=y | ||
CONFIG_NET_TCP_WORKER_PRIO=-16 | ||
CONFIG_NET_TC_TX_THREAD_BASE_PRIO=3 | ||
CONFIG_NET_TC_RX_THREAD_BASE_PRIO=3 | ||
CONFIG_ZPERF_WORK_Q_THREAD_PRIORITY=3 | ||
CONFIG_NET_SOCKETS_SERVICE_THREAD_PRIO=3 | ||
CONFIG_NET_TC_SKIP_FOR_HIGH_PRIO=y | ||
CONFIG_NET_CONTEXT_PRIORITY=y | ||
CONFIG_NET_MGMT_THREAD_PRIO_CUSTOM=y | ||
CONFIG_NET_MGMT_THREAD_PRIORITY=3 | ||
CONFIG_IDLE_STACK_SIZE=2048 | ||
|
||
# power management | ||
CONFIG_PM_LOG_LEVEL_OFF=y | ||
#CONFIG_IDLE_STACK_SIZE=2048 | ||
|
||
# stack size | ||
CONFIG_SHELL_STACK_SIZE=6144 | ||
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 | ||
CONFIG_NET_MGMT_EVENT_STACK_SIZE=4608 | ||
CONFIG_NET_TCP_WORKQ_STACK_SIZE=2048 | ||
#CONFIG_MAIN_STACK_SIZE=4096 @wifi | ||
CONFIG_NET_SOCKETS_SERVICE_STACK_SIZE=4096 | ||
# optimization level | ||
# refer to Kconfig.zephyr for Optimizations Level | ||
CONFIG_SPEED_OPTIMIZATIONS=y | ||
# comment out for -O0 | ||
CONFIG_CODE_DATA_RELOCATION_SRAM=y |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why need to add this reset for all the NXP wifi case?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @MaochenWang, this is with respect to enabling COEX (WIFI + BT) for IW416 and IW612 SoC where Controller Reset is must so that BT CPU goes in reset state and starts sending signature bytes to allow firmware load post WIFI Init.
In all other case where controller reset properties are not set by board overlay, the api
nxp_wifi_cpu_reset()
returns success as per below code in API definitions. You can see new coex overlay to work with iw416/iw612, the wifi properties are added here, https://github.com/zephyrproject-rtos/zephyr/pull/86719/files#diff-d4cf5dd6dea2a990e904c0ab6ffbf822b8cf81a0d14c12dc696db59a77fcb85cstatic int nxp_wifi_cpu_reset(uint8_t enable) { int err = 0; #if DT_NODE_HAS_PROP(DT_DRV_INST(0), sd_gpios) && \ DT_NODE_HAS_PROP(DT_DRV_INST(0), pwr_gpios)
Regards,
Nirav