xref: /rockchip-linux_mpp/osal/driver/inc/mpp_service_impl.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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