root / include / hw / input / adb.h @ 3bd88451
History | View | Annotate | Download (2.6 kB)
1 | 7a880d93 | Laurent Vivier | /*
|
---|---|---|---|
2 | 7a880d93 | Laurent Vivier | * QEMU ADB emulation shared definitions and prototypes
|
3 | 7a880d93 | Laurent Vivier | *
|
4 | 7a880d93 | Laurent Vivier | * Copyright (c) 2004-2007 Fabrice Bellard
|
5 | 7a880d93 | Laurent Vivier | * Copyright (c) 2007 Jocelyn Mayer
|
6 | 7a880d93 | Laurent Vivier | *
|
7 | 7a880d93 | Laurent Vivier | * Permission is hereby granted, free of charge, to any person obtaining a copy
|
8 | 7a880d93 | Laurent Vivier | * of this software and associated documentation files (the "Software"), to deal
|
9 | 7a880d93 | Laurent Vivier | * in the Software without restriction, including without limitation the rights
|
10 | 7a880d93 | Laurent Vivier | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
11 | 7a880d93 | Laurent Vivier | * copies of the Software, and to permit persons to whom the Software is
|
12 | 7a880d93 | Laurent Vivier | * furnished to do so, subject to the following conditions:
|
13 | 7a880d93 | Laurent Vivier | *
|
14 | 7a880d93 | Laurent Vivier | * The above copyright notice and this permission notice shall be included in
|
15 | 7a880d93 | Laurent Vivier | * all copies or substantial portions of the Software.
|
16 | 7a880d93 | Laurent Vivier | *
|
17 | 7a880d93 | Laurent Vivier | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
18 | 7a880d93 | Laurent Vivier | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
19 | 7a880d93 | Laurent Vivier | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
20 | 7a880d93 | Laurent Vivier | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
21 | 7a880d93 | Laurent Vivier | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
22 | 7a880d93 | Laurent Vivier | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
23 | 7a880d93 | Laurent Vivier | * THE SOFTWARE.
|
24 | 7a880d93 | Laurent Vivier | */
|
25 | 7a880d93 | Laurent Vivier | |
26 | 7a880d93 | Laurent Vivier | #if !defined(__ADB_H__)
|
27 | 7a880d93 | Laurent Vivier | #define __ADB_H__
|
28 | 7a880d93 | Laurent Vivier | |
29 | 83c9f4ca | Paolo Bonzini | #include "hw/qdev.h" |
30 | 84ede329 | Andreas Färber | |
31 | 7a880d93 | Laurent Vivier | #define MAX_ADB_DEVICES 16 |
32 | 7a880d93 | Laurent Vivier | |
33 | 7a880d93 | Laurent Vivier | #define ADB_MAX_OUT_LEN 16 |
34 | 7a880d93 | Laurent Vivier | |
35 | 84ede329 | Andreas Färber | typedef struct ADBBusState ADBBusState; |
36 | 7a880d93 | Laurent Vivier | typedef struct ADBDevice ADBDevice; |
37 | 7a880d93 | Laurent Vivier | |
38 | 7a880d93 | Laurent Vivier | /* buf = NULL means polling */
|
39 | 7a880d93 | Laurent Vivier | typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out, |
40 | 7a880d93 | Laurent Vivier | const uint8_t *buf, int len); |
41 | 2e4a7c9c | Andreas Färber | |
42 | 2e4a7c9c | Andreas Färber | #define TYPE_ADB_DEVICE "adb-device" |
43 | 2e4a7c9c | Andreas Färber | #define ADB_DEVICE(obj) OBJECT_CHECK(ADBDevice, (obj), TYPE_ADB_DEVICE)
|
44 | 7a880d93 | Laurent Vivier | |
45 | 7a880d93 | Laurent Vivier | struct ADBDevice {
|
46 | 2e4a7c9c | Andreas Färber | /*< private >*/
|
47 | 2e4a7c9c | Andreas Färber | DeviceState parent_obj; |
48 | 2e4a7c9c | Andreas Färber | /*< public >*/
|
49 | 2e4a7c9c | Andreas Färber | |
50 | 7a880d93 | Laurent Vivier | int devaddr;
|
51 | 7a880d93 | Laurent Vivier | int handler;
|
52 | 7a880d93 | Laurent Vivier | }; |
53 | 7a880d93 | Laurent Vivier | |
54 | 2e4a7c9c | Andreas Färber | #define ADB_DEVICE_CLASS(cls) \
|
55 | 2e4a7c9c | Andreas Färber | OBJECT_CLASS_CHECK(ADBDeviceClass, (cls), TYPE_ADB_DEVICE) |
56 | 2e4a7c9c | Andreas Färber | #define ADB_DEVICE_GET_CLASS(obj) \
|
57 | 2e4a7c9c | Andreas Färber | OBJECT_GET_CLASS(ADBDeviceClass, (obj), TYPE_ADB_DEVICE) |
58 | 2e4a7c9c | Andreas Färber | |
59 | 2e4a7c9c | Andreas Färber | typedef struct ADBDeviceClass { |
60 | 2e4a7c9c | Andreas Färber | /*< private >*/
|
61 | 2e4a7c9c | Andreas Färber | DeviceClass parent_class; |
62 | 2e4a7c9c | Andreas Färber | /*< public >*/
|
63 | 2e4a7c9c | Andreas Färber | |
64 | 2e4a7c9c | Andreas Färber | ADBDeviceRequest *devreq; |
65 | 2e4a7c9c | Andreas Färber | } ADBDeviceClass; |
66 | 2e4a7c9c | Andreas Färber | |
67 | 84ede329 | Andreas Färber | #define TYPE_ADB_BUS "apple-desktop-bus" |
68 | 84ede329 | Andreas Färber | #define ADB_BUS(obj) OBJECT_CHECK(ADBBusState, (obj), TYPE_ADB_BUS)
|
69 | 84ede329 | Andreas Färber | |
70 | 84ede329 | Andreas Färber | struct ADBBusState {
|
71 | 84ede329 | Andreas Färber | /*< private >*/
|
72 | 84ede329 | Andreas Färber | BusState parent_obj; |
73 | 84ede329 | Andreas Färber | /*< public >*/
|
74 | 84ede329 | Andreas Färber | |
75 | 2e4a7c9c | Andreas Färber | ADBDevice *devices[MAX_ADB_DEVICES]; |
76 | 7a880d93 | Laurent Vivier | int nb_devices;
|
77 | 7a880d93 | Laurent Vivier | int poll_index;
|
78 | 84ede329 | Andreas Färber | }; |
79 | 7a880d93 | Laurent Vivier | |
80 | 7a880d93 | Laurent Vivier | int adb_request(ADBBusState *s, uint8_t *buf_out,
|
81 | 7a880d93 | Laurent Vivier | const uint8_t *buf, int len); |
82 | 7a880d93 | Laurent Vivier | int adb_poll(ADBBusState *s, uint8_t *buf_out);
|
83 | 7a880d93 | Laurent Vivier | |
84 | 2e4a7c9c | Andreas Färber | #define TYPE_ADB_KEYBOARD "adb-keyboard" |
85 | 2e4a7c9c | Andreas Färber | #define TYPE_ADB_MOUSE "adb-mouse" |
86 | 7a880d93 | Laurent Vivier | |
87 | 7a880d93 | Laurent Vivier | #endif /* !defined(__ADB_H__) */ |