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

Go to the source code of this file.

Classes

struct  dcd_registers_t
 USBHS hardware registers. More...
 
struct  TU_ATTR_PACKED
 AUDIO Channel Cluster Descriptor (4.1) More...
 
struct  xfer_dma_t
 
struct  dcd_data_t
 

Typedefs

typedef union TU_ATTR_PACKED ep_cmd_sts_t
 

Enumerations

enum  { NBYTES_ISO_FS_MAX = 1023 , NBYTES_ISO_HS_MAX = 1024 , NBYTES_CBI_FS_MAX = 64 , NBYTES_CBI_HS_MAX = 32767 }
 
enum  { INT_SOF_MASK = TU_BIT(30) , INT_DEVICE_STATUS_MASK = TU_BIT(31) }
 
enum  {
  DEVCMDSTAT_DEVICE_ADDR_MASK = TU_BIT(7 )-1 , DEVCMDSTAT_DEVICE_ENABLE_MASK = TU_BIT(7 ) , DEVCMDSTAT_SETUP_RECEIVED_MASK = TU_BIT(8 ) , DEVCMDSTAT_DEVICE_CONNECT_MASK = TU_BIT(16) ,
  DEVCMDSTAT_DEVICE_SUSPEND_MASK = TU_BIT(17) , DEVCMDSTAT_CONNECT_CHANGE_MASK = TU_BIT(24) , DEVCMDSTAT_SUSPEND_CHANGE_MASK = TU_BIT(25) , DEVCMDSTAT_RESET_CHANGE_MASK = TU_BIT(26) ,
  DEVCMDSTAT_VBUS_DEBOUNCED_MASK = TU_BIT(28)
}
 
enum  { DEVCMDSTAT_SPEED_SHIFT = 22 }
 
enum  {
  EPCS_TYPE = TU_BIT(26) , EPCS_RF_TV = TU_BIT(27) , EPCS_TOGGLE_RESET = TU_BIT(28) , EPCS_STALL = TU_BIT(29) ,
  EPCS_DISABLED = TU_BIT(30) , EPCS_ACTIVE = TU_BIT(31)
}
 

Functions

 TU_VERIFY_STATIC (sizeof(ep_cmd_sts_t)==4, "size is not correct")
 
CFG_TUD_MEM_SECTION TU_ATTR_ALIGNED (256)
 
static TU_ATTR_ALWAYS_INLINE uint16_t get_buf_offset (void const *buffer)
 
static TU_ATTR_ALWAYS_INLINE uint8_t ep_addr2id (uint8_t ep_addr)
 
static TU_ATTR_ALWAYS_INLINE bool ep_is_iso (ep_cmd_sts_t *ep_cs, bool is_highspeed)
 
TU_ATTR_ALWAYS_INLINE static TU_ATTR_UNUSED bool ep_is_bulk (ep_cmd_sts_t *ep_cs)
 
static TU_ATTR_ALWAYS_INLINE ep_cmd_sts_tget_ep_cs (uint8_t ep_id)
 
static TU_ATTR_ALWAYS_INLINE bool rhport_is_highspeed (uint8_t rhport)
 
static void prepare_setup_packet (uint8_t rhport)
 
static void edpt_reset (uint8_t rhport, uint8_t ep_id)
 
static void edpt_reset_all (uint8_t rhport)
 
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)
 
void dcd_edpt_stall (uint8_t rhport, uint8_t ep_addr)
 
void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr)
 
bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const *p_endpoint_desc)
 
void dcd_edpt_close_all (uint8_t rhport)
 
void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr)
 
static void prepare_ep_xfer (uint8_t rhport, uint8_t ep_id, uint16_t buf_offset, uint16_t total_bytes)
 
bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes)
 
static void bus_reset (uint8_t rhport)
 
static void process_xfer_isr (uint8_t rhport, uint32_t int_status)
 
void dcd_int_handler (uint8_t rhport)
 

