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

Go to the source code of this file.

Classes

struct  TU_ATTR_PACKED
 AUDIO Channel Cluster Descriptor (4.1) More...
 
struct  hcd_data_t
 

Typedefs

typedef TU_ATTR_PACKED_BEGIN TU_ATTR_BIT_FIELD_ORDER_BEGIN union TU_ATTR_PACKED hw_fifo_t
 
typedef struct TU_ATTR_PACKED pipe_state_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 * addr_to_pipectr (uint8_t rhport, uint8_t dev_addr, 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 (void *buf, volatile void *fifo, unsigned len)
 
static void pipe_read_packet (void *buf, volatile void *fifo, unsigned 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 bool process_pipe0_xfer (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, void *buffer, uint16_t buflen)
 
static bool process_pipe_xfer (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, void *buffer, uint16_t buflen)
 
static bool process_edpt_xfer (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, void *buffer, uint16_t buflen)
 
static void process_pipe0_bemp (uint8_t rhport)
 
static void process_pipe_nrdy (uint8_t rhport, unsigned num)
 
static void process_pipe_brdy (uint8_t rhport, unsigned num)
 
static uint32_t disable_interrupt (void)
 
static void enable_interrupt (uint32_t pswi)
 
bool hcd_init (uint8_t rhport, const tusb_rhport_init_t *rh_init)
 
void hcd_int_enable (uint8_t rhport)
 
void hcd_int_disable (uint8_t rhport)
 
uint32_t hcd_frame_number (uint8_t rhport)
 
bool hcd_port_connect_status (uint8_t rhport)
 
void hcd_port_reset (uint8_t rhport)
 
void hcd_port_reset_end (uint8_t rhport)
 
tusb_speed_t hcd_port_speed_get (uint8_t rhport)
 
void hcd_device_close (uint8_t rhport, uint8_t dev_addr)
 
bool hcd_setup_send (uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet[8])
 
bool hcd_edpt_open (uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const *ep_desc)
 
bool hcd_edpt_xfer (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t *buffer, uint16_t buflen)
 
bool hcd_edpt_abort_xfer (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr)
 
bool hcd_edpt_clear_stall (uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr)
 
static TU_ATTR_ALWAYS_INLINE unsigned __builtin_ctz (unsigned int value)
 
void hcd_int_handler (uint8_t rhport, bool in_isr)
 

Variables

static hcd_data_t _hcd
 

Typedef Documentation

◆ hw_fifo_t

typedef TU_ATTR_PACKED_BEGIN TU_ATTR_BIT_FIELD_ORDER_BEGIN union TU_ATTR_PACKED hw_fifo_t

◆ pipe_state_t

typedef struct TU_ATTR_PACKED pipe_state_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PIPE_COUNT 

Definition at line 48 of file hcd_rusb2.c.

Function Documentation

◆ __builtin_ctz()

static TU_ATTR_ALWAYS_INLINE unsigned __builtin_ctz ( unsigned int  value)
inlinestatic

Definition at line 762 of file hcd_rusb2.c.

◆ addr_to_pipectr()

static volatile uint16_t * addr_to_pipectr ( uint8_t  rhport,
uint8_t  dev_addr,
unsigned  ep_addr 
)
static

Definition at line 137 of file hcd_rusb2.c.

◆ disable_interrupt()

static uint32_t disable_interrupt ( void  )
static

Definition at line 446 of file hcd_rusb2.c.

◆ edpt0_max_packet_size()

static uint16_t edpt0_max_packet_size ( rusb2_reg_t rusb)
static

Definition at line 151 of file hcd_rusb2.c.

◆ edpt_max_packet_size()

static uint16_t edpt_max_packet_size ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 156 of file hcd_rusb2.c.

◆ enable_interrupt()

static void enable_interrupt ( uint32_t  pswi)
static

Definition at line 459 of file hcd_rusb2.c.

◆ find_pipe()

static unsigned find_pipe ( unsigned  xfer_type)
static

Definition at line 100 of file hcd_rusb2.c.

◆ get_pipectr()

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

Definition at line 119 of file hcd_rusb2.c.

◆ get_pipetre()

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

Definition at line 128 of file hcd_rusb2.c.

◆ hcd_device_close()

void hcd_device_close ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 590 of file hcd_rusb2.c.

◆ hcd_edpt_abort_xfer()

bool hcd_edpt_abort_xfer ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr 
)

Definition at line 731 of file hcd_rusb2.c.

◆ hcd_edpt_clear_stall()

bool hcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr 
)

