source: mainline/uspace/lib/drv/include/usbhc_iface.h@ 9162b27

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 9162b27 was f9d0a86, checked in by Aearsis <Hlavaty.Ondrej@…>, 8 years ago

Merge tag '0.7.1'

The merge wasn't clean, because of changes in build system. The most
significant change was partial revert of usbhc callback refactoring,
which now does not take usb transfer batch, but few named fields again.

  • Property mode set to 100644
File size: 3.1 KB
Line 
1/*
2 * Copyright (c) 2010 Vojtech Horky
3 * Copyright (c) 2017 Ondrej Hlavaty
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * - Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * - Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * - The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30/** @addtogroup libdrv
31 * @addtogroup usb
32 * @{
33 */
34/** @file
35 * @brief USB host controler interface definition. This is the interface of
36 * USB host controller function, which can be used by usb device drivers.
37 */
38
39#ifndef LIBDRV_USBHC_IFACE_H_
40#define LIBDRV_USBHC_IFACE_H_
41
42#include "ddf/driver.h"
43#include "usb_iface.h"
44#include <async.h>
45
46extern int usbhc_reserve_default_address(async_exch_t *, usb_speed_t);
47extern int usbhc_release_default_address(async_exch_t *);
48
49extern int usbhc_device_enumerate(async_exch_t *, unsigned port);
50extern int usbhc_device_remove(async_exch_t *, unsigned port);
51
52extern int usbhc_register_endpoint(async_exch_t *, usb_endpoint_desc_t *);
53extern int usbhc_unregister_endpoint(async_exch_t *, usb_endpoint_desc_t *);
54extern int usbhc_read(async_exch_t *, usb_endpoint_t, uint64_t, void *, size_t,
55 size_t *);
56extern int usbhc_write(async_exch_t *, usb_endpoint_t, uint64_t, const void *,
57 size_t);
58
59/** Callback for outgoing transfer */
60typedef int (*usbhc_iface_transfer_callback_t)(void *, int, size_t);
61
62/** USB device communication interface. */
63typedef struct {
64 int (*reserve_default_address)(ddf_fun_t *, usb_speed_t);
65 int (*release_default_address)(ddf_fun_t *);
66
67 int (*device_enumerate)(ddf_fun_t *, unsigned);
68 int (*device_remove)(ddf_fun_t *, unsigned);
69
70 int (*register_endpoint)(ddf_fun_t *, usb_endpoint_desc_t *);
71 int (*unregister_endpoint)(ddf_fun_t *, usb_endpoint_desc_t *);
72
73 int (*read)(ddf_fun_t *, usb_target_t,
74 uint64_t, char *, size_t,
75 usbhc_iface_transfer_callback_t, void *);
76 int (*write)(ddf_fun_t *, usb_target_t,
77 uint64_t, const char *, size_t,
78 usbhc_iface_transfer_callback_t, void *);
79} usbhc_iface_t;
80
81#endif
82/**
83 * @}
84 */
Note: See TracBrowser for help on using the repository browser.