42 #if defined(soc_cv_av)
48 #include "alt_clock_manager.h"
49 #include "socal/alt_can.h"
50 #include "socal/alt_rstmgr.h"
51 #include "socal/hps.h"
52 #include "socal/socal.h"
101 typedef enum ALT_CAN_TMOD_e
110 typedef enum ALT_CAN_FIFO_MODE_e
112 ALT_CAN_FIFO_MODE_SINGLE_MSG,
118 ALT_CAN_FIFO_MODE_BUFFER_NOT_LAST,
124 ALT_CAN_FIFO_MODE_BUFFER_LAST
130 } ALT_CAN_FIFO_MODE_t;
135 typedef struct ALT_CAN_MAILBOX_PARAM_s
158 ALT_CAN_FIFO_MODE_t fifo_mode;
161 ALT_CAN_MAILBOX_PARAM_t;
167 #define ALT_CAN_MAILBOXES_COUNT (128)
172 #define ALT_CAN_DEFAULT_BAUDRATE (100000)
186 typedef struct ALT_CAN_DEV_s
189 ALT_CAN_MAILBOX_PARAM_t mailboxes[ALT_CAN_MAILBOXES_COUNT];
196 typedef enum ALT_CAN_CTLR_e
198 ALT_CAN_CAN0 = (int)ALT_CAN0_OFST,
199 ALT_CAN_CAN1 = (
int)ALT_CAN1_OFST
205 typedef enum ALT_CAN_INTERFACE_e
207 ALT_CAN_INTERFACE_READ = (int)ALT_CAN_MSGIF_IF1CMR_OFST,
208 ALT_CAN_INTERFACE_WRITE = (
int)ALT_CAN_MSGIF_IF2CMR_OFST
209 } ALT_CAN_INTERFACE_t;
214 typedef enum ALT_CAN_TEST_TYPE_e
216 ALT_CAN_TEST_SILENT = 0,
217 ALT_CAN_TEST_LOOP_BACK = 1,
218 ALT_CAN_TEST_MIXED = 2
219 } ALT_CAN_TEST_TYPE_t;
224 typedef enum ALT_CAN_LAST_ERROR_e
226 ALT_CAN_STAT_ERROR_NOERROR,
229 ALT_CAN_STAT_ERROR_STUFF,
234 ALT_CAN_STAT_ERROR_FORM,
238 ALT_CAN_STAT_ERROR_ACK,
242 ALT_CAN_STAT_ERROR_BIT1,
249 ALT_CAN_STAT_ERROR_BIT0,
262 ALT_CAN_STAT_ERROR_CRC,
267 ALT_CAN_STAT_ERROR_NOCNG
273 } ALT_CAN_LAST_ERROR_t;
278 typedef struct ALT_CAN_STATUS_s
280 ALT_CAN_LAST_ERROR_t last_err_code;
315 typedef struct ALT_CAN_BITTIME_s {
340 typedef struct ALT_CAN_MSG_PARAM_s
374 bool tx_rqst_new_dat;
443 typedef struct ALT_CAN_MSG_MSK_s
463 typedef struct ALT_CAN_MSG_ARB_s
495 typedef struct ALT_CAN_MSG_IFMCTR_s
557 typedef enum ALT_CAN_INT_GROUP_e
559 ALT_CAN_INT_GROUP_MOD_LINE = 1UL << 0,
567 ALT_CAN_INT_GROUP_STATUS = 1UL << 1,
574 ALT_CAN_INT_GROUP_ERROR = 1UL << 2,
580 ALT_CAN_INT_GROUP_MSG_LINE = 1UL << 3,
585 ALT_CAN_INT_GROUP_ALL = 0xF
588 } ALT_CAN_INT_GROUP_t;
593 typedef struct ALT_CAN_ERROR_COUNTER_s
595 uint32_t tx_error_counter;
598 uint32_t rx_error_counter;
601 bool rx_above_passive;
628 ALT_STATUS_CODE alt_can_init(const ALT_CAN_CTLR_t can, ALT_CAN_DEV_t *can_dev);
646 ALT_STATUS_CODE alt_can_reset(ALT_CAN_DEV_t * can_dev);
665 ALT_STATUS_CODE alt_can_disable(ALT_CAN_DEV_t *can_dev);
685 ALT_STATUS_CODE alt_can_enable(ALT_CAN_DEV_t *can_dev);
699 ALT_STATUS_CODE alt_can_is_enabled(ALT_CAN_DEV_t *can_dev);
716 ALT_STATUS_CODE alt_can_baudrate_set(ALT_CAN_DEV_t * can_dev, const uint32_t bitrate);
734 ALT_STATUS_CODE alt_can_uninit(ALT_CAN_DEV_t *can_dev);
763 ALT_STATUS_CODE alt_can_int_disable(ALT_CAN_DEV_t *can_dev, const uint8_t mask);
792 ALT_STATUS_CODE alt_can_int_enable(ALT_CAN_DEV_t *can_dev, const uint8_t mask);
810 ALT_STATUS_CODE alt_can_int_ident_get(ALT_CAN_DEV_t *can_dev, uint32_t * interrupt);
829 ALT_STATUS_CODE alt_can_int_status_get(ALT_CAN_DEV_t *can_dev);
847 ALT_STATUS_CODE alt_can_bit_timing_get(ALT_CAN_DEV_t *can_dev, ALT_CAN_BITTIME_t * params);
865 ALT_STATUS_CODE alt_can_bit_timing_set(ALT_CAN_DEV_t * can_dev,ALT_CAN_BITTIME_t * bittime);
885 ALT_STATUS_CODE alt_can_rate_to_bittime(ALT_CAN_DEV_t *can_dev, uint32_t bitrate,
886 ALT_CAN_BITTIME_t * bittime);
899 ALT_STATUS_CODE alt_can_test_mode_disable(ALT_CAN_DEV_t *can_dev);
917 ALT_STATUS_CODE alt_can_test_mode_enable(ALT_CAN_DEV_t *can_dev, ALT_CAN_TEST_TYPE_t type);
934 ALT_STATUS_CODE alt_can_test_mode_is_enabled(ALT_CAN_DEV_t *can_dev, ALT_CAN_TEST_TYPE_t * type);
952 ALT_STATUS_CODE alt_can_error_counter_get(ALT_CAN_DEV_t *can_dev, ALT_CAN_ERROR_COUNTER_t* counter);
970 ALT_STATUS_CODE alt_can_status_get(ALT_CAN_DEV_t *can_dev, ALT_CAN_STATUS_t * status);
995 ALT_STATUS_CODE alt_can_if_cmd_set(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
996 uint32_t msg_obj_num, ALT_CAN_MSG_PARAM_t * cmd_params);
1017 ALT_STATUS_CODE alt_can_if_mask_set(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1018 ALT_CAN_MSG_MSK_t * mask_param);
1039 ALT_STATUS_CODE alt_can_if_mask_get(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1040 ALT_CAN_MSG_MSK_t * mask_param);
1061 ALT_STATUS_CODE alt_can_if_arb_set(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1062 ALT_CAN_MSG_ARB_t * arb_param);
1083 ALT_STATUS_CODE alt_can_if_arb_get(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1084 ALT_CAN_MSG_ARB_t * arb_param);
1105 ALT_STATUS_CODE alt_can_if_msg_ctrl_set(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1106 ALT_CAN_MSG_IFMCTR_t * ctrl);
1127 ALT_STATUS_CODE alt_can_if_msg_ctrl_get(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1128 ALT_CAN_MSG_IFMCTR_t * ctrl);
1151 ALT_STATUS_CODE alt_can_if_data_set(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1152 uint32_t dataA, uint32_t dataB);
1177 ALT_STATUS_CODE alt_can_if_data_get(ALT_CAN_DEV_t * can_dev, ALT_CAN_INTERFACE_t if_index,
1178 uint32_t * dataA, uint32_t * dataB);
1198 ALT_STATUS_CODE alt_can_mailbox_reset(ALT_CAN_DEV_t *can_dev, ALT_CAN_INTERFACE_t if_index,
1199 uint32_t msg_obj_num);
1217 ALT_STATUS_CODE alt_can_message_is_busy(ALT_CAN_DEV_t *can_dev, ALT_CAN_INTERFACE_t if_index);
1241 ALT_STATUS_CODE alt_can_message_put(ALT_CAN_DEV_t *can_dev, ALT_CAN_INTERFACE_t if_index,
1242 uint32_t msg_obj_num, ALT_CAN_MSG_PARAM_t * cmd_params);
1266 ALT_STATUS_CODE alt_can_message_get(ALT_CAN_DEV_t *can_dev, ALT_CAN_INTERFACE_t if_index,
1267 uint32_t msg_obj_num, ALT_CAN_MSG_PARAM_t * cmd_params);
1300 ALT_STATUS_CODE alt_can_mailbox_init(ALT_CAN_DEV_t *can_dev,
1301 uint32_t msg_obj_num,
1305 ALT_CAN_FIFO_MODE_t fifo_mode);
1338 ALT_STATUS_CODE alt_can_mailbox_ext_id_init(ALT_CAN_DEV_t *can_dev,
1339 uint32_t msg_obj_num,
1342 ALT_CAN_TMOD_t transfer_mode,
1343 ALT_CAN_FIFO_MODE_t fifo_mode);
1360 ALT_STATUS_CODE alt_can_mailbox_uninit(ALT_CAN_DEV_t *can_dev, uint32_t msg_obj_num);
1374 ALT_STATUS_CODE alt_can_mailboxes_reset(ALT_CAN_DEV_t *can_dev);
1397 ALT_STATUS_CODE alt_can_frame_read(ALT_CAN_DEV_t *can_dev,
1398 uint32_t msg_obj_num,
1420 ALT_STATUS_CODE alt_can_frame_write(ALT_CAN_DEV_t *can_dev,
1421 uint32_t msg_obj_num,
1450 ALT_STATUS_CODE alt_can_data_read(ALT_CAN_DEV_t *can_dev,
1451 uint32_t msg_obj_num,
1454 uint32_t * bytes_read);
1477 ALT_STATUS_CODE alt_can_data_write(ALT_CAN_DEV_t *can_dev,
1478 uint32_t msg_obj_num,