| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library ddk.protocol.usb.bus; |
| |
| using zx; |
| using ddk.driver; |
| using ddk.protocol.usb.hub; |
| using zircon.hw.usb; |
| using zircon.hw.usb.hub; |
| |
| enum UsbSpeed : uint32 { |
| }; |
| |
| [Layout = "ddk-protocol"] |
| protocol UsbBus { |
| /// Configures a new hub based on its USB hub descriptor. |
| ConfigureHub(ddk.driver.ZxDevice? hub_device, UsbSpeed speed, |
| zircon.hw.usb.hub.UsbHubDescriptor desc, bool multi_tt) -> (zx.status s); |
| /// Informs the USB bus that a new device has been added. |
| DeviceAdded(ddk.driver.ZxDevice? hub_device, uint32 port, UsbSpeed speed) -> (zx.status s); |
| /// Informs the USB bus that a device has been removed. |
| DeviceRemoved(ddk.driver.ZxDevice? hub_device, uint32 port) -> (zx.status s); |
| /// Used by USB hub driver to register its USB hub protocol with the USB bus driver. |
| SetHubInterface(ddk.driver.ZxDevice? usb_device, ddk.protocol.usb.hub.UsbHubInterface hub) |
| -> (zx.status s); |
| }; |
| |
| /// Interface for use by the HCI controller to use to notify when devices are added and removed. |
| [Layout = "ddk-interface"] |
| protocol UsbBusInterface { |
| /// Notifies the USB bus driver that a new device has been added. |
| AddDevice(uint32 device_id, uint32 hub_id, UsbSpeed speed) -> (zx.status s); |
| /// Notifies the USB bus driver that a device has been removed. |
| RemoveDevice(uint32 device_id) -> (zx.status s); |
| /// Used by the HCI controller to reset a port on a USB hub. |
| ResetPort(uint32 hub_id, uint32 port, bool enumerating) -> (zx.status s); |
| /// Used by the HCI controller to reinitialize a device after it has been reset. |
| ReinitializeDevice(uint32 device_id) -> (zx.status s); |
| }; |