1*43ecec16SMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0-only */ 2*43ecec16SMauro Carvalho Chehab /* 3*43ecec16SMauro Carvalho Chehab * drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr_v6.h 4*43ecec16SMauro Carvalho Chehab * 5*43ecec16SMauro Carvalho Chehab * Header file for Samsung MFC (Multi Function Codec - FIMV) driver 6*43ecec16SMauro Carvalho Chehab * Contains declarations of hw related functions. 7*43ecec16SMauro Carvalho Chehab * 8*43ecec16SMauro Carvalho Chehab * Copyright (c) 2012 Samsung Electronics Co., Ltd. 9*43ecec16SMauro Carvalho Chehab * http://www.samsung.com/ 10*43ecec16SMauro Carvalho Chehab */ 11*43ecec16SMauro Carvalho Chehab 12*43ecec16SMauro Carvalho Chehab #ifndef S5P_MFC_OPR_V6_H_ 13*43ecec16SMauro Carvalho Chehab #define S5P_MFC_OPR_V6_H_ 14*43ecec16SMauro Carvalho Chehab 15*43ecec16SMauro Carvalho Chehab #include "s5p_mfc_common.h" 16*43ecec16SMauro Carvalho Chehab #include "s5p_mfc_opr.h" 17*43ecec16SMauro Carvalho Chehab 18*43ecec16SMauro Carvalho Chehab #define MFC_CTRL_MODE_CUSTOM MFC_CTRL_MODE_SFR 19*43ecec16SMauro Carvalho Chehab 20*43ecec16SMauro Carvalho Chehab #define MB_WIDTH(x_size) DIV_ROUND_UP(x_size, 16) 21*43ecec16SMauro Carvalho Chehab #define MB_HEIGHT(y_size) DIV_ROUND_UP(y_size, 16) 22*43ecec16SMauro Carvalho Chehab #define S5P_MFC_DEC_MV_SIZE_V6(x, y) (MB_WIDTH(x) * \ 23*43ecec16SMauro Carvalho Chehab (((MB_HEIGHT(y)+1)/2)*2) * 64 + 128) 24*43ecec16SMauro Carvalho Chehab #define S5P_MFC_DEC_MV_SIZE_V10(x, y) (MB_WIDTH(x) * \ 25*43ecec16SMauro Carvalho Chehab (((MB_HEIGHT(y)+1)/2)*2) * 64 + 512) 26*43ecec16SMauro Carvalho Chehab #define S5P_MFC_LCU_WIDTH(x_size) DIV_ROUND_UP(x_size, 32) 27*43ecec16SMauro Carvalho Chehab #define S5P_MFC_LCU_HEIGHT(y_size) DIV_ROUND_UP(y_size, 32) 28*43ecec16SMauro Carvalho Chehab 29*43ecec16SMauro Carvalho Chehab #define s5p_mfc_dec_hevc_mv_size(x, y) \ 30*43ecec16SMauro Carvalho Chehab (DIV_ROUND_UP(x, 64) * DIV_ROUND_UP(y, 64) * 256 + 512) 31*43ecec16SMauro Carvalho Chehab 32*43ecec16SMauro Carvalho Chehab /* Definition */ 33*43ecec16SMauro Carvalho Chehab #define ENC_MULTI_SLICE_MB_MAX ((1 << 30) - 1) 34*43ecec16SMauro Carvalho Chehab #define ENC_MULTI_SLICE_BIT_MIN 2800 35*43ecec16SMauro Carvalho Chehab #define ENC_INTRA_REFRESH_MB_MAX ((1 << 18) - 1) 36*43ecec16SMauro Carvalho Chehab #define ENC_VBV_BUF_SIZE_MAX ((1 << 30) - 1) 37*43ecec16SMauro Carvalho Chehab #define ENC_H264_LOOP_FILTER_AB_MIN -12 38*43ecec16SMauro Carvalho Chehab #define ENC_H264_LOOP_FILTER_AB_MAX 12 39*43ecec16SMauro Carvalho Chehab #define ENC_H264_RC_FRAME_RATE_MAX ((1 << 16) - 1) 40*43ecec16SMauro Carvalho Chehab #define ENC_H263_RC_FRAME_RATE_MAX ((1 << 16) - 1) 41*43ecec16SMauro Carvalho Chehab #define ENC_H264_PROFILE_MAX 3 42*43ecec16SMauro Carvalho Chehab #define ENC_H264_LEVEL_MAX 42 43*43ecec16SMauro Carvalho Chehab #define ENC_MPEG4_VOP_TIME_RES_MAX ((1 << 16) - 1) 44*43ecec16SMauro Carvalho Chehab #define FRAME_DELTA_H264_H263 1 45*43ecec16SMauro Carvalho Chehab #define TIGHT_CBR_MAX 10 46*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_RC_FRAME_RATE_MAX ((1 << 16) - 1) 47*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_QP_INDEX_MIN -12 48*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_QP_INDEX_MAX 12 49*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_LOOP_FILTER_MIN -12 50*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_LOOP_FILTER_MAX 12 51*43ecec16SMauro Carvalho Chehab #define ENC_HEVC_LEVEL_MAX 62 52*43ecec16SMauro Carvalho Chehab 53*43ecec16SMauro Carvalho Chehab #define FRAME_DELTA_DEFAULT 1 54*43ecec16SMauro Carvalho Chehab 55*43ecec16SMauro Carvalho Chehab struct s5p_mfc_hw_ops *s5p_mfc_init_hw_ops_v6(void); 56*43ecec16SMauro Carvalho Chehab const struct s5p_mfc_regs *s5p_mfc_init_regs_v6_plus(struct s5p_mfc_dev *dev); 57*43ecec16SMauro Carvalho Chehab #endif /* S5P_MFC_OPR_V6_H_ */ 58