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

Go to the source code of this file.

Classes

struct  pipe_state_t
 
struct  dcd_data_t
 

Enumerations

enum  { PIPE_COUNT = 10 }
 

Functions

static unsigned find_pipe (unsigned xfer_type)
 
static volatile uint16_t * get_pipectr (rusb2_reg_t *rusb, unsigned num)
 
static volatile reg_pipetre_tget_pipetre (rusb2_reg_t *rusb, unsigned num)
 
static volatile uint16_t * ep_addr_to_pipectr (uint8_t rhport, unsigned ep_addr)
 
static uint16_t edpt0_max_packet_size (rusb2_reg_t *rusb)
 
static uint16_t edpt_max_packet_size (rusb2_reg_t *rusb, unsigned num)
 
static void pipe_wait_for_ready (rusb2_reg_t *rusb, unsigned num)
 
static void pipe_write_packet (rusb2_reg_t *rusb, void *buf, volatile void *fifo, unsigned len)
 
static void pipe_read_packet (rusb2_reg_t *rusb, void *buf, volatile void *fifo, unsigned len)
 
static void pipe_write_packet_ff (rusb2_reg_t *rusb, tu_fifo_t *f, volatile void *fifo, uint16_t total_len)
 
static void pipe_read_packet_ff (rusb2_reg_t *rusb, tu_fifo_t *f, volatile void *fifo, uint16_t total_len)
 
static bool pipe0_xfer_in (rusb2_reg_t *rusb)
 
static bool pipe0_xfer_out (rusb2_reg_t *rusb)
 
static bool pipe_xfer_in (rusb2_reg_t *rusb, unsigned num)
 
static bool pipe_xfer_out (rusb2_reg_t *rusb, unsigned num)
 
static void process_setup_packet (uint8_t rhport)
 
static void process_status_completion (uint8_t rhport)
 
static bool process_pipe0_xfer (rusb2_reg_t *rusb, int buffer_type, uint8_t ep_addr, void *buffer, uint16_t total_bytes)
 
static bool process_pipe_xfer (rusb2_reg_t *rusb, int buffer_type, uint8_t ep_addr, void *buffer, uint16_t total_bytes)
 
static bool process_edpt_xfer (rusb2_reg_t *rusb, int buffer_type, uint8_t ep_addr, void *buffer, uint16_t total_bytes)
 
static void process_pipe0_bemp (uint8_t rhport)
 
static void process_pipe_brdy (uint8_t rhport, unsigned num)
 
static void process_bus_reset (uint8_t rhport)
 
static void process_set_address (uint8_t rhport)
 
static uint32_t disable_interrupt (void)
 
static void enable_interrupt (uint32_t pswi)
 
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)
 
void dcd_edpt_close_all (uint8_t rhport)
 
void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr)
 
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)
 
static TU_ATTR_ALWAYS_INLINE unsigned __builtin_ctz (unsigned int value)
 
void dcd_int_handler (uint8_t rhport)
 

Variables

static dcd_data_t _dcd
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PIPE_COUNT 

Definition at line 56 of file dcd_rusb2.c.

Function Documentation

◆ __builtin_ctz()

static TU_ATTR_ALWAYS_INLINE unsigned __builtin_ctz ( unsigned int  value)
inlinestatic

Definition at line 923 of file dcd_rusb2.c.

◆ dcd_connect()

void dcd_connect ( uint8_t  rhport)

Definition at line 745 of file dcd_rusb2.c.

◆ dcd_disconnect()

void dcd_disconnect ( uint8_t  rhport)

Definition at line 755 of file dcd_rusb2.c.

◆ dcd_edpt_clear_stall()

void dcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 897 of file dcd_rusb2.c.

◆ dcd_edpt_close()

void dcd_edpt_close ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 846 of file dcd_rusb2.c.

◆ dcd_edpt_close_all()

void dcd_edpt_close_all ( uint8_t  rhport)

Definition at line 834 of file dcd_rusb2.c.

◆ dcd_edpt_open()

bool dcd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  ep_desc 
)

Definition at line 771 of file dcd_rusb2.c.

◆ dcd_edpt_stall()

void dcd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 886 of file dcd_rusb2.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 862 of file dcd_rusb2.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 873 of file dcd_rusb2.c.

◆ dcd_init()

bool dcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 660 of file dcd_rusb2.c.

◆ dcd_int_disable()

void dcd_int_disable ( uint8_t  rhport)

Definition at line 730 of file dcd_rusb2.c.

◆ dcd_int_enable()

void dcd_int_enable ( uint8_t  rhport)

Definition at line 726 of file dcd_rusb2.c.

◆ dcd_int_handler()

void dcd_int_handler ( uint8_t  rhport)

Definition at line 933 of file dcd_rusb2.c.

◆ dcd_remote_wakeup()

void dcd_remote_wakeup ( uint8_t  rhport)

