kernel-brax3-ubuntu-touch/drivers/media/platform/mtk-isp/mtk-hcp/mtk-hcp_kernelfence.h
erascape f319b992b1 kernel-5.15: Initial import brax3 UT kernel
* halium configs enabled

Signed-off-by: erascape <erascape@proton.me>
2025-09-23 15:17:10 +00:00

69 lines
1.9 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2019 MediaTek Inc.
*/
#ifndef MTK_HCP_KERNELFENCE_H
#define MTK_HCP_KERNELFENCE_H
#include <linux/fdtable.h>
#include <linux/platform_device.h>
#include <linux/scatterlist.h>
#include "mtk-hcp.h"
struct fence_info {
struct list_head fence_entry;
struct dma_fence kFence;
unsigned int use_fence;
unsigned int release_fence;
unsigned int fd;
pid_t tgid;
char name[32];
spinlock_t lock;
};
struct fence_list {
struct list_head list;
struct mutex fence_lock;
};
/**
* mtk_hcp_set_KernelFence - send data from camera kernel driver to HCP without
* waiting demand receives the command.
*
* @pdev: HCP platform device
* @id: HCP ID
* @buf: the data buffer
* @len: the data buffer length
* @get: get fence or release fence (1:get | 0:release)
*
* This function is thread-safe. When this function returns,
* HCP has received the data and save the data in the workqueue.
* After that it will schedule work to dequeue to send data to CM4 or
* RED for programming register.
* Return: Return 0 if sending data successfully, otherwise it is failed.
**/
int mtk_hcp_set_KernelFence(unsigned int *fds, uint8_t fd_num, int get);
/**
* mtk_hcp_set_KernelFence - send data from camera kernel driver to HCP without
* waiting demand receives the command.
*
* @pdev: HCP platform device
* @id: HCP ID
* @buf: the data buffer
* @len: the data buffer length
* @get: get fence or release fence (1:get | 0:release)
*
* This function is thread-safe. When this function returns,
* HCP has received the data and save the data in the workqueue.
* After that it will schedule work to dequeue to send data to CM4 or
* RED for programming register.
* Return: Return 0 if sending data successfully, otherwise it is failed.
**/
int mtk_hcp_uninit_KernelFence(void);
int mtk_hcp_init_KernelFence(void);
#endif /* _MTK_HCP_KERNELFENCE_H */