Variables

 dcd_controller_t
 
static const dcd_controller_t _dcd_controller []
 

Typedef Documentation

◆ ep_cmd_sts_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NBYTES_ISO_FS_MAX 
NBYTES_ISO_HS_MAX 
NBYTES_CBI_FS_MAX 
NBYTES_CBI_HS_MAX 

Definition at line 86 of file dcd_lpc_ip3511.c.

◆ anonymous enum

anonymous enum
Enumerator
INT_SOF_MASK 
INT_DEVICE_STATUS_MASK 

Definition at line 93 of file dcd_lpc_ip3511.c.

◆ anonymous enum

anonymous enum
Enumerator
DEVCMDSTAT_DEVICE_ADDR_MASK 
DEVCMDSTAT_DEVICE_ENABLE_MASK 
DEVCMDSTAT_SETUP_RECEIVED_MASK 
DEVCMDSTAT_DEVICE_CONNECT_MASK 
DEVCMDSTAT_DEVICE_SUSPEND_MASK 
DEVCMDSTAT_CONNECT_CHANGE_MASK 
DEVCMDSTAT_SUSPEND_CHANGE_MASK 
DEVCMDSTAT_RESET_CHANGE_MASK 
DEVCMDSTAT_VBUS_DEBOUNCED_MASK 

Definition at line 98 of file dcd_lpc_ip3511.c.

◆ anonymous enum

anonymous enum
Enumerator
DEVCMDSTAT_SPEED_SHIFT 

Definition at line 111 of file dcd_lpc_ip3511.c.

◆ anonymous enum

anonymous enum
Enumerator
EPCS_TYPE 
EPCS_RF_TV 
EPCS_TOGGLE_RESET 
EPCS_STALL 
EPCS_DISABLED 
EPCS_ACTIVE 

Definition at line 120 of file dcd_lpc_ip3511.c.

Function Documentation

◆ bus_reset()

static void bus_reset ( uint8_t  rhport)
static

Definition at line 487 of file dcd_lpc_ip3511.c.

◆ dcd_connect()

void dcd_connect ( uint8_t  rhport)

Definition at line 336 of file dcd_lpc_ip3511.c.

◆ dcd_disconnect()

void dcd_disconnect ( uint8_t  rhport)

Definition at line 342 of file dcd_lpc_ip3511.c.

◆ dcd_edpt_clear_stall()

void dcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 368 of file dcd_lpc_ip3511.c.

◆ dcd_edpt_close()

void dcd_edpt_close ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 426 of file dcd_lpc_ip3511.c.

◆ dcd_edpt_close_all()

void dcd_edpt_close_all ( uint8_t  rhport)

Definition at line 417 of file dcd_lpc_ip3511.c.

◆ dcd_edpt_open()

bool dcd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  p_endpoint_desc 
)

Definition at line 379 of file dcd_lpc_ip3511.c.

◆ dcd_edpt_stall()

void dcd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 359 of file dcd_lpc_ip3511.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 467 of file dcd_lpc_ip3511.c.

◆ dcd_init()

bool dcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 292 of file dcd_lpc_ip3511.c.

◆ dcd_int_disable()

void dcd_int_disable ( uint8_t  rhport)

Definition at line 315 of file dcd_lpc_ip3511.c.

◆ dcd_int_enable()

void dcd_int_enable ( uint8_t  rhport)

Definition at line 310 of file dcd_lpc_ip3511.c.

◆ dcd_int_handler()

void dcd_int_handler ( uint8_t  rhport)

Definition at line 560 of file dcd_lpc_ip3511.c.

◆ dcd_remote_wakeup()

void dcd_remote_wakeup ( uint8_t  rhport)

Definition at line 331 of file dcd_lpc_ip3511.c.

◆ dcd_set_address()

void dcd_set_address ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 320 of file dcd_lpc_ip3511.c.

◆ dcd_sof_enable()

