38#define CAN1 FDCAN1_BASE
39#define CAN2 FDCAN2_BASE
43#define CAN_MSG_SIZE 0x2800
45#define FDCAN_GFC(can_base) MMIO32(can_base + 0x0080)
47#define FDCAN_SIDFC(can_base) MMIO32(can_base + 0x0084)
48#define FDCAN_XIDFC(can_base) MMIO32(can_base + 0x0088)
49#define FDCAN_XIDAM(can_base) MMIO32(can_base + 0x0090)
51#define FDCAN_HPMS(can_base) MMIO32(can_base + 0x0094)
52#define FDCAN_NDAT1(can_base) MMIO32(can_base + 0x0098)
53#define FDCAN_HDAT2(can_base) MMIO32(can_base + 0x009C)
55#define FDCAN_RXFIC_BASE 0x00A0
56#define FDCAN_RXFI_OFFSET 0x0010
58#define FDCAN_RXFIC(can_base, fifo_id) \
59 MMIO32((can_base) + FDCAN_RXFIC_BASE + (FDCAN_RXFI_OFFSET * (fifo_id)))
61#define FDCAN_RXF0C(can_base) FDCAN_RXFIC(can_base, 0)
62#define FDCAN_RXF1C(can_base) FDCAN_RXFIC(can_base, 1)
64#define FDCAN_RXFIS_BASE 0x00A4
65#define FDCAN_RXFIA_BASE 0x00A8
67#define FDCAN_RXBC(can_base) MMIO32(can_base + 0x00AC)
69#define FDCAN_RXESC(can_base) MMIO32(can_base + 0x00BC)
70#define FDCAN_TXESC(can_base) MMIO32(can_base + 0x00C8)
71#define FDCAN_TXBRP(can_base) MMIO32(can_base + 0x00CC)
72#define FDCAN_TXBAR(can_base) MMIO32(can_base + 0x00D0)
73#define FDCAN_TXBCR(can_base) MMIO32(can_base + 0x00D4)
74#define FDCAN_TXBTO(can_base) MMIO32(can_base + 0x00D8)
75#define FDCAN_TXBCF(can_base) MMIO32(can_base + 0x00DC)
76#define FDCAN_TXBTIE(can_base) MMIO32(can_base + 0x00E0)
77#define FDCAN_TXBCIE(can_base) MMIO32(can_base + 0x00E4)
78#define FDCAN_TXEFC(can_base) MMIO32(can_base + 0x00F0)
79#define FDCAN_TXEFS(can_base) MMIO32(can_base + 0x00F4)
80#define FDCAN_TXEFA(can_base) MMIO32(can_base + 0x00F8)
82#define FDCAN_TTTMC(can_base) MMIO32(can_base + 0x0100)
83#define FDCAN_TTRMC(can_base) MMIO32(can_base + 0x0104)
84#define FDCAN_TTOCF(can_base) MMIO32(can_base + 0x0108)
85#define FDCAN_TTMLM(can_base) MMIO32(can_base + 0x010C)
86#define FDCAN_TURCF(can_base) MMIO32(can_base + 0x0110)
87#define FDCAN_TTOCN(can_base) MMIO32(can_base + 0x0114)
88#define FDCAN_TTGTP(can_base) MMIO32(can_base + 0x0118)
89#define FDCAN_TTTMK(can_base) MMIO32(can_base + 0x011C)
90#define FDCAN_TTTIR(can_base) MMIO32(can_base + 0x0120)
91#define FDCAN_TTIE(can_base) MMIO32(can_base + 0x0124)
92#define FDCAN_TTILS(can_base) MMIO32(can_base + 0x0128)
93#define FDCAN_TTOST(can_base) MMIO32(can_base + 0x012C)
94#define FDCAN_TURNA(can_base) MMIO32(can_base + 0x0130)
95#define FDCAN_TTLGT(can_base) MMIO32(can_base + 0x0134)
96#define FDCAN_TTCTC(can_base) MMIO32(can_base + 0x0138)
97#define FDCAN_TTCPT(can_base) MMIO32(can_base + 0x013C)
98#define FDCAN_TTCSM(can_base) MMIO32(can_base + 0x0140)
99#define FDCAN_TTTS(can_base) MMIO32(can_base + 0x0300)
101#define FDCAN_CCU_CCFG MMIO32(CAN_CCU_BASE + 0x0004)
102#define FDCAN_CCU_CREL MMIO32(CAN_CCU_BASE + 0x0000)
104#define FDCAN_GFC_RRFE (1 << 0)
105#define FDCAN_GFC_RRFS (1 << 1)
108#define FDCAN_GFC_ANFE_SHIFT 2
109#define FDCAN_GFC_ANFE_MASK 0x3
112#define FDCAN_GFC_ANFS_SHIFT 4
113#define FDCAN_GFC_ANFS_MASK 0x3
115#define FDCAN_FXS_MASK 0xFF
116#define FDCAN_FXS_SHIFT 16
119#define FDCAN_FXSA_MASK 0x3FFF
120#define FDCAN_FXSA_SHIFT 2
123#define FDCAN_SIDFC_LSS_MASK FDCAN_FXS_MASK
124#define FDCAN_SIDFC_LSS_SHIFT FDCAN_FXS_SHIFT
127#define FDCAN_SIDFC_FLSSA_MASK FDCAN_FXSA_MASK
128#define FDCAN_SIDFC_FLSSA_SHIFT FDCAN_FXSA_SHIFT
131#define FDCAN_XIDFC_LSE_MASK FDCAN_FXS_MASK
132#define FDCAN_XIDFC_LSE_SHIFT FDCAN_FXS_SHIFT
135#define FDCAN_XIDFC_FLESA_MASK FDCAN_FXSA_MASK
136#define FDCAN_XIDFC_FLESA_SHIFT FDCAN_FXSA_SHIFT
139#define FDCAN_TXBC_TFQS_MASK 0x3F
140#define FDCAN_TXBC_TFQS_SHIFT 24
143#define FDCAN_TXBC_TBSA_MASK FDCAN_FXSA_MASK
144#define FDCAN_TXBC_TBSA_SHIFT FDCAN_FXSA_SHIFT
146#define FDCAN_TXEFC_EFS_MASK 0x3F
147#define FDCAN_TXEFC_EFS_SHIFT 16
150#define FDCAN_TXEFC_EFSA_MASK FDCAN_FXSA_MASK
151#define FDCAN_TXEFC_EFSA_SHIFT FDCAN_FXSA_SHIFT
153#define FDCAN_RXFIC_FIOM (1 << 31)
155#define FDCAN_RXFIC_FIWM_MASK 0x7F
156#define FDCAN_RXFIC_FIWM_SHIFT 24
158#define FDCAN_RXFIC_FIS_MASK 0x7F
159#define FDCAN_RXFIC_FIS_SHIFT 16
162#define FDCAN_RXFIC_FISA_MASK FDCAN_FXSA_MASK
163#define FDCAN_RXFIC_FISA_SHIFT FDCAN_FXSA_SHIFT
165#define FDCAN_RXF0C_F0OM FDCAN_RXFIC_FIOM
168#define FDCAN_RXF0C_F0WM_MASK FDCAN_RXFIC_FIWM_MASK
169#define FDCAN_RXF0C_F0WM_SHIFT FDCAN_RXFIC_FIWM_SHIFT
172#define FDCAN_RXF0C_F0S_MASK FDCAN_RXFIC_FIS_MASK
173#define FDCAN_RXF0C_F0S_SHIFT FDCAN_RXFIC_FIS_SHIFT
176#define FDCAN_RXF0C_F0SA_MASK FDCAN_RXFIC_FISA_MASK
177#define FDCAN_RXF0C_F0SA_SHIFT FDCAN_RXFIC_FISA_SHIFT
179#define FDCAN_RXF1C_F1OM FDCAN_RXFIC_FIOM
182#define FDCAN_RXF1C_F1WM_MASK FDCAN_RXFIC_FIWM_MASK
183#define FDCAN_RXF1C_F1WM_SHIFT FDCAN_RXFIC_FIWM_SHIFT
186#define FDCAN_RXF1C_F1S_MASK FDCAN_RXFIC_FIS_MASK
187#define FDCAN_RXF1C_F1S_SHIFT FDCAN_RXFIC_FIS_SHIFT
190#define FDCAN_RXF1C_F1SA_MASK FDCAN_RXFIC_FISA_MASK
191#define FDCAN_RXF1C_F1SA_SHIFT FDCAN_RXFIC_FISA_SHIFT
194#define FDCAN_RXESC_RBDS_MASK 0x7
195#define FDCAN_RXESC_RBDS_SHIFT 8
198#define FDCAN_RXESC_F0DS_MASK 0x7
199#define FDCAN_RXESC_F0DS_SHIFT 0
202#define FDCAN_RXESC_F1DS_MASK 0x7
203#define FDCAN_RXESC_F1DS_SHIFT 4
206#define FDCAN_TXESC_TBDS_MASK 0x7
207#define FDCAN_TXESC_TBDS_SHIFT 0
209#define FDCAN_RXFIFO_FL_MASK 0x7F
210#define FDCAN_RXFIFO_GI_MASK 0x3F
211#define FDCAN_RXFIFO_PI_MASK 0x3F
213#define FDCAN_RXFIFO_AI_MASK 0x3F
215#define FDCAN_TXFQS_TFFL_MASK 0x3F
216#define FDCAN_TXFQS_TFGI_MASK 0x1F
217#define FDCAN_TXFQS_TFQPI_MASK 0x1F
219#define FDCAN_TXEFS_EFFL_MASK 0x3F
220#define FDCAN_TXEFS_EFGI_MASK 0x1F
221#define FDCAN_TXEFS_EFPI_MASK 0x1F
224#define FDCAN_CCU_CCFG_CDIV_SHIFT 16
225#define FDCAN_CCU_CCFG_CDIV_MASK 0xF
229#define FDCAN_LFSSA_OFFSET(can_base) \
230 (FDCAN_SIDFC(can_base) & (FDCAN_SIDFC_FLSSA_MASK << FDCAN_SIDFC_FLSSA_SHIFT))
232#define FDCAN_LFESA_OFFSET(can_base) \
233 (FDCAN_XIDFC(can_base) & (FDCAN_XIDFC_FLESA_MASK << FDCAN_XIDFC_FLESA_SHIFT))
235#define FDCAN_RXFIFO_OFFSET(can_base, fifo_id) \
236 (FDCAN_RXFIC(can_base, fifo_id) & (FDCAN_FXSA_MASK << FDCAN_FXSA_SHIFT))
238#define FDCAN_TXBUF_OFFSET(can_base) \
239 (FDCAN_TXBC(can_base) & (FDCAN_TXBC_TBSA_MASK << FDCAN_TXBC_TBSA_SHIFT))
241#define FDCAN_TXEVT_OFFSET(can_base) \
242 (FDCAN_TXEFC(can_base) & (FDCAN_TXEFC_EFSA_MASK << FDCAN_TXEFC_EFSA_SHIFT))
void fdcan_init_tx_event_ram(uint32_t canport, uint32_t tesa, uint8_t tes)
Initialize allocation of transmit event block in CAN message RAM.
int fdcan_set_rx_element_size(uint32_t canport, uint8_t rxbuf, uint8_t rxfifo0, uint8_t rxfifo1)
Initialize size of data fields in reception buffers.
void fdcan_init_fifo_ram(uint32_t canport, unsigned fifo_id, uint32_t fxsa, uint8_t fxs)
Initialize allocation of FIFO block in CAN message RAM.
void fdcan_init_std_filter_ram(uint32_t canport, uint32_t flssa, uint8_t lss)
Initialize allocation of standard filter block in CAN message RAM.
void fdcan_init_tx_buffer_ram(uint32_t canport, uint32_t tbsa, uint8_t tbs)
Initialize allocation of transmit queue block in CAN message RAM.
int fdcan_set_tx_element_size(uint32_t canport, uint8_t txbuf)
Initialize size of data fields in transmit buffers.
void fdcan_init_ext_filter_ram(uint32_t canport, uint32_t flesa, uint8_t lse)
Initialize allocation of extended filter block in CAN message RAM.