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

Go to the source code of this file.

Classes

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

Typedefs

typedef uint32_t u32
 
typedef uint16_t u16
 
typedef uint8_t u8
 
typedef struct TU_ATTR_PACKED pipe_state_t
 

Functions

uint32_t board_millis (void)
 
static void usb_phy_write (int addr, int data, int len)
 
static void delay_ms (uint32_t ms)
 
static void USBC_HardwareReset (void)
 
static void USBC_PhyConfig (void)
 
static void USBC_ConfigFIFO_Base (void)
 
static unsigned int USBC_WakeUp_ClearChangeDetect (unsigned int reg_val)
 
static void USBC_EnableDpDmPullUp (void)
 
static void USBC_ForceIdToHigh (void)
 
static void USBC_ForceVbusValidToHigh (void)
 
void USBC_SelectBus (u32 io_type, u32 ep_type, u32 ep_index)
 
static void USBC_SelectActiveEp (u8 ep_index)
 
static u8 USBC_GetActiveEp (void)
 
static void __USBC_Dev_ep0_SendStall (void)
 
static void __USBC_Dev_ep0_ClearStall (void)
 
static void USBC_Dev_Ctrl_ClearSetupEnd (void)
 
static void USBC_Dev_SetAddress (u8 address)
 
static void __USBC_Dev_Tx_SendStall (void)
 
static u32 __USBC_Dev_Tx_IsEpStall (void)
 
static void __USBC_Dev_Tx_ClearStall (void)
 
static void __USBC_Dev_Rx_SendStall (void)
 
static u32 __USBC_Dev_Rx_IsEpStall (void)
 
static void __USBC_Dev_Rx_ClearStall (void)
 
static tusb_speed_t USBC_Dev_QueryTransferMode (void)
 
static void __USBC_Dev_ep0_ReadDataHalf (void)
 
static void __USBC_Dev_ep0_ReadDataComplete (void)
 
static void __USBC_Dev_ep0_WriteDataHalf (void)
 
static void __USBC_Dev_ep0_WriteDataComplete (void)
 
static void __USBC_Dev_Tx_WriteDataComplete (void)
 
static void __USBC_Dev_Rx_ReadDataComplete (void)
 
static u32 __USBC_Dev_Rx_IsReadDataReady (void)
 
static void USBC_INT_EnableTxEp (u8 ep_index)
 
static void USBC_INT_EnableRxEp (u8 ep_index)
 
static void USBC_INT_DisableTxEp (u8 ep_index)
 
static void USBC_INT_DisableRxEp (u8 ep_index)
 
static free_block_tfind_containing_block (free_block_t *beg, free_block_t *end, uint_fast16_t addr)
 
static int update_free_block_list (free_block_t *blks, unsigned num, uint_fast16_t addr, uint_fast16_t size)
 
static unsigned free_block_size (free_block_t const *blk)
 
static void print_block_list (free_block_t const *blk, unsigned num)
 
static unsigned find_free_memory (uint_fast16_t size_in_log2_minus3)
 
static void pipe_write_packet (void *buff, volatile void *fifo, unsigned cnt)
 
static void pipe_read_packet (void *buff, volatile void *fifo, unsigned cnt)
 
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 (uint_fast8_t ep_addr)
 
static bool handle_xfer_out (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)
 
static void usb_isr_handler (void)
 
bool dcd_init (uint8_t rhport, const tusb_rhport_init_t *rh_init)
 
void dcd_connect (uint8_t rhport)
 
void dcd_disconnect (uint8_t rhport)
 
void dcd_sof_enable (uint8_t rhport, bool en)
 
void dcd_int_enable (uint8_t rhport)
 
static void musb_int_mask (void)
 
void dcd_int_disable (uint8_t rhport)
 
static void musb_int_unmask (void)
 
void dcd_set_address (uint8_t rhport, uint8_t dev_addr)
 
void dcd_remote_wakeup (uint8_t rhport)
 
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)
 
void dcd_int_handler (uint8_t rhport)
 

Variables

static CFG_TUD_MEM_ALIGN dcd_data_t _dcd
 

Typedef Documentation

◆ pipe_state_t

typedef struct TU_ATTR_PACKED pipe_state_t

◆ u16

typedef uint16_t u16

Definition at line 43 of file dcd_sunxi_musb.c.

◆ u32

typedef uint32_t u32

Definition at line 42 of file dcd_sunxi_musb.c.

◆ u8

typedef uint8_t u8

Definition at line 44 of file dcd_sunxi_musb.c.

Function Documentation

◆ __USBC_Dev_ep0_ClearStall()

static void __USBC_Dev_ep0_ClearStall ( void  )
static

Definition at line 230 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_ep0_ReadDataComplete()

static void __USBC_Dev_ep0_ReadDataComplete ( void  )
static

Definition at line 294 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_ep0_ReadDataHalf()

static void __USBC_Dev_ep0_ReadDataHalf ( void  )
static

Definition at line 289 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_ep0_SendStall()

static void __USBC_Dev_ep0_SendStall ( void  )
static

