blob: 3e6d6de40fd25ace5e39dcbacb8ce2f63c33b1dc [file] [log] [blame]
/****************************************************************************
****************************************************************************
***
*** 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 <linux/ioctl.h>
#include <linux/types.h>
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