174 lines
5.2 KiB
C
174 lines
5.2 KiB
C
/****************************************************************************
|
|
****************************************************************************
|
|
***
|
|
*** 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
|