37#ifndef _DEV_CTUCANFD_CTUCANFD_TXB_H
38#define _DEV_CTUCANFD_CTUCANFD_TXB_H
54#define TXT_ANY_DONE ( ( TXT_DONE << ( 0 * TXT_BF ) ) | \
55 ( TXT_DONE << ( 1 * TXT_BF ) ) | \
56 ( TXT_DONE << ( 2 * TXT_BF ) ) | \
57 ( TXT_DONE << ( 3 * TXT_BF ) ) | \
58 ( TXT_DONE << ( 4 * TXT_BF ) ) | \
59 ( TXT_DONE << ( 5 * TXT_BF ) ) | \
60 ( TXT_DONE << ( 6 * TXT_BF ) ) | \
61 ( TXT_DONE << ( 7 * TXT_BF ) ) )
62#define TXTB_GET_STATUS( status, id ) ( ( status >> ( id * TXT_BF ) ) & \
67#define TXB_ALL 0xffffffff
68#define TXB_SH(idx) (idx * TXB_BF)
70static inline uint32_t ctucanfd_txb_slot_demote(
76 uint32_t txb_order_new;
77 uint32_t txb_move = ( txb_order >> TXB_SH( from ) ) & TXB_MASK;
78 uint32_t mask_from = TXB_ALL << TXB_SH( from );
79 uint32_t mask_to = TXB_ALL << TXB_SH( to );
80 txb_order_new = txb_move << TXB_SH( to );
81 txb_order_new |= txb_order & ( ~mask_from | ( mask_to << TXB_BF ) );
82 txb_order_new |= ( ( txb_order >> TXB_BF) & ~mask_to ) & mask_from;
86static inline uint32_t ctucanfd_txb_slot_promote(
92 uint32_t txb_order_new;
93 uint32_t txb_move = ( txb_order >> TXB_SH( from ) ) & TXB_MASK;
94 uint32_t mask_from = TXB_ALL << TXB_SH( from );
95 uint32_t mask_to = TXB_ALL << TXB_SH( to );
96 txb_order_new = txb_move << TXB_SH( to );
97 txb_order_new |= ( txb_order ) & ( ~mask_to | ( mask_from << TXB_BF ) );
98 txb_order_new |= ( ( (txb_order & mask_to ) & ~mask_from ) << TXB_BF );
102static inline uint32_t ctucanfd_txb_order2prio( uint32_t txb_order )
107 prio |= i << ( 4 * ( txb_order & TXB_MASK ) );
108 txb_order >>= TXB_BF;
114static inline unsigned int ctucanfd_txb_from_order(
119 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.