From 670e24788a1b6173321c825b3da98f697277f83b Mon Sep 17 00:00:00 2001 From: Sumukh Hallymysore Ravindra Date: Tue, 3 Sep 2019 12:27:59 -0700 Subject: [PATCH] synx : Add snapshot for global synx driver support Propagate uapi header file for synx driver Change-Id: I278781b176deae433d13aaab78616ead82dcb529 Signed-off-by: Sumukh Hallymysore Ravindra --- include/uapi/media/Kbuild | 1 + include/uapi/media/synx.h | 184 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+) create mode 100644 include/uapi/media/synx.h diff --git a/include/uapi/media/Kbuild b/include/uapi/media/Kbuild index 0fccc70892e1..74890b9ef005 100644 --- a/include/uapi/media/Kbuild +++ b/include/uapi/media/Kbuild @@ -2,3 +2,4 @@ header-y += radio-iris.h header-y += radio-iris-commands.h +header-y += synx.h diff --git a/include/uapi/media/synx.h b/include/uapi/media/synx.h new file mode 100644 index 000000000000..4ab7b3e0a9a8 --- /dev/null +++ b/include/uapi/media/synx.h @@ -0,0 +1,184 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +/* + * Copyright (c) 2019, The Linux Foundation. All rights reserved. + */ + +#ifndef __UAPI_SYNX_H__ +#define __UAPI_SYNX_H__ + +#include +#include + +/* Size of opaque payload sent to kernel for safekeeping until signal time */ +#define SYNX_USER_PAYLOAD_SIZE 4 + +#define SYNX_STATE_INVALID 0 +#define SYNX_STATE_ACTIVE 1 +#define SYNX_STATE_SIGNALED_SUCCESS 2 +#define SYNX_STATE_SIGNALED_ERROR 3 + +#define SYNX_MAX_WAITING_SYNX 16 + +#define SYNX_CALLBACK_RESULT_SUCCESS 2 +#define SYNX_CALLBACK_RESULT_FAILED 3 +#define SYNX_CALLBACK_RESULT_CANCELED 4 + +/** + * type of external sync object + * + * SYNX_TYPE_CSL : Object is a CSL sync object + */ +#define SYNX_TYPE_CSL 0 +#define SYNX_MAX_BIND_TYPES 1 +/** + * struct synx_info - Sync object creation information + * + * @name : Optional string representation of the synx object + * @synx_obj : Sync object returned after creation in kernel + */ +struct synx_info { + char name[64]; + __s32 synx_obj; +}; + +/** + * struct synx_userpayload_info - Payload info from user space + * + * @synx_obj: Sync object for which payload has to be registered for + * @reserved: Reserved + * @payload: Pointer to user payload + */ +struct synx_userpayload_info { + __s32 synx_obj; + __u32 reserved; + __u64 payload[SYNX_USER_PAYLOAD_SIZE]; +}; + +/** + * struct synx_signal - Sync object signaling struct + * + * @synx_obj : Sync object to be signaled + * @synx_state : State of the synx object to which it should be signaled + */ +struct synx_signal { + __s32 synx_obj; + __u32 synx_state; +}; + +/** + * struct synx_merge - Merge information for synx objects + * + * @synx_objs : Pointer to synx object array to merge + * @num_objs : Number of objects in the array + * @merged : Merged synx object + */ +struct synx_merge { + __u64 synx_objs; + __u32 num_objs; + __s32 merged; +}; + +/** + * struct synx_wait - Sync object wait information + * + * @synx_obj : Sync object to wait on + * @reserved : Reserved + * @timeout_ms : Timeout in milliseconds + */ +struct synx_wait { + __s32 synx_obj; + __u32 reserved; + __u64 timeout_ms; +}; + +/** + * struct synx_external_desc - info of external sync object + * + * @type : Synx type + * @reserved : Reserved + * @id : Sync object id + * + */ +struct synx_external_desc { + __u32 type; + __u32 reserved; + __s32 id[2]; +}; + +/** + * struct synx_bind - info for binding two synx objects + * + * @synx_obj : Synx object + * @Reserved : Reserved + * @ext_sync_desc : External synx to bind to + * + */ +struct synx_bind { + __s32 synx_obj; + __u32 reserved; + struct synx_external_desc ext_sync_desc; +}; + +/** + * struct synx_addrefcount - info for refcount increment + * + * @synx_obj : Synx object + * @count : Count to increment + * + */ +struct synx_addrefcount { + __s32 synx_obj; + __u32 count; +}; + +/** + * struct synx_id_info - info for import and export of a synx object + * + * @synx_obj : Synx object to be exported + * @secure_key : Secure key created in export and used in import + * @new_synx_obj : Synx object created in import + * + */ +struct synx_id_info { + __s32 synx_obj; + __u32 secure_key; + __s32 new_synx_obj; + __u32 padding; +}; + +/** + * struct synx_private_ioctl_arg - Sync driver ioctl argument + * + * @id : IOCTL command id + * @size : Size of command payload + * @result : Result of command execution + * @reserved : Reserved + * @ioctl_ptr : Pointer to user data + */ +struct synx_private_ioctl_arg { + __u32 id; + __u32 size; + __u32 result; + __u32 reserved; + __u64 ioctl_ptr; +}; + +#define SYNX_PRIVATE_MAGIC_NUM 's' + +#define SYNX_PRIVATE_IOCTL_CMD \ + _IOWR(SYNX_PRIVATE_MAGIC_NUM, 130, struct synx_private_ioctl_arg) + +#define SYNX_CREATE 0 +#define SYNX_RELEASE 1 +#define SYNX_SIGNAL 2 +#define SYNX_MERGE 3 +#define SYNX_REGISTER_PAYLOAD 4 +#define SYNX_DEREGISTER_PAYLOAD 5 +#define SYNX_WAIT 6 +#define SYNX_BIND 7 +#define SYNX_ADDREFCOUNT 8 +#define SYNX_GETSTATUS 9 +#define SYNX_IMPORT 10 +#define SYNX_EXPORT 11 + +#endif /* __UAPI_SYNX_H__ */