1// Copyright 2016 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#pragma once
6
7#include <zircon/types.h>
8
9#include "xhci.h"
10
11typedef struct xhci xhci_t;
12
13typedef void (*xhci_transfer_complete_cb)(zx_status_t result, void* data);
14
15zx_status_t xhci_queue_transfer(xhci_t* xhci, usb_request_t* req);
16int xhci_control_request(xhci_t* xhci, uint32_t slot_id, uint8_t request_type, uint8_t request,
17                         uint16_t value, uint16_t index, void* data, uint16_t length);
18zx_status_t xhci_get_descriptor(xhci_t* xhci, uint32_t slot_id, uint8_t type, uint16_t value,
19                                uint16_t index, void* data, uint16_t length);
20void xhci_handle_transfer_event(xhci_t* xhci, xhci_trb_t* trb);
21
22zx_status_t xhci_reset_endpoint(xhci_t* xhci, uint32_t slot_id, uint8_t ep_address);
23zx_status_t xhci_cancel_transfers(xhci_t* xhci, uint32_t slot_id, uint32_t ep_index);
24