Zephyr API Documentation
3.5.0
A Scalable Open Source RTOS
|
|
3.5.0 |
#include <zephyr/cache.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/can.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/sys_io.h>
#include <zephyr/sys/util.h>
Go to the source code of this file.
Data Structures | |
struct | can_mcan_rx_fifo_hdr |
Bosch M_CAN Rx Buffer and FIFO Element header. More... | |
struct | can_mcan_rx_fifo |
Bosch M_CAN Rx Buffer and FIFO Element. More... | |
struct | can_mcan_tx_buffer_hdr |
Bosch M_CAN Tx Buffer Element header. More... | |
struct | can_mcan_tx_buffer |
Bosch M_CAN Tx Buffer Element. More... | |
struct | can_mcan_tx_event_fifo |
Bosch M_CAN Tx Event FIFO Element. More... | |
struct | can_mcan_std_filter |
Bosch M_CAN Standard Message ID Filter Element. More... | |
struct | can_mcan_ext_filter |
Bosch M_CAN Extended Message ID Filter Element. More... | |
struct | can_mcan_data |
Bosch M_CAN driver internal data structure. More... | |
struct | can_mcan_ops |
Bosch M_CAN driver front-end operations. More... | |
struct | can_mcan_tx_callback |
Bosch M_CAN driver internal Tx callback structure. More... | |
struct | can_mcan_rx_callback |
Bosch M_CAN driver internal Rx callback structure. More... | |
struct | can_mcan_callbacks |
Bosch M_CAN driver internal Tx + Rx callbacks structure. More... | |
struct | can_mcan_config |
Bosch M_CAN driver internal configuration structure. More... | |
Typedefs | |
typedef int(* | can_mcan_read_reg_t) (const struct device *dev, uint16_t reg, uint32_t *val) |
Bosch M_CAN driver front-end callback for reading a register value. | |
typedef int(* | can_mcan_write_reg_t) (const struct device *dev, uint16_t reg, uint32_t val) |
Bosch M_CAN driver front-end callback for writing a register value. | |
typedef int(* | can_mcan_read_mram_t) (const struct device *dev, uint16_t offset, void *dst, size_t len) |
Bosch M_CAN driver front-end callback for reading from Message RAM. | |
typedef int(* | can_mcan_write_mram_t) (const struct device *dev, uint16_t offset, const void *src, size_t len) |
Bosch M_CAN driver front-end callback for writing to Message RAM. | |
typedef int(* | can_mcan_clear_mram_t) (const struct device *dev, uint16_t offset, size_t len) |
Bosch M_CAN driver front-end callback for clearing Message RAM. | |
Enumerations | |
enum | can_mcan_psr_lec { CAN_MCAN_PSR_LEC_NO_ERROR = 0 , CAN_MCAN_PSR_LEC_STUFF_ERROR = 1 , CAN_MCAN_PSR_LEC_FORM_ERROR = 2 , CAN_MCAN_PSR_LEC_ACK_ERROR = 3 , CAN_MCAN_PSR_LEC_BIT1_ERROR = 4 , CAN_MCAN_PSR_LEC_BIT0_ERROR = 5 , CAN_MCAN_PSR_LEC_CRC_ERROR = 6 , CAN_MCAN_PSR_LEC_NO_CHANGE = 7 } |
Functions | |
static int | can_mcan_sys_read_reg (mm_reg_t base, uint16_t reg, uint32_t *val) |
Bosch M_CAN driver front-end callback helper for reading a memory mapped register. | |
static int | can_mcan_sys_write_reg (mm_reg_t base, uint16_t reg, uint32_t val) |
Bosch M_CAN driver front-end callback helper for writing a memory mapped register. | |
static int | can_mcan_sys_read_mram (mem_addr_t base, uint16_t offset, void *dst, size_t len) |
Bosch M_CAN driver front-end callback helper for reading from memory mapped Message RAM. | |
static int | can_mcan_sys_write_mram (mem_addr_t base, uint16_t offset, const void *src, size_t len) |
Bosch M_CAN driver front-end callback helper for writing to memory mapped Message RAM. | |
static int | can_mcan_sys_clear_mram (mem_addr_t base, uint16_t offset, size_t len) |
Bosch M_CAN driver front-end callback helper for clearing memory mapped Message RAM. | |
int | can_mcan_read_reg (const struct device *dev, uint16_t reg, uint32_t *val) |
Read a Bosch M_CAN register. | |
int | can_mcan_write_reg (const struct device *dev, uint16_t reg, uint32_t val) |
Write a Bosch M_CAN register. | |
static int | can_mcan_read_mram (const struct device *dev, uint16_t offset, void *dst, size_t len) |
Read from Bosch M_CAN Message RAM. | |
static int | can_mcan_write_mram (const struct device *dev, uint16_t offset, const void *src, size_t len) |
Write to Bosch M_CAN Message RAM. | |
static int | can_mcan_clear_mram (const struct device *dev, uint16_t offset, size_t len) |
Clear Bosch M_CAN Message RAM. | |
int | can_mcan_configure_mram (const struct device *dev, uintptr_t mrba, uintptr_t mram) |
Configure Bosch M_MCAN Message RAM start addresses. | |
int | can_mcan_init (const struct device *dev) |
Bosch M_CAN driver initialization callback. | |
void | can_mcan_line_0_isr (const struct device *dev) |
Bosch M_CAN driver m_can_int0 IRQ handler. | |
void | can_mcan_line_1_isr (const struct device *dev) |
Bosch M_CAN driver m_can_int1 IRQ handler. | |
void | can_mcan_enable_configuration_change (const struct device *dev) |
Enable Bosch M_CAN configuration change. | |
int | can_mcan_get_capabilities (const struct device *dev, can_mode_t *cap) |
Bosch M_CAN driver callback API upon getting CAN controller capabilities See can_get_capabilities() for argument description. | |
int | can_mcan_start (const struct device *dev) |
Bosch M_CAN driver callback API upon starting CAN controller See can_start() for argument description. | |
int | can_mcan_stop (const struct device *dev) |
Bosch M_CAN driver callback API upon stopping CAN controller See can_stop() for argument description. | |
int | can_mcan_set_mode (const struct device *dev, can_mode_t mode) |
Bosch M_CAN driver callback API upon setting CAN controller mode See can_set_mode() for argument description. | |
int | can_mcan_set_timing (const struct device *dev, const struct can_timing *timing) |
Bosch M_CAN driver callback API upon setting CAN bus timing See can_set_timing() for argument description. | |
int | can_mcan_set_timing_data (const struct device *dev, const struct can_timing *timing_data) |
Bosch M_CAN driver callback API upon setting CAN bus data phase timing See can_set_timing_data() for argument description. | |
int | can_mcan_recover (const struct device *dev, k_timeout_t timeout) |
Bosch M_CAN driver callback API upon recovering the CAN bus See can_recover() for argument description. | |
int | can_mcan_send (const struct device *dev, const struct can_frame *frame, k_timeout_t timeout, can_tx_callback_t callback, void *user_data) |
int | can_mcan_get_max_filters (const struct device *dev, bool ide) |
int | can_mcan_add_rx_filter (const struct device *dev, can_rx_callback_t callback, void *user_data, const struct can_filter *filter) |
Bosch M_CAN driver callback API upon adding an RX filter See can_add_rx_callback() for argument description. | |
void | can_mcan_remove_rx_filter (const struct device *dev, int filter_id) |
Bosch M_CAN driver callback API upon removing an RX filter See can_remove_rx_filter() for argument description. | |
int | can_mcan_get_state (const struct device *dev, enum can_state *state, struct can_bus_err_cnt *err_cnt) |
Bosch M_CAN driver callback API upon getting the CAN controller state See can_get_state() for argument description. | |
void | can_mcan_set_state_change_callback (const struct device *dev, can_state_change_callback_t callback, void *user_data) |
Bosch M_CAN driver callback API upon setting a state change callback See can_set_state_change_callback() for argument description. | |
int | can_mcan_get_max_bitrate (const struct device *dev, uint32_t *max_bitrate) |
Bosch M_CAN driver callback API upon getting the maximum supported bitrate See can_get_max_bitrate() for argument description. | |
#define CAN_MCAN_CALLBACKS_DEFINE | ( | _name, | |
_tx, | |||
_std, | |||
_ext | |||
) |
Define Bosch M_CAN TX and RX callbacks.
This macro allows a Bosch M_CAN driver frontend using a fixed Message RAM configuration to limit the required software resources (e.g. limit the number of the standard (11-bit) or extended (29-bit) filters in use).
Frontend drivers supporting dynamic Message RAM configuration should use CAN_MCAN_DT_CALLBACKS_DEFINE() or CAN_MCAN_DT_INST_CALLBACKS_DEFINE() instead.
_name | callbacks variable name |
_tx | Number of Tx callbacks |
_std | Number of standard (11-bit) filter callbacks |
_ext | Number of extended (29-bit) filter callbacks |
#define CAN_MCAN_CCCR 0x018 |
#define CAN_MCAN_CCCR_ASM BIT(2) |
#define CAN_MCAN_CCCR_BRSE BIT(9) |
#define CAN_MCAN_CCCR_CCE BIT(1) |
#define CAN_MCAN_CCCR_CSA BIT(3) |
#define CAN_MCAN_CCCR_CSR BIT(4) |
#define CAN_MCAN_CCCR_DAR BIT(6) |
#define CAN_MCAN_CCCR_EFBI BIT(13) |
#define CAN_MCAN_CCCR_FDOE BIT(8) |
#define CAN_MCAN_CCCR_INIT BIT(0) |
#define CAN_MCAN_CCCR_MON BIT(5) |
#define CAN_MCAN_CCCR_NISO BIT(15) |
#define CAN_MCAN_CCCR_PXHD BIT(12) |
#define CAN_MCAN_CCCR_TEST BIT(7) |
#define CAN_MCAN_CCCR_TXP BIT(14) |
#define CAN_MCAN_CCCR_UTSU BIT(10) |
#define CAN_MCAN_CCCR_WMM BIT(11) |
#define CAN_MCAN_CREL 0x000 |
#define CAN_MCAN_CREL_DAY GENMASK(7, 0) |
#define CAN_MCAN_CREL_MON GENMASK(15, 8) |
#define CAN_MCAN_CREL_REL GENMASK(31, 28) |
#define CAN_MCAN_CREL_STEP GENMASK(27, 24) |
#define CAN_MCAN_CREL_SUBSTEP GENMASK(23, 20) |
#define CAN_MCAN_CREL_YEAR GENMASK(19, 16) |
#define CAN_MCAN_CUST 0x008 |
#define CAN_MCAN_CUST_CUST GENMASK(31, 0) |
#define CAN_MCAN_DATA_INITIALIZER | ( | _custom | ) |
Initializer for a can_mcan_data struct.
_custom | Pointer to custom driver frontend data structure |
#define CAN_MCAN_DBTP 0x00C |
#define CAN_MCAN_DBTP_DBRP GENMASK(20, 16) |
#define CAN_MCAN_DBTP_DSJW GENMASK(3, 0) |
#define CAN_MCAN_DBTP_DTSEG1 GENMASK(12, 8) |
#define CAN_MCAN_DBTP_DTSEG2 GENMASK(7, 4) |
#define CAN_MCAN_DBTP_TDC BIT(23) |
#define CAN_MCAN_DT_BUILD_ASSERT_MRAM_CFG | ( | node_id | ) |
Assert that the Message RAM configuration meets the Bosch M_CAN IP core restrictions.
node_id | node identifier |
#define CAN_MCAN_DT_CALLBACKS_DEFINE | ( | node_id, | |
_name | |||
) |
Define Bosch M_CAN TX and RX callbacks.
node_id | node identifier |
_name | callbacks variable name |
#define CAN_MCAN_DT_CONFIG_GET | ( | node_id, | |
_custom, | |||
_ops, | |||
_cbs | |||
) |
Static initializer for can_mcan_config
struct.
node_id | Devicetree node identifier |
_custom | Pointer to custom driver frontend configuration structure |
_ops | Pointer to front-end can_mcan_ops |
_cbs | Pointer to front-end can_mcan_callbacks |
#define CAN_MCAN_DT_CONFIG_INST_GET | ( | inst, | |
_custom, | |||
_ops, | |||
_cbs | |||
) | CAN_MCAN_DT_CONFIG_GET(DT_DRV_INST(inst), _custom, _ops, _cbs) |
Static initializer for can_mcan_config
struct from DT_DRV_COMPAT instance.
inst | DT_DRV_COMPAT instance number |
_custom | Pointer to custom driver frontend configuration structure |
_ops | Pointer to front-end can_mcan_ops |
_cbs | Pointer to front-end can_mcan_callbacks |
#define CAN_MCAN_DT_INST_BUILD_ASSERT_MRAM_CFG | ( | inst | ) | CAN_MCAN_DT_BUILD_ASSERT_MRAM_CFG(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_BUILD_ASSERT_MRAM_CFG(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_CALLBACKS_DEFINE | ( | inst, | |
_name | |||
) | CAN_MCAN_DT_CALLBACKS_DEFINE(DT_DRV_INST(inst), _name) |
Equivalent to CAN_MCAN_DT_CALLBACKS_DEFINE(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
_name | callbacks variable name |
#define CAN_MCAN_DT_INST_MCAN_ADDR | ( | inst | ) | CAN_MCAN_DT_MCAN_ADDR(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MCAN_ADDR(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_ADDR | ( | inst | ) | CAN_MCAN_DT_MRAM_ADDR(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_ADDR(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_DEFINE | ( | inst, | |
_name | |||
) | CAN_MCAN_DT_MRAM_DEFINE(DT_DRV_INST(inst), _name) |
Equivalent to CAN_MCAN_DT_MRAM_DEFINE(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
_name | buffer variable name |
#define CAN_MCAN_DT_INST_MRAM_ELEMENTS_SIZE | ( | inst | ) | CAN_MCAN_DT_MRAM_ELEMENTS_SIZE(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_ELEMENTS_SIZE(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_EXT_FILTER_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_EXT_FILTER_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_EXT_FILTER_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_EXT_FILTER_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_EXT_FILTER_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_EXT_FILTER_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_BUFFER_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_BUFFER_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_BUFFER_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_BUFFER_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_BUFFER_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_BUFFER_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_FIFO0_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_FIFO0_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_FIFO0_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_FIFO0_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_FIFO0_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_FIFO0_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_FIFO1_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_FIFO1_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_FIFO1_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_RX_FIFO1_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_RX_FIFO1_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_RX_FIFO1_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_SIZE | ( | inst | ) | CAN_MCAN_DT_MRAM_SIZE(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_SIZE(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_STD_FILTER_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_STD_FILTER_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_STD_FILTER_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_STD_FILTER_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_STD_FILTER_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_STD_FILTER_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_TX_BUFFER_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_TX_BUFFER_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_TX_BUFFER_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_TX_BUFFER_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_TX_BUFFER_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_TX_BUFFER_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_TX_EVENT_FIFO_ELEMENTS | ( | inst | ) | CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_ELEMENTS(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_ELEMENTS(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRAM_TX_EVENT_FIFO_OFFSET | ( | inst | ) | CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_OFFSET(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_OFFSET(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_INST_MRBA | ( | inst | ) | CAN_MCAN_DT_MRBA(DT_DRV_INST(inst)) |
Equivalent to CAN_MCAN_DT_MRBA(DT_DRV_INST(inst))
inst | DT_DRV_COMPAT instance number |
#define CAN_MCAN_DT_MCAN_ADDR | ( | node_id | ) |
Get the Bosch M_CAN register base address.
For devicetree nodes with just one register block, this macro returns the base address of that register block.
If a devicetree node has more than one register block, this macros returns the base address of the register block named "m_can".
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_ADDR | ( | node_id | ) | (mem_addr_t)(CAN_MCAN_DT_MRBA(node_id) + CAN_MCAN_DT_MRAM_OFFSET(node_id)) |
Get the Bosch M_CAN Message RAM address.
For devicetree nodes with dedicated Message RAM area defined via devicetree, this macro returns the address of the Message RAM, taking in the Message RAM offset into account.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_DEFINE | ( | node_id, | |
_name | |||
) |
Define a RAM buffer for Bosch M_CAN Message RAM.
For devicetree nodes without dedicated Message RAM area, this macro defines a suitable RAM buffer to hold the Message RAM elements. Since this buffer cannot be shared between multiple Bosch M_CAN instances, the Message RAM offset must be set to 0x0.
node_id | node identifier |
_name | buffer variable name |
#define CAN_MCAN_DT_MRAM_ELEMENTS_GET | ( | node_id | ) |
Get an array containing the number of elements in Bosch M_CAN Message RAM.
The order of the array entries is given by the CAN_MCAN_MRAM_CFG definitions.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_ELEMENTS_SIZE | ( | node_id | ) |
Get the total size of all Bosch M_CAN Message RAM elements.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_EXT_FILTER_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_EXT_FILTER) |
Get the number of extended (29-bit) filter elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_EXT_FILTER_OFFSET | ( | node_id | ) |
Get the base offset of extended (29-bit) filter elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_OFFSET | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_OFFSET) |
Get the Bosch M_CAN Message RAM offset.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_OFFSETS_GET | ( | node_id | ) |
Get an array containing the base offsets for element in Bosch M_CAN Message RAM.
The order of the array entries is given by the CAN_MCAN_MRAM_CFG definitions.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_BUFFER_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_RX_BUFFER) |
Get the number of Rx Buffer elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_BUFFER_OFFSET | ( | node_id | ) |
Get the base offset of Rx Buffer elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_FIFO0_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_RX_FIFO0) |
Get the number of Rx FIFO 0 elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_FIFO0_OFFSET | ( | node_id | ) |
Get the base offset of Rx FIFO 0 elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_FIFO1_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_RX_FIFO1) |
Get the number of Rx FIFO 1 elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_RX_FIFO1_OFFSET | ( | node_id | ) |
Get the base offset of Rx FIFO 1 elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_SIZE | ( | node_id | ) | (mem_addr_t)(DT_REG_SIZE_BY_NAME(node_id, message_ram) - CAN_MCAN_DT_MRAM_OFFSET(node_id)) |
Get the Bosch M_CAN Message RAM size.
For devicetree nodes with dedicated Message RAM area defined via devicetree, this macro returns the size of the Message RAM, taking in the Message RAM offset into account.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_STD_FILTER_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_STD_FILTER) |
Get the number of standard (11-bit) filter elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_STD_FILTER_OFFSET | ( | node_id | ) | (0U) |
Get the base offset of standard (11-bit) filter elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_TX_BUFFER_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_TX_BUFFER) |
Get the number of Tx Buffer elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_TX_BUFFER_OFFSET | ( | node_id | ) |
Get the base offset of Tx Buffer elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_ELEMENTS | ( | node_id | ) | DT_PROP_BY_IDX(node_id, bosch_mram_cfg, CAN_MCAN_MRAM_CFG_TX_EVENT_FIFO) |
Get the number of Tx Event FIFO elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRAM_TX_EVENT_FIFO_OFFSET | ( | node_id | ) |
Get the base offset of Tx Event FIFO elements in Bosch M_CAN Message RAM.
node_id | node identifier |
#define CAN_MCAN_DT_MRBA | ( | node_id | ) | (mem_addr_t)DT_REG_ADDR_BY_NAME(node_id, message_ram) |
Get the Bosch M_CAN Message RAM base address.
For devicetree nodes with dedicated Message RAM area defined via devicetree, this macro returns the base address of the Message RAM.
node_id | node identifier |
#define CAN_MCAN_ECR 0x040 |
#define CAN_MCAN_ECR_CEL GENMASK(23, 16) |
#define CAN_MCAN_ECR_REC GENMASK(14, 8) |
#define CAN_MCAN_ECR_RP BIT(15) |
#define CAN_MCAN_ECR_TEC GENMASK(7, 0) |
#define CAN_MCAN_EFT_CLASSIC 0x2 |
#define CAN_MCAN_EFT_DUAL 0x1 |
#define CAN_MCAN_EFT_RANGE 0x3 |
#define CAN_MCAN_EFT_RANGE_XIDAM 0x0 |
#define CAN_MCAN_ENDN 0x004 |
#define CAN_MCAN_ENDN_ETV GENMASK(31, 0) |
#define CAN_MCAN_GFC 0x080 |
#define CAN_MCAN_GFC_ANFE GENMASK(3, 2) |
#define CAN_MCAN_GFC_ANFS GENMASK(5, 4) |
#define CAN_MCAN_GFC_RRFE BIT(0) |
#define CAN_MCAN_GFC_RRFS BIT(1) |
#define CAN_MCAN_HPMS 0x094 |
#define CAN_MCAN_HPMS_BIDX GENMASK(5, 0) |
#define CAN_MCAN_HPMS_FIDX GENMASK(14, 8) |
#define CAN_MCAN_HPMS_FLST BIT(15) |
#define CAN_MCAN_HPMS_MSI GENMASK(7, 6) |
#define CAN_MCAN_IE 0x054 |
#define CAN_MCAN_IE_ARAE BIT(29) |
#define CAN_MCAN_IE_BECE BIT(20) |
#define CAN_MCAN_IE_BEUE BIT(21) |
#define CAN_MCAN_IE_BOE BIT(25) |
#define CAN_MCAN_IE_DRXE BIT(19) |
#define CAN_MCAN_IE_ELOE BIT(22) |
#define CAN_MCAN_IE_EPE BIT(23) |
#define CAN_MCAN_IE_EWE BIT(24) |
#define CAN_MCAN_IE_HPME BIT(8) |
#define CAN_MCAN_IE_MRAFE BIT(17) |
#define CAN_MCAN_IE_PEAE BIT(27) |
#define CAN_MCAN_IE_PEDE BIT(28) |
#define CAN_MCAN_IE_RF0FE BIT(2) |
#define CAN_MCAN_IE_RF0LE BIT(3) |
#define CAN_MCAN_IE_RF0NE BIT(0) |
#define CAN_MCAN_IE_RF0WE BIT(1) |
#define CAN_MCAN_IE_RF1FE BIT(6) |
#define CAN_MCAN_IE_RF1LE BIT(7) |
#define CAN_MCAN_IE_RF1NE BIT(4) |
#define CAN_MCAN_IE_RF1WE BIT(5) |
#define CAN_MCAN_IE_TCE BIT(9) |
#define CAN_MCAN_IE_TCFE BIT(10) |
#define CAN_MCAN_IE_TEFFE BIT(14) |
#define CAN_MCAN_IE_TEFLE BIT(15) |
#define CAN_MCAN_IE_TEFNE BIT(12) |
#define CAN_MCAN_IE_TEFWE BIT(13) |
#define CAN_MCAN_IE_TFEE BIT(11) |
#define CAN_MCAN_IE_TOOE BIT(18) |
#define CAN_MCAN_IE_TSWE BIT(16) |
#define CAN_MCAN_IE_WDIE BIT(26) |
#define CAN_MCAN_ILE 0x05C |
#define CAN_MCAN_ILE_EINT0 BIT(0) |
#define CAN_MCAN_ILE_EINT1 BIT(1) |
#define CAN_MCAN_ILS 0x058 |
#define CAN_MCAN_ILS_ARAL BIT(29) |
#define CAN_MCAN_ILS_BECL BIT(20) |
#define CAN_MCAN_ILS_BEUL BIT(21) |
#define CAN_MCAN_ILS_BOL BIT(25) |
#define CAN_MCAN_ILS_DRXL BIT(19) |
#define CAN_MCAN_ILS_ELOL BIT(22) |
#define CAN_MCAN_ILS_EPL BIT(23) |
#define CAN_MCAN_ILS_EWL BIT(24) |
#define CAN_MCAN_ILS_HPML BIT(8) |
#define CAN_MCAN_ILS_MRAFL BIT(17) |
#define CAN_MCAN_ILS_PEAL BIT(27) |
#define CAN_MCAN_ILS_PEDL BIT(28) |
#define CAN_MCAN_ILS_RF0FL BIT(2) |
#define CAN_MCAN_ILS_RF0LL BIT(3) |
#define CAN_MCAN_ILS_RF0NL BIT(0) |
#define CAN_MCAN_ILS_RF0WL BIT(1) |
#define CAN_MCAN_ILS_RF1FL BIT(6) |
#define CAN_MCAN_ILS_RF1LL BIT(7) |
#define CAN_MCAN_ILS_RF1NL BIT(4) |
#define CAN_MCAN_ILS_RF1WL BIT(5) |
#define CAN_MCAN_ILS_TCFL BIT(10) |
#define CAN_MCAN_ILS_TCL BIT(9) |
#define CAN_MCAN_ILS_TEFFL BIT(14) |
#define CAN_MCAN_ILS_TEFLL BIT(15) |
#define CAN_MCAN_ILS_TEFNL BIT(12) |
#define CAN_MCAN_ILS_TEFWL BIT(13) |
#define CAN_MCAN_ILS_TFEL BIT(11) |
#define CAN_MCAN_ILS_TOOL BIT(18) |
#define CAN_MCAN_ILS_TSWL BIT(16) |
#define CAN_MCAN_ILS_WDIL BIT(26) |
#define CAN_MCAN_IR 0x050 |
#define CAN_MCAN_IR_ARA BIT(29) |
#define CAN_MCAN_IR_BEC BIT(20) |
#define CAN_MCAN_IR_BEU BIT(21) |
#define CAN_MCAN_IR_BO BIT(25) |
#define CAN_MCAN_IR_DRX BIT(19) |
#define CAN_MCAN_IR_ELO BIT(22) |
#define CAN_MCAN_IR_EP BIT(23) |
#define CAN_MCAN_IR_EW BIT(24) |
#define CAN_MCAN_IR_HPM BIT(8) |
#define CAN_MCAN_IR_MRAF BIT(17) |
#define CAN_MCAN_IR_PEA BIT(27) |
#define CAN_MCAN_IR_PED BIT(28) |
#define CAN_MCAN_IR_RF0F BIT(2) |
#define CAN_MCAN_IR_RF0L BIT(3) |
#define CAN_MCAN_IR_RF0N BIT(0) |
#define CAN_MCAN_IR_RF0W BIT(1) |
#define CAN_MCAN_IR_RF1F BIT(6) |
#define CAN_MCAN_IR_RF1L BIT(7) |
#define CAN_MCAN_IR_RF1N BIT(4) |
#define CAN_MCAN_IR_RF1W BIT(5) |
#define CAN_MCAN_IR_TC BIT(9) |
#define CAN_MCAN_IR_TCF BIT(10) |
#define CAN_MCAN_IR_TEFF BIT(14) |
#define CAN_MCAN_IR_TEFL BIT(15) |
#define CAN_MCAN_IR_TEFN BIT(12) |
#define CAN_MCAN_IR_TEFW BIT(13) |
#define CAN_MCAN_IR_TFE BIT(11) |
#define CAN_MCAN_IR_TOO BIT(18) |
#define CAN_MCAN_IR_TSW BIT(16) |
#define CAN_MCAN_IR_WDI BIT(26) |
#define CAN_MCAN_MRAM_CFG_EXT_FILTER 2 |
ext-filter-elements cell index
#define CAN_MCAN_MRAM_CFG_NUM_CELLS 8 |
Total number of cells in bosch,mram-cfg property.
#define CAN_MCAN_MRAM_CFG_OFFSET 0 |
offset cell index
#define CAN_MCAN_MRAM_CFG_RX_BUFFER 5 |
rx-buffer-elements cell index
#define CAN_MCAN_MRAM_CFG_RX_FIFO0 3 |
rx-fifo0-elements cell index
#define CAN_MCAN_MRAM_CFG_RX_FIFO1 4 |
rx-fifo1-elements cell index
#define CAN_MCAN_MRAM_CFG_STD_FILTER 1 |
std-filter-elements cell index
#define CAN_MCAN_MRAM_CFG_TX_BUFFER 7 |
tx-buffer-elements cell index
#define CAN_MCAN_MRAM_CFG_TX_EVENT_FIFO 6 |
tx-event-fifo-elements cell index
#define CAN_MCAN_NBTP 0x01C |
#define CAN_MCAN_NBTP_NBRP GENMASK(24, 16) |
#define CAN_MCAN_NBTP_NSJW GENMASK(31, 25) |
#define CAN_MCAN_NBTP_NTSEG1 GENMASK(15, 8) |
#define CAN_MCAN_NBTP_NTSEG2 GENMASK(6, 0) |
#define CAN_MCAN_NDAT1 0x098 |
#define CAN_MCAN_NDAT1_ND GENMASK(31, 0) |
#define CAN_MCAN_NDAT2 0x09C |
#define CAN_MCAN_NDAT2_ND GENMASK(31, 0) |
#define CAN_MCAN_PSR 0x044 |
#define CAN_MCAN_PSR_ACT GENMASK(4, 3) |
#define CAN_MCAN_PSR_BO BIT(7) |
#define CAN_MCAN_PSR_DLEC GENMASK(10, 8) |
#define CAN_MCAN_PSR_EP BIT(5) |
#define CAN_MCAN_PSR_EW BIT(6) |
#define CAN_MCAN_PSR_LEC GENMASK(2, 0) |
#define CAN_MCAN_PSR_PXE BIT(14) |
#define CAN_MCAN_PSR_RBRS BIT(12) |
#define CAN_MCAN_PSR_RESI BIT(11) |
#define CAN_MCAN_PSR_RFDF BIT(13) |
#define CAN_MCAN_PSR_TDCV GENMASK(22, 16) |
#define CAN_MCAN_RWD 0x014 |
#define CAN_MCAN_RWD_WDC GENMASK(7, 0) |
#define CAN_MCAN_RWD_WDV GENMASK(15, 8) |
#define CAN_MCAN_RXBC 0x0AC |
#define CAN_MCAN_RXBC_RBSA GENMASK(15, 2) |
#define CAN_MCAN_RXESC 0x0BC |
#define CAN_MCAN_RXESC_F0DS GENMASK(2, 0) |
#define CAN_MCAN_RXESC_F1DS GENMASK(6, 4) |
#define CAN_MCAN_RXESC_RBDS GENMASK(10, 8) |
#define CAN_MCAN_RXF0A 0x0A8 |
#define CAN_MCAN_RXF0A_F0AI GENMASK(5, 0) |
#define CAN_MCAN_RXF0C 0x0A0 |
#define CAN_MCAN_RXF0C_F0OM BIT(31) |
#define CAN_MCAN_RXF0C_F0S GENMASK(22, 16) |
#define CAN_MCAN_RXF0C_F0SA GENMASK(15, 2) |
#define CAN_MCAN_RXF0C_F0WM GENMASK(30, 24) |
#define CAN_MCAN_RXF0S 0x0A4 |
#define CAN_MCAN_RXF0S_F0F BIT(24) |
#define CAN_MCAN_RXF0S_F0FL GENMASK(6, 0) |
#define CAN_MCAN_RXF0S_F0GI GENMASK(13, 8) |
#define CAN_MCAN_RXF0S_F0PI GENMASK(21, 16) |
#define CAN_MCAN_RXF0S_RF0L BIT(25) |
#define CAN_MCAN_RXF1A 0x0B8 |
#define CAN_MCAN_RXF1A_F1AI GENMASK(5, 0) |
#define CAN_MCAN_RXF1C 0x0B0 |
#define CAN_MCAN_RXF1C_F1OM BIT(31) |
#define CAN_MCAN_RXF1C_F1S GENMASK(22, 16) |
#define CAN_MCAN_RXF1C_F1SA GENMASK(15, 2) |
#define CAN_MCAN_RXF1C_F1WM GENMASK(30, 24) |
#define CAN_MCAN_RXF1S 0x0B4 |
#define CAN_MCAN_RXF1S_F1F BIT(24) |
#define CAN_MCAN_RXF1S_F1FL GENMASK(6, 0) |
#define CAN_MCAN_RXF1S_F1GI GENMASK(13, 8) |
#define CAN_MCAN_RXF1S_F1PI GENMASK(21, 16) |
#define CAN_MCAN_RXF1S_RF1L BIT(25) |
#define CAN_MCAN_SFT_CLASSIC 0x2 |
#define CAN_MCAN_SFT_DISABLED 0x3 |
#define CAN_MCAN_SFT_DUAL 0x1 |
#define CAN_MCAN_SFT_RANGE 0x0 |
#define CAN_MCAN_SIDFC 0x084 |
#define CAN_MCAN_SIDFC_FLSSA GENMASK(15, 2) |
#define CAN_MCAN_SIDFC_LSS GENMASK(23, 16) |
#define CAN_MCAN_TDCR 0x048 |
#define CAN_MCAN_TDCR_TDCF GENMASK(6, 0) |
#define CAN_MCAN_TDCR_TDCO GENMASK(14, 8) |
#define CAN_MCAN_TEST 0x010 |
#define CAN_MCAN_TEST_LBCK BIT(4) |
#define CAN_MCAN_TEST_PVAL BIT(13) |
#define CAN_MCAN_TEST_RX BIT(7) |
#define CAN_MCAN_TEST_SVAL BIT(21) |
#define CAN_MCAN_TEST_TX GENMASK(6, 5) |
#define CAN_MCAN_TEST_TXBNP GENMASK(12, 8) |
#define CAN_MCAN_TEST_TXBNS GENMASK(20, 16) |
#define CAN_MCAN_TIMING_DATA_MAX_INITIALIZER |
Bosch M_CAN specific static initializer for a maximum data phase can_timing
struct.
#define CAN_MCAN_TIMING_DATA_MIN_INITIALIZER |
Bosch M_CAN specific static initializer for a minimum data phase can_timing
struct.
#define CAN_MCAN_TIMING_MAX_INITIALIZER |
Bosch M_CAN specific static initializer for a maximum nominal can_timing
struct.
#define CAN_MCAN_TIMING_MIN_INITIALIZER |
Bosch M_CAN specific static initializer for a minimum nominal can_timing
struct.
#define CAN_MCAN_TOCC 0x028 |
#define CAN_MCAN_TOCC_ETOC BIT(1) |
#define CAN_MCAN_TOCC_TOP GENMASK(31, 16) |
#define CAN_MCAN_TOCC_TOS GENMASK(2, 1) |
#define CAN_MCAN_TOCV 0x02C |
#define CAN_MCAN_TOCV_TOC GENMASK(15, 0) |
#define CAN_MCAN_TSCC 0x020 |
#define CAN_MCAN_TSCC_TCP GENMASK(19, 16) |
#define CAN_MCAN_TSCC_TSS GENMASK(1, 0) |
#define CAN_MCAN_TSCV 0x024 |
#define CAN_MCAN_TSCV_TSC GENMASK(15, 0) |
#define CAN_MCAN_TXBAR 0x0D0 |
#define CAN_MCAN_TXBAR_AR GENMASK(31, 0) |
#define CAN_MCAN_TXBC 0x0C0 |
#define CAN_MCAN_TXBC_NDTB GENMASK(21, 16) |
#define CAN_MCAN_TXBC_TBSA GENMASK(15, 2) |
#define CAN_MCAN_TXBC_TFQM BIT(30) |
#define CAN_MCAN_TXBC_TFQS GENMASK(29, 24) |
#define CAN_MCAN_TXBCF 0x0DC |
#define CAN_MCAN_TXBCF_CF GENMASK(31, 0) |
#define CAN_MCAN_TXBCIE 0x0E4 |
#define CAN_MCAN_TXBCIE_CFIE GENMASK(31, 0) |
#define CAN_MCAN_TXBCR 0x0D4 |
#define CAN_MCAN_TXBCR_CR GENMASK(31, 0) |
#define CAN_MCAN_TXBRP 0x0CC |
#define CAN_MCAN_TXBRP_TRP GENMASK(31, 0) |
#define CAN_MCAN_TXBTIE 0x0E0 |
#define CAN_MCAN_TXBTIE_TIE GENMASK(31, 0) |
#define CAN_MCAN_TXBTO 0x0D8 |
#define CAN_MCAN_TXBTO_TO GENMASK(31, 0) |
#define CAN_MCAN_TXEFA 0x0F8 |
#define CAN_MCAN_TXEFA_EFAI GENMASK(4, 0) |
#define CAN_MCAN_TXEFC 0x0F0 |
#define CAN_MCAN_TXEFC_EFS GENMASK(21, 16) |
#define CAN_MCAN_TXEFC_EFSA GENMASK(15, 2) |
#define CAN_MCAN_TXEFC_EFWM GENMASK(29, 24) |
#define CAN_MCAN_TXEFS 0x0F4 |
#define CAN_MCAN_TXEFS_EFF BIT(24) |
#define CAN_MCAN_TXEFS_EFFL GENMASK(5, 0) |
#define CAN_MCAN_TXEFS_EFGI GENMASK(12, 8) |
#define CAN_MCAN_TXEFS_EFPI GENMASK(20, 16) |
#define CAN_MCAN_TXEFS_TEFL BIT(25) |
#define CAN_MCAN_TXESC 0x0C8 |
#define CAN_MCAN_TXESC_TBDS GENMASK(2, 0) |
#define CAN_MCAN_TXFQS 0x0C4 |
#define CAN_MCAN_TXFQS_TFFL GENMASK(5, 0) |
#define CAN_MCAN_TXFQS_TFGI GENMASK(12, 8) |
#define CAN_MCAN_TXFQS_TFQF BIT(21) |
#define CAN_MCAN_TXFQS_TFQPI GENMASK(20, 16) |
#define CAN_MCAN_XFEC_DISABLE 0x0 |
#define CAN_MCAN_XFEC_FIFO0 0x1 |
#define CAN_MCAN_XFEC_FIFO1 0x2 |
#define CAN_MCAN_XFEC_PRIO 0x4 |
#define CAN_MCAN_XFEC_PRIO_FIFO0 0x5 |
#define CAN_MCAN_XFEC_PRIO_FIFO1 0x7 |
#define CAN_MCAN_XFEC_REJECT 0x3 |
#define CAN_MCAN_XIDAM 0x090 |
#define CAN_MCAN_XIDAM_EIDM GENMASK(28, 0) |
#define CAN_MCAN_XIDFC 0x088 |
#define CAN_MCAN_XIDFC_FLESA GENMASK(15, 2) |
#define CAN_MCAN_XIDFC_LSS GENMASK(22, 16) |
Bosch M_CAN driver front-end callback for clearing Message RAM.
Clear Message RAM by writing 0 to all words.
dev | Pointer to the device structure for the driver instance. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
len | Number of bytes to clear. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
typedef int(* can_mcan_read_mram_t) (const struct device *dev, uint16_t offset, void *dst, size_t len) |
Bosch M_CAN driver front-end callback for reading from Message RAM.
dev | Pointer to the device structure for the driver instance. | |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. | |
[out] | dst | Destination for the data read. The destination address must be 32-bit aligned. |
len | Number of bytes to read. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Bosch M_CAN driver front-end callback for reading a register value.
dev | Pointer to the device structure for the driver instance. | |
reg | Register offset | |
[out] | val | Register value |
0 | If successful. |
-ENOTSUP | Register not supported. |
-EIO | General input/output error. |
typedef int(* can_mcan_write_mram_t) (const struct device *dev, uint16_t offset, const void *src, size_t len) |
Bosch M_CAN driver front-end callback for writing to Message RAM.
dev | Pointer to the device structure for the driver instance. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
src | Source for the data to be written. The source address must be 32-bit aligned. |
len | Number of bytes to write. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Bosch M_CAN driver front-end callback for writing a register value.
dev | Pointer to the device structure for the driver instance. |
reg | Register offset |
val | Register value |
0 | If successful. |
-ENOTSUP | Register not supported. |
-EIO | General input/output error. |
enum can_mcan_psr_lec |
int can_mcan_add_rx_filter | ( | const struct device * | dev, |
can_rx_callback_t | callback, | ||
void * | user_data, | ||
const struct can_filter * | filter | ||
) |
Bosch M_CAN driver callback API upon adding an RX filter See can_add_rx_callback() for argument description.
|
inlinestatic |
Clear Bosch M_CAN Message RAM.
Clear Message RAM by writing 0 to all words.
dev | Pointer to the device structure for the driver instance. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
len | Number of bytes to clear. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Configure Bosch M_MCAN Message RAM start addresses.
Bosch M_CAN driver front-end callback helper function for configuring the start addresses of the Bosch M_CAN Rx FIFO0 (RXFOC), Rx FIFO1 (RXF1C), Rx Buffer (RXBCC), Tx Buffer (TXBC), and Tx Event FIFO (TXEFC) in Message RAM.
The start addresses (containing bits 15:2 since Bosch M_CAN message RAM is accessed as 32 bit words) are calculated relative to the provided Message RAM Base Address (mrba).
Some Bosch M_CAN implementations use a fixed Message RAM configuration, other use a fixed memory area and relative addressing, others again have custom registers for configuring the Message RAM. It is the responsibility of the front-end driver to call this function during driver initialization as needed.
dev | Pointer to the device structure for the driver instance. |
mrba | Message RAM Base Address. |
mram | Message RAM Address. |
0 | If successful. |
-EIO | General input/output error. |
void can_mcan_enable_configuration_change | ( | const struct device * | dev | ) |
Enable Bosch M_CAN configuration change.
dev | Pointer to the device structure for the driver instance. |
int can_mcan_get_capabilities | ( | const struct device * | dev, |
can_mode_t * | cap | ||
) |
Bosch M_CAN driver callback API upon getting CAN controller capabilities See can_get_capabilities() for argument description.
Bosch M_CAN driver callback API upon getting the maximum supported bitrate See can_get_max_bitrate() for argument description.
int can_mcan_get_state | ( | const struct device * | dev, |
enum can_state * | state, | ||
struct can_bus_err_cnt * | err_cnt | ||
) |
Bosch M_CAN driver callback API upon getting the CAN controller state See can_get_state() for argument description.
int can_mcan_init | ( | const struct device * | dev | ) |
Bosch M_CAN driver initialization callback.
dev | Pointer to the device structure for the driver instance. |
void can_mcan_line_0_isr | ( | const struct device * | dev | ) |
Bosch M_CAN driver m_can_int0 IRQ handler.
dev | Pointer to the device structure for the driver instance. |
void can_mcan_line_1_isr | ( | const struct device * | dev | ) |
Bosch M_CAN driver m_can_int1 IRQ handler.
dev | Pointer to the device structure for the driver instance. |
|
inlinestatic |
Read from Bosch M_CAN Message RAM.
dev | Pointer to the device structure for the driver instance. | |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. | |
[out] | dst | Destination for the data read. |
len | Number of bytes to read. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Read a Bosch M_CAN register.
dev | Pointer to the device structure for the driver instance. | |
reg | Register offset | |
[out] | val | Register value |
0 | If successful. |
-ENOTSUP | Register not supported. |
-EIO | General input/output error. |
int can_mcan_recover | ( | const struct device * | dev, |
k_timeout_t | timeout | ||
) |
Bosch M_CAN driver callback API upon recovering the CAN bus See can_recover() for argument description.
void can_mcan_remove_rx_filter | ( | const struct device * | dev, |
int | filter_id | ||
) |
Bosch M_CAN driver callback API upon removing an RX filter See can_remove_rx_filter() for argument description.
int can_mcan_send | ( | const struct device * | dev, |
const struct can_frame * | frame, | ||
k_timeout_t | timeout, | ||
can_tx_callback_t | callback, | ||
void * | user_data | ||
) |
int can_mcan_set_mode | ( | const struct device * | dev, |
can_mode_t | mode | ||
) |
Bosch M_CAN driver callback API upon setting CAN controller mode See can_set_mode() for argument description.
void can_mcan_set_state_change_callback | ( | const struct device * | dev, |
can_state_change_callback_t | callback, | ||
void * | user_data | ||
) |
Bosch M_CAN driver callback API upon setting a state change callback See can_set_state_change_callback() for argument description.
int can_mcan_set_timing | ( | const struct device * | dev, |
const struct can_timing * | timing | ||
) |
Bosch M_CAN driver callback API upon setting CAN bus timing See can_set_timing() for argument description.
int can_mcan_set_timing_data | ( | const struct device * | dev, |
const struct can_timing * | timing_data | ||
) |
Bosch M_CAN driver callback API upon setting CAN bus data phase timing See can_set_timing_data() for argument description.
int can_mcan_start | ( | const struct device * | dev | ) |
Bosch M_CAN driver callback API upon starting CAN controller See can_start() for argument description.
int can_mcan_stop | ( | const struct device * | dev | ) |
Bosch M_CAN driver callback API upon stopping CAN controller See can_stop() for argument description.
|
inlinestatic |
Bosch M_CAN driver front-end callback helper for clearing memory mapped Message RAM.
Clear Message RAM by writing 0 to all words.
base | Base address of the Message RAM for the given Bosch M_CAN instance. The base address must be 32-bit aligned. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
len | Number of bytes to clear. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
|
inlinestatic |
Bosch M_CAN driver front-end callback helper for reading from memory mapped Message RAM.
base | Base address of the Message RAM for the given Bosch M_CAN instance. The base address must be 32-bit aligned. | |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. | |
[out] | dst | Destination for the data read. The destination address must be 32-bit aligned. |
len | Number of bytes to read. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Bosch M_CAN driver front-end callback helper for reading a memory mapped register.
base | Register base address | |
reg | Register offset | |
[out] | val | Register value |
0 | Memory mapped register read always succeeds. |
|
inlinestatic |
Bosch M_CAN driver front-end callback helper for writing to memory mapped Message RAM.
base | Base address of the Message RAM for the given Bosch M_CAN instance. The base address must be 32-bit aligned. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
src | Source for the data to be written. The source address must be 32-bit aligned. |
len | Number of bytes to write. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Bosch M_CAN driver front-end callback helper for writing a memory mapped register.
base | Register base address |
reg | Register offset |
val | Register value |
0 | Memory mapped register write always succeeds. |
|
inlinestatic |
Write to Bosch M_CAN Message RAM.
dev | Pointer to the device structure for the driver instance. |
offset | Offset from the start of the Message RAM for the given Bosch M_CAN instance. The offset must be 32-bit aligned. |
src | Source for the data to be written |
len | Number of bytes to write. Must be a multiple of 4. |
0 | If successful. |
-EIO | General input/output error. |
Write a Bosch M_CAN register.
dev | Pointer to the device structure for the driver instance. |
reg | Register offset |
val | Register value |
0 | If successful. |
-ENOTSUP | Register not supported. |
-EIO | General input/output error. |