13d0407baSopenharmony_ci/* 23d0407baSopenharmony_ci * Copyright (c) 2021 Rockchip Electronics Co., Ltd. 33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43d0407baSopenharmony_ci * you may not use this file except in compliance with the License. 53d0407baSopenharmony_ci * You may obtain a copy of the License at 63d0407baSopenharmony_ci * 73d0407baSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83d0407baSopenharmony_ci * 93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123d0407baSopenharmony_ci * See the License for the specific language governing permissions and 133d0407baSopenharmony_ci * limitations under the License. 143d0407baSopenharmony_ci */ 153d0407baSopenharmony_ci 163d0407baSopenharmony_ci#ifndef __MPP_SOC_H__ 173d0407baSopenharmony_ci#define __MPP_SOC_H__ 183d0407baSopenharmony_ci 193d0407baSopenharmony_ci#include "mpp_dev_defs.h" 203d0407baSopenharmony_ci 213d0407baSopenharmony_ci/* Do NOT use this outside MPP it may be changed in new version */ 223d0407baSopenharmony_citypedef enum RockchipSocType_e { 233d0407baSopenharmony_ci ROCKCHIP_SOC_AUTO, 243d0407baSopenharmony_ci ROCKCHIP_SOC_RK3036, 253d0407baSopenharmony_ci ROCKCHIP_SOC_RK3066, 263d0407baSopenharmony_ci ROCKCHIP_SOC_RK3188, 273d0407baSopenharmony_ci ROCKCHIP_SOC_RK3288, 283d0407baSopenharmony_ci ROCKCHIP_SOC_RK312X, 293d0407baSopenharmony_ci ROCKCHIP_SOC_RK3368, 303d0407baSopenharmony_ci ROCKCHIP_SOC_RK3399, 313d0407baSopenharmony_ci ROCKCHIP_SOC_RK3228H, 323d0407baSopenharmony_ci ROCKCHIP_SOC_RK3328, 333d0407baSopenharmony_ci ROCKCHIP_SOC_RK3228, 343d0407baSopenharmony_ci ROCKCHIP_SOC_RK3229, 353d0407baSopenharmony_ci ROCKCHIP_SOC_RV1108, 363d0407baSopenharmony_ci ROCKCHIP_SOC_RV1109, 373d0407baSopenharmony_ci ROCKCHIP_SOC_RV1126, 383d0407baSopenharmony_ci ROCKCHIP_SOC_RK3326, 393d0407baSopenharmony_ci ROCKCHIP_SOC_RK3128H, 403d0407baSopenharmony_ci ROCKCHIP_SOC_PX30, 413d0407baSopenharmony_ci ROCKCHIP_SOC_RK1808, 423d0407baSopenharmony_ci ROCKCHIP_SOC_RK3566, 433d0407baSopenharmony_ci ROCKCHIP_SOC_RK3568, 443d0407baSopenharmony_ci ROCKCHIP_SOC_BUTT, 453d0407baSopenharmony_ci} RockchipSocType; 463d0407baSopenharmony_ci 473d0407baSopenharmony_citypedef struct MppDecHwCap_t { 483d0407baSopenharmony_ci RK_U32 cap_coding; 493d0407baSopenharmony_ci 503d0407baSopenharmony_ci MppClientType type : 8; 513d0407baSopenharmony_ci 523d0407baSopenharmony_ci RK_U32 cap_fbc : 4; 533d0407baSopenharmony_ci RK_U32 cap_4k : 1; 543d0407baSopenharmony_ci RK_U32 cap_8k : 1; 553d0407baSopenharmony_ci RK_U32 cap_colmv_buf : 1; 563d0407baSopenharmony_ci RK_U32 cap_hw_h265_rps : 1; 573d0407baSopenharmony_ci RK_U32 cap_hw_vp9_prob : 1; 583d0407baSopenharmony_ci RK_U32 cap_jpg_pp_out : 1; 593d0407baSopenharmony_ci RK_U32 cap_10bit : 1; 603d0407baSopenharmony_ci RK_U32 reserved : 13; 613d0407baSopenharmony_ci} MppDecHwCap; 623d0407baSopenharmony_ci 633d0407baSopenharmony_citypedef struct MppEncHwCap_t { 643d0407baSopenharmony_ci RK_U32 cap_coding; 653d0407baSopenharmony_ci 663d0407baSopenharmony_ci MppClientType type : 8; 673d0407baSopenharmony_ci 683d0407baSopenharmony_ci RK_U32 cap_fbc : 4; 693d0407baSopenharmony_ci RK_U32 cap_4k : 1; 703d0407baSopenharmony_ci RK_U32 cap_8k : 1; 713d0407baSopenharmony_ci RK_U32 cap_hw_osd : 1; 723d0407baSopenharmony_ci RK_U32 cap_hw_roi : 1; 733d0407baSopenharmony_ci RK_U32 reserved : 16; 743d0407baSopenharmony_ci} MppEncHwCap; 753d0407baSopenharmony_ci 763d0407baSopenharmony_citypedef struct { 773d0407baSopenharmony_ci const char *compatible; 783d0407baSopenharmony_ci const RockchipSocType soc_type; 793d0407baSopenharmony_ci const RK_U32 vcodec_type; 803d0407baSopenharmony_ci 813d0407baSopenharmony_ci /* Max 4 decoder cap */ 823d0407baSopenharmony_ci const MppDecHwCap *dec_caps[4]; 833d0407baSopenharmony_ci /* Max 4 encoder cap */ 843d0407baSopenharmony_ci const MppEncHwCap *enc_caps[4]; 853d0407baSopenharmony_ci} MppSocInfo; 863d0407baSopenharmony_ci 873d0407baSopenharmony_ci#ifdef __cplusplus 883d0407baSopenharmony_ciextern "C" { 893d0407baSopenharmony_ci#endif 903d0407baSopenharmony_ci 913d0407baSopenharmony_ciconst char *mpp_get_soc_name(void); 923d0407baSopenharmony_ciRockchipSocType mpp_get_soc_type(void); 933d0407baSopenharmony_ciRK_U32 mpp_get_vcodec_type(void); 943d0407baSopenharmony_ci 953d0407baSopenharmony_ciconst MppSocInfo *mpp_get_soc_info(void); 963d0407baSopenharmony_ciRK_U32 mpp_check_soc_cap(MppCtxType type, MppCodingType coding); 973d0407baSopenharmony_ci 983d0407baSopenharmony_ci#ifdef __cplusplus 993d0407baSopenharmony_ci} 1003d0407baSopenharmony_ci#endif 1013d0407baSopenharmony_ci 1023d0407baSopenharmony_ci#endif /* __MPP_SOC_H__ */