Definition at line 225 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_ep0_WriteDataComplete()

static void __USBC_Dev_ep0_WriteDataComplete ( void  )
static

Definition at line 306 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_ep0_WriteDataHalf()

static void __USBC_Dev_ep0_WriteDataHalf ( void  )
static

Definition at line 301 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Rx_ClearStall()

static void __USBC_Dev_Rx_ClearStall ( void  )
static

Definition at line 273 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Rx_IsEpStall()

static u32 __USBC_Dev_Rx_IsEpStall ( void  )
static

Definition at line 268 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Rx_IsReadDataReady()

static u32 __USBC_Dev_Rx_IsReadDataReady ( void  )
static

Definition at line 322 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Rx_ReadDataComplete()

static void __USBC_Dev_Rx_ReadDataComplete ( void  )
static

Definition at line 317 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Rx_SendStall()

static void __USBC_Dev_Rx_SendStall ( void  )
static

Definition at line 263 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Tx_ClearStall()

static void __USBC_Dev_Tx_ClearStall ( void  )
static

Definition at line 255 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Tx_IsEpStall()

static u32 __USBC_Dev_Tx_IsEpStall ( void  )
static

Definition at line 251 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Tx_SendStall()

static void __USBC_Dev_Tx_SendStall ( void  )
static

Definition at line 246 of file dcd_sunxi_musb.c.

◆ __USBC_Dev_Tx_WriteDataComplete()

static void __USBC_Dev_Tx_WriteDataComplete ( void  )
static

Definition at line 312 of file dcd_sunxi_musb.c.

◆ board_millis()

uint32_t board_millis ( void  )

◆ dcd_connect()

void dcd_connect ( uint8_t  rhport)

Definition at line 904 of file dcd_sunxi_musb.c.

◆ dcd_disconnect()

void dcd_disconnect ( uint8_t  rhport)

Definition at line 911 of file dcd_sunxi_musb.c.

◆ dcd_edpt_clear_stall()

void dcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1156 of file dcd_sunxi_musb.c.

◆ dcd_edpt_close()

void dcd_edpt_close ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1067 of file dcd_sunxi_musb.c.

◆ dcd_edpt_close_all()

void dcd_edpt_close_all ( uint8_t  rhport)

Definition at line 1043 of file dcd_sunxi_musb.c.

◆ dcd_edpt_open()

bool dcd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  ep_desc 
)

Definition at line 978 of file dcd_sunxi_musb.c.

◆ dcd_edpt_stall()

void dcd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1132 of file dcd_sunxi_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 1096 of file dcd_sunxi_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 1115 of file dcd_sunxi_musb.c.

◆ dcd_init()

bool dcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 870 of file dcd_sunxi_musb.c.

◆ dcd_int_disable()

void dcd_int_disable ( uint8_t  rhport)

Definition at line 936 of file dcd_sunxi_musb.c.

◆ dcd_int_enable()

void dcd_int_enable ( uint8_t  rhport)

Definition at line 925 of file dcd_sunxi_musb.c.

◆ dcd_int_handler()

void dcd_int_handler ( uint8_t  rhport)

Definition at line 1173 of file dcd_sunxi_musb.c.

◆ dcd_remote_wakeup()

void dcd_remote_wakeup ( uint8_t  rhport)

Definition at line 961 of file dcd_sunxi_musb.c.

◆ dcd_set_address()

void dcd_set_address ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 948 of file dcd_sunxi_musb.c.

◆ dcd_sof_enable()

void dcd_sof_enable ( uint8_t  rhport,
bool  en 
)

Definition at line 917 of file dcd_sunxi_musb.c.

◆ delay_ms()

static void delay_ms ( uint32_t  ms)
static

Definition at line 102 of file dcd_sunxi_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 665 of file dcd_sunxi_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 642 of file dcd_sunxi_musb.c.

◆ find_containing_block()

static free_block_t * find_containing_block ( free_block_t beg,
free_block_t end,
uint_fast16_t  addr 
)
inlinestatic

Definition at line 357 of file dcd_sunxi_musb.c.

◆ find_free_memory()

static unsigned find_free_memory ( uint_fast16_t  size_in_log2_minus3)
static

Definition at line 429 of file dcd_sunxi_musb.c.

◆ free_block_size()

static unsigned free_block_size ( free_block_t const *  blk)
inlinestatic

Definition at line 405 of file dcd_sunxi_musb.c.

◆ handle_xfer_in()

static bool handle_xfer_in ( uint_fast8_t  ep_addr)
static

Definition at line 581 of file dcd_sunxi_musb.c.

◆ handle_xfer_out()

static bool handle_xfer_out ( uint_fast8_t  ep_addr)
static

Definition at line 611 of file dcd_sunxi_musb.c.

◆ musb_int_mask()

static void musb_int_mask ( void  )
static

Definition at line 931 of file dcd_sunxi_musb.c.

◆ musb_int_unmask()

static void musb_int_unmask ( void  )
static

Definition at line 942 of file dcd_sunxi_musb.c.

◆ pipe_read_packet()

