void usb_stream_reset(struct usb_stream_config const *config) { config->out_desc->flags = DOEPDMA_RXBYTES(config->tx_size) | DOEPDMA_LAST | DOEPDMA_BS_HOST_RDY | DOEPDMA_IOC; config->out_desc->addr = config->rx_ram; GR_USB_DOEPDMA(config->endpoint) = (uint32_t)config->out_desc; config->in_desc->flags = DIEPDMA_LAST | DIEPDMA_BS_HOST_BSY | DIEPDMA_IOC; config->in_desc->addr = config->tx_ram; GR_USB_DIEPDMA(config->endpoint) = (uint32_t)config->in_desc; GR_USB_DOEPCTL(config->endpoint) = DXEPCTL_MPS(64) | DXEPCTL_USBACTEP | DXEPCTL_EPTYPE_BULK | DXEPCTL_CNAK | DXEPCTL_EPENA; GR_USB_DIEPCTL(config->endpoint) = DXEPCTL_MPS(64) | DXEPCTL_USBACTEP | DXEPCTL_EPTYPE_BULK | DXEPCTL_TXFNUM(config->endpoint); GR_USB_DAINTMSK |= DAINT_INEP(config->endpoint) | DAINT_OUTEP(config->endpoint); *config->is_reset = 1; /* Flush any queued data */ hook_call_deferred(config->deferred_tx, 0); hook_call_deferred(config->deferred_rx, 0); }
static void hid_reset(void) { hid_ep_desc.flags = DIEPDMA_LAST | DIEPDMA_BS_HOST_BSY | DIEPDMA_IOC; hid_ep_desc.addr = hid_ep_buf; GR_USB_DIEPDMA(USB_EP_HID_KEYBOARD) = (uint32_t)&hid_ep_desc; GR_USB_DIEPCTL(USB_EP_HID_KEYBOARD) = DXEPCTL_MPS(HID_REPORT_SIZE) | DXEPCTL_USBACTEP | DXEPCTL_EPTYPE_INT | DXEPCTL_TXFNUM(USB_EP_HID_KEYBOARD); GR_USB_DAINTMSK |= DAINT_INEP(USB_EP_HID_KEYBOARD); }
static void ep_reset(void) { ep_out_desc.flags = DOEPDMA_RXBYTES(USB_MAX_PACKET_SIZE) | DOEPDMA_LAST | DOEPDMA_BS_HOST_RDY | DOEPDMA_IOC; ep_out_desc.addr = ep_buf_rx; GR_USB_DOEPDMA(USB_EP_BLOB) = (uint32_t)&ep_out_desc; ep_in_desc.flags = DIEPDMA_LAST | DIEPDMA_BS_HOST_BSY | DIEPDMA_IOC; ep_in_desc.addr = ep_buf_tx; GR_USB_DIEPDMA(USB_EP_BLOB) = (uint32_t)&ep_in_desc; GR_USB_DOEPCTL(USB_EP_BLOB) = DXEPCTL_MPS(64) | DXEPCTL_USBACTEP | DXEPCTL_EPTYPE_BULK | DXEPCTL_CNAK | DXEPCTL_EPENA; GR_USB_DIEPCTL(USB_EP_BLOB) = DXEPCTL_MPS(64) | DXEPCTL_USBACTEP | DXEPCTL_EPTYPE_BULK | DXEPCTL_TXFNUM(USB_EP_BLOB); GR_USB_DAINTMSK |= (1<<USB_EP_BLOB) | (1 << (USB_EP_BLOB+16)); is_reset = 1; /* Flush any queued data */ hook_call_deferred(tx_fifo_handler, 0); hook_call_deferred(rx_fifo_handler, 0); }