xref: /rockchip-linux_mpp/osal/inc/mpp_soc.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3  * Copyright (c) 2020 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef __MPP_SOC_H__
7 #define __MPP_SOC_H__
8 
9 #include "mpp_dev_defs.h"
10 
11 /* Do NOT use this outside MPP it may be changed in new version */
12 typedef enum RockchipSocType_e {
13     ROCKCHIP_SOC_AUTO,
14     ROCKCHIP_SOC_RK3036,
15     ROCKCHIP_SOC_RK3066,
16     ROCKCHIP_SOC_RK3188,
17     ROCKCHIP_SOC_RK3288,
18     ROCKCHIP_SOC_RK312X,
19     ROCKCHIP_SOC_RK3368,
20     ROCKCHIP_SOC_RK3399,
21     ROCKCHIP_SOC_RK3228H,
22     ROCKCHIP_SOC_RK3328,
23     ROCKCHIP_SOC_RK3228,
24     ROCKCHIP_SOC_RK3229,
25     ROCKCHIP_SOC_RV1108,
26     ROCKCHIP_SOC_RV1109,
27     ROCKCHIP_SOC_RV1126,
28     ROCKCHIP_SOC_RK3326,
29     ROCKCHIP_SOC_RK3128H,
30     ROCKCHIP_SOC_PX30,
31     ROCKCHIP_SOC_RK1808,
32     ROCKCHIP_SOC_RK3566,
33     ROCKCHIP_SOC_RK3567,
34     ROCKCHIP_SOC_RK3568,
35     ROCKCHIP_SOC_RK3588,
36     ROCKCHIP_SOC_RK3528,
37     ROCKCHIP_SOC_RK3562,
38     ROCKCHIP_SOC_RK3576,
39     ROCKCHIP_SOC_RV1126B,
40     ROCKCHIP_SOC_BUTT,
41 } RockchipSocType;
42 
43 typedef struct MppDecHwCap_t {
44     rk_u32          cap_coding;
45 
46     MppClientType   type                : 8;
47 
48     rk_u32          cap_fbc             : 4;
49     rk_u32          cap_4k              : 1;
50     rk_u32          cap_8k              : 1;
51     rk_u32          cap_colmv_compress  : 1;
52     rk_u32          cap_hw_h265_rps     : 1;
53     rk_u32          cap_hw_vp9_prob     : 1;
54     rk_u32          cap_jpg_pp_out      : 1;
55     rk_u32          cap_10bit           : 1;
56     rk_u32          cap_down_scale      : 1;
57     rk_u32          cap_lmt_linebuf     : 1;
58     rk_u32          cap_core_num        : 3;
59     rk_u32          cap_hw_jpg_fix      : 1;
60     rk_u32          reserved            : 8;
61 } MppDecHwCap;
62 
63 typedef struct MppEncHwCap_t {
64     rk_u32          cap_coding;
65 
66     MppClientType   type            : 8;
67 
68     rk_u32          cap_fbc         : 4;
69     rk_u32          cap_4k          : 1;
70     rk_u32          cap_8k          : 1;
71     rk_u32          cap_hw_osd      : 1;
72     rk_u32          cap_hw_roi      : 1;
73     rk_u32          reserved        : 16;
74 } MppEncHwCap;
75 
76 typedef struct {
77     const char              *compatible;
78     const RockchipSocType   soc_type;
79     const rk_u32            vcodec_type;
80 
81     /* Max 6 decoder cap */
82     const MppDecHwCap       *dec_caps[6];
83     /* Max 4 encoder cap */
84     const MppEncHwCap       *enc_caps[4];
85 } MppSocInfo;
86 
87 #ifdef __cplusplus
88 extern "C" {
89 #endif
90 
91 const char *mpp_get_soc_name(void);
92 RockchipSocType mpp_get_soc_type(void);
93 
94 const MppSocInfo *mpp_get_soc_info(void);
95 rk_u32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding);
96 const MppDecHwCap* mpp_get_dec_hw_info_by_client_type(MppClientType client_type);
97 
98 #ifdef __cplusplus
99 }
100 #endif
101 
102 #endif /*__MPP_SOC_H__*/
103