Open FFBoard
Open source force feedback firmware
fsdev_type.h File Reference

Go to the source code of this file.

Classes

union  fsdev_btable_t
 
struct  fsdev_pma_buf_t
 
struct  fsdev_regs_t
 

Typedefs

typedef uint32_t fsdev_bus_t
 

Enumerations

enum  { FSDEV_BUS_SIZE = sizeof(fsdev_bus_t) }
 
enum  { BTABLE_BUF_TX = 0 , BTABLE_BUF_RX = 1 }
 
enum  ep_stat_t { EP_STAT_DISABLED = 0 , EP_STAT_STALL = 1 , EP_STAT_NAK = 2 , EP_STAT_VALID = 3 }
 

Functions

 TU_VERIFY_STATIC (sizeof(fsdev_btable_t)==FSDEV_EP_COUNT *8 *FSDEV_PMA_STRIDE, "size is not correct")
 
 TU_VERIFY_STATIC (FSDEV_BTABLE_BASE+FSDEV_EP_COUNT *8<=FSDEV_PMA_SIZE, "BTABLE does not fit in PMA RAM")
 
 TU_VERIFY_STATIC (offsetof(fsdev_regs_t, CNTR)==0x40, "Wrong offset")
 
 TU_VERIFY_STATIC (sizeof(fsdev_regs_t)==0x5C, "Size is not correct")
 
static TU_ATTR_ALWAYS_INLINE uint32_t ep_read (uint32_t ep_id)
 
static TU_ATTR_ALWAYS_INLINE void ep_write (uint32_t ep_id, uint32_t value, bool need_exclusive)
 
static TU_ATTR_ALWAYS_INLINE void ep_write_clear_ctr (uint32_t ep_id, tusb_dir_t dir)
 
static TU_ATTR_ALWAYS_INLINE void ep_change_status (uint32_t *reg, tusb_dir_t dir, ep_stat_t state)
 
static TU_ATTR_ALWAYS_INLINE void ep_change_dtog (uint32_t *reg, tusb_dir_t dir, uint8_t state)
 
static TU_ATTR_ALWAYS_INLINE bool ep_is_iso (uint32_t reg)
 
static TU_ATTR_ALWAYS_INLINE uint32_t btable_get_addr (uint32_t ep_id, uint8_t buf_id)
 
static TU_ATTR_ALWAYS_INLINE void btable_set_addr (uint32_t ep_id, uint8_t buf_id, uint16_t addr)
 
static TU_ATTR_ALWAYS_INLINE uint16_t btable_get_count (uint32_t ep_id, uint8_t buf_id)
 
static TU_ATTR_ALWAYS_INLINE void btable_set_count (uint32_t ep_id, uint8_t buf_id, uint16_t byte_count)
 
static TU_ATTR_ALWAYS_INLINE uint16_t pma_align_buffer_size (uint16_t size, uint8_t *blsize, uint8_t *num_block)
 
static TU_ATTR_ALWAYS_INLINE void btable_set_rx_bufsize (uint32_t ep_id, uint8_t buf_id, uint16_t wCount)
 

Variables

 C
 

Typedef Documentation

◆ fsdev_bus_t

typedef uint16_t fsdev_bus_t

Definition at line 68 of file fsdev_type.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FSDEV_BUS_SIZE 

Definition at line 77 of file fsdev_type.h.

◆ anonymous enum

anonymous enum
Enumerator
BTABLE_BUF_TX 
BTABLE_BUF_RX 

Definition at line 84 of file fsdev_type.h.

◆ ep_stat_t

enum ep_stat_t
Enumerator
EP_STAT_DISABLED 
EP_STAT_STALL 
EP_STAT_NAK 
EP_STAT_VALID 

Definition at line 167 of file fsdev_type.h.

Function Documentation

◆ btable_get_addr()

static TU_ATTR_ALWAYS_INLINE uint32_t btable_get_addr ( uint32_t  ep_id,
uint8_t  buf_id 
)
inlinestatic

Definition at line 223 of file fsdev_type.h.

◆ btable_get_count()

static TU_ATTR_ALWAYS_INLINE uint16_t btable_get_count ( uint32_t  ep_id,
uint8_t  buf_id 
)
inlinestatic

Definition at line 241 of file fsdev_type.h.

◆ btable_set_addr()

static TU_ATTR_ALWAYS_INLINE void btable_set_addr ( uint32_t  ep_id,
uint8_t  buf_id,
uint16_t  addr 
)
inlinestatic

Definition at line 231 of file fsdev_type.h.

◆ btable_set_count()

static TU_ATTR_ALWAYS_INLINE void btable_set_count ( uint32_t  ep_id,
uint8_t  buf_id,
uint16_t  byte_count 
)
inlinestatic

Definition at line 251 of file fsdev_type.h.

◆ btable_set_rx_bufsize()

static TU_ATTR_ALWAYS_INLINE void btable_set_rx_bufsize ( uint32_t  ep_id,
uint8_t  buf_id,
uint16_t  wCount 
)
inlinestatic

Definition at line 281 of file fsdev_type.h.

◆ ep_change_dtog()

static TU_ATTR_ALWAYS_INLINE void ep_change_dtog ( uint32_t *  reg,
tusb_dir_t  dir,
uint8_t  state 
)
inlinestatic

Definition at line 211 of file fsdev_type.h.

◆ ep_change_status()

static TU_ATTR_ALWAYS_INLINE void ep_change_status ( uint32_t *  reg,
tusb_dir_t  dir,
ep_stat_t  state 
)
inlinestatic

Definition at line 207 of file fsdev_type.h.

◆ ep_is_iso()

static TU_ATTR_ALWAYS_INLINE bool ep_is_iso ( uint32_t  reg)
inlinestatic

Definition at line 215 of file fsdev_type.h.

◆ ep_read()

static TU_ATTR_ALWAYS_INLINE uint32_t ep_read ( uint32_t  ep_id)
inlinestatic

Definition at line 183 of file fsdev_type.h.

◆ ep_write()

static TU_ATTR_ALWAYS_INLINE void ep_write ( uint32_t  ep_id,
uint32_t  value,
bool  need_exclusive 
)
inlinestatic

Definition at line 187 of file fsdev_type.h.

◆ ep_write_clear_ctr()

static TU_ATTR_ALWAYS_INLINE void ep_write_clear_ctr ( uint32_t  ep_id,
tusb_dir_t  dir 
)
inlinestatic

Definition at line 199 of file fsdev_type.h.

◆ pma_align_buffer_size()

static TU_ATTR_ALWAYS_INLINE uint16_t pma_align_buffer_size ( uint16_t  size,
uint8_t *  blsize,
uint8_t *  num_block 
)
inlinestatic

Definition at line 264 of file fsdev_type.h.

◆ TU_VERIFY_STATIC() [1/4]

TU_VERIFY_STATIC ( FSDEV_BTABLE_BASE+FSDEV_EP_COUNT *8<=  FSDEV_PMA_SIZE,
"BTABLE does not fit in PMA RAM"   
)

◆ TU_VERIFY_STATIC() [2/4]

TU_VERIFY_STATIC ( offsetof(fsdev_regs_t, CNTR)  = =0x40,
"Wrong offset"   
)

◆ TU_VERIFY_STATIC() [3/4]

TU_VERIFY_STATIC ( sizeof(fsdev_btable_t = =FSDEV_EP_COUNT *8 *FSDEV_PMA_STRIDE,
"size is not correct"   
)

◆ TU_VERIFY_STATIC() [4/4]

TU_VERIFY_STATIC ( sizeof(fsdev_regs_t = =0x5C,
"Size is not correct"   
)

Variable Documentation

◆ C

C
extern
Initial value:
{
#endif
#include "stdint.h"
#ifndef FSDEV_BTABLE_BASE
#define FSDEV_BTABLE_BASE 0U
#endif
TU_VERIFY_STATIC(FSDEV_BTABLE_BASE % 8 == 0, "BTABLE base must be aligned to 8 bytes")
TU_VERIFY_STATIC(sizeof(fsdev_btable_t)==FSDEV_EP_COUNT *8 *FSDEV_PMA_STRIDE, "size is not correct")