1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2020 Rockchip Electronics Co. LTD 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Licensed under the Apache License, Version 2.0 (the "License"); 5*4882a593Smuzhiyun * you may not use this file except in compliance with the License. 6*4882a593Smuzhiyun * You may obtain a copy of the License at 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * http://www.apache.org/licenses/LICENSE-2.0 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Unless required by applicable law or agreed to in writing, software 11*4882a593Smuzhiyun * distributed under the License is distributed on an "AS IS" BASIS, 12*4882a593Smuzhiyun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4882a593Smuzhiyun * See the License for the specific language governing permissions and 14*4882a593Smuzhiyun * limitations under the License. 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #ifndef __MPP_SOC_H__ 18*4882a593Smuzhiyun #define __MPP_SOC_H__ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #include "mpp_dev_defs.h" 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* Do NOT use this outside MPP it may be changed in new version */ 23*4882a593Smuzhiyun typedef enum RockchipSocType_e { 24*4882a593Smuzhiyun ROCKCHIP_SOC_AUTO, 25*4882a593Smuzhiyun ROCKCHIP_SOC_RK3036, 26*4882a593Smuzhiyun ROCKCHIP_SOC_RK3066, 27*4882a593Smuzhiyun ROCKCHIP_SOC_RK3188, 28*4882a593Smuzhiyun ROCKCHIP_SOC_RK3288, 29*4882a593Smuzhiyun ROCKCHIP_SOC_RK312X, 30*4882a593Smuzhiyun ROCKCHIP_SOC_RK3368, 31*4882a593Smuzhiyun ROCKCHIP_SOC_RK3399, 32*4882a593Smuzhiyun ROCKCHIP_SOC_RK3228H, 33*4882a593Smuzhiyun ROCKCHIP_SOC_RK3328, 34*4882a593Smuzhiyun ROCKCHIP_SOC_RK3228, 35*4882a593Smuzhiyun ROCKCHIP_SOC_RK3229, 36*4882a593Smuzhiyun ROCKCHIP_SOC_RV1108, 37*4882a593Smuzhiyun ROCKCHIP_SOC_RV1109, 38*4882a593Smuzhiyun ROCKCHIP_SOC_RV1126, 39*4882a593Smuzhiyun ROCKCHIP_SOC_RK3326, 40*4882a593Smuzhiyun ROCKCHIP_SOC_RK3128H, 41*4882a593Smuzhiyun ROCKCHIP_SOC_PX30, 42*4882a593Smuzhiyun ROCKCHIP_SOC_RK1808, 43*4882a593Smuzhiyun ROCKCHIP_SOC_RK3566, 44*4882a593Smuzhiyun ROCKCHIP_SOC_RK3568, 45*4882a593Smuzhiyun ROCKCHIP_SOC_RK3588, 46*4882a593Smuzhiyun ROCKCHIP_SOC_RK3528, 47*4882a593Smuzhiyun ROCKCHIP_SOC_RK3562, 48*4882a593Smuzhiyun ROCKCHIP_SOC_BUTT, 49*4882a593Smuzhiyun } RockchipSocType; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun typedef struct MppDecHwCap_t { 52*4882a593Smuzhiyun RK_U32 cap_coding; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun MppClientType type : 8; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun RK_U32 cap_fbc : 4; 57*4882a593Smuzhiyun RK_U32 cap_4k : 1; 58*4882a593Smuzhiyun RK_U32 cap_8k : 1; 59*4882a593Smuzhiyun RK_U32 cap_colmv_compress : 1; 60*4882a593Smuzhiyun RK_U32 cap_hw_h265_rps : 1; 61*4882a593Smuzhiyun RK_U32 cap_hw_vp9_prob : 1; 62*4882a593Smuzhiyun RK_U32 cap_jpg_pp_out : 1; 63*4882a593Smuzhiyun RK_U32 cap_10bit : 1; 64*4882a593Smuzhiyun RK_U32 cap_down_scale : 1; 65*4882a593Smuzhiyun RK_U32 cap_lmt_linebuf : 1; 66*4882a593Smuzhiyun RK_U32 cap_core_num : 3; 67*4882a593Smuzhiyun RK_U32 cap_hw_jpg_fix : 1; 68*4882a593Smuzhiyun RK_U32 reserved : 8; 69*4882a593Smuzhiyun } MppDecHwCap; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun typedef struct MppEncHwCap_t { 72*4882a593Smuzhiyun RK_U32 cap_coding; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun MppClientType type : 8; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun RK_U32 cap_fbc : 4; 77*4882a593Smuzhiyun RK_U32 cap_4k : 1; 78*4882a593Smuzhiyun RK_U32 cap_8k : 1; 79*4882a593Smuzhiyun RK_U32 cap_hw_osd : 1; 80*4882a593Smuzhiyun RK_U32 cap_hw_roi : 1; 81*4882a593Smuzhiyun RK_U32 reserved : 16; 82*4882a593Smuzhiyun } MppEncHwCap; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun typedef struct { 85*4882a593Smuzhiyun const char *compatible; 86*4882a593Smuzhiyun const RockchipSocType soc_type; 87*4882a593Smuzhiyun const RK_U32 vcodec_type; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* Max 4 decoder cap */ 90*4882a593Smuzhiyun const MppDecHwCap *dec_caps[6]; 91*4882a593Smuzhiyun /* Max 4 encoder cap */ 92*4882a593Smuzhiyun const MppEncHwCap *enc_caps[4]; 93*4882a593Smuzhiyun } MppSocInfo; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #ifdef __cplusplus 96*4882a593Smuzhiyun extern "C" { 97*4882a593Smuzhiyun #endif 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun const char *mpp_get_soc_name(void); 100*4882a593Smuzhiyun RockchipSocType mpp_get_soc_type(void); 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun const MppSocInfo *mpp_get_soc_info(void); 103*4882a593Smuzhiyun RK_U32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding); 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #ifdef __cplusplus 106*4882a593Smuzhiyun } 107*4882a593Smuzhiyun #endif 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun #endif /*__MPP_SOC_H__*/ 110