sysfs.txt: add note on available attribute macros
[sfrench/cifs-2.6.git] / include / linux / adb.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Definitions for ADB (Apple Desktop Bus) support.
4  */
5 #ifndef __ADB_H
6 #define __ADB_H
7
8 #include <uapi/linux/adb.h>
9
10
11 struct adb_request {
12         unsigned char data[32];
13         int nbytes;
14         unsigned char reply[32];
15         int reply_len;
16         unsigned char reply_expected;
17         unsigned char sent;
18         unsigned char complete;
19         void (*done)(struct adb_request *);
20         void *arg;
21         struct adb_request *next;
22 };
23
24 struct adb_ids {
25         int nids;
26         unsigned char id[16];
27 };
28
29 /* Structure which encapsulates a low-level ADB driver */
30
31 struct adb_driver {
32         char name[16];
33         int (*probe)(void);
34         int (*init)(void);
35         int (*send_request)(struct adb_request *req, int sync);
36         int (*autopoll)(int devs);
37         void (*poll)(void);
38         int (*reset_bus)(void);
39 };
40
41 /* Values for adb_request flags */
42 #define ADBREQ_REPLY    1       /* expect reply */
43 #define ADBREQ_SYNC     2       /* poll until done */
44 #define ADBREQ_NOSEND   4       /* build the request, but don't send it */
45
46 /* Messages sent thru the client_list notifier. You should NOT stop
47    the operation, at least not with this version */
48 enum adb_message {
49     ADB_MSG_POWERDOWN,  /* Currently called before sleep only */
50     ADB_MSG_PRE_RESET,  /* Called before resetting the bus */
51     ADB_MSG_POST_RESET  /* Called after resetting the bus (re-do init & register) */
52 };
53 extern struct blocking_notifier_head adb_client_list;
54
55 int adb_request(struct adb_request *req, void (*done)(struct adb_request *),
56                 int flags, int nbytes, ...);
57 int adb_register(int default_id,int handler_id,struct adb_ids *ids,
58                  void (*handler)(unsigned char *, int, int));
59 int adb_unregister(int index);
60 void adb_poll(void);
61 void adb_input(unsigned char *, int, int);
62 int adb_reset_bus(void);
63
64 int adb_try_handler_change(int address, int new_id);
65 int adb_get_infos(int address, int *original_address, int *handler_id);
66
67 #endif /* __ADB_H */