static void pipe_read_packet ( void *  buff,
volatile void *  fifo,
unsigned  cnt 
)
static

Definition at line 508 of file dcd_sunxi_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 535 of file dcd_sunxi_musb.c.

◆ pipe_write_packet()

static void pipe_write_packet ( void *  buff,
volatile void *  fifo,
unsigned  cnt 
)
static

Definition at line 481 of file dcd_sunxi_musb.c.

◆ print_block_list()

static void print_block_list ( free_block_t const *  blk,
unsigned  num 
)
inlinestatic

Definition at line 411 of file dcd_sunxi_musb.c.

◆ process_bus_reset()

static void process_bus_reset ( uint8_t  rhport)
static

Definition at line 847 of file dcd_sunxi_musb.c.

◆ process_edpt_n()

static void process_edpt_n ( uint8_t  rhport,
uint_fast8_t  ep_addr 
)
static

Definition at line 815 of file dcd_sunxi_musb.c.

◆ process_ep0()

static void process_ep0 ( uint8_t  rhport)
static

Definition at line 733 of file dcd_sunxi_musb.c.

◆ process_setup_packet()

static void process_setup_packet ( uint8_t  rhport)
static

Definition at line 563 of file dcd_sunxi_musb.c.

◆ update_free_block_list()

static int update_free_block_list ( free_block_t blks,
unsigned  num,
uint_fast16_t  addr,
uint_fast16_t  size 
)
inlinestatic

Definition at line 364 of file dcd_sunxi_musb.c.

◆ usb_isr_handler()

static void usb_isr_handler ( void  )
static

Definition at line 866 of file dcd_sunxi_musb.c.

◆ usb_phy_write()

static void usb_phy_write ( int  addr,
int  data,
int  len 
)
static

Definition at line 75 of file dcd_sunxi_musb.c.

◆ USBC_ConfigFIFO_Base()

static void USBC_ConfigFIFO_Base ( void  )
static

Definition at line 140 of file dcd_sunxi_musb.c.

◆ USBC_Dev_Ctrl_ClearSetupEnd()

static void USBC_Dev_Ctrl_ClearSetupEnd ( void  )
static

Definition at line 236 of file dcd_sunxi_musb.c.

◆ USBC_Dev_QueryTransferMode()

static tusb_speed_t USBC_Dev_QueryTransferMode ( void  )
static

Definition at line 281 of file dcd_sunxi_musb.c.

◆ USBC_Dev_SetAddress()

static void USBC_Dev_SetAddress ( u8  address)
static

Definition at line 241 of file dcd_sunxi_musb.c.

◆ USBC_EnableDpDmPullUp()

static void USBC_EnableDpDmPullUp ( void  )
static

Definition at line 162 of file dcd_sunxi_musb.c.

◆ USBC_ForceIdToHigh()

static void USBC_ForceIdToHigh ( void  )
static

Definition at line 171 of file dcd_sunxi_musb.c.

◆ USBC_ForceVbusValidToHigh()

static void USBC_ForceVbusValidToHigh ( void  )
static

Definition at line 180 of file dcd_sunxi_musb.c.

◆ USBC_GetActiveEp()

static u8 USBC_GetActiveEp ( void  )
static

Definition at line 220 of file dcd_sunxi_musb.c.

◆ USBC_HardwareReset()

static void USBC_HardwareReset ( void  )
static

Definition at line 112 of file dcd_sunxi_musb.c.

◆ USBC_INT_DisableRxEp()

static void USBC_INT_DisableRxEp ( u8  ep_index)
static

Definition at line 346 of file dcd_sunxi_musb.c.

◆ USBC_INT_DisableTxEp()

static void USBC_INT_DisableTxEp ( u8  ep_index)
static

Definition at line 340 of file dcd_sunxi_musb.c.

◆ USBC_INT_EnableRxEp()

static void USBC_INT_EnableRxEp ( u8  ep_index)
static

Definition at line 334 of file dcd_sunxi_musb.c.

◆ USBC_INT_EnableTxEp()

static void USBC_INT_EnableTxEp ( u8  ep_index)
static

Definition at line 328 of file dcd_sunxi_musb.c.

◆ USBC_PhyConfig()

static void USBC_PhyConfig ( void  )
static

Definition at line 126 of file dcd_sunxi_musb.c.

◆ USBC_SelectActiveEp()

static void USBC_SelectActiveEp ( u8  ep_index)
static

Definition at line 215 of file dcd_sunxi_musb.c.

◆ USBC_SelectBus()

void USBC_SelectBus ( u32  io_type,
u32  ep_type,
u32  ep_index 
)

Definition at line 189 of file dcd_sunxi_musb.c.

◆ USBC_WakeUp_ClearChangeDetect()

static unsigned int USBC_WakeUp_ClearChangeDetect ( unsigned int  reg_val)
static

Definition at line 151 of file dcd_sunxi_musb.c.

Variable Documentation

◆ _dcd

CFG_TUD_MEM_ALIGN dcd_data_t _dcd
static

Definition at line 355 of file dcd_sunxi_musb.c.