blob: fcd5da672d5807006a7a11ac5d887f2dbdebff34 [file] [log] [blame]
// Copyright 2016 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.
#ifndef SRC_DEVICES_USB_DRIVERS_XHCI_XHCI_TRANSFER_H_
#define SRC_DEVICES_USB_DRIVERS_XHCI_XHCI_TRANSFER_H_
#include <zircon/types.h>
#include "xhci.h"
namespace usb_xhci {
struct xhci_t;
typedef void (*xhci_transfer_complete_cb)(zx_status_t result, void* data);
zx_status_t xhci_queue_transfer(xhci_t* xhci, usb_request_t* req);
zx_status_t xhci_control_request(xhci_t* xhci, uint32_t slot_id, uint8_t request_type,
uint8_t request, uint16_t value, uint16_t index, void* data,
uint16_t length, size_t* out_actual);
zx_status_t xhci_get_descriptor(xhci_t* xhci, uint32_t slot_id, uint8_t type, uint16_t value,
uint16_t index, void* data, uint16_t length, size_t* out_actual);
void xhci_handle_transfer_event(xhci_t* xhci, xhci_trb_t* trb);
zx_status_t xhci_reset_endpoint(xhci_t* xhci, uint32_t slot_id, uint8_t ep_address);
zx_status_t xhci_cancel_transfers(xhci_t* xhci, uint32_t slot_id, uint32_t ep_index);
} // namespace usb_xhci
#endif // SRC_DEVICES_USB_DRIVERS_XHCI_XHCI_TRANSFER_H_