1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2 /* 3 * Copyright (c) 2021 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef __MPP_SERVICE_IMPL_H__ 7 #define __MPP_SERVICE_IMPL_H__ 8 9 #include "mpp_list.h" 10 11 #include "mpp_device.h" 12 #include "mpp_service.h" 13 14 #define MAX_REG_OFFSET 64 15 #define MAX_RCB_OFFSET 32 16 #define MAX_INFO_COUNT 16 17 18 typedef struct FdTransInfo_t { 19 RK_U32 reg_idx; 20 RK_U32 offset; 21 } RegOffsetInfo; 22 23 typedef struct RcbInfo_t { 24 RK_U32 reg_idx; 25 RK_U32 size; 26 } RcbInfo; 27 28 typedef struct MppDevMppService_t { 29 RK_S32 client_type; 30 RK_S32 client; 31 RK_S32 server; 32 void *serv_ctx; 33 RK_S32 batch_io; 34 MppCbCtx *dev_cb; 35 36 MppReqV1 *reqs; 37 RK_S32 req_max; 38 RK_S32 req_cnt; 39 40 RegOffsetInfo *reg_offset_info; 41 RK_S32 reg_offset_max; 42 RK_S32 reg_offset_count; 43 RK_S32 reg_offset_pos; 44 45 RcbInfo *rcb_info; 46 RK_S32 rcb_max; 47 RK_S32 rcb_count; 48 RK_S32 rcb_pos; 49 50 MppDevBatCmd bat_cmd; 51 52 RK_S32 info_count; 53 MppDevInfoCfg info[MAX_INFO_COUNT]; 54 55 /* support max cmd buttom */ 56 const MppServiceCmdCap *cap; 57 RK_U32 support_set_info; 58 RK_U32 support_set_rcb_info; 59 RK_U32 support_hw_irq; 60 61 pthread_mutex_t lock_bufs; 62 struct list_head list_bufs; 63 } MppDevMppService; 64 65 #ifdef __cplusplus 66 extern "C" { 67 #endif 68 69 RK_S32 mpp_service_ioctl(RK_S32 fd, RK_U32 cmd, RK_U32 size, void *param); 70 RK_S32 mpp_service_ioctl_request(RK_S32 fd, MppReqV1 *req); 71 MPP_RET mpp_service_check_cmd_valid(RK_U32 cmd, const MppServiceCmdCap *cap); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif /* __MPP_SERVICE_IMPL_H__ */ 78