Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /* Copyright 2017 IBM Corp. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #ifndef _UAPI_MISC_OCXL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) #define _UAPI_MISC_OCXL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include <linux/ioctl.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) enum ocxl_event_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 	OCXL_AFU_EVENT_XSL_FAULT_ERROR = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define OCXL_KERNEL_EVENT_FLAG_LAST 0x0001  /* This is the last event pending */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct ocxl_kernel_event_header {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 	__u16 type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	__u16 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	__u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct ocxl_kernel_event_xsl_fault_error {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	__u64 addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	__u64 dsisr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	__u64 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 	__u64 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) struct ocxl_ioctl_attach {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	__u64 amr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	__u64 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	__u64 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	__u64 reserved3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct ocxl_ioctl_metadata {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	__u16 version; /* struct version, always backwards compatible */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	/* Version 0 fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	__u8  afu_version_major;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	__u8  afu_version_minor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	__u32 pasid;		/* PASID assigned to the current context */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	__u64 pp_mmio_size;	/* Per PASID MMIO size */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	__u64 global_mmio_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	/* End version 0 fields */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	__u64 reserved[13]; /* Total of 16*u64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) struct ocxl_ioctl_p9_wait {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	__u16 thread_id; /* The thread ID required to wake this thread */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	__u16 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	__u32 reserved2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	__u64 reserved3[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT	0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) struct ocxl_ioctl_features {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 	__u64 flags[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) struct ocxl_ioctl_irq_fd {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 	__u64 irq_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 	__s32 eventfd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 	__u32 reserved;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) /* ioctl numbers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #define OCXL_MAGIC 0xCA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* AFU devices */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) #define OCXL_IOCTL_ATTACH	_IOW(OCXL_MAGIC, 0x10, struct ocxl_ioctl_attach)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) #define OCXL_IOCTL_IRQ_ALLOC	_IOR(OCXL_MAGIC, 0x11, __u64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define OCXL_IOCTL_IRQ_FREE	_IOW(OCXL_MAGIC, 0x12, __u64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define OCXL_IOCTL_IRQ_SET_FD	_IOW(OCXL_MAGIC, 0x13, struct ocxl_ioctl_irq_fd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define OCXL_IOCTL_GET_METADATA _IOR(OCXL_MAGIC, 0x14, struct ocxl_ioctl_metadata)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define OCXL_IOCTL_ENABLE_P9_WAIT	_IOR(OCXL_MAGIC, 0x15, struct ocxl_ioctl_p9_wait)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) #define OCXL_IOCTL_GET_FEATURES _IOR(OCXL_MAGIC, 0x16, struct ocxl_ioctl_features)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) #endif /* _UAPI_MISC_OCXL_H */