1 // Copyright 2018 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 "xdc.h"
8 
9 // Restarts a stopped transfer ring. All TRBs queued on the transfer ring are
10 // converted to NO-OPs, and will attempt to reschedule previously pending requests.
11 zx_status_t xdc_restart_transfer_ring_locked(xdc_t* xdc, xdc_endpoint_t* ep)
12                                              __TA_REQUIRES(xdc->lock);
13 
14 void xdc_process_transactions_locked(xdc_t* xdc, xdc_endpoint_t* ep) __TA_REQUIRES(xdc->lock);
15 
16 zx_status_t xdc_queue_transfer(xdc_t* xdc, usb_request_t* req, bool in, bool is_ctrl_msg);
17 
18 bool xdc_has_free_trbs(xdc_t* xdc, bool in);
19 
20 // This is called from the xdc_poll thread.
21 void xdc_handle_transfer_event_locked(xdc_t* xdc, xdc_poll_state_t* poll_state, xhci_trb_t* trb)
22                                       __TA_REQUIRES(xdc->lock);
23