From da392cec33edd4c667b8173a67612527d0c450ff Mon Sep 17 00:00:00 2001 From: Anuj Gangwar Date: Mon, 19 Nov 2018 15:00:36 +0530 Subject: [PATCH] include: uapi: move nvhost user-interface headers Move the linux user-interface headers from include/linux/ to include/uapi/linux/ Change the path for above headers in the dependent files Bug 2062672 Change-Id: I2e116dc8f6c33f53c03fb56b923931b6e600b534 Signed-off-by: Anuj Gangwar Reviewed-on: https://git-master.nvidia.com/r/1953709 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/video/tegra/host/nvdla/Makefile | 1 + drivers/video/tegra/host/nvdla/nvdla.c | 2 +- drivers/video/tegra/host/nvdla/nvdla.h | 2 +- drivers/video/tegra/host/nvdla/nvdla_ioctl.c | 2 +- include/uapi/linux/nvhost_nvdla_ioctl.h | 233 +++++++++++++++++++ 5 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 include/uapi/linux/nvhost_nvdla_ioctl.h diff --git a/drivers/video/tegra/host/nvdla/Makefile b/drivers/video/tegra/host/nvdla/Makefile index be153bc7..9ec81999 100644 --- a/drivers/video/tegra/host/nvdla/Makefile +++ b/drivers/video/tegra/host/nvdla/Makefile @@ -3,6 +3,7 @@ ifdef CONFIG_TEGRA_T19X_GRHOST GCOV_PROFILE := y ccflags-y += -I$(srctree.nvidia)/drivers/video/tegra/host ccflags-y += -I$(srctree.nvidia)/include +ccflags-y += -I$(srctree.nvidia)/include/uapi/linux ccflags-y += -Werror nvhost-nvdla-objs = \ diff --git a/drivers/video/tegra/host/nvdla/nvdla.c b/drivers/video/tegra/host/nvdla/nvdla.c index 8566442b..2541d7df 100644 --- a/drivers/video/tegra/host/nvdla/nvdla.c +++ b/drivers/video/tegra/host/nvdla/nvdla.c @@ -41,7 +41,7 @@ #include "nvdla/nvdla.h" #include "nvdla/nvdla_debug.h" -#include +#include #include "dla_fw_version.h" #include "dla_os_interface.h" diff --git a/drivers/video/tegra/host/nvdla/nvdla.h b/drivers/video/tegra/host/nvdla/nvdla.h index 85e22b05..aaf7bf65 100644 --- a/drivers/video/tegra/host/nvdla/nvdla.h +++ b/drivers/video/tegra/host/nvdla/nvdla.h @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include "nvhost_buffer.h" #include "dla_os_interface.h" diff --git a/drivers/video/tegra/host/nvdla/nvdla_ioctl.c b/drivers/video/tegra/host/nvdla/nvdla_ioctl.c index efd68b3d..07fda772 100644 --- a/drivers/video/tegra/host/nvdla/nvdla_ioctl.c +++ b/drivers/video/tegra/host/nvdla/nvdla_ioctl.c @@ -35,7 +35,7 @@ #include "nvdla/nvdla.h" #include "nvdla/nvdla_debug.h" #include -#include +#include #include "dla_os_interface.h" /** diff --git a/include/uapi/linux/nvhost_nvdla_ioctl.h b/include/uapi/linux/nvhost_nvdla_ioctl.h new file mode 100644 index 00000000..5cd77743 --- /dev/null +++ b/include/uapi/linux/nvhost_nvdla_ioctl.h @@ -0,0 +1,233 @@ +/* + * include/linux/nvhost_nvdla_ioctl.h + * + * Tegra NvDLA Driver + * + * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, see . + */ + +#ifndef __UAPI_LINUX_NVHOST_NVDLA_IOCTL_H +#define __UAPI_LINUX_NVHOST_NVDLA_IOCTL_H + +#include +#include + +#if !defined(__KERNEL__) +#define __user +#endif + +/** + * struct nvdla_queue_stat_args strcture + * + * @status queue status flags + * + */ +struct nvdla_queue_status_args { +#define NVDLA_QUEUE_FLAGS_SUSPEND (1 << 0) +#define NVDLA_QUEUE_FLAGS_RESUME (1 << 1) + __u64 status; +}; + +/** + * struct nvdla_ping_args structure for ping data + * + * @in_challenge challenge data to be sent + * @out_response response/CRC on challenge data from engine + * + */ +struct nvdla_ping_args { + __u32 in_challenge; + __u32 out_response; +}; + + +/** + * struct nvdla_pin_unpin_args strcture args for buffer pin/unpin + * + * @buffers list of buffers to pin/unpin'ed + * @num_buffers number of buffers count + * @reserved reserved for future use + * + */ +struct nvdla_pin_unpin_args { + __u64 buffers; + __u32 num_buffers; + __u32 reserved; +}; + +/** + * struct nvdla_submit_args structure for task submit + * + * @tasks pointer to task list + * @num_tasks number of tasks count + * @flags flags for task submit, like atomic + * @version version of task structure + * + */ +struct nvdla_submit_args { + __u64 tasks; + __u16 num_tasks; +#define MAX_TASKS_PER_SUBMIT 24 +#define NVDLA_SUBMIT_FLAGS_ATOMIC (1 << 0) + __u16 flags; + __u32 version; +}; + +/** + * struct nvdla_get_fw_ver_args strcture + * + * @version Firmware version + * + */ +struct nvdla_get_fw_ver_args { + __u32 version; +}; + +/** + * struct nvdla_get_q_status_args strcture + * + * @id queue id + * @fence fence assigned to queue + * + */ +struct nvdla_get_q_status_args { + __u32 id; + __u64 fence; +}; + +/** + * struct nvdla_mem_handle structure for memory handles + * + * @handle handle to buffer allocated in userspace + * @offset offset in buffer + * + */ +struct nvdla_mem_handle { + __u32 handle; + __u32 offset; +}; + +/** + * struct nvdla_ioctl_submit_task structure for single task information + * + * @num_prefences number of pre-fences in task + * @num_postfences number of post-fences in task + * @num_input_task_status number of input task status + * @num_output_task_status number of output task status + * @flags flags for bitwise task info embeddeing + * @reserved reserved for future use + * @prefences pointer to pre-fence struct table + * @postfences pointer to post-fence struct table + * @input_task_status pointer to input task status struct table + * @output_task_status pointer to output task status struct table + * @num_addresses total number of addressed passed in structure + * @address_list pointer to address list + * @timeout task timeout + * + */ +struct nvdla_ioctl_submit_task { + __u8 num_prefences; + __u8 num_postfences; + __u8 num_input_task_status; + __u8 num_output_task_status; +#define NVDLA_MAX_BUFFERS_PER_TASK (6144) + __u32 num_addresses; + __u16 flags; + __u16 reserved; + + __u64 prefences; + __u64 postfences; + + __u64 input_task_status; + __u64 output_task_status; + __u64 address_list; + __u64 timeout; +}; + +/** + * struct nvdla_ioctl_emu_submit_task structure for single emulator task + * information + * + * @num_postfences number of post-fences in task + * @reserved reserved for padding and future use + * @postfences pointer to post-fence struct table + * + */ +struct nvdla_ioctl_emu_submit_task { + __u32 num_postfences; + __u32 reserved; + + __u64 postfences; +}; + +/** + * struct nvdla_fence structure for passing fence information + * + * NOTE: this will be removed soon, please use generic fence type + * from nvdev_fence.h + */ +struct nvdla_fence { + __u32 type; +#define NVDLA_FENCE_TYPE_SYNCPT 0 +#define NVDLA_FENCE_TYPE_SYNC_FD 1 +#define NVDLA_FENCE_TYPE_SEMAPHORE 2 +#define NVDLA_FENCE_TYPE_TS_SEMAPHORE 3 + __u32 syncpoint_index; + __u32 syncpoint_value; + __u32 sync_fd; + __u32 sem_handle; + __u32 sem_offset; + __u32 sem_val; +}; + +/** + * struct nvdla_status_notify structure for passing status notify information + * + * @handle handle to buffer allocated in userspace + * @offset offset in buffer + * @status status + * + */ +struct nvdla_status_notify { + __u32 handle; + __u32 offset; + __u32 status; +}; + +#define NVHOST_NVDLA_IOCTL_MAGIC 'D' + +#define NVDLA_IOCTL_PING \ + _IOWR(NVHOST_NVDLA_IOCTL_MAGIC, 1, struct nvdla_ping_args) +#define NVDLA_IOCTL_PIN \ + _IOW(NVHOST_NVDLA_IOCTL_MAGIC, 2, struct nvdla_pin_unpin_args) +#define NVDLA_IOCTL_UNPIN \ + _IOW(NVHOST_NVDLA_IOCTL_MAGIC, 3, struct nvdla_pin_unpin_args) +#define NVDLA_IOCTL_SUBMIT \ + _IOW(NVHOST_NVDLA_IOCTL_MAGIC, 4, struct nvdla_submit_args) +#define NVDLA_IOCTL_SET_QUEUE_STATUS \ + _IOW(NVHOST_NVDLA_IOCTL_MAGIC, 5, struct nvdla_queue_status_args) +#define NVDLA_IOCTL_GET_FIRMWARE_VERSION \ + _IOWR(NVHOST_NVDLA_IOCTL_MAGIC, 6, struct nvdla_get_fw_ver_args) +#define NVDLA_IOCTL_GET_QUEUE_STATUS \ + _IOWR(NVHOST_NVDLA_IOCTL_MAGIC, 7, struct nvdla_get_q_status_args) +#define NVDLA_IOCTL_EMU_TASK_SUBMIT \ + _IOWR(NVHOST_NVDLA_IOCTL_MAGIC, 8, struct nvdla_submit_args) +#define NVDLA_IOCTL_LAST \ + _IOC_NR(NVDLA_IOCTL_EMU_TASK_SUBMIT) + +#define NVDLA_IOCTL_MAX_ARG_SIZE \ + sizeof(struct nvdla_pin_unpin_args) + +#endif /* __UAPI_LINUX_NVHOST_NVDLA_IOCTL_H */