1 /****************************************************************************** 2 * 3 * Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by 4 * Analog Devices, Inc.), 5 * Copyright (C) 2023-2024 Analog Devices, Inc. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 ******************************************************************************/ 20 21 #ifndef LIBRARIES_PERIPHDRIVERS_SOURCE_CAN_CAN_REVA_H_ 22 #define LIBRARIES_PERIPHDRIVERS_SOURCE_CAN_CAN_REVA_H_ 23 24 #include <stdio.h> 25 #include "can.h" 26 #include "can_reva_regs.h" 27 #include "dma.h" 28 #include "dma_reva_regs.h" 29 30 #include "mxc_device.h" 31 #include "mxc_errors.h" 32 #include "mxc_assert.h" 33 #include "mxc_sys.h" 34 #include "mxc_lock.h" 35 36 /***** FUNCTIONS *****/ 37 mxc_can_drv_version_t MXC_CAN_RevA_GetVersion(void); 38 39 mxc_can_capabilities_t MXC_CAN_RevA_GetCapabilities(void); 40 41 int MXC_CAN_RevA_Init(mxc_can_reva_regs_t *can, mxc_can_unit_event_cb_t unit_cb, 42 mxc_can_object_event_cb_t obj_cb); 43 44 int MXC_CAN_RevA_UnInit(mxc_can_reva_regs_t *can); 45 46 int MXC_CAN_RevA_PowerControl(mxc_can_reva_regs_t *can, mxc_can_pwr_ctrl_t pwr); 47 48 int MXC_CAN_RevA_EnableInt(mxc_can_reva_regs_t *can, uint8_t en, uint8_t ext_en); 49 50 int MXC_CAN_RevA_DisableInt(mxc_can_reva_regs_t *can, uint8_t dis, uint8_t ext_dis); 51 52 int MXC_CAN_RevA_GetFlags(mxc_can_reva_regs_t *can, uint8_t *flags, uint8_t *ext_flags); 53 54 int MXC_CAN_RevA_ClearFlags(mxc_can_reva_regs_t *can, uint8_t flags, uint8_t ext_flags); 55 56 int MXC_CAN_RevA_GetBitRate(mxc_can_reva_regs_t *can, mxc_can_bitrate_sel_t sel, int can_clk); 57 58 int MXC_CAN_RevA_SetBitRate(mxc_can_reva_regs_t *can, int can_clk, mxc_can_bitrate_sel_t sel, 59 uint32_t bitrate, uint8_t seg1, uint8_t seg2, uint8_t sjw); 60 61 int MXC_CAN_RevA_SetMode(mxc_can_reva_regs_t *can, mxc_can_mode_t mode); 62 63 mxc_can_obj_capabilities_t MXC_CAN_RevA_ObjectGetCapabilities(mxc_can_reva_regs_t *can); 64 65 int MXC_CAN_RevA_ObjectSetFilter(mxc_can_reva_regs_t *can, mxc_can_filt_cfg_t cfg, uint32_t id, 66 uint32_t arg); 67 68 int MXC_CAN_RevA_ObjectConfigure(mxc_can_reva_regs_t *can, mxc_can_obj_cfg_t cfg); 69 70 int MXC_CAN_RevA_WriteTXFIFO(mxc_can_reva_regs_t *can, mxc_can_msg_info_t *info, 71 const uint8_t *data, uint8_t size); 72 73 int MXC_CAN_RevA_ReadRXFIFO(mxc_can_reva_regs_t *can, mxc_can_msg_info_t *info, uint8_t *data, 74 uint8_t size, bool dma); 75 76 int MXC_CAN_RevA_MessageSend(mxc_can_reva_regs_t *can, mxc_can_req_t *req); 77 78 int MXC_CAN_RevA_MessageSendAsync(mxc_can_reva_regs_t *can, mxc_can_req_t *req); 79 80 int MXC_CAN_RevA_MessageSendDMA(mxc_can_reva_regs_t *can, mxc_can_req_t *req); 81 82 int MXC_CAN_RevA_MessageRead(mxc_can_reva_regs_t *can, mxc_can_req_t *req); 83 84 int MXC_CAN_RevA_MessageReadAsync(mxc_can_reva_regs_t *can, mxc_can_req_t *req); 85 86 int MXC_CAN_RevA_MessageReadDMA(mxc_can_reva_regs_t *can, mxc_can_req_t *req, 87 mxc_dma_reqsel_t reqsel, void (*dma_cb)(int, int)); 88 89 int MXC_CAN_RevA_Handler(mxc_can_reva_regs_t *can, uint8_t *intfl, uint8_t *eintfl); 90 91 int MXC_CAN_RevA_Control(mxc_can_reva_regs_t *can, mxc_can_ctrl_t ctrl, uint32_t ctrl_arg); 92 93 int MXC_CAN_RevA_SetWakeupTimer(mxc_can_reva_regs_t *can, uint8_t prescaler, uint16_t wup_filter_tm, 94 uint32_t wup_expire_tm); 95 96 mxc_can_stat_t MXC_CAN_RevA_GetStatus(mxc_can_reva_regs_t *can); 97 98 void MXC_CAN_RevA_SignalUnitEvent(uint32_t can_idx, mxc_can_unit_evt_t event); 99 100 void MXC_CAN_RevA_SignalObjectEvent(uint32_t can_idx, mxc_can_obj_evt_t event); 101 102 #endif // LIBRARIES_PERIPHDRIVERS_SOURCE_CAN_CAN_REVA_H_ 103