PROTOCOLS
UsbDci
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
AllocEndpoint
Requests the DCI driver to allocate a physical endpoint.
This is used by the peripheral manager to dynamically allocate a physical
endpoint matching the requested direction, endpoint_type, and
max_packet_size specified in EndpointAllocationRequest. This method
must only be called if GetHardwareInfo reported supports_dynamic_ep_sizing
as true.
The allocation is atomic. If the DCI driver cannot satisfy the request, it returns an error and no hardware state is modified.
Closing the UsbDci channel will automatically free all endpoints
allocated through it.
- error:
ZX_ERR_IO_NOT_PRESENT: The DCI controller is not ready to take allocation requests (for example, in controller drivers that update hardware registers during allocation, if underlying hardware conditions such as power, clocks, reset, or MMIO accessibility have not yet been met).ZX_ERR_NO_RESOURCES: No physical endpoints matching the request are available.ZX_ERR_NOT_SUPPORTED: The DCI driver does not support dynamic endpoint allocation.
Request
| Name | Type |
|---|---|
payload |
EndpointAllocationRequest
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_AllocEndpoint_Result
|
CancelAll
Cancel all pending transactions for the given endpoint.
Request
| Name | Type |
|---|---|
ep_address |
uint8
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_CancelAll_Result
|
ConfigureEndpoint
Configure and endpoint with the given configuration.
See usb20 9.6.6
Request
| Name | Type |
|---|---|
ep_descriptor |
fuchsia.hardware.usb.descriptor/UsbEndpointDescriptor
|
ss_comp_descriptor |
fuchsia.hardware.usb.descriptor/UsbSsEpCompDescriptor
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_ConfigureEndpoint_Result
|
ConnectToEndpoint
Connects to endpoint. Returns
- ZX_ERR_NOT_FOUND: if endpoint address does not exist.
- ZX_ERR_ALREADY_BOUND: if the endpoint is already bound.
Request
| Name | Type |
|---|---|
ep_addr |
uint8
|
ep |
server_end:fuchsia.hardware.usb.endpoint/Endpoint
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_ConnectToEndpoint_Result
|
DisableEndpoint
Disable the given endpoint.
Request
| Name | Type |
|---|---|
ep_address |
uint8
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_DisableEndpoint_Result
|
EndpointClearStall
Clear stall condition for the given endpoint.
See usb32 8.5.3.4
Request
| Name | Type |
|---|---|
ep_address |
uint8
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_EndpointClearStall_Result
|
EndpointSetStall
Set stall condition for the given endpoint.
See usb20 8.5.3.4
Request
| Name | Type |
|---|---|
ep_address |
uint8
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_EndpointSetStall_Result
|
FreeEndpoint
Frees a previously dynamically allocated endpoint.
Releases the physical endpoint back to the DCI driver's pool. The endpoint
must be disabled via DisableEndpoint before calling this method.
- error:
ZX_ERR_IO_NOT_PRESENT: The DCI controller is not ready or accessible to process endpoint deallocation requests.ZX_ERR_NOT_FOUND: The endpoint was not dynamically allocated.ZX_ERR_BAD_STATE: The endpoint is still active or enabled.
Request
| Name | Type |
|---|---|
ep_address |
uint8
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_FreeEndpoint_Result
|
GetHardwareInfo
Queries the DCI driver for hardware-specific endpoint limits.
This method retrieves the static endpoint configuration and capabilities of the DCI controller. It is typically called once by the peripheral manager during startup.
- error:
ZX_ERR_IO_NOT_PRESENT: The DCI controller is not ready or accessible to handle hardware queries (for example, if underlying hardware conditions such as power, clock enablement, or MMIO register accessibility have not yet been met).ZX_ERR_NOT_SUPPORTED: The DCI driver does not support hardware queries (legacy driver).
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
UsbDci_GetHardwareInfo_Result
|
SetInterface
Bind the interface as given by the child node.
Request
| Name | Type |
|---|---|
interface |
client_end:UsbDciInterface
|
Response
| Name | Type |
|---|---|
payload |
UsbDci_SetInterface_Result
|
StartController
Start running in peripheral mode. Connects the device to the host. Usually called when all functions are ready.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
UsbDci_StartController_Result
|
StopController
Stop running in peripheral mode. Disconnects the device from the host. Usually called when a function is cleared.
Request
<EMPTY>
Response
| Name | Type |
|---|---|
payload |
UsbDci_StopController_Result
|
UsbDciInterface
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
Interface for parent (typically DCI driver) to call into its child (currently usb-peripheral driver). UsbDci::Use SetInterface() to bind client_end in the parent driver.
Control
Dispatch a control transaction.
See usb20 8.5.3 and 9.6
Request
| Name | Type |
|---|---|
setup |
fuchsia.hardware.usb.descriptor/UsbSetup
|
write |
vector<uint8>:65508
|
Response
| Name | Type |
|---|---|
payload |
UsbDciInterface_Control_Result
|
SetConnected
Inform driver of current port connection state.
Request
| Name | Type |
|---|---|
is_connected |
bool
|
Response
| Name | Type |
|---|---|
payload |
UsbDciInterface_SetConnected_Result
|
SetSpeed
Inform driver of current bus speed.
Request
| Name | Type |
|---|---|
speed |
fuchsia.hardware.usb.descriptor/UsbSpeed
|
Response
| Name | Type |
|---|---|
payload |
UsbDciInterface_SetSpeed_Result
|
STRUCTS
UsbDciInterface_Control_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Field | Type | Description | Default |
|---|---|---|---|
read |
vector<uint8>
|
No default |
UsbDciInterface_SetConnected_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDciInterface_SetSpeed_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_AllocEndpoint_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Field | Type | Description | Default |
|---|---|---|---|
ep_address |
uint8
|
No default |
UsbDci_CancelAll_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_ConfigureEndpoint_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_ConnectToEndpoint_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_DisableEndpoint_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_EndpointClearStall_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_EndpointSetStall_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_FreeEndpoint_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_GetHardwareInfo_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Field | Type | Description | Default |
|---|---|---|---|
info |
DciHardwareInfo
|
No default |
UsbDci_SetInterface_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_StartController_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
UsbDci_StopController_Response
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
<EMPTY>
TABLES
DciHardwareInfo
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
Overall hardware capability summary of the DCI controller.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
endpoints |
vector<EndpointInfo>:32
|
List of physical endpoint capabilities supported by the controller. Required if |
2 |
supports_dynamic_ep_sizing |
bool
|
If true, usb-peripheral must use UsbDci.AllocEndpoint. Optional. Interpreted as false if absent. |
EndpointAllocationRequest
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
Request parameters when dynamically allocating a physical endpoint from the DCI driver.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
direction |
fuchsia.hardware.usb.descriptor/EndpointDirection
|
The required direction of the endpoint ( Required. |
2 |
endpoint_type |
fuchsia.hardware.usb.descriptor/EndpointType
|
The transfer type required for this endpoint ( Required. |
3 |
max_packet_size |
uint16
|
The maximum packet size required by this endpoint in bytes. Required. |
EndpointInfo
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
Static configuration and supported types for a physical endpoint.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
ep_address |
uint8
|
The endpoint address, as defined in USB 2.0 specification section 9.6.6. e.g., 0x81 (IN 1), 0x02 (OUT 2). Required. |
2 |
supported_types |
vector<SupportedEndpointInfo>:4
|
The transfer types supported by this physical endpoint, along with any type-specific hardware limits. Required. |
SupportedEndpointInfo
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
Hardware capability and limit information for a specific endpoint transfer type.
| Ordinal | Field | Type | Description |
|---|---|---|---|
1 |
endpoint_type |
fuchsia.hardware.usb.descriptor/EndpointType
|
The transfer type supported ( Required. |
2 |
max_packet_size_limit |
uint16
|
The maximum packet size supported for this transfer type in bytes. Required. |
3 |
min_lead_time |
uint64
|
For isochronous endpoints: minimum lead time required in number of transfers. Optional even when |
UNIONS
UsbDciInterface_Control_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDciInterface_Control_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDciInterface_SetConnected_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDciInterface_SetConnected_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDciInterface_SetSpeed_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDciInterface_SetSpeed_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_AllocEndpoint_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_AllocEndpoint_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_CancelAll_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_CancelAll_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_ConfigureEndpoint_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_ConfigureEndpoint_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_ConnectToEndpoint_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_ConnectToEndpoint_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_DisableEndpoint_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_DisableEndpoint_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_EndpointClearStall_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_EndpointClearStall_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_EndpointSetStall_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_EndpointSetStall_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_FreeEndpoint_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_FreeEndpoint_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_GetHardwareInfo_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_GetHardwareInfo_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_SetInterface_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_SetInterface_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_StartController_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_StartController_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
UsbDci_StopController_Result strict
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Ordinal | Variant | Type | Description |
|---|---|---|---|
1 |
response |
UsbDci_StopController_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
CONSTANTS
| Name | Value | Type | Description |
|---|---|---|---|
| MAX_CONTROL_REQUEST_LEN |
65508
|
uint64 |
|
| MAX_ENDPOINTS |
32
|
uint32 |
|
| MAX_SUPPORTED_TYPES |
4
|
uint32 |
SERVICES
UsbDciService
Defined in fuchsia.hardware.usb.dci/usb-dci.fidl
| Name | Type | Transport |
|---|---|---|
| device |
fuchsia.hardware.usb.dci/UsbDci
|
Channel |