Open FFBoard
Open source force feedback firmware
dcd_musb.c File Reference

Go to the source code of this file.

Classes

union  hw_fifo_t
 
struct  TU_ATTR_PACKED
 AUDIO Channel Cluster Descriptor (4.1) More...
 
struct  dcd_data_t
 

Typedefs

typedef struct TU_ATTR_PACKED pipe_state_t
 

Functions

 _Pragma ("GCC diagnostic ignored \"-Waddress-of-packed-member\"")
 
static TU_ATTR_ALWAYS_INLINE uint8_t hwfifo_byte2size (uint16_t nbytes)
 
static TU_ATTR_ALWAYS_INLINE void hwfifo_reset (musb_regs_t *musb, unsigned epnum, unsigned is_rx)
 
static TU_ATTR_ALWAYS_INLINE bool hwfifo_config (musb_regs_t *musb, unsigned epnum, unsigned is_rx, unsigned mps, bool double_packet)
 
static TU_ATTR_ALWAYS_INLINE void hwfifo_flush (musb_regs_t *musb, unsigned epnum, unsigned is_rx, bool clear_dtog)
 
static void pipe_write_packet (void *buf, volatile void *fifo, unsigned len)
 
static void pipe_read_packet (void *buf, volatile void *fifo, unsigned len)
 
static void pipe_read_write_packet_ff (tu_fifo_t *f, volatile void *fifo, unsigned len, unsigned dir)
 
static void process_setup_packet (uint8_t rhport)
 
static bool handle_xfer_in (uint8_t rhport, uint_fast8_t ep_addr)
 
static bool handle_xfer_out (uint8_t rhport, uint_fast8_t ep_addr)
 
static bool edpt_n_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
 
static bool edpt0_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
 
static void process_ep0 (uint8_t rhport)
 
static void process_edpt_n (uint8_t rhport, uint_fast8_t ep_addr)
 
static void process_bus_reset (uint8_t rhport)
 
void print_musb_info (musb_regs_t *musb_regs)
 
bool dcd_init (uint8_t rhport, const tusb_rhport_init_t *rh_init)
 
void dcd_int_enable (uint8_t rhport)
 
void dcd_int_disable (uint8_t rhport)
 
void dcd_set_address (uint8_t rhport, uint8_t dev_addr)
 
void dcd_remote_wakeup (uint8_t rhport)
 
void dcd_connect (uint8_t rhport)
 
void dcd_disconnect (uint8_t rhport)
 
void dcd_sof_enable (uint8_t rhport, bool en)
 
bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const *ep_desc)
 
bool dcd_edpt_iso_alloc (uint8_t rhport, uint8_t ep_addr, uint16_t largest_packet_size)
 
bool dcd_edpt_iso_activate (uint8_t rhport, tusb_desc_endpoint_t const *ep_desc)
 
void dcd_edpt_close_all (uint8_t rhport)
 
bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
 
bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t *ff, uint16_t total_bytes)
 
void dcd_edpt_stall (uint8_t rhport, uint8_t ep_addr)
 
void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr)
 
void dcd_int_handler (uint8_t rhport)
 

Variables

static dcd_data_t _dcd
 
static uint32_t alloced_fifo_bytes
 

Typedef Documentation

◆ pipe_state_t

typedef struct TU_ATTR_PACKED pipe_state_t

Function Documentation

◆ _Pragma()

_Pragma ( "GCC diagnostic ignored \"-Waddress-of-packed-member\""  )

◆ dcd_connect()

void dcd_connect ( uint8_t  rhport)

Definition at line 634 of file dcd_musb.c.

◆ dcd_disconnect()

void dcd_disconnect ( uint8_t  rhport)

Definition at line 642 of file dcd_musb.c.

◆ dcd_edpt_clear_stall()

void dcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 836 of file dcd_musb.c.

◆ dcd_edpt_close_all()

void dcd_edpt_close_all ( uint8_t  rhport)

Definition at line 748 of file dcd_musb.c.

◆ dcd_edpt_iso_activate()

bool dcd_edpt_iso_activate ( uint8_t  rhport,
tusb_desc_endpoint_t const *  ep_desc 
)

Definition at line 707 of file dcd_musb.c.

◆ dcd_edpt_iso_alloc()

bool dcd_edpt_iso_alloc ( uint8_t  rhport,
uint8_t  ep_addr,
uint16_t  largest_packet_size 
)

Definition at line 697 of file dcd_musb.c.

◆ dcd_edpt_open()

bool dcd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  ep_desc 
)

Definition at line 665 of file dcd_musb.c.

◆ dcd_edpt_stall()

void dcd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 813 of file dcd_musb.c.

◆ dcd_edpt_xfer()

bool dcd_edpt_xfer ( uint8_t  rhport,
uint8_t  ep_addr,
uint8_t *  buffer,
uint16_t  total_bytes 
)

