/* SPDX-License-Identifier: GPL-2.0-or-later WITH Linux-syscall-note */ /* Copyright (c) 2018-2019 HiSilicon Limited. */ #ifndef _UAPIUUACCE_H #define _UAPIUUACCE_H #include #include #define UACCE_CLASS_NAME "uacce" /* * UACCE_CMD_START_Q: Start queue */ #define UACCE_CMD_START_Q _IO('W', 0) /* * UACCE_CMD_PUT_Q: * User actively stop queue and free queue resource immediately * Optimization method since close fd may delay */ #define UACCE_CMD_PUT_Q _IO('W', 1) #define UACCE_CMD_SHARE_SVAS _IO('W', 2) #define UACCE_CMD_GET_SS_DMA _IOR('W', 3, unsigned long) /** * UACCE Device Attributes: * * NOIOMMU: the device has no IOMMU support * can do ssva, but no map to the dev * IOMMU: the device has IOMMU support and enable __IOMMU_DOMAIN_PAGING * PASID: the device has IOMMU which support PASID setting * can do ssva, mapped to dev per process * FAULT_FROM_DEV: the device has IOMMU which can do page fault request * no need for ssva, should be used with PASID * KMAP_DUS: map the Device user-shared space to kernel * DRVMAP_DUS: Driver self-maintain its DUS * SVA: full function device * SHARE_DOMAIN: no PASID, can do ssva only for one process and the kernel */ #define UACCE_DEV_SVA BIT(0) #define UACCE_DEV_NOIOMMU BIT(1) #define UACCE_DEV_IOMMU BIT(7) /* uacce mode of the driver */ #define UACCE_MODE_NOUACCE 0 /* don't use uacce */ #define UACCE_MODE_SVA 1 /* use uacce sva mode */ #define UACCE_MODE_NOIOMMU 2 /* use uacce noiommu mode */ #define UACCE_API_VER_NOIOMMU_SUBFIX "_noiommu" #define UACCE_QFR_NA ((unsigned long)-1) /** * enum uacce_qfrt: queue file region type * @UACCE_QFRT_MMIO: device mmio region * @UACCE_QFRT_DUS: device user share region * @UACCE_QFRT_SS: static share memory(no-sva) */ enum uacce_qfrt { UACCE_QFRT_MMIO = 0, /* device mmio region */ UACCE_QFRT_DUS, /* device user share */ UACCE_QFRT_SS, /* static share memory */ UACCE_QFRT_MAX, }; #define UACCE_QFRT_INVALID UACCE_QFRT_MAX /* Pass DMA SS region slice size by granularity 64KB */ #define UACCE_GRAN_SIZE 0x10000ull #define UACCE_GRAN_SHIFT 16 #define UACCE_GRAN_NUM_MASK 0xfffull #endif