blob: b05f6a7f2194df4339268c83b809a886b7310c05 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef VIDEO_REG_HEADER_HH
#define VIDEO_REG_HEADER_HH
#include <linux/string.h>
#include <linux/ctype.h>
#define MAX_VD_LAYER_G12 2
#define MAX_SR_NUM 2
#define MAX_VD_LAYER_T7 3
#define MAX_VPP_NUM 3
struct hw_vd_reg_s {
u32 vd_if0_gen_reg; /* VD1_IF0_GEN_REG */
u32 vd_if0_canvas0;/* VD1_IF0_CANVAS0 */
u32 vd_if0_canvas1;/* VD1_IF0_CANVAS1 */
u32 vd_if0_luma_x0;/* VD1_IF0_LUMA_X0 */
u32 vd_if0_luma_y0; /* VD1_IF0_LUMA_Y0 */
u32 vd_if0_chroma_x0; /* VD1_IF0_CHROMA_X0 */
u32 vd_if0_chroma_y0; /* VD1_IF0_CHROMA_Y0 */
u32 vd_if0_luma_x1; /* VD1_IF0_LUMA_X1 */
u32 vd_if0_luma_y1;/* VD1_IF0_LUMA_Y1 */
u32 vd_if0_chroma_x1;/* VD1_IF0_CHROMA_X1 */
u32 vd_if0_chroma_y1;/* VD1_IF0_CHROMA_Y1 */
u32 vd_if0_rpt_loop; /* VD1_IF0_RPT_LOOP */
u32 vd_if0_luma0_rpt_pat;/* VD1_IF0_LUMA0_RPT_PAT */
u32 vd_if0_chroma0_rpt_pat;/* VD1_IF0_CHROMA0_RPT_PAT */
u32 vd_if0_luma1_rpt_pat;/* VD1_IF0_LUMA1_RPT_PAT */
u32 vd_if0_chroma1_rpt_pat;/* VD1_IF0_CHROMA1_RPT_PAT */
u32 vd_if0_luma_psel;/* VD1_IF0_LUMA_PSEL */
u32 vd_if0_chroma_psel;/* VD1_IF0_CHROMA_PSEL */
u32 vd_if0_luma_fifo_size;/* VD1_IF0_LUMA_FIFO_SIZE */
u32 vd_if0_gen_reg2;/* VD1_IF0_GEN_REG2 */
u32 vd_if0_gen_reg3;/* VD1_IF0_GEN_REG3 */
u32 viu_vd_fmt_ctrl;/* VIU_VD1_FMT_CTRL */
u32 viu_vd_fmt_w;/* VIU_VD1_FMT_W */
};
struct hw_vd_linear_reg_s {
u32 vd_if0_baddr_y;
u32 vd_if0_baddr_cb;
u32 vd_if0_baddr_cr;
u32 vd_if0_stride_0;
u32 vd_if0_stride_1;
u32 vd_if0_baddr_y_f1;
u32 vd_if0_baddr_cb_f1;
u32 vd_if0_baddr_cr_f1;
u32 vd_if0_stride_0_f1;
u32 vd_if0_stride_1_f1;
};
struct hw_afbc_reg_s {
u32 afbc_enable; /* AFBC_ENABLE */
u32 afbc_mode;/* AFBC_MODE */
u32 afbc_size_in;/* AFBC_SIZE_IN */
u32 afbc_dec_def_color;/* AFBC_DEC_DEF_COLOR */
u32 afbc_conv_ctrl; /* AFBC_CONV_CTRL */
u32 afbc_lbuf_depth; /* AFBC_LBUF_DEPTH */
u32 afbc_head_baddr; /* AFBC_HEAD_BADDR */
u32 afbc_body_baddr; /* AFBC_BODY_BADDR */
u32 afbc_size_out;/* AFBC_SIZE_OUT */
u32 afbc_out_yscope;/* AFBC_OUT_YSCOPE */
u32 afbc_stat;/* AFBC_STAT */
u32 afbc_vd_cfmt_ctrl; /* AFBC_VD_CFMT_CTRL */
u32 afbc_vd_cfmt_w;/* AFBC_VD_CFMT_W */
u32 afbc_mif_hor_scope;/* AFBC_MIF_HOR_SCOPE */
u32 afbc_mif_ver_scope;/* AFBC_MIF_VER_SCOPE */
u32 afbc_pixel_hor_scope;/* AFBC_PIXEL_HOR_SCOPE */
u32 afbc_pixel_ver_scope;/* AFBC_PIXEL_VER_SCOPE */
u32 afbc_vd_cfmt_h;/* AFBC_VD_CFMT_H */
u32 afbcdec_iquant_enable; /* AFBCDEC_IQUANT_ENABLE */
u32 afbcdec_iquant_lut_1; /* AFBCDEC_IQUANT_LUT_1 */
u32 afbcdec_iquant_lut_2; /* AFBCDEC_IQUANT_LUT_2 */
u32 afbcdec_iquant_lut_3; /* AFBCDEC_IQUANT_LUT_3 */
u32 afbcdec_iquant_lut_4; /* AFBCDEC_IQUANT_LUT_4 */
u32 afbc_top_ctrl;
};
struct hw_sr_reg_s {
u32 sr_sharp_sync_ctrl;
};
struct hw_fg_reg_s {
u32 fgrain_ctrl;
u32 fgrain_win_h;
u32 fgrain_win_v;
};
struct hw_pps_reg_s {
u32 vd_scale_coef_idx;
u32 vd_scale_coef;
u32 vd_vsc_region12_startp;
u32 vd_vsc_region34_startp;
u32 vd_vsc_region4_endp;
u32 vd_vsc_start_phase_step;
u32 vd_vsc_region1_phase_slope;
u32 vd_vsc_region3_phase_slope;
u32 vd_vsc_phase_ctrl;
u32 vd_vsc_init_phase;
u32 vd_hsc_region12_startp;
u32 vd_hsc_region34_startp;
u32 vd_hsc_region4_endp;
u32 vd_hsc_start_phase_step;
u32 vd_hsc_region1_phase_slope;
u32 vd_hsc_region3_phase_slope;
u32 vd_hsc_phase_ctrl;
u32 vd_sc_misc;
u32 vd_hsc_phase_ctrl1;
u32 vd_prehsc_coef;
u32 vd_pre_scale_ctrl;/* sc2 VPP_PREHSC_CTRL */
u32 vd_prevsc_coef;
u32 vd_prehsc_coef1;
};
struct hw_vpp_blend_reg_s {
u32 preblend_h_start_end;
u32 preblend_v_start_end;
u32 preblend_h_size;
u32 postblend_h_start_end;
u32 postblend_v_start_end;
/* pip window */
u32 vd_pip_alph_ctrl;
u32 vd_pip_alph_scp_h;
u32 vd_pip_alph_scp_v;
};
struct hw_vppx_blend_reg_s {
u32 vpp_bld_din0_hscope;
u32 vpp_bld_din0_vscope;
u32 vpp_bld_out_size;
u32 vpp_bld_ctrl;
u32 vpp_bld_dummy_data;
u32 vpp_bld_dummy_alpha;
};
struct hw_viu_misc_reg_s {
u32 mali_afbcd_top_ctrl;
u32 mali_afbcd1_top_ctrl;
u32 mali_afbcd2_top_ctrl;
u32 vpp_vd1_top_ctrl;
u32 vpp_vd2_top_ctrl;
u32 vpp_vd3_top_ctrl;
u32 vd_path_misc_ctrl;
u32 path_start_sel;
u32 vpp_misc;
u32 vpp_misc1;
};
struct hw_vpp_path_size_s {
u32 vd1_hdr_in_size;
u32 vd2_hdr_in_size;
u32 vd3_hdr_in_size;
u32 vpp_line_in_length;
u32 vpp_pic_in_height;
u32 vd1_sc_h_startp;
u32 vd1_sc_h_endp;
u32 vd1_sc_v_startp;
u32 vd1_sc_v_endp;
u32 vd2_sc_h_startp;
u32 vd2_sc_h_endp;
u32 vd2_sc_v_startp;
u32 vd2_sc_v_endp;
u32 vd3_sc_h_startp;
u32 vd3_sc_h_endp;
u32 vd3_sc_v_startp;
u32 vd3_sc_v_endp;
u32 vpp_preblend_h_size;
u32 preblend_vd1_h_start_end;
u32 preblend_vd1_v_start_end;
u32 vpp_ve_h_v_size;
u32 vpp_postblend_h_size;
u32 vpp_out_h_v_size;
u32 postblend_vd1_h_start_end;
u32 postlend_vd1_v_start_end;
u32 blend_vd2_h_start_end;
u32 blend_vd2_v_start_end;
u32 blend_vd3_h_start_end;
u32 blend_vd3_v_start_end;
};
struct hw_aisr_reshape_reg_s {
u32 aisr_reshape_ctrl0;
u32 aisr_reshape_ctrl1;
u32 aisr_reshape_scope_x;
u32 aisr_reshape_scope_y;
u32 aisr_reshape_baddr00;
u32 aisr_reshape_baddr01;
u32 aisr_reshape_baddr02;
u32 aisr_reshape_baddr03;
u32 aisr_reshape_baddr10;
u32 aisr_reshape_baddr11;
u32 aisr_reshape_baddr12;
u32 aisr_reshape_baddr13;
u32 aisr_reshape_baddr20;
u32 aisr_reshape_baddr21;
u32 aisr_reshape_baddr22;
u32 aisr_reshape_baddr23;
u32 aisr_reshape_baddr30;
u32 aisr_reshape_baddr31;
u32 aisr_reshape_baddr32;
u32 aisr_reshape_baddr33;
u32 aisr_post_ctrl;
u32 aisr_post_size;
u32 aisr_sr1_nn_post_top;
};
extern struct hw_vd_reg_s vd_mif_reg_legacy_array[MAX_VD_LAYER_G12];
extern struct hw_vd_reg_s vd_mif_reg_g12_array[MAX_VD_LAYER_G12];
extern struct hw_vd_reg_s vd_mif_reg_sc2_array[MAX_VD_LAYER_G12];
extern struct hw_afbc_reg_s vd_afbc_reg_array[MAX_VD_LAYER_G12];
extern struct hw_afbc_reg_s vd_afbc_reg_sc2_array[MAX_VD_LAYER_G12];
extern struct hw_fg_reg_s fg_reg_g12_array[MAX_VD_LAYER_G12];
extern struct hw_fg_reg_s fg_reg_sc2_array[MAX_VD_LAYER_G12];
extern struct hw_pps_reg_s pps_reg_array[MAX_VD_LAYER_G12];
extern struct hw_pps_reg_s pps_reg_array_t5d[MAX_VD_LAYER_G12];
extern struct hw_vpp_blend_reg_s vpp_blend_reg_array[MAX_VD_LAYER_G12];
extern struct hw_vd_reg_s vd_mif_reg_t7_array[MAX_VD_LAYER_T7];
extern struct hw_vd_linear_reg_s vd_mif_linear_reg_t7_array[MAX_VD_LAYER_T7];
extern struct hw_afbc_reg_s vd_afbc_reg_t7_array[MAX_VD_LAYER_T7];
extern struct hw_fg_reg_s fg_reg_t7_array[MAX_VD_LAYER_T7];
extern struct hw_pps_reg_s pps_reg_t7_array[MAX_VD_LAYER_T7 + 1];
extern struct hw_vpp_blend_reg_s vpp_blend_reg_t7_array[MAX_VD_LAYER_T7];
extern struct hw_vpp_path_size_s vpp_path_size_reg;
extern struct hw_viu_misc_reg_s viu_misc_reg;
extern struct hw_vppx_blend_reg_s vppx_blend_reg_array[MAX_VPP_NUM - 1];
extern struct hw_aisr_reshape_reg_s aisr_reshape_reg;
#endif