• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _RIO_MPORT_CDEV_H_
20 #define _RIO_MPORT_CDEV_H_
21 #include <linux/ioctl.h>
22 #include <linux/types.h>
23 struct rio_mport_maint_io {
24   __u16 rioid;
25   __u8 hopcount;
26   __u8 pad0[5];
27   __u32 offset;
28   __u32 length;
29   __u64 buffer;
30 };
31 #define RIO_TRANSFER_MODE_MAPPED (1 << 0)
32 #define RIO_TRANSFER_MODE_TRANSFER (1 << 1)
33 #define RIO_CAP_DBL_SEND (1 << 2)
34 #define RIO_CAP_DBL_RECV (1 << 3)
35 #define RIO_CAP_PW_SEND (1 << 4)
36 #define RIO_CAP_PW_RECV (1 << 5)
37 #define RIO_CAP_MAP_OUTB (1 << 6)
38 #define RIO_CAP_MAP_INB (1 << 7)
39 struct rio_mport_properties {
40   __u16 hdid;
41   __u8 id;
42   __u8 index;
43   __u32 flags;
44   __u32 sys_size;
45   __u8 port_ok;
46   __u8 link_speed;
47   __u8 link_width;
48   __u8 pad0;
49   __u32 dma_max_sge;
50   __u32 dma_max_size;
51   __u32 dma_align;
52   __u32 transfer_mode;
53   __u32 cap_sys_size;
54   __u32 cap_addr_size;
55   __u32 cap_transfer_mode;
56   __u32 cap_mport;
57 };
58 #define RIO_DOORBELL (1 << 0)
59 #define RIO_PORTWRITE (1 << 1)
60 struct rio_doorbell {
61   __u16 rioid;
62   __u16 payload;
63 };
64 struct rio_doorbell_filter {
65   __u16 rioid;
66   __u16 low;
67   __u16 high;
68   __u16 pad0;
69 };
70 struct rio_portwrite {
71   __u32 payload[16];
72 };
73 struct rio_pw_filter {
74   __u32 mask;
75   __u32 low;
76   __u32 high;
77   __u32 pad0;
78 };
79 #define RIO_MAP_ANY_ADDR (__u64) (~((__u64) 0))
80 struct rio_mmap {
81   __u16 rioid;
82   __u16 pad0[3];
83   __u64 rio_addr;
84   __u64 length;
85   __u64 handle;
86   __u64 address;
87 };
88 struct rio_dma_mem {
89   __u64 length;
90   __u64 dma_handle;
91   __u64 address;
92 };
93 struct rio_event {
94   __u32 header;
95   union {
96     struct rio_doorbell doorbell;
97     struct rio_portwrite portwrite;
98   } u;
99   __u32 pad0;
100 };
101 enum rio_transfer_sync {
102   RIO_TRANSFER_SYNC,
103   RIO_TRANSFER_ASYNC,
104   RIO_TRANSFER_FAF,
105 };
106 enum rio_transfer_dir {
107   RIO_TRANSFER_DIR_READ,
108   RIO_TRANSFER_DIR_WRITE,
109 };
110 enum rio_exchange {
111   RIO_EXCHANGE_DEFAULT,
112   RIO_EXCHANGE_NWRITE,
113   RIO_EXCHANGE_SWRITE,
114   RIO_EXCHANGE_NWRITE_R,
115   RIO_EXCHANGE_SWRITE_R,
116   RIO_EXCHANGE_NWRITE_R_ALL,
117 };
118 struct rio_transfer_io {
119   __u64 rio_addr;
120   __u64 loc_addr;
121   __u64 handle;
122   __u64 offset;
123   __u64 length;
124   __u16 rioid;
125   __u16 method;
126   __u32 completion_code;
127 };
128 struct rio_transaction {
129   __u64 block;
130   __u32 count;
131   __u32 transfer_mode;
132   __u16 sync;
133   __u16 dir;
134   __u32 pad0;
135 };
136 struct rio_async_tx_wait {
137   __u32 token;
138   __u32 timeout;
139 };
140 #define RIO_MAX_DEVNAME_SZ 20
141 struct rio_rdev_info {
142   __u16 destid;
143   __u8 hopcount;
144   __u8 pad0;
145   __u32 comptag;
146   char name[RIO_MAX_DEVNAME_SZ + 1];
147 };
148 #define RIO_MPORT_DRV_MAGIC 'm'
149 #define RIO_MPORT_MAINT_HDID_SET _IOW(RIO_MPORT_DRV_MAGIC, 1, __u16)
150 #define RIO_MPORT_MAINT_COMPTAG_SET _IOW(RIO_MPORT_DRV_MAGIC, 2, __u32)
151 #define RIO_MPORT_MAINT_PORT_IDX_GET _IOR(RIO_MPORT_DRV_MAGIC, 3, __u32)
152 #define RIO_MPORT_GET_PROPERTIES _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties)
153 #define RIO_MPORT_MAINT_READ_LOCAL _IOR(RIO_MPORT_DRV_MAGIC, 5, struct rio_mport_maint_io)
154 #define RIO_MPORT_MAINT_WRITE_LOCAL _IOW(RIO_MPORT_DRV_MAGIC, 6, struct rio_mport_maint_io)
155 #define RIO_MPORT_MAINT_READ_REMOTE _IOR(RIO_MPORT_DRV_MAGIC, 7, struct rio_mport_maint_io)
156 #define RIO_MPORT_MAINT_WRITE_REMOTE _IOW(RIO_MPORT_DRV_MAGIC, 8, struct rio_mport_maint_io)
157 #define RIO_ENABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 9, struct rio_doorbell_filter)
158 #define RIO_DISABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 10, struct rio_doorbell_filter)
159 #define RIO_ENABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 11, struct rio_pw_filter)
160 #define RIO_DISABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter)
161 #define RIO_SET_EVENT_MASK _IOW(RIO_MPORT_DRV_MAGIC, 13, __u32)
162 #define RIO_GET_EVENT_MASK _IOR(RIO_MPORT_DRV_MAGIC, 14, __u32)
163 #define RIO_MAP_OUTBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap)
164 #define RIO_UNMAP_OUTBOUND _IOW(RIO_MPORT_DRV_MAGIC, 16, struct rio_mmap)
165 #define RIO_MAP_INBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap)
166 #define RIO_UNMAP_INBOUND _IOW(RIO_MPORT_DRV_MAGIC, 18, __u64)
167 #define RIO_ALLOC_DMA _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem)
168 #define RIO_FREE_DMA _IOW(RIO_MPORT_DRV_MAGIC, 20, __u64)
169 #define RIO_TRANSFER _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction)
170 #define RIO_WAIT_FOR_ASYNC _IOW(RIO_MPORT_DRV_MAGIC, 22, struct rio_async_tx_wait)
171 #define RIO_DEV_ADD _IOW(RIO_MPORT_DRV_MAGIC, 23, struct rio_rdev_info)
172 #define RIO_DEV_DEL _IOW(RIO_MPORT_DRV_MAGIC, 24, struct rio_rdev_info)
173 #endif
174