void dcd_sof_enable ( uint8_t  rhport,
bool  en 
)

Definition at line 348 of file dcd_lpc_ip3511.c.

◆ edpt_reset()

static void edpt_reset ( uint8_t  rhport,
uint8_t  ep_id 
)
static

Definition at line 278 of file dcd_lpc_ip3511.c.

◆ edpt_reset_all()

static void edpt_reset_all ( uint8_t  rhport)
static

Definition at line 284 of file dcd_lpc_ip3511.c.

◆ ep_addr2id()

static TU_ATTR_ALWAYS_INLINE uint8_t ep_addr2id ( uint8_t  ep_addr)
inlinestatic

Definition at line 245 of file dcd_lpc_ip3511.c.

◆ ep_is_bulk()

TU_ATTR_ALWAYS_INLINE static TU_ATTR_UNUSED bool ep_is_bulk ( ep_cmd_sts_t ep_cs)
inlinestatic

Definition at line 253 of file dcd_lpc_ip3511.c.

◆ ep_is_iso()

static TU_ATTR_ALWAYS_INLINE bool ep_is_iso ( ep_cmd_sts_t ep_cs,
bool  is_highspeed 
)
inlinestatic

Definition at line 249 of file dcd_lpc_ip3511.c.

◆ get_buf_offset()

static TU_ATTR_ALWAYS_INLINE uint16_t get_buf_offset ( void const *  buffer)
inlinestatic

Definition at line 239 of file dcd_lpc_ip3511.c.

◆ get_ep_cs()

static TU_ATTR_ALWAYS_INLINE ep_cmd_sts_t * get_ep_cs ( uint8_t  ep_id)
inlinestatic

Definition at line 257 of file dcd_lpc_ip3511.c.

◆ prepare_ep_xfer()

static void prepare_ep_xfer ( uint8_t  rhport,
uint8_t  ep_id,
uint16_t  buf_offset,
uint16_t  total_bytes 
)
static

Definition at line 435 of file dcd_lpc_ip3511.c.

◆ prepare_setup_packet()

static void prepare_setup_packet ( uint8_t  rhport)
static

Definition at line 269 of file dcd_lpc_ip3511.c.

◆ process_xfer_isr()

static void process_xfer_isr ( uint8_t  rhport,
uint32_t  int_status 
)
static

Definition at line 509 of file dcd_lpc_ip3511.c.

◆ rhport_is_highspeed()

static TU_ATTR_ALWAYS_INLINE bool rhport_is_highspeed ( uint8_t  rhport)
inlinestatic

Definition at line 261 of file dcd_lpc_ip3511.c.

◆ TU_ATTR_ALIGNED()

CFG_TUD_MEM_SECTION TU_ATTR_ALIGNED ( 256  )

Definition at line 196 of file dcd_lpc_ip3511.c.

◆ TU_VERIFY_STATIC()

TU_VERIFY_STATIC ( sizeof(ep_cmd_sts_t = =4,
"size is not correct"   
)

Variable Documentation

◆ _dcd_controller

static const dcd_controller_t _dcd_controller
static
Initial value:
= {
{ .regs = (dcd_registers_t*) USB0_BASE , .is_highspeed = false, .irqnum = USB0_IRQn, .ep_pairs = FSL_FEATURE_USB_EP_NUM },
#if defined(FSL_FEATURE_SOC_USBHSD_COUNT) && FSL_FEATURE_SOC_USBHSD_COUNT
{ .regs = (dcd_registers_t*) USBHSD_BASE, .is_highspeed = true, .irqnum = USB1_IRQn, .ep_pairs = FSL_FEATURE_USBHSD_EP_NUM }
#endif
}
USBHS hardware registers.

Definition at line 216 of file dcd_lpc_ip3511.c.

◆ dcd_controller_t

dcd_controller_t

Definition at line 212 of file dcd_lpc_ip3511.c.