1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_MISC_CXL_H 8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_MISC_CXL_H 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h> 11*8d67ca89SAndroid Build Coastguard Worker struct cxl_ioctl_start_work { 12*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 13*8d67ca89SAndroid Build Coastguard Worker __u64 work_element_descriptor; 14*8d67ca89SAndroid Build Coastguard Worker __u64 amr; 15*8d67ca89SAndroid Build Coastguard Worker __s16 num_interrupts; 16*8d67ca89SAndroid Build Coastguard Worker __u16 tid; 17*8d67ca89SAndroid Build Coastguard Worker __s32 reserved1; 18*8d67ca89SAndroid Build Coastguard Worker __u64 reserved2; 19*8d67ca89SAndroid Build Coastguard Worker __u64 reserved3; 20*8d67ca89SAndroid Build Coastguard Worker __u64 reserved4; 21*8d67ca89SAndroid Build Coastguard Worker __u64 reserved5; 22*8d67ca89SAndroid Build Coastguard Worker }; 23*8d67ca89SAndroid Build Coastguard Worker #define CXL_START_WORK_AMR 0x0000000000000001ULL 24*8d67ca89SAndroid Build Coastguard Worker #define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL 25*8d67ca89SAndroid Build Coastguard Worker #define CXL_START_WORK_ERR_FF 0x0000000000000004ULL 26*8d67ca89SAndroid Build Coastguard Worker #define CXL_START_WORK_TID 0x0000000000000008ULL 27*8d67ca89SAndroid Build Coastguard Worker #define CXL_START_WORK_ALL (CXL_START_WORK_AMR | CXL_START_WORK_NUM_IRQS | CXL_START_WORK_ERR_FF | CXL_START_WORK_TID) 28*8d67ca89SAndroid Build Coastguard Worker #define CXL_MODE_DEDICATED 0x1 29*8d67ca89SAndroid Build Coastguard Worker #define CXL_MODE_DIRECTED 0x2 30*8d67ca89SAndroid Build Coastguard Worker #define CXL_AFUID_FLAG_SLAVE 0x1 31*8d67ca89SAndroid Build Coastguard Worker struct cxl_afu_id { 32*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 33*8d67ca89SAndroid Build Coastguard Worker __u32 card_id; 34*8d67ca89SAndroid Build Coastguard Worker __u32 afu_offset; 35*8d67ca89SAndroid Build Coastguard Worker __u32 afu_mode; 36*8d67ca89SAndroid Build Coastguard Worker __u32 reserved1; 37*8d67ca89SAndroid Build Coastguard Worker __u64 reserved2; 38*8d67ca89SAndroid Build Coastguard Worker __u64 reserved3; 39*8d67ca89SAndroid Build Coastguard Worker __u64 reserved4; 40*8d67ca89SAndroid Build Coastguard Worker __u64 reserved5; 41*8d67ca89SAndroid Build Coastguard Worker __u64 reserved6; 42*8d67ca89SAndroid Build Coastguard Worker }; 43*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_NEED_HEADER 0x0000000000000001ULL 44*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_ALL CXL_AI_NEED_HEADER 45*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_HEADER_SIZE 128 46*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_BUFFER_SIZE 4096 47*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_MAX_ENTRIES 256 48*8d67ca89SAndroid Build Coastguard Worker #define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES) 49*8d67ca89SAndroid Build Coastguard Worker struct cxl_adapter_image { 50*8d67ca89SAndroid Build Coastguard Worker __u64 flags; 51*8d67ca89SAndroid Build Coastguard Worker __u64 data; 52*8d67ca89SAndroid Build Coastguard Worker __u64 len_data; 53*8d67ca89SAndroid Build Coastguard Worker __u64 len_image; 54*8d67ca89SAndroid Build Coastguard Worker __u64 reserved1; 55*8d67ca89SAndroid Build Coastguard Worker __u64 reserved2; 56*8d67ca89SAndroid Build Coastguard Worker __u64 reserved3; 57*8d67ca89SAndroid Build Coastguard Worker __u64 reserved4; 58*8d67ca89SAndroid Build Coastguard Worker }; 59*8d67ca89SAndroid Build Coastguard Worker #define CXL_MAGIC 0xCA 60*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work) 61*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32) 62*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id) 63*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image) 64*8d67ca89SAndroid Build Coastguard Worker #define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image) 65*8d67ca89SAndroid Build Coastguard Worker #define CXL_READ_MIN_SIZE 0x1000 66*8d67ca89SAndroid Build Coastguard Worker enum cxl_event_type { 67*8d67ca89SAndroid Build Coastguard Worker CXL_EVENT_RESERVED = 0, 68*8d67ca89SAndroid Build Coastguard Worker CXL_EVENT_AFU_INTERRUPT = 1, 69*8d67ca89SAndroid Build Coastguard Worker CXL_EVENT_DATA_STORAGE = 2, 70*8d67ca89SAndroid Build Coastguard Worker CXL_EVENT_AFU_ERROR = 3, 71*8d67ca89SAndroid Build Coastguard Worker CXL_EVENT_AFU_DRIVER = 4, 72*8d67ca89SAndroid Build Coastguard Worker }; 73*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_header { 74*8d67ca89SAndroid Build Coastguard Worker __u16 type; 75*8d67ca89SAndroid Build Coastguard Worker __u16 size; 76*8d67ca89SAndroid Build Coastguard Worker __u16 process_element; 77*8d67ca89SAndroid Build Coastguard Worker __u16 reserved1; 78*8d67ca89SAndroid Build Coastguard Worker }; 79*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_interrupt { 80*8d67ca89SAndroid Build Coastguard Worker __u16 flags; 81*8d67ca89SAndroid Build Coastguard Worker __u16 irq; 82*8d67ca89SAndroid Build Coastguard Worker __u32 reserved1; 83*8d67ca89SAndroid Build Coastguard Worker }; 84*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_data_storage { 85*8d67ca89SAndroid Build Coastguard Worker __u16 flags; 86*8d67ca89SAndroid Build Coastguard Worker __u16 reserved1; 87*8d67ca89SAndroid Build Coastguard Worker __u32 reserved2; 88*8d67ca89SAndroid Build Coastguard Worker __u64 addr; 89*8d67ca89SAndroid Build Coastguard Worker __u64 dsisr; 90*8d67ca89SAndroid Build Coastguard Worker __u64 reserved3; 91*8d67ca89SAndroid Build Coastguard Worker }; 92*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_error { 93*8d67ca89SAndroid Build Coastguard Worker __u16 flags; 94*8d67ca89SAndroid Build Coastguard Worker __u16 reserved1; 95*8d67ca89SAndroid Build Coastguard Worker __u32 reserved2; 96*8d67ca89SAndroid Build Coastguard Worker __u64 error; 97*8d67ca89SAndroid Build Coastguard Worker }; 98*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_driver_reserved { 99*8d67ca89SAndroid Build Coastguard Worker __u32 data_size; 100*8d67ca89SAndroid Build Coastguard Worker __u8 data[]; 101*8d67ca89SAndroid Build Coastguard Worker }; 102*8d67ca89SAndroid Build Coastguard Worker struct cxl_event { 103*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_header header; 104*8d67ca89SAndroid Build Coastguard Worker union { 105*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_interrupt irq; 106*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_data_storage fault; 107*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_error afu_error; 108*8d67ca89SAndroid Build Coastguard Worker struct cxl_event_afu_driver_reserved afu_driver_event; 109*8d67ca89SAndroid Build Coastguard Worker }; 110*8d67ca89SAndroid Build Coastguard Worker }; 111*8d67ca89SAndroid Build Coastguard Worker #endif 112