xref: /openbsd-src/gnu/usr.bin/binutils/gdb/rdi-share/devices.h (revision 63addd46c1e40ca0f49488ddcdc4ab598023b0c1)
1b725ae77Skettenis /*
2b725ae77Skettenis  * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3b725ae77Skettenis  *
4b725ae77Skettenis  * This software may be freely used, copied, modified, and distributed
5b725ae77Skettenis  * provided that the above copyright notice is preserved in all copies of the
6b725ae77Skettenis  * software.
7b725ae77Skettenis  */
8b725ae77Skettenis 
9b725ae77Skettenis /* -*-C-*-
10b725ae77Skettenis  *
11*63addd46Skettenis  * $Revision: 1.3 $
12*63addd46Skettenis  *     $Date: 2004/12/27 14:00:54 $
13b725ae77Skettenis  *
14b725ae77Skettenis  *
15b725ae77Skettenis  *   Project: ANGEL
16b725ae77Skettenis  *
17b725ae77Skettenis  *     Title: Devices header file
18b725ae77Skettenis  */
19b725ae77Skettenis 
20b725ae77Skettenis #ifndef angel_devices_h
21b725ae77Skettenis #define angel_devices_h
22b725ae77Skettenis 
23b725ae77Skettenis /*
24b725ae77Skettenis  * Provides common types for using devices, and provides access to the
25b725ae77Skettenis  * device table.
26b725ae77Skettenis  */
27b725ae77Skettenis 
28b725ae77Skettenis #include "angel.h"
29b725ae77Skettenis #include "buffers.h"
30b725ae77Skettenis 
31b725ae77Skettenis /* General purpose constants, macros, enums, typedefs */
32b725ae77Skettenis 
33b725ae77Skettenis /* a non-enum holder for device IDs */
34b725ae77Skettenis typedef unsigned int DeviceID;
35b725ae77Skettenis 
36b725ae77Skettenis /* device error codes */
37b725ae77Skettenis typedef enum DevError {
38b725ae77Skettenis   DE_OKAY,     /* no error */
39b725ae77Skettenis   DE_NO_DEV,   /* no such device */
40b725ae77Skettenis   DE_BAD_DEV,  /* device does not support angel */
41b725ae77Skettenis   DE_BAD_CHAN, /* no such device channel */
42b725ae77Skettenis   DE_BAD_OP,   /* operation not supported by this device */
43b725ae77Skettenis   DE_BUSY,     /* device already busy */
44b725ae77Skettenis   DE_INVAL,    /* length invalid */
45b725ae77Skettenis   DE_FAILED    /* something else went wrong */
46b725ae77Skettenis } DevError;
47b725ae77Skettenis 
48b725ae77Skettenis /* return codes from asynchronous calls - primarily for channels' benefit */
49b725ae77Skettenis typedef enum DevStatus {
50b725ae77Skettenis   DS_DONE,                      /* operation succeeded */
51b725ae77Skettenis   DS_OVERFLOW,                  /* not enough buffer space */
52b725ae77Skettenis   DS_BAD_PACKET,                /* packet failed */
53b725ae77Skettenis   DS_DEV_ERROR,                 /* device error */
54b725ae77Skettenis   DS_INT_ERROR                  /* internal error */
55b725ae77Skettenis } DevStatus;
56b725ae77Skettenis 
57b725ae77Skettenis /* Callback for async. writes */
58b725ae77Skettenis typedef void (*DevWrite_CB_Fn)(
59b725ae77Skettenis     void *buff,     /* pointer to data -- cast to p_Buffer  */
60b725ae77Skettenis     void *length,   /* how much done   -- cast to unsigned  */
61b725ae77Skettenis     void *status,   /* success code    -- cast to DevStatus */
62b725ae77Skettenis     void *cb_data   /* as supplied */
63b725ae77Skettenis     );
64b725ae77Skettenis 
65b725ae77Skettenis /* Callback for async. reads */
66b725ae77Skettenis typedef void (*DevRead_CB_Fn)(
67b725ae77Skettenis     void *buff,     /* pointer to data -- cast to p_Buffer  */
68b725ae77Skettenis     void *length,   /* how much read   -- cast to unsigned  */
69b725ae77Skettenis     void *status,   /* success code    -- cast to DevStatus */
70b725ae77Skettenis     void *cb_data   /* as supplied */
71b725ae77Skettenis     );
72b725ae77Skettenis 
73b725ae77Skettenis /* control operations */
74b725ae77Skettenis typedef enum DeviceControl {
75b725ae77Skettenis   DC_INIT,                      /* initialise device             */
76b725ae77Skettenis   DC_RESET,                     /* reset device                  */
77b725ae77Skettenis   DC_RECEIVE_MODE,              /* control reception             */
78b725ae77Skettenis   DC_SET_PARAMS,                /* set parameters of device      */
79b725ae77Skettenis #ifndef TARGET
80b725ae77Skettenis   DC_GET_USER_PARAMS,           /* params set by user at open    */
81b725ae77Skettenis   DC_GET_DEFAULT_PARAMS,        /* device default parameters     */
82b725ae77Skettenis   DC_RESYNC,                    /* resynchronise with new agent  */
83b725ae77Skettenis #endif
84b725ae77Skettenis   DC_PRIVATE                    /* start of private device codes */
85b725ae77Skettenis } DeviceControl;
86b725ae77Skettenis 
87b725ae77Skettenis typedef enum DevRecvMode {
88b725ae77Skettenis   DR_DISABLE,
89b725ae77Skettenis   DR_ENABLE
90b725ae77Skettenis } DevRecvMode;
91b725ae77Skettenis 
92b725ae77Skettenis /*
93b725ae77Skettenis  * callback to allow a device driver to request a buffer, to be filled
94b725ae77Skettenis  * with an incoming packet
95b725ae77Skettenis  */
96b725ae77Skettenis typedef p_Buffer (*DevGetBuff_Fn)(unsigned req_size, void *cb_data);
97b725ae77Skettenis 
98b725ae77Skettenis 
99b725ae77Skettenis /* Publically-accessible globals */
100b725ae77Skettenis /* none */
101b725ae77Skettenis 
102b725ae77Skettenis #endif /* ndef angel_devices_h */
103b725ae77Skettenis 
104b725ae77Skettenis /* EOF devices.h */
105