37#ifndef _DEV_CTUCANFD_CTUCANFD_TXB_H
38#define _DEV_CTUCANFD_CTUCANFD_TXB_H
55 ( ( TXT_DONE << ( 0 * TXT_BF ) ) | ( TXT_DONE << ( 1 * TXT_BF ) ) | \
56 ( TXT_DONE << ( 2 * TXT_BF ) ) | ( TXT_DONE << ( 3 * TXT_BF ) ) | \
57 ( TXT_DONE << ( 4 * TXT_BF ) ) | ( TXT_DONE << ( 5 * TXT_BF ) ) | \
58 ( TXT_DONE << ( 6 * TXT_BF ) ) | ( TXT_DONE << ( 7 * TXT_BF ) ) )
59#define TXTB_GET_STATUS( status, id ) \
60 ( ( status >> ( id * TXT_BF ) ) & TXT_MASK )
64#define TXB_ALL 0xffffffff
65#define TXB_SH( idx ) ( idx * TXB_BF )
67static inline uint32_t ctucanfd_txb_slot_demote(
73 uint32_t txb_order_new;
74 uint32_t txb_move = ( txb_order >> TXB_SH( from ) ) & TXB_MASK;
75 uint32_t mask_from = TXB_ALL << TXB_SH( from );
76 uint32_t mask_to = TXB_ALL << TXB_SH( to );
77 txb_order_new = txb_move << TXB_SH( to );
78 txb_order_new |= txb_order & ( ~mask_from | ( mask_to << TXB_BF ) );
79 txb_order_new |= ( ( txb_order >> TXB_BF ) & ~mask_to ) & mask_from;
83static inline uint32_t ctucanfd_txb_slot_promote(
89 uint32_t txb_order_new;
90 uint32_t txb_move = ( txb_order >> TXB_SH( from ) ) & TXB_MASK;
91 uint32_t mask_from = TXB_ALL << TXB_SH( from );
92 uint32_t mask_to = TXB_ALL << TXB_SH( to );
93 txb_order_new = txb_move << TXB_SH( to );
94 txb_order_new |= ( txb_order ) & ( ~mask_to | ( mask_from << TXB_BF ) );
95 txb_order_new |= ( ( ( txb_order & mask_to ) & ~mask_from ) << TXB_BF );
99static inline uint32_t ctucanfd_txb_order2prio( uint32_t txb_order )
104 prio |= i << ( 4 * ( txb_order & TXB_MASK ) );
105 txb_order >>= TXB_BF;
111static inline unsigned int ctucanfd_txb_from_order(
116 return ( txb_order >> TXB_SH( at ) ) & TXB_MASK;
#define RTEMS_CTUCANFD_NTXBUFS_MAX
This defines the maximum number of TX buffers.
Definition: ctucanfd.h:53
This file is part of CTU CAN FD core driver implementation.