Definition at line 739 of file hcd_rusb2.c.

◆ hcd_edpt_open()

bool hcd_edpt_open ( uint8_t  rhport,
uint8_t  dev_addr,
tusb_desc_endpoint_t const *  ep_desc 
)

Definition at line 654 of file hcd_rusb2.c.

◆ hcd_edpt_xfer()

bool hcd_edpt_xfer ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr,
uint8_t *  buffer,
uint16_t  buflen 
)

Definition at line 721 of file hcd_rusb2.c.

◆ hcd_frame_number()

uint32_t hcd_frame_number ( uint8_t  rhport)

Definition at line 537 of file hcd_rusb2.c.

◆ hcd_init()

bool hcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 469 of file hcd_rusb2.c.

◆ hcd_int_disable()

void hcd_int_disable ( uint8_t  rhport)

Definition at line 533 of file hcd_rusb2.c.

◆ hcd_int_enable()

void hcd_int_enable ( uint8_t  rhport)

Definition at line 529 of file hcd_rusb2.c.

◆ hcd_int_handler()

void hcd_int_handler ( uint8_t  rhport,
bool  in_isr 
)

Definition at line 772 of file hcd_rusb2.c.

◆ hcd_port_connect_status()

bool hcd_port_connect_status ( uint8_t  rhport)

Definition at line 550 of file hcd_rusb2.c.

◆ hcd_port_reset()

void hcd_port_reset ( uint8_t  rhport)

Definition at line 555 of file hcd_rusb2.c.

◆ hcd_port_reset_end()

void hcd_port_reset_end ( uint8_t  rhport)

Definition at line 576 of file hcd_rusb2.c.

◆ hcd_port_speed_get()

tusb_speed_t hcd_port_speed_get ( uint8_t  rhport)

Definition at line 580 of file hcd_rusb2.c.

◆ hcd_setup_send()

bool hcd_setup_send ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t const  setup_packet[8] 
)

Definition at line 621 of file hcd_rusb2.c.

◆ pipe0_xfer_in()

static bool pipe0_xfer_in ( rusb2_reg_t rusb)
static

Definition at line 191 of file hcd_rusb2.c.

◆ pipe0_xfer_out()

static bool pipe0_xfer_out ( rusb2_reg_t rusb)
static

Definition at line 217 of file hcd_rusb2.c.

◆ pipe_read_packet()

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

Definition at line 184 of file hcd_rusb2.c.

◆ pipe_wait_for_ready()

static void pipe_wait_for_ready ( rusb2_reg_t rusb,
unsigned  num 
)
inlinestatic

Definition at line 162 of file hcd_rusb2.c.

◆ pipe_write_packet()

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

Definition at line 168 of file hcd_rusb2.c.

◆ pipe_xfer_in()

static bool pipe_xfer_in ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 239 of file hcd_rusb2.c.

◆ pipe_xfer_out()

static bool pipe_xfer_out ( rusb2_reg_t rusb,
unsigned  num 
)
static

Definition at line 267 of file hcd_rusb2.c.

◆ process_edpt_xfer()

static bool process_edpt_xfer ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr,
void *  buffer,
uint16_t  buflen 
)
static

Definition at line 376 of file hcd_rusb2.c.

◆ process_pipe0_bemp()

static void process_pipe0_bemp ( uint8_t  rhport)
static

Definition at line 386 of file hcd_rusb2.c.

◆ process_pipe0_xfer()

static bool process_pipe0_xfer ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr,
void *  buffer,
uint16_t  buflen 
)
static

Definition at line 295 of file hcd_rusb2.c.

◆ process_pipe_brdy()

static void process_pipe_brdy ( uint8_t  rhport,
unsigned  num 
)
static

Definition at line 417 of file hcd_rusb2.c.

◆ process_pipe_nrdy()

static void process_pipe_nrdy ( uint8_t  rhport,
unsigned  num 
)
static

Definition at line 399 of file hcd_rusb2.c.

◆ process_pipe_xfer()

static bool process_pipe_xfer ( uint8_t  rhport,
uint8_t  dev_addr,
uint8_t  ep_addr,
void *  buffer,
uint16_t  buflen 
)
static

Definition at line 337 of file hcd_rusb2.c.

Variable Documentation

◆ _hcd

hcd_data_t _hcd
static

Definition at line 89 of file hcd_rusb2.c.