This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 9e254e898d99bd8557105fd09d29f44fa24c94e2 Author: Eren Terzioglu <[email protected]> AuthorDate: Fri Jun 19 18:17:10 2026 +0200 boards/risc-v/espressif: Fix twai initialization for esp32[-c6|-p4] Fix twai initialization when multiple twai devices enabled for esp32c6 and esp32p4 Signed-off-by: Eren Terzioglu <[email protected]> --- boards/risc-v/esp32c6/common/src/esp_board_twai.c | 26 ++++++---------- boards/risc-v/esp32p4/common/src/esp_board_twai.c | 37 ++++++----------------- 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/boards/risc-v/esp32c6/common/src/esp_board_twai.c b/boards/risc-v/esp32c6/common/src/esp_board_twai.c index 05f22a94400..b7cfcead853 100644 --- a/boards/risc-v/esp32c6/common/src/esp_board_twai.c +++ b/boards/risc-v/esp32c6/common/src/esp_board_twai.c @@ -27,6 +27,7 @@ #include <nuttx/config.h> #include <errno.h> +#include <stdio.h> #include <nuttx/debug.h> #include <nuttx/can/can.h> @@ -40,6 +41,9 @@ * Pre-processor Definitions ****************************************************************************/ +#define DEVNAME_FMT "/dev/can%d" +#define DEVNAME_FMTLEN (8 + 3 + 1) + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -63,6 +67,7 @@ int board_twai_setup(int port) { #ifdef CONFIG_ESPRESSIF_TWAI struct can_dev_s *twai; + char devname[DEVNAME_FMTLEN]; int ret; /* Call esp_twaiinitialize() to get an instance of the TWAI @@ -72,31 +77,18 @@ int board_twai_setup(int port) twai = esp_twaiinitialize(port); if (twai == NULL) { - canerr("ERROR: Failed to get TWAI interface\n"); + canerr("ERROR: Failed to get TWAI interface for port %d\n", port); return -ENODEV; } -#ifdef CONFIG_ESPRESSIF_TWAI0 - /* Register the TWAI driver at "/dev/can0" */ - - ret = can_register("/dev/can0", twai); - if (ret < 0) - { - canerr("ERROR: TWAI0 register failed: %d\n", ret); - return ret; - } -#endif /* CONFIG_ESPRESSIF_TWAI0 */ - -#ifdef CONFIG_ESPRESSIF_TWAI1 - /* Register the TWAI driver at "/dev/can1" */ + snprintf(devname, sizeof(devname), DEVNAME_FMT, port); - ret = can_register("/dev/can1", twai); + ret = can_register(devname, twai); if (ret < 0) { - canerr("ERROR: TWAI1 register failed: %d\n", ret); + canerr("ERROR: TWAI%d register failed: %d\n", port, ret); return ret; } -#endif /* CONFIG_ESPRESSIF_TWAI1 */ return OK; #else diff --git a/boards/risc-v/esp32p4/common/src/esp_board_twai.c b/boards/risc-v/esp32p4/common/src/esp_board_twai.c index a3cab7e2f1f..d0a4851e628 100644 --- a/boards/risc-v/esp32p4/common/src/esp_board_twai.c +++ b/boards/risc-v/esp32p4/common/src/esp_board_twai.c @@ -27,6 +27,7 @@ #include <nuttx/config.h> #include <errno.h> +#include <stdio.h> #include <nuttx/debug.h> #include <nuttx/can/can.h> @@ -40,6 +41,9 @@ * Pre-processor Definitions ****************************************************************************/ +#define DEVNAME_FMT "/dev/can%d" +#define DEVNAME_FMTLEN (8 + 3 + 1) + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -63,6 +67,7 @@ int board_twai_setup(int port) { #ifdef CONFIG_ESPRESSIF_TWAI struct can_dev_s *twai; + char devname[DEVNAME_FMTLEN]; int ret; /* Call esp_twaiinitialize() to get an instance of the TWAI @@ -72,42 +77,18 @@ int board_twai_setup(int port) twai = esp_twaiinitialize(port); if (twai == NULL) { - canerr("ERROR: Failed to get TWAI interface\n"); + canerr("ERROR: Failed to get TWAI interface for port %d\n", port); return -ENODEV; } -#ifdef CONFIG_ESPRESSIF_TWAI0 - /* Register the TWAI driver at "/dev/can0" */ - - ret = can_register("/dev/can0", twai); - if (ret < 0) - { - canerr("ERROR: TWAI0 register failed: %d\n", ret); - return ret; - } -#endif /* CONFIG_ESPRESSIF_TWAI0 */ - -#ifdef CONFIG_ESPRESSIF_TWAI1 - /* Register the TWAI driver at "/dev/can1" */ - - ret = can_register("/dev/can1", twai); - if (ret < 0) - { - canerr("ERROR: TWAI1 register failed: %d\n", ret); - return ret; - } -#endif /* CONFIG_ESPRESSIF_TWAI1 */ - -#ifdef CONFIG_ESPRESSIF_TWAI2 - /* Register the TWAI driver at "/dev/can2" */ + snprintf(devname, sizeof(devname), DEVNAME_FMT, port); - ret = can_register("/dev/can2", twai); + ret = can_register(devname, twai); if (ret < 0) { - canerr("ERROR: TWAI2 register failed: %d\n", ret); + canerr("ERROR: TWAI%d register failed: %d\n", port, ret); return ret; } -#endif /* CONFIG_ESPRESSIF_TWAI2 */ return OK; #else