Definition at line 739 of file dcd_rusb2.c.

◆ dcd_set_address()

void dcd_set_address ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 734 of file dcd_rusb2.c.

◆ dcd_sof_enable()

void dcd_sof_enable ( uint8_t  rhport,
bool  en 
)

Definition at line 761 of file dcd_rusb2.c.

◆ disable_interrupt()

static uint32_t disable_interrupt ( void  )
static

Definition at line 637 of file dcd_rusb2.c.

◆ edpt0_max_packet_size()

static uint16_t edpt0_max_packet_size ( rusb2_reg_t rusb)
static

Definition at line 149 of file dcd_rusb2.c.

◆ edpt_max_packet_size()

static uint16_t edpt_max_packet_size ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 153 of file dcd_rusb2.c.

◆ enable_interrupt()

static void enable_interrupt ( uint32_t  pswi)
static

Definition at line 650 of file dcd_rusb2.c.

◆ ep_addr_to_pipectr()

static volatile uint16_t * ep_addr_to_pipectr ( uint8_t  rhport,
unsigned  ep_addr 
)
static

Definition at line 136 of file dcd_rusb2.c.

◆ find_pipe()

static unsigned find_pipe ( unsigned  xfer_type)
static

Definition at line 92 of file dcd_rusb2.c.

◆ get_pipectr()

static volatile uint16_t * get_pipectr ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 120 of file dcd_rusb2.c.

◆ get_pipetre()

static volatile reg_pipetre_t * get_pipetre ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 128 of file dcd_rusb2.c.

◆ pipe0_xfer_in()

static bool pipe0_xfer_in ( rusb2_reg_t rusb)
static

Definition at line 251 of file dcd_rusb2.c.

◆ pipe0_xfer_out()

static bool pipe0_xfer_out ( rusb2_reg_t rusb)
static

Definition at line 282 of file dcd_rusb2.c.

◆ pipe_read_packet()

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

Definition at line 200 of file dcd_rusb2.c.

◆ pipe_read_packet_ff()

static void pipe_read_packet_ff ( rusb2_reg_t rusb,
tu_fifo_t f,
volatile void *  fifo,
uint16_t  total_len 
)
static

Definition at line 230 of file dcd_rusb2.c.

◆ pipe_wait_for_ready()

static void pipe_wait_for_ready ( rusb2_reg_t rusb,
unsigned  num 
)
inlinestatic

Definition at line 158 of file dcd_rusb2.c.

◆ pipe_write_packet()

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

Definition at line 168 of file dcd_rusb2.c.

◆ pipe_write_packet_ff()

static void pipe_write_packet_ff ( rusb2_reg_t rusb,
tu_fifo_t f,
volatile void *  fifo,
uint16_t  total_len 
)
static

Definition at line 212 of file dcd_rusb2.c.

◆ pipe_xfer_in()

static bool pipe_xfer_in ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 314 of file dcd_rusb2.c.

◆ pipe_xfer_out()

static bool pipe_xfer_out ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 351 of file dcd_rusb2.c.

◆ process_bus_reset()

static void process_bus_reset ( uint8_t  rhport)
static

Definition at line 553 of file dcd_rusb2.c.

◆ process_edpt_xfer()

static bool process_edpt_xfer ( rusb2_reg_t rusb,
int  buffer_type,
uint8_t  ep_addr,
void *  buffer,
uint16_t  total_bytes 
)
static

Definition at line 506 of file dcd_rusb2.c.

◆ process_pipe0_bemp()

static void process_pipe0_bemp ( uint8_t  rhport)
static

Definition at line 516 of file dcd_rusb2.c.

◆ process_pipe0_xfer()

static bool process_pipe0_xfer ( rusb2_reg_t rusb,
int  buffer_type,
uint8_t  ep_addr,
void *  buffer,
uint16_t  total_bytes 
)
static

Definition at line 422 of file dcd_rusb2.c.

◆ process_pipe_brdy()

static void process_pipe_brdy ( uint8_t  rhport,
unsigned  num 
)
static

Definition at line 527 of file dcd_rusb2.c.

◆ process_pipe_xfer()

static bool process_pipe_xfer ( rusb2_reg_t rusb,
int  buffer_type,
uint8_t  ep_addr,
void *  buffer,
uint16_t  total_bytes 
)
static

Definition at line 458 of file dcd_rusb2.c.

◆ process_set_address()

static void process_set_address ( uint8_t  rhport)
static

Definition at line 611 of file dcd_rusb2.c.

◆ process_setup_packet()

static void process_setup_packet ( uint8_t  rhport)
static

Definition at line 389 of file dcd_rusb2.c.

◆ process_status_completion()

static void process_status_completion ( uint8_t  rhport)
static

Definition at line 406 of file dcd_rusb2.c.

Variable Documentation

◆ _dcd

dcd_data_t _dcd
static

Definition at line 77 of file dcd_rusb2.c.