122851890Sopenharmony_ci/* 222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py, 322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants, 422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information. 522851890Sopenharmony_ci */ 622851890Sopenharmony_ci#ifndef _UAPI_MISC_CXL_H 722851890Sopenharmony_ci#define _UAPI_MISC_CXL_H 822851890Sopenharmony_ci#include <linux/types.h> 922851890Sopenharmony_ci#include <linux/ioctl.h> 1022851890Sopenharmony_cistruct cxl_ioctl_start_work { 1122851890Sopenharmony_ci __u64 flags; 1222851890Sopenharmony_ci __u64 work_element_descriptor; 1322851890Sopenharmony_ci __u64 amr; 1422851890Sopenharmony_ci __s16 num_interrupts; 1522851890Sopenharmony_ci __u16 tid; 1622851890Sopenharmony_ci __s32 reserved1; 1722851890Sopenharmony_ci __u64 reserved2; 1822851890Sopenharmony_ci __u64 reserved3; 1922851890Sopenharmony_ci __u64 reserved4; 2022851890Sopenharmony_ci __u64 reserved5; 2122851890Sopenharmony_ci}; 2222851890Sopenharmony_ci#define CXL_START_WORK_AMR 0x0000000000000001ULL 2322851890Sopenharmony_ci#define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL 2422851890Sopenharmony_ci#define CXL_START_WORK_ERR_FF 0x0000000000000004ULL 2522851890Sopenharmony_ci#define CXL_START_WORK_TID 0x0000000000000008ULL 2622851890Sopenharmony_ci#define CXL_START_WORK_ALL (CXL_START_WORK_AMR |\ 2722851890Sopenharmony_ci CXL_START_WORK_NUM_IRQS |\ 2822851890Sopenharmony_ci CXL_START_WORK_ERR_FF |\ 2922851890Sopenharmony_ci CXL_START_WORK_TID) 3022851890Sopenharmony_ci#define CXL_MODE_DEDICATED 0x1 3122851890Sopenharmony_ci#define CXL_MODE_DIRECTED 0x2 3222851890Sopenharmony_ci#define CXL_AFUID_FLAG_SLAVE 0x1 3322851890Sopenharmony_cistruct cxl_afu_id { 3422851890Sopenharmony_ci __u64 flags; 3522851890Sopenharmony_ci __u32 card_id; 3622851890Sopenharmony_ci __u32 afu_offset; 3722851890Sopenharmony_ci __u32 afu_mode; 3822851890Sopenharmony_ci __u32 reserved1; 3922851890Sopenharmony_ci __u64 reserved2; 4022851890Sopenharmony_ci __u64 reserved3; 4122851890Sopenharmony_ci __u64 reserved4; 4222851890Sopenharmony_ci __u64 reserved5; 4322851890Sopenharmony_ci __u64 reserved6; 4422851890Sopenharmony_ci}; 4522851890Sopenharmony_ci#define CXL_AI_NEED_HEADER 0x0000000000000001ULL 4622851890Sopenharmony_ci#define CXL_AI_ALL CXL_AI_NEED_HEADER 4722851890Sopenharmony_ci#define CXL_AI_HEADER_SIZE 128 4822851890Sopenharmony_ci#define CXL_AI_BUFFER_SIZE 4096 4922851890Sopenharmony_ci#define CXL_AI_MAX_ENTRIES 256 5022851890Sopenharmony_ci#define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES) 5122851890Sopenharmony_cistruct cxl_adapter_image { 5222851890Sopenharmony_ci __u64 flags; 5322851890Sopenharmony_ci __u64 data; 5422851890Sopenharmony_ci __u64 len_data; 5522851890Sopenharmony_ci __u64 len_image; 5622851890Sopenharmony_ci __u64 reserved1; 5722851890Sopenharmony_ci __u64 reserved2; 5822851890Sopenharmony_ci __u64 reserved3; 5922851890Sopenharmony_ci __u64 reserved4; 6022851890Sopenharmony_ci}; 6122851890Sopenharmony_ci#define CXL_MAGIC 0xCA 6222851890Sopenharmony_ci#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work) 6322851890Sopenharmony_ci#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32) 6422851890Sopenharmony_ci#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id) 6522851890Sopenharmony_ci#define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image) 6622851890Sopenharmony_ci#define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image) 6722851890Sopenharmony_ci#define CXL_READ_MIN_SIZE 0x1000 6822851890Sopenharmony_cienum cxl_event_type { 6922851890Sopenharmony_ci CXL_EVENT_RESERVED = 0, 7022851890Sopenharmony_ci CXL_EVENT_AFU_INTERRUPT = 1, 7122851890Sopenharmony_ci CXL_EVENT_DATA_STORAGE = 2, 7222851890Sopenharmony_ci CXL_EVENT_AFU_ERROR = 3, 7322851890Sopenharmony_ci CXL_EVENT_AFU_DRIVER = 4, 7422851890Sopenharmony_ci}; 7522851890Sopenharmony_cistruct cxl_event_header { 7622851890Sopenharmony_ci __u16 type; 7722851890Sopenharmony_ci __u16 size; 7822851890Sopenharmony_ci __u16 process_element; 7922851890Sopenharmony_ci __u16 reserved1; 8022851890Sopenharmony_ci}; 8122851890Sopenharmony_cistruct cxl_event_afu_interrupt { 8222851890Sopenharmony_ci __u16 flags; 8322851890Sopenharmony_ci __u16 irq; 8422851890Sopenharmony_ci __u32 reserved1; 8522851890Sopenharmony_ci}; 8622851890Sopenharmony_cistruct cxl_event_data_storage { 8722851890Sopenharmony_ci __u16 flags; 8822851890Sopenharmony_ci __u16 reserved1; 8922851890Sopenharmony_ci __u32 reserved2; 9022851890Sopenharmony_ci __u64 addr; 9122851890Sopenharmony_ci __u64 dsisr; 9222851890Sopenharmony_ci __u64 reserved3; 9322851890Sopenharmony_ci}; 9422851890Sopenharmony_cistruct cxl_event_afu_error { 9522851890Sopenharmony_ci __u16 flags; 9622851890Sopenharmony_ci __u16 reserved1; 9722851890Sopenharmony_ci __u32 reserved2; 9822851890Sopenharmony_ci __u64 error; 9922851890Sopenharmony_ci}; 10022851890Sopenharmony_cistruct cxl_event_afu_driver_reserved { 10122851890Sopenharmony_ci 10222851890Sopenharmony_ci __u32 data_size; 10322851890Sopenharmony_ci __u8 data[]; 10422851890Sopenharmony_ci}; 10522851890Sopenharmony_cistruct cxl_event { 10622851890Sopenharmony_ci struct cxl_event_header header; 10722851890Sopenharmony_ci union { 10822851890Sopenharmony_ci struct cxl_event_afu_interrupt irq; 10922851890Sopenharmony_ci struct cxl_event_data_storage fault; 11022851890Sopenharmony_ci struct cxl_event_afu_error afu_error; 11122851890Sopenharmony_ci struct cxl_event_afu_driver_reserved afu_driver_event; 11222851890Sopenharmony_ci }; 11322851890Sopenharmony_ci}; 11422851890Sopenharmony_ci#endif 115