12#ifndef ZEPHYR_INCLUDE_DRIVERS_CAN_CAN_SJA1000_H_ 
   13#define ZEPHYR_INCLUDE_DRIVERS_CAN_CAN_SJA1000_H_ 
   22#define CAN_SJA1000_OCR_OCMODE_MASK    GENMASK(1, 0) 
   23#define CAN_SJA1000_OCR_OCPOL0         BIT(2) 
   24#define CAN_SJA1000_OCR_OCTN0          BIT(3) 
   25#define CAN_SJA1000_OCR_OCTP0          BIT(4) 
   26#define CAN_SJA1000_OCR_OCPOL1         BIT(5) 
   27#define CAN_SJA1000_OCR_OCTN1          BIT(6) 
   28#define CAN_SJA1000_OCR_OCTP1          BIT(7) 
   30#define CAN_SJA1000_OCR_OCMODE_BIPHASE FIELD_PREP(CAN_SJA1000_OCR_OCMODE_MASK, 0U) 
   31#define CAN_SJA1000_OCR_OCMODE_TEST    FIELD_PREP(CAN_SJA1000_OCR_OCMODE_MASK, 1U) 
   32#define CAN_SJA1000_OCR_OCMODE_NORMAL  FIELD_PREP(CAN_SJA1000_OCR_OCMODE_MASK, 2U) 
   33#define CAN_SJA1000_OCR_OCMODE_CLOCK   FIELD_PREP(CAN_SJA1000_OCR_OCMODE_MASK, 3U) 
   42#define CAN_SJA1000_CDR_CD_MASK        GENMASK(2, 0) 
   43#define CAN_SJA1000_CDR_CLOCK_OFF      BIT(3) 
   44#define CAN_SJA1000_CDR_RXINTEN        BIT(5) 
   45#define CAN_SJA1000_CDR_CBP            BIT(6) 
   46#define CAN_SJA1000_CDR_CAN_MODE       BIT(7) 
   48#define CAN_SJA1000_CDR_CD_DIV1        FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 7U) 
   49#define CAN_SJA1000_CDR_CD_DIV2        FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 0U) 
   50#define CAN_SJA1000_CDR_CD_DIV4        FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 1U) 
   51#define CAN_SJA1000_CDR_CD_DIV6        FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 2U) 
   52#define CAN_SJA1000_CDR_CD_DIV8        FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 3U) 
   53#define CAN_SJA1000_CDR_CD_DIV10       FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 4U) 
   54#define CAN_SJA1000_CDR_CD_DIV12       FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 5U) 
   55#define CAN_SJA1000_CDR_CD_DIV14       FIELD_PREP(CAN_SJA1000_CDR_CD_MASK, 6U) 
   62#define CAN_SJA1000_TIMING_MIN_INITIALIZER                              \ 
   74#define CAN_SJA1000_TIMING_MAX_INITIALIZER                              \ 
  129#define CAN_SJA1000_DT_CONFIG_GET(node_id, _custom, _read_reg, _write_reg, _ocr, _cdr)             \ 
  131                .read_reg = _read_reg, .write_reg = _write_reg,                                    \ 
  132                .bitrate = DT_PROP(node_id, bus_speed), .sjw = DT_PROP(node_id, sjw),              \ 
  133                .phase_seg1 = DT_PROP_OR(node_id, phase_seg1, 0),                                  \ 
  134                .phase_seg2 = DT_PROP_OR(node_id, phase_seg2, 0),                                  \ 
  135                .sample_point = DT_PROP_OR(node_id, sample_point, 0),                              \ 
  136                .max_bitrate = DT_CAN_TRANSCEIVER_MAX_BITRATE(node_id, 1000000),                   \ 
  137                .phy = DEVICE_DT_GET_OR_NULL(DT_PHANDLE(node_id, phys)),                           \ 
  138                .ocr = _ocr, .cdr = _cdr, .custom = _custom,                                       \ 
  152#define CAN_SJA1000_DT_CONFIG_INST_GET(inst, _custom, _read_reg, _write_reg, _ocr, _cdr)           \ 
  153        CAN_SJA1000_DT_CONFIG_GET(DT_DRV_INST(inst), _custom, _read_reg, _write_reg, _ocr, _cdr) 
  187#define CAN_SJA1000_DATA_INITIALIZER(_custom)                                                      \ 
  242#ifndef CONFIG_CAN_AUTO_BUS_OFF_RECOVERY 
int can_sja1000_get_max_filters(const struct device *dev, bool ide)
SJA1000 callback API upon getting the maximum number of concurrent CAN RX filters See can_get_max_fil...
 
void can_sja1000_set_state_change_callback(const struct device *dev, can_state_change_callback_t callback, void *user_data)
SJA1000 callback API upon setting a state change callback See can_set_state_change_callback() for arg...
 
int can_sja1000_get_max_bitrate(const struct device *dev, uint32_t *max_bitrate)
SJA1000 callback API upon getting the maximum supported bitrate See can_get_max_bitrate() for argumen...
 
int can_sja1000_init(const struct device *dev)
SJA1000 driver initialization callback.
 
void can_sja1000_remove_rx_filter(const struct device *dev, int filter_id)
SJA1000 callback API upon removing an RX filter See can_remove_rx_filter() for argument description.
 
int can_sja1000_add_rx_filter(const struct device *dev, can_rx_callback_t callback, void *user_data, const struct can_filter *filter)
SJA1000 callback API upon adding an RX filter See can_add_rx_callback() for argument description.
 
