| // 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 fuchsia.hardware.usb.bus; |
| |
| using zx; |
| using fuchsia.hardware.usb.hub; |
| using fuchsia.hardware.usb.hubdescriptor; |
| |
| enum UsbSpeed : uint32 { |
| }; |
| |
| // Note: the "uint64 foo_device" parameters should be interpreted as zx_device_t*. |
| // TODO(fxb/69023): restore types. |
| [Transport = "Banjo", BanjoLayout = "ddk-protocol"] |
| protocol UsbBus { |
| /// Configures a new hub based on its USB hub descriptor. |
| ConfigureHub([InOut] uint64 hub_device, UsbSpeed speed, |
| fuchsia.hardware.usb.hubdescriptor.UsbHubDescriptor desc, bool multi_tt) -> (zx.status s); |
| /// Informs the USB bus that a new device has been added. |
| DeviceAdded([InOut] uint64 hub_device, uint32 port, UsbSpeed speed) -> (zx.status s); |
| /// Informs the USB bus that a device has been removed. |
| DeviceRemoved([InOut] uint64 hub_device, uint32 port) -> (zx.status s); |
| /// Used by USB hub driver to register its USB hub protocol with the USB bus driver. |
| SetHubInterface([InOut] uint64 usb_device, fuchsia.hardware.usb.hub.UsbHubInterface hub) |
| -> (zx.status s); |
| }; |
| |
| /// Interface for use by the HCI controller to use to notify when devices are added and removed. |
| [Transport = "Banjo", BanjoLayout = "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); |
| }; |