source: mainline/uspace/drv/bus/usb/xhci/rh.h@ 1d758fc

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 1d758fc was 45457265, checked in by Jenda <jenda.jzqk73@…>, 8 years ago

errno_t all the things!

  • Property mode set to 100644
File size: 2.7 KB
RevLine 
[7bd99bf]1/*
2 * Copyright (c) 2017 Michal Staruch
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup drvusbxhci
30 * @{
31 */
32/** @file
33 * @brief The roothub structures abstraction.
34 */
35
36#ifndef XHCI_RH_H
37#define XHCI_RH_H
38
[20eaa82]39#include <usb/host/bus.h>
[73a5857]40#include <usb/host/usb_transfer_batch.h>
41#include <usb/host/utility.h>
[2cf28b9]42
[816335c]43#include "hw_struct/regs.h"
[2cf28b9]44#include "endpoint.h"
[816335c]45
46typedef struct xhci_hc xhci_hc_t;
[20eaa82]47typedef struct ddf_dev ddf_dev_t;
[d32d51d]48
[816335c]49/**
50 * xHCI lets the controller define speeds of ports it controls.
51 */
52typedef struct xhci_port_speed {
53 char name [4];
54 uint8_t major, minor;
55 uint64_t rx_bps, tx_bps;
[f668d60]56 usb_speed_t usb_speed;
[816335c]57} xhci_port_speed_t;
58
[867b375]59typedef struct hcd_roothub hcd_roothub_t;
[2770b66]60typedef struct xhci_bus xhci_bus_t;
[a9fcd73]61typedef struct rh_port rh_port_t;
[867b375]62
[d32d51d]63/* XHCI root hub instance */
64typedef struct {
[816335c]65 /** Host controller */
66 xhci_hc_t *hc;
67
[20eaa82]68 /* Root for the device tree */
[2cf28b9]69 xhci_device_t device;
[20eaa82]70
[eaf5e86]71 /* Number of hub ports. */
[a9fcd73]72 size_t max_ports;
[49e62998]73
[a9fcd73]74 /* Array of port structures. (size is `max_ports`) */
75 rh_port_t *ports;
[047fbc8]76
77 /* Event ring for roothub */
78 xhci_sw_ring_t event_ring;
79
[73a5857]80 joinable_fibril_t *event_worker;
[d32d51d]81} xhci_rh_t;
82
[45457265]83extern errno_t xhci_rh_init(xhci_rh_t *, xhci_hc_t *);
84extern errno_t xhci_rh_fini(xhci_rh_t *);
[7bd99bf]85
[3dd80f8]86extern void xhci_rh_set_ports_protocol(xhci_rh_t *, unsigned, unsigned, unsigned);
[19f0048]87extern void xhci_rh_start(xhci_rh_t *);
88extern void xhci_rh_stop(xhci_rh_t *rh);
[867b375]89
[7bd99bf]90#endif
[c8bb7090]91
92/**
93 * @}
94 */
Note: See TracBrowser for help on using the repository browser.