Modules/UDI - Adding PCI and MEI headers
[tpg/acess2.git] / KernelLand / Modules / Interfaces / UDI / include / udi / meta_gio.h
1 /**
2  * \file udi_meta_gio.h
3  */
4 #ifndef _UDI_META_GIO_H_
5 #define _UDI_META_GIO_H_
6
7 typedef const struct udi_gio_provider_ops_s     udi_gio_provider_ops_t;
8 typedef const struct udi_gio_client_ops_s       udi_gio_client_ops_t;
9 typedef struct udi_gio_bind_cb_s        udi_gio_bind_cb_t;
10 typedef struct udi_gio_xfer_cb_s        udi_gio_xfer_cb_t;
11 typedef struct udi_gio_rw_params_s      udi_gio_rw_params_t;
12 typedef struct udi_gio_event_cb_s       udi_gio_event_cb_t;
13
14 typedef void    udi_gio_bind_req_op_t(udi_gio_bind_cb_t *cb);
15 typedef void    udi_gio_unbind_req_op_t(udi_gio_bind_cb_t *cb);
16 typedef void    udi_gio_xfer_req_op_t(udi_gio_bind_cb_t *cb);
17 typedef void    udi_gio_event_res_op_t(udi_gio_bind_cb_t *cb);
18
19 typedef void    udi_gio_bind_ack_op_t(
20         udi_gio_bind_cb_t *cb,
21         udi_ubit32_t    device_size_lo,
22         udi_ubit32_t    device_size_hi,
23         udi_status_t    status
24         );
25 typedef void    udi_gio_unbind_ack_op_t(udi_gio_bind_cb_t *cb);
26 typedef void    udi_gio_xfer_ack_op_t(udi_gio_bind_cb_t *cb);
27 typedef void    udi_gio_xfer_nak_op_t(udi_gio_bind_cb_t *cb, udi_status_t status);
28 typedef void    udi_gio_event_ind_op_t(udi_gio_bind_cb_t *cb);
29
30 typedef udi_ubit8_t     udi_gio_op_t;
31 /* Limit values for udi_gio_op_t */
32 #define UDI_GIO_OP_CUSTOM                 16
33 #define UDI_GIO_OP_MAX                    64
34 /* Direction flag values for op */
35 #define UDI_GIO_DIR_READ                  (1U<<6)
36 #define UDI_GIO_DIR_WRITE                 (1U<<7)
37 /* Standard Operation Codes */
38 #define UDI_GIO_OP_READ       UDI_GIO_DIR_READ
39 #define UDI_GIO_OP_WRITE      UDI_GIO_DIR_WRITE
40
41
42
43 struct udi_gio_provider_ops_s
44 {
45         udi_channel_event_ind_op_t      *channel_event_ind_op;
46         udi_gio_bind_req_op_t   *gio_bind_req_op;
47         udi_gio_unbind_req_op_t *gio_unbind_req_op;
48         udi_gio_xfer_req_op_t   *gio_xfer_req_op;
49         udi_gio_event_res_op_t  *gio_event_res_op;
50 };
51 /* Ops Vector Number */
52 #define UDI_GIO_PROVIDER_OPS_NUM          1
53
54 struct udi_gio_client_ops_s
55 {
56         udi_channel_event_ind_op_t      *channel_event_ind_op;
57         udi_gio_bind_ack_op_t   *gio_bind_ack_op;
58         udi_gio_unbind_ack_op_t *gio_unbind_ack_op;
59         udi_gio_xfer_ack_op_t   *gio_xfer_ack_op;
60         udi_gio_xfer_nak_op_t   *gio_xfer_nak_op;
61         udi_gio_event_ind_op_t  *gio_event_ind_op;
62 };
63 /* Ops Vector Number */
64 #define UDI_GIO_CLIENT_OPS_NUM            2
65
66 struct udi_gio_bind_cb_s
67 {
68         udi_cb_t        gcb;
69         udi_xfer_constraints_t  xfer_constraints;
70 };
71 /* Control Block Group Number */
72 #define UDI_GIO_BIND_CB_NUM      1
73
74
75 struct udi_gio_xfer_cb_s
76 {
77         udi_cb_t        gcb;
78         udi_gio_op_t    op;
79         void    *tr_params;
80         udi_buf_t       *data_buf;
81 };
82 /* Control Block Group Number */
83 #define UDI_GIO_XFER_CB_NUM      2
84
85 struct udi_gio_rw_params_s
86 {
87         udi_ubit32_t offset_lo;
88         udi_ubit32_t offset_hi;
89 };
90
91 struct udi_gio_event_cb_s
92 {
93         udi_cb_t        gcb;
94         udi_ubit8_t     event_code;
95         void    *event_params;
96 };
97 /* Control Block Group Number */
98 #define UDI_GIO_EVENT_CB_NUM     3
99
100
101 extern void udi_gio_bind_req(udi_gio_bind_cb_t *cb);
102 extern void udi_gio_bind_ack(
103         udi_gio_bind_cb_t       *cb,
104         udi_ubit32_t    device_size_lo,
105         udi_ubit32_t    device_size_hi,
106         udi_status_t    status
107         );
108
109 extern void udi_gio_unbind_req(udi_gio_bind_cb_t *cb);
110 extern void udi_gio_unbind_ack(udi_gio_bind_cb_t *cb);
111
112 extern void udi_gio_xfer_req(udi_gio_xfer_cb_t *cb);
113 extern void udi_gio_xfer_ack(udi_gio_xfer_cb_t *cb);
114 extern void udi_gio_xfer_nak(udi_gio_xfer_cb_t *cb, udi_status_t status);
115
116 extern void udi_gio_event_res(udi_gio_event_cb_t *cb);
117 extern void udi_gio_event_ind(udi_gio_event_cb_t *cb);
118 extern void udi_gio_event_res_unused(udi_gio_event_cb_t *cb);
119
120 #endif

UCC git Repository :: git.ucc.asn.au