Definition at line 775 of file dcd_musb.c.

◆ dcd_edpt_xfer_fifo()

bool dcd_edpt_xfer_fifo ( uint8_t  rhport,
uint8_t  ep_addr,
tu_fifo_t ff,
uint16_t  total_bytes 
)

Definition at line 797 of file dcd_musb.c.

◆ dcd_init()

bool dcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 585 of file dcd_musb.c.

◆ dcd_int_disable()

void dcd_int_disable ( uint8_t  rhport)

Definition at line 604 of file dcd_musb.c.

◆ dcd_int_enable()

void dcd_int_enable ( uint8_t  rhport)

Definition at line 600 of file dcd_musb.c.

◆ dcd_int_handler()

void dcd_int_handler ( uint8_t  rhport)

Definition at line 855 of file dcd_musb.c.

◆ dcd_remote_wakeup()

void dcd_remote_wakeup ( uint8_t  rhport)

Definition at line 623 of file dcd_musb.c.

◆ dcd_set_address()

void dcd_set_address ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 609 of file dcd_musb.c.

◆ dcd_sof_enable()

void dcd_sof_enable ( uint8_t  rhport,
bool  en 
)

Definition at line 648 of file dcd_musb.c.

◆ edpt0_xfer()

static bool edpt0_xfer ( uint8_t  rhport,
uint8_t  ep_addr,
uint8_t *  buffer,
uint16_t  total_bytes 
)
static

Definition at line 347 of file dcd_musb.c.

◆ edpt_n_xfer()

static bool edpt_n_xfer ( uint8_t  rhport,
uint8_t  ep_addr,
uint8_t *  buffer,
uint16_t  total_bytes 
)
static

Definition at line 326 of file dcd_musb.c.

◆ handle_xfer_in()

static bool handle_xfer_in ( uint8_t  rhport,
uint_fast8_t  ep_addr 
)
static

Definition at line 259 of file dcd_musb.c.

◆ handle_xfer_out()

static bool handle_xfer_out ( uint8_t  rhport,
uint_fast8_t  ep_addr 
)
static

Definition at line 292 of file dcd_musb.c.

◆ hwfifo_byte2size()

static TU_ATTR_ALWAYS_INLINE uint8_t hwfifo_byte2size ( uint16_t  nbytes)
inlinestatic

Definition at line 100 of file dcd_musb.c.

◆ hwfifo_config()

static TU_ATTR_ALWAYS_INLINE bool hwfifo_config ( musb_regs_t musb,
unsigned  epnum,
unsigned  is_rx,
unsigned  mps,
bool  double_packet 
)
inlinestatic

Definition at line 114 of file dcd_musb.c.

◆ hwfifo_flush()

static TU_ATTR_ALWAYS_INLINE void hwfifo_flush ( musb_regs_t musb,
unsigned  epnum,
unsigned  is_rx,
bool  clear_dtog 
)
inlinestatic

Definition at line 161 of file dcd_musb.c.

◆ hwfifo_reset()

static TU_ATTR_ALWAYS_INLINE void hwfifo_reset ( musb_regs_t musb,
unsigned  epnum,
unsigned  is_rx 
)
inlinestatic

Definition at line 108 of file dcd_musb.c.

◆ pipe_read_packet()

static void pipe_read_packet ( void *  buf,
volatile void *  fifo,
unsigned  len 
)
static

Definition at line 192 of file dcd_musb.c.

◆ pipe_read_write_packet_ff()

static void pipe_read_write_packet_ff ( tu_fifo_t f,
volatile void *  fifo,
unsigned  len,
unsigned  dir 
)
static

Definition at line 211 of file dcd_musb.c.

◆ pipe_write_packet()

static void pipe_write_packet ( void *  buf,
volatile void *  fifo,
unsigned  len 
)
static

Definition at line 173 of file dcd_musb.c.

◆ print_musb_info()

void print_musb_info ( musb_regs_t musb_regs)

Definition at line 565 of file dcd_musb.c.

◆ process_bus_reset()

static void process_bus_reset ( uint8_t  rhport)
static

Definition at line 535 of file dcd_musb.c.

◆ process_edpt_n()

static void process_edpt_n ( uint8_t  rhport,
uint_fast8_t  ep_addr 
)
static

Definition at line 500 of file dcd_musb.c.

◆ process_ep0()

static void process_ep0 ( uint8_t  rhport)
static

Definition at line 415 of file dcd_musb.c.

◆ process_setup_packet()

static void process_setup_packet ( uint8_t  rhport)
static

Definition at line 235 of file dcd_musb.c.

Variable Documentation

◆ _dcd

dcd_data_t _dcd
static

Definition at line 84 of file dcd_musb.c.

◆ alloced_fifo_bytes

uint32_t alloced_fifo_bytes
static

Definition at line 97 of file dcd_musb.c.