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