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