/**************************************************************************** **************************************************************************** *** *** This header was automatically generated from a Linux kernel header *** of the same name, to make information necessary for userspace to *** call into the kernel available to libc. It contains only constants, *** structures, and macros generated from the original header, and thus, *** contains no copyrightable information. *** *** To edit the content of this header, modify the corresponding *** source file (e.g. under external/kernel-headers/original/) then *** run bionic/libc/kernel/tools/update_all.py *** *** Any manual change here will be lost the next time this script will *** be run. You've been warned! *** **************************************************************************** ****************************************************************************/ #ifndef _RIO_MPORT_CDEV_H_ #define _RIO_MPORT_CDEV_H_ #include #include struct rio_mport_maint_io { __u16 rioid; __u8 hopcount; __u8 pad0[5]; __u32 offset; __u32 length; __u64 buffer; }; #define RIO_TRANSFER_MODE_MAPPED (1 << 0) #define RIO_TRANSFER_MODE_TRANSFER (1 << 1) #define RIO_CAP_DBL_SEND (1 << 2) #define RIO_CAP_DBL_RECV (1 << 3) #define RIO_CAP_PW_SEND (1 << 4) #define RIO_CAP_PW_RECV (1 << 5) #define RIO_CAP_MAP_OUTB (1 << 6) #define RIO_CAP_MAP_INB (1 << 7) struct rio_mport_properties { __u16 hdid; __u8 id; __u8 index; __u32 flags; __u32 sys_size; __u8 port_ok; __u8 link_speed; __u8 link_width; __u8 pad0; __u32 dma_max_sge; __u32 dma_max_size; __u32 dma_align; __u32 transfer_mode; __u32 cap_sys_size; __u32 cap_addr_size; __u32 cap_transfer_mode; __u32 cap_mport; }; #define RIO_DOORBELL (1 << 0) #define RIO_PORTWRITE (1 << 1) struct rio_doorbell { __u16 rioid; __u16 payload; }; struct rio_doorbell_filter { __u16 rioid; __u16 low; __u16 high; __u16 pad0; }; struct rio_portwrite { __u32 payload[16]; }; struct rio_pw_filter { __u32 mask; __u32 low; __u32 high; __u32 pad0; }; #define RIO_MAP_ANY_ADDR (__u64) (~((__u64) 0)) struct rio_mmap { __u16 rioid; __u16 pad0[3]; __u64 rio_addr; __u64 length; __u64 handle; __u64 address; }; struct rio_dma_mem { __u64 length; __u64 dma_handle; __u64 address; }; struct rio_event { __u32 header; union { struct rio_doorbell doorbell; struct rio_portwrite portwrite; } u; __u32 pad0; }; enum rio_transfer_sync { RIO_TRANSFER_SYNC, RIO_TRANSFER_ASYNC, RIO_TRANSFER_FAF, }; enum rio_transfer_dir { RIO_TRANSFER_DIR_READ, RIO_TRANSFER_DIR_WRITE, }; enum rio_exchange { RIO_EXCHANGE_DEFAULT, RIO_EXCHANGE_NWRITE, RIO_EXCHANGE_SWRITE, RIO_EXCHANGE_NWRITE_R, RIO_EXCHANGE_SWRITE_R, RIO_EXCHANGE_NWRITE_R_ALL, }; struct rio_transfer_io { __u64 rio_addr; __u64 loc_addr; __u64 handle; __u64 offset; __u64 length; __u16 rioid; __u16 method; __u32 completion_code; }; struct rio_transaction { __u64 block; __u32 count; __u32 transfer_mode; __u16 sync; __u16 dir; __u32 pad0; }; struct rio_async_tx_wait { __u32 token; __u32 timeout; }; #define RIO_MAX_DEVNAME_SZ 20 struct rio_rdev_info { __u16 destid; __u8 hopcount; __u8 pad0; __u32 comptag; char name[RIO_MAX_DEVNAME_SZ + 1]; }; #define RIO_MPORT_DRV_MAGIC 'm' #define RIO_MPORT_MAINT_HDID_SET _IOW(RIO_MPORT_DRV_MAGIC, 1, __u16) #define RIO_MPORT_MAINT_COMPTAG_SET _IOW(RIO_MPORT_DRV_MAGIC, 2, __u32) #define RIO_MPORT_MAINT_PORT_IDX_GET _IOR(RIO_MPORT_DRV_MAGIC, 3, __u32) #define RIO_MPORT_GET_PROPERTIES _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties) #define RIO_MPORT_MAINT_READ_LOCAL _IOR(RIO_MPORT_DRV_MAGIC, 5, struct rio_mport_maint_io) #define RIO_MPORT_MAINT_WRITE_LOCAL _IOW(RIO_MPORT_DRV_MAGIC, 6, struct rio_mport_maint_io) #define RIO_MPORT_MAINT_READ_REMOTE _IOR(RIO_MPORT_DRV_MAGIC, 7, struct rio_mport_maint_io) #define RIO_MPORT_MAINT_WRITE_REMOTE _IOW(RIO_MPORT_DRV_MAGIC, 8, struct rio_mport_maint_io) #define RIO_ENABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 9, struct rio_doorbell_filter) #define RIO_DISABLE_DOORBELL_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 10, struct rio_doorbell_filter) #define RIO_ENABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 11, struct rio_pw_filter) #define RIO_DISABLE_PORTWRITE_RANGE _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter) #define RIO_SET_EVENT_MASK _IOW(RIO_MPORT_DRV_MAGIC, 13, __u32) #define RIO_GET_EVENT_MASK _IOR(RIO_MPORT_DRV_MAGIC, 14, __u32) #define RIO_MAP_OUTBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap) #define RIO_UNMAP_OUTBOUND _IOW(RIO_MPORT_DRV_MAGIC, 16, struct rio_mmap) #define RIO_MAP_INBOUND _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap) #define RIO_UNMAP_INBOUND _IOW(RIO_MPORT_DRV_MAGIC, 18, __u64) #define RIO_ALLOC_DMA _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem) #define RIO_FREE_DMA _IOW(RIO_MPORT_DRV_MAGIC, 20, __u64) #define RIO_TRANSFER _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction) #define RIO_WAIT_FOR_ASYNC _IOW(RIO_MPORT_DRV_MAGIC, 22, struct rio_async_tx_wait) #define RIO_DEV_ADD _IOW(RIO_MPORT_DRV_MAGIC, 23, struct rio_rdev_info) #define RIO_DEV_DEL _IOW(RIO_MPORT_DRV_MAGIC, 24, struct rio_rdev_info) #endif