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

Go to the source code of this file.

Classes

struct  da146xx_dma_channel_t
 
struct  xfer_ctl_t
 

Functions

static TU_ATTR_ALIGNED (4)
 
static void set_nfsr (uint8_t val)
 
static void fill_tx_fifo (xfer_ctl_t *xfer)
 
static bool try_allocate_dma (uint8_t epnum, uint8_t dir)
 
static void start_rx_dma (volatile void *src, void *dst, uint16_t size)
 
static void start_rx_packet (xfer_ctl_t *xfer)
 
static void start_tx_dma (void *src, volatile void *dst, uint16_t size)
 
static void start_tx_packet (xfer_ctl_t *xfer)
 
static uint16_t read_rx_fifo (xfer_ctl_t *xfer, uint16_t bytes_in_fifo)
 
static void handle_ep0_rx (void)
 
static void handle_ep0_tx (void)
 
static void handle_epx_rx_ev (uint8_t ep)
 
static void handle_rx_ev (void)
 
static void handle_epx_tx_ev (xfer_ctl_t *xfer)
 
static void handle_tx_ev (void)
 
static uint32_t check_reset_end (uint32_t alt_ev)
 
static void handle_bus_reset (void)
 
static void handle_alt_ev (void)
 
static void handle_epx_tx_warn_ev (uint8_t ep)
 
static void handle_fifo_warning (void)
 
static void handle_ep0_nak (void)
 
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)
 
static TU_ATTR_ALWAYS_INLINE bool is_in_isr (void)
 
void tusb_vbus_changed (bool present)
 
bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const *desc_edpt)
 
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)
 
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

volatile EPx_REGS
 
static EPx_REGS *const ep_regs [EP_MAX]
 
struct {
   bool   vbus_present
 
   bool   init_called
 
   uint8_t   nfsr
 
   xfer_ctl_t   xfer_status [EP_MAX][2]
 
   uint8_t   dma_ep [2]
 
_dcd
 
static const tusb_desc_endpoint_t ep0OUT_desc
 
static const tusb_desc_endpoint_t ep0IN_desc
 

Function Documentation

◆ check_reset_end()

static uint32_t check_reset_end ( uint32_t  alt_ev)
static

Definition at line 670 of file dcd_da146xx.c.

◆ dcd_connect()

void dcd_connect ( uint8_t  rhport)

Definition at line 854 of file dcd_da146xx.c.

◆ dcd_disconnect()

void dcd_disconnect ( uint8_t  rhport)

Definition at line 879 of file dcd_da146xx.c.

◆ dcd_edpt_clear_stall()

void dcd_edpt_clear_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1100 of file dcd_da146xx.c.

◆ dcd_edpt_close()

void dcd_edpt_close ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 981 of file dcd_da146xx.c.

◆ dcd_edpt_close_all()

void dcd_edpt_close_all ( uint8_t  rhport)

Definition at line 970 of file dcd_da146xx.c.

◆ dcd_edpt_open()

bool dcd_edpt_open ( uint8_t  rhport,
tusb_desc_endpoint_t const *  desc_edpt 
)

Definition at line 923 of file dcd_da146xx.c.

◆ dcd_edpt_stall()

void dcd_edpt_stall ( uint8_t  rhport,
uint8_t  ep_addr 
)

Definition at line 1052 of file dcd_da146xx.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 1027 of file dcd_da146xx.c.

◆ dcd_init()

bool dcd_init ( uint8_t  rhport,
const tusb_rhport_init_t rh_init 
)

Definition at line 807 of file dcd_da146xx.c.

◆ dcd_int_disable()

void dcd_int_disable ( uint8_t  rhport)

Definition at line 826 of file dcd_da146xx.c.

◆ dcd_int_enable()

void dcd_int_enable ( uint8_t  rhport)

Definition at line 819 of file dcd_da146xx.c.

◆ dcd_int_handler()

void dcd_int_handler ( uint8_t  rhport)

Definition at line 1132 of file dcd_da146xx.c.

◆ dcd_remote_wakeup()

void dcd_remote_wakeup ( uint8_t  rhport)

Definition at line 843 of file dcd_da146xx.c.

◆ dcd_set_address()

void dcd_set_address ( uint8_t  rhport,
uint8_t  dev_addr 
)

Definition at line 833 of file dcd_da146xx.c.

◆ dcd_sof_enable()

void dcd_sof_enable ( uint8_t  rhport,
bool  en 
)

Definition at line 886 of file dcd_da146xx.c.

◆ fill_tx_fifo()

static void fill_tx_fifo ( xfer_ctl_t xfer)
static

Definition at line 285 of file dcd_da146xx.c.

◆ handle_alt_ev()

static void handle_alt_ev ( void  )
static

Definition at line 720 of file dcd_da146xx.c.

◆ handle_bus_reset()

static void handle_bus_reset ( void  )
static

Definition at line 696 of file dcd_da146xx.c.

◆ handle_ep0_nak()

static void handle_ep0_nak ( void  )
static

Definition at line 780 of file dcd_da146xx.c.

◆ handle_ep0_rx()

static void handle_ep0_rx ( void  )
static

Definition at line 440 of file dcd_da146xx.c.

◆ handle_ep0_tx()

static void handle_ep0_tx ( void  )
static

Definition at line 493 of file dcd_da146xx.c.

◆ handle_epx_rx_ev()

static void handle_epx_rx_ev ( uint8_t  ep)
static

Definition at line 525 of file dcd_da146xx.c.

◆ handle_epx_tx_ev()

static void handle_epx_tx_ev ( xfer_ctl_t xfer)
static

Definition at line 613 of file dcd_da146xx.c.

◆ handle_epx_tx_warn_ev()

static void handle_epx_tx_warn_ev ( uint8_t  ep)
static

Definition at line 757 of file dcd_da146xx.c.

◆ handle_fifo_warning()

static void handle_fifo_warning ( void  )
static

Definition at line 762 of file dcd_da146xx.c.

◆ handle_rx_ev()

static void handle_rx_ev ( void  )
static

Definition at line 603 of file dcd_da146xx.c.

◆ handle_tx_ev()

static void handle_tx_ev ( void  )
static

Definition at line 660 of file dcd_da146xx.c.

◆ is_in_isr()

static TU_ATTR_ALWAYS_INLINE bool is_in_isr ( void  )
inlinestatic

Definition at line 894 of file dcd_da146xx.c.

◆ read_rx_fifo()

static uint16_t read_rx_fifo ( xfer_ctl_t xfer,
uint16_t  bytes_in_fifo 
)
static

Definition at line 423 of file dcd_da146xx.c.

◆ set_nfsr()

static void set_nfsr ( uint8_t  val)
static

Definition at line 276 of file dcd_da146xx.c.

◆ start_rx_dma()

static void start_rx_dma ( volatile void *  src,
void *  dst,
uint16_t  size 
)
static

Definition at line 343 of file dcd_da146xx.c.

◆ start_rx_packet()

static void start_rx_packet ( xfer_ctl_t xfer)
static

Definition at line 354 of file dcd_da146xx.c.

◆ start_tx_dma()

static void start_tx_dma ( void *  src,
volatile void *  dst,
uint16_t  size 
)
static

Definition at line 386 of file dcd_da146xx.c.

◆ start_tx_packet()

static void start_tx_packet ( xfer_ctl_t xfer)
static

Definition at line 397 of file dcd_da146xx.c.

◆ try_allocate_dma()

static bool try_allocate_dma ( uint8_t  epnum,
uint8_t  dir 
)
static

Definition at line 326 of file dcd_da146xx.c.

◆ TU_ATTR_ALIGNED()

static TU_ATTR_ALIGNED ( )
static

< (@ 0x00000080) Endpoint Control 0 Register

< (@ 0x000000A0) Endpoint Control Register 1

< (@ 0x000000C0) Endpoint Control Register 3

< (@ 0x000000E0) Endpoint Control Register 5

< (@ 0x00000084) Transmit Data 0 Register

< (@ 0x000000A4) Transmit Data Register 1

< (@ 0x000000C4) Transmit Data Register 2

< (@ 0x000000E4) Transmit Data Register 3

< (@ 0x00000088) Transmit Status 0 Register

< (@ 0x000000A8) Transmit Status Register 1

< (@ 0x000000C8) Transmit Status Register 2

< (@ 0x000000E8) Transmit Status Register 3

< (@ 0x0000008C) Transmit command 0 Register

< (@ 0x000000AC) Transmit Command Register 1

< (@ 0x000000CC) Transmit Command Register 2

< (@ 0x000000EC) Transmit Command Register 3

< (@ 0x00000090) EP0 INNAK and OUTNAK Register

< (@ 0x000000B0) Endpoint Control Register 2

< (@ 0x000000D0) Endpoint Control Register 4

< (@ 0x000000F0) Endpoint Control Register 6

< (@ 0x00000094) Receive Data 0 Register

< (@ 0x000000B4) Receive Data Register,1

< (@ 0x000000D4) Receive Data Register 2

< (@ 0x000000F4) Receive Data Register 3

< (@ 0x00000098) Receive Status 0 Register

< (@ 0x000000B8) Receive Status Register 1

< (@ 0x000000D8) Receive Status Register 2

< (@ 0x000000F8) Receive Status Register 3

< (@ 0x0000009C) Receive Command 0 Register

< (@ 0x000000BC) Receive Command Register 1

< (@ 0x000000DC) Receive Command Register 2

< (@ 0x000000FC) Receive Command Register 3

Definition at line 75 of file dcd_da146xx.c.

◆ tusb_vbus_changed()

void tusb_vbus_changed ( bool  present)

Definition at line 899 of file dcd_da146xx.c.

Variable Documentation

◆ 

struct { ... } _dcd
Initial value:
=
{
.vbus_present = false,
.init_called = false,
}

◆ dma_ep

uint8_t dma_ep[2]

Definition at line 237 of file dcd_da146xx.c.

◆ ep0IN_desc

const tusb_desc_endpoint_t ep0IN_desc
static
Initial value:
=
{
.bLength = sizeof(tusb_desc_endpoint_t),
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = 0x80,
.bmAttributes = { .xfer = TUSB_XFER_CONTROL },
.wMaxPacketSize = CFG_TUD_ENDPOINT0_SIZE,
.bInterval = 0
}
@ TUSB_XFER_CONTROL
Definition: tusb_types.h:59
struct TU_ATTR_PACKED tusb_desc_endpoint_t
USB Endpoint Descriptor.
@ TUSB_DESC_ENDPOINT
Definition: tusb_types.h:97

Definition at line 263 of file dcd_da146xx.c.

◆ ep0OUT_desc

const tusb_desc_endpoint_t ep0OUT_desc
static
Initial value:
=
{
.bLength = sizeof(tusb_desc_endpoint_t),
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = 0x00,
.bmAttributes = { .xfer = TUSB_XFER_CONTROL },
.wMaxPacketSize = CFG_TUD_ENDPOINT0_SIZE,
.bInterval = 0
}

Definition at line 252 of file dcd_da146xx.c.

◆ ep_regs

EPx_REGS* const ep_regs[EP_MAX]
static
Initial value:
= {
EP_REGS(USB_EPC0_REG),
EP_REGS(USB_EPC1_REG),
EP_REGS(USB_EPC3_REG),
EP_REGS(USB_EPC5_REG),
}

Definition at line 203 of file dcd_da146xx.c.

◆ EPx_REGS

volatile EPx_REGS

Definition at line 143 of file dcd_da146xx.c.

◆ init_called

bool init_called

Definition at line 233 of file dcd_da146xx.c.

◆ nfsr

uint8_t nfsr

Definition at line 234 of file dcd_da146xx.c.

◆ vbus_present

bool vbus_present

Definition at line 232 of file dcd_da146xx.c.

◆ xfer_status

xfer_ctl_t xfer_status[EP_MAX][2]

Definition at line 235 of file dcd_da146xx.c.