mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
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 <eren.terzioglu@espressif.com>
This commit is contained in:
parent
5b94c8031e
commit
9e254e898d
2 changed files with 18 additions and 45 deletions
|
|
@ -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" */
|
||||
snprintf(devname, sizeof(devname), DEVNAME_FMT, port);
|
||||
|
||||
ret = can_register("/dev/can0", twai);
|
||||
ret = can_register(devname, twai);
|
||||
if (ret < 0)
|
||||
{
|
||||
canerr("ERROR: TWAI0 register failed: %d\n", ret);
|
||||
canerr("ERROR: TWAI%d register failed: %d\n", port, 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 */
|
||||
|
||||
return OK;
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -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" */
|
||||
snprintf(devname, sizeof(devname), DEVNAME_FMT, port);
|
||||
|
||||
ret = can_register("/dev/can0", twai);
|
||||
ret = can_register(devname, twai);
|
||||
if (ret < 0)
|
||||
{
|
||||
canerr("ERROR: TWAI0 register failed: %d\n", ret);
|
||||
canerr("ERROR: TWAI%d register failed: %d\n", port, 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" */
|
||||
|
||||
ret = can_register("/dev/can2", twai);
|
||||
if (ret < 0)
|
||||
{
|
||||
canerr("ERROR: TWAI2 register failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_ESPRESSIF_TWAI2 */
|
||||
|
||||
return OK;
|
||||
#else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue