Embedded Xinu Operating System
An ongoing research project and educational operating system.
 All Data Structures Files Functions Variables Typedefs Enumerations Macros Groups Pages
Data Fields
dwc_regs::dwc_host_channel::dwc_host_channel_split_control Union Reference

#include <usb_dwc_regs.h>

Data Fields

uint32_t val
 
struct {
   uint32_t   port_address: 7
 
   uint32_t   hub_address: 7
 
   uint32_t   transaction_position: 2
 
   uint32_t   complete_split: 1
 
   uint32_t   reserved: 14
 
   uint32_t   split_enable: 1
 
}; 
 

Detailed Description

Channel Split Control Register -

This register is used to set up Split Transactions for communicating with low or full-speed devices attached to a high-speed hub. When doing so, set split_enable to 1 and the other fields as documented. Otherwise, software must clear this register before starting the transfer.

Like the Channel Characteristics register, this register only needs to be programmed one time if the channel is enabled multiple times to send all the packets of a single transfer.

Field Documentation

uint32_t dwc_regs::dwc_host_channel::dwc_host_channel_split_control::complete_split

0: Do a Start Split transaction 1: Do a Complete Split transaction.

When split transactions are enabled, this must be programmed by software before enabling the channel. Note that you must begin with a Start Split transaction and alternate this bit for each transaction until the transfer is complete.

uint32_t dwc_regs::dwc_host_channel::dwc_host_channel_split_control::hub_address

USB device address of the high-speed hub that acts as the Transaction Translator for this low or full-speed device. This is not necessarily the hub the device is physically connected to, since that could be a full-speed or low-speed hub. Instead, software must walk up the USB device tree (towards the root hub) until a high-speed hub is found and use its device address here.

uint32_t dwc_regs::dwc_host_channel::dwc_host_channel_split_control::port_address

0-based index of the port on the high-speed hub on which the low or full-speed device is attached.

uint32_t dwc_regs::dwc_host_channel::dwc_host_channel_split_control::split_enable

Set to 1 to enable Split Transactions.

uint32_t dwc_regs::dwc_host_channel::dwc_host_channel_split_control::transaction_position

TODO: what exactly does this do?


The documentation for this union was generated from the following file: