source: mainline/uspace/drv/bus/usb/vhc/vhcd.h@ d369b3b

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since d369b3b was d369b3b, checked in by Ondřej Hlavatý <aearsis@…>, 8 years ago

usb2_bus: no longer be a bus

As the number of implemented functions got to 3, it's not so beneficial
to inherit usb2 bus to get the functionality. Overall, four trampolines
needed to be added, which is an acceptable number.

Now, the usb2_bus has become a usb2_bus_helper, to be used as
a companion to the common bus.

This is mostly a preparation to remove the runtime binding of the bus
methods.

  • Property mode set to 100644
File size: 3.0 KB
Line 
1/*
2 * Copyright (c) 2010 Vojtech Horky
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 drvusbvhc
30 * @{
31 */
32/** @file
33 * @brief Virtual USB host controller common definitions.
34 */
35
36#ifndef VHCD_VHCD_H_
37#define VHCD_VHCD_H_
38
39#include <usbvirt/device.h>
40#include <async.h>
41#include <macros.h>
42
43#include <usb/host/hcd.h>
44#include <usb/host/usb2_bus.h>
45#include <usb/host/usb_transfer_batch.h>
46
47#define NAME "vhc"
48
49typedef struct {
50 link_t link;
51 async_sess_t *dev_sess;
52 usbvirt_device_t *dev_local;
53 bool plugged;
54 usb_address_t address;
55 fibril_mutex_t guard;
56 list_t transfer_queue;
57} vhc_virtdev_t;
58
59typedef struct {
60 hc_device_t base;
61
62 bus_t bus;
63 usb2_bus_helper_t bus_helper;
64
65 ddf_fun_t *virtual_fun;
66 list_t devices;
67 fibril_mutex_t guard;
68 usbvirt_device_t hub;
69} vhc_data_t;
70
71typedef struct {
72 usb_transfer_batch_t batch;
73 link_t link;
74} vhc_transfer_t;
75
76static inline vhc_data_t *hcd_to_vhc(hc_device_t *hcd)
77{
78 assert(hcd);
79 return (vhc_data_t *) hcd;
80}
81
82static inline vhc_data_t *bus_to_vhc(bus_t *bus)
83{
84 assert(bus);
85 return member_to_inst(bus, vhc_data_t, bus);
86}
87
88void on_client_close(ddf_fun_t *fun);
89void default_connection_handler(ddf_fun_t *fun, ipc_callid_t icallid,
90 ipc_call_t *icall);
91
92int vhc_virtdev_plug(vhc_data_t *, async_sess_t *, uintptr_t *);
93int vhc_virtdev_plug_local(vhc_data_t *, usbvirt_device_t *, uintptr_t *);
94int vhc_virtdev_plug_hub(vhc_data_t *, usbvirt_device_t *, uintptr_t *, usb_address_t address);
95void vhc_virtdev_unplug(vhc_data_t *, uintptr_t);
96
97int vhc_init(vhc_data_t *);
98int vhc_schedule(usb_transfer_batch_t *);
99int vhc_transfer_queue_processor(void *arg);
100
101#endif
102
103/**
104 * @}
105 */
Note: See TracBrowser for help on using the repository browser.