@@ -297,10 +297,14 @@ int can_mcan_init(const struct device *dev, const struct can_mcan_config *cfg,
297297 (can -> crel & CAN_MCAN_CREL_DAY ) >> CAN_MCAN_CREL_DAY_POS );
298298
299299#ifndef CONFIG_CAN_STM32FD
300+ uint32_t mrba = 0 ;
301+ #ifdef CONFIG_CAN_STM32H7
302+ mrba = (uint32_t )msg_ram ;
303+ #endif
300304#ifdef CONFIG_CAN_MCUX_MCAN
301- uint32_t mrba = (uint32_t )msg_ram & CAN_MCAN_MRBA_BA_MSK ;
302-
305+ mrba = (uint32_t )msg_ram & CAN_MCAN_MRBA_BA_MSK ;
303306 can -> mrba = mrba ;
307+ #endif
304308 can -> sidfc = (((uint32_t )msg_ram -> std_filt - mrba ) & CAN_MCAN_SIDFC_FLSSA_MSK ) |
305309 (ARRAY_SIZE (msg_ram -> std_filt ) << CAN_MCAN_SIDFC_LSS_POS );
306310 can -> xidfc = (((uint32_t )msg_ram -> ext_filt - mrba ) & CAN_MCAN_XIDFC_FLESA_MSK ) |
@@ -312,24 +316,8 @@ int can_mcan_init(const struct device *dev, const struct can_mcan_config *cfg,
312316 can -> rxbc = (((uint32_t )msg_ram -> rx_buffer - mrba ) & CAN_MCAN_RXBC_RBSA );
313317 can -> txefc = (((uint32_t )msg_ram -> tx_event_fifo - mrba ) & CAN_MCAN_TXEFC_EFSA_MSK ) |
314318 (ARRAY_SIZE (msg_ram -> tx_event_fifo ) << CAN_MCAN_TXEFC_EFS_POS );
315- can -> txbc = (((uint32_t )msg_ram -> tx_buffer - mrba ) & CAN_MCAN_TXBC_TBSA_MSK ) |
316- (ARRAY_SIZE (msg_ram -> tx_buffer ) << CAN_MCAN_TXBC_TFQS_POS );
317- #else /* CONFIG_CAN_MCUX_MCAN */
318- can -> sidfc = ((uint32_t )msg_ram -> std_filt & CAN_MCAN_SIDFC_FLSSA_MSK ) |
319- (ARRAY_SIZE (msg_ram -> std_filt ) << CAN_MCAN_SIDFC_LSS_POS );
320- can -> xidfc = ((uint32_t )msg_ram -> ext_filt & CAN_MCAN_XIDFC_FLESA_MSK ) |
321- (ARRAY_SIZE (msg_ram -> ext_filt ) << CAN_MCAN_XIDFC_LSS_POS );
322- can -> rxf0c = ((uint32_t )msg_ram -> rx_fifo0 & CAN_MCAN_RXF0C_F0SA ) |
323- (ARRAY_SIZE (msg_ram -> rx_fifo0 ) << CAN_MCAN_RXF0C_F0S_POS );
324- can -> rxf1c = ((uint32_t )msg_ram -> rx_fifo1 & CAN_MCAN_RXF1C_F1SA ) |
325- (ARRAY_SIZE (msg_ram -> rx_fifo1 ) << CAN_MCAN_RXF1C_F1S_POS );
326- can -> rxbc = ((uint32_t )msg_ram -> rx_buffer & CAN_MCAN_RXBC_RBSA );
327- can -> txefc = ((uint32_t )msg_ram -> tx_event_fifo & CAN_MCAN_TXEFC_EFSA_MSK ) |
328- (ARRAY_SIZE (msg_ram -> tx_event_fifo ) <<
329- CAN_MCAN_TXEFC_EFS_POS );
330- can -> txbc = ((uint32_t )msg_ram -> tx_buffer & CAN_MCAN_TXBC_TBSA ) |
331- (ARRAY_SIZE (msg_ram -> tx_buffer ) << CAN_MCAN_TXBC_TFQS_POS );
332- #endif /* !CONFIG_CAN_MCUX_MCAN */
319+ can -> txbc = (((uint32_t )msg_ram -> tx_buffer - mrba ) & CAN_MCAN_TXBC_TBSA ) |
320+ (ARRAY_SIZE (msg_ram -> tx_buffer ) << CAN_MCAN_TXBC_TFQS_POS );
333321
334322 if (sizeof (msg_ram -> tx_buffer [0 ].data ) <= 24 ) {
335323 can -> txesc = (sizeof (msg_ram -> tx_buffer [0 ].data ) - 8 ) / 4 ;
0 commit comments