uint8_t(* can_sja1000_read_reg_t)(const struct device *dev, uint8_t reg)
SJA1000 driver front-end callback for reading a register value.
Definition: can_sja1000.h:99
 
void can_sja1000_isr(const struct device *dev)
SJA1000 IRQ handler callback.
 
void(* can_sja1000_write_reg_t)(const struct device *dev, uint8_t reg, uint8_t val)
SJA1000 driver front-end callback for writing a register value.
Definition: can_sja1000.h:90
 
int can_sja1000_get_capabilities(const struct device *dev, can_mode_t *cap)
SJA1000 callback API upon getting CAN controller capabilities See can_get_capabilities() for argument...
 
int can_sja1000_set_timing(const struct device *dev, const struct can_timing *timing)
SJA1000 callback API upon setting CAN bus timing See can_set_timing() for argument description.
 
int can_sja1000_stop(const struct device *dev)
SJA1000 callback API upon stopping CAN controller See can_stop() for argument description.
 
int can_sja1000_get_state(const struct device *dev, enum can_state *state, struct can_bus_err_cnt *err_cnt)
SJA1000 callback API upon getting the CAN controller state See can_get_state() for argument descripti...
 
int can_sja1000_send(const struct device *dev, const struct can_frame *frame, k_timeout_t timeout, can_tx_callback_t callback, void *user_data)
SJA1000 callback API upon sending a CAN frame See can_send() for argument description.
 
int can_sja1000_recover(const struct device *dev, k_timeout_t timeout)
SJA1000 callback API upon recovering the CAN bus See can_recover() for argument description.
 
int can_sja1000_start(const struct device *dev)
SJA1000 callback API upon starting CAN controller See can_start() for argument description.
 
int can_sja1000_set_mode(const struct device *dev, can_mode_t mode)
SJA1000 callback API upon setting CAN controller mode See can_set_mode() for argument description.
 
ZTEST_BMEM int timeout
Definition: main.c:31
 
#define ATOMIC_DEFINE(name, num_bits)
Define an array of atomic variables.
Definition: atomic.h:114
 
void(* can_state_change_callback_t)(const struct device *dev, enum can_state state, struct can_bus_err_cnt err_cnt, void *user_data)
Defines the state change callback handler function signature.
Definition: can.h:315
 
uint32_t can_mode_t
Provides a type to hold CAN controller configuration flags.
Definition: can.h:111
 
void(* can_rx_callback_t)(const struct device *dev, struct can_frame *frame, void *user_data)
Defines the application callback handler function signature for receiving.
Definition: can.h:304
 
void(* can_tx_callback_t)(const struct device *dev, int error, void *user_data)
Defines the application callback handler function signature.
Definition: can.h:295
 
can_state
Defines the state of the CAN controller.
Definition: can.h:116
 
state
Definition: parser_state.h:29
 
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
CAN controller error counters.
Definition: can.h:230
 
CAN filter structure.
Definition: can.h:213
 
CAN frame structure.
Definition: can.h:158
 
SJA1000 driver internal configuration structure.
Definition: can_sja1000.h:104
 
uint32_t sample_point
Definition: can_sja1000.h:108
 
const void * custom
Definition: can_sja1000.h:116
 
uint32_t phase_seg1
Definition: can_sja1000.h:110
 
uint32_t bitrate
Definition: can_sja1000.h:107
 
uint8_t cdr
Definition: can_sja1000.h:115
 
const struct device * phy
Definition: can_sja1000.h:112
 
uint8_t ocr
Definition: can_sja1000.h:114
 
can_sja1000_read_reg_t read_reg
Definition: can_sja1000.h:105
 
can_sja1000_write_reg_t write_reg
Definition: can_sja1000.h:106
 
uint32_t max_bitrate
Definition: can_sja1000.h:113
 
uint32_t sjw
Definition: can_sja1000.h:109
 
uint32_t phase_seg2
Definition: can_sja1000.h:111
 
SJA1000 driver internal data structure.
Definition: can_sja1000.h:167
 
bool started
Definition: can_sja1000.h:171
 
void * custom
Definition: can_sja1000.h:180
 
can_tx_callback_t tx_callback
Definition: can_sja1000.h:177
 
can_state_change_callback_t state_change_cb
Definition: can_sja1000.h:174
 
atomic_t rx_allocs[ATOMIC_BITMAP_SIZE(CONFIG_CAN_MAX_FILTER)]
Definition: can_sja1000.h:168
 
struct k_sem tx_idle
Definition: can_sja1000.h:176
 
can_mode_t mode
Definition: can_sja1000.h:172
 
enum can_state state
Definition: can_sja1000.h:173
 
struct can_sja1000_rx_filter filters[CONFIG_CAN_MAX_FILTER]
Definition: can_sja1000.h:169
 
void * tx_user_data
Definition: can_sja1000.h:178
 
void * state_change_cb_data
Definition: can_sja1000.h:175
 
uint32_t sjw
Definition: can_sja1000.h:179
 
struct k_mutex mod_lock
Definition: can_sja1000.h:170
 
SJA1000 driver internal RX filter structure.
Definition: can_sja1000.h:158
 
can_rx_callback_t callback
Definition: can_sja1000.h:160
 
void * user_data
Definition: can_sja1000.h:161
 
struct can_filter filter
Definition: can_sja1000.h:159
 
CAN bus timing structure.
Definition: can.h:274
 
Runtime device structure (in ROM) per driver instance.
Definition: device.h:380
 
Definition: kernel.h:2822
 
Kernel timeout type.
Definition: sys_clock.h:65
 
static const intptr_t user_data[5]
Definition: main.c:588