blob: a5e7b38bc0024cf90dee6e4d1de117739799e973 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* drivers/amlogic/media/di_multi/sc2/reg_bits_afbc.h
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#ifndef __REG_BITS_AFBC_H__
#define __REG_BITS_AFBC_H__
#ifdef MARK_SC2 //move to hw.h?
struct regs_t {
unsigned int add;/*add index*/
unsigned int bit;
unsigned int wid;
unsigned int id;
// unsigned int df_val;
char *name;
};
#endif
#ifdef MARK_SC2
#define AFBC_ENABLE (0x1ae0)
#define AFBC_MODE (0x1ae1)
#define AFBC_SIZE_IN (0x1ae2)
#define AFBC_DEC_DEF_COLOR (0x1ae3)
#define AFBC_CONV_CTRL (0x1ae4)
#define AFBC_LBUF_DEPTH (0x1ae5)
#define AFBC_HEAD_BADDR (0x1ae6)
#define AFBC_BODY_BADDR (0x1ae7)
#define AFBC_SIZE_OUT (0x1ae8)
#define AFBC_OUT_YSCOPE (0x1ae9)
#define AFBC_STAT (0x1aea)
#define AFBC_VD_CFMT_CTRL (0x1aeb)
#define AFBC_VD_CFMT_W (0x1aec)
#define AFBC_MIF_HOR_SCOPE (0x1aed)
#define AFBC_MIF_VER_SCOPE (0x1aee)
#define AFBC_PIXEL_HOR_SCOPE (0x1aef)
#define AFBC_PIXEL_VER_SCOPE (0x1af0)
#define AFBC_VD_CFMT_H (0x1af1)
#endif
//#define AFBC_REG_INDEX_NUB (18)
//#define AFBC_DEC_NUB (2)
union AFBC_ENABLE_BITS {
unsigned int d32;
struct {
unsigned int dec_frm_start:1,
head_len_sel:1,
reserved3:6,
dec_enable:1,
cmd_blk_size:3,
ddr_blk_size:2,
reserved2:2,
soft_rst:3,
dos_uncomp_mode:1,
fmt444_comb:1,
addr_link_en:1,
fmt_size_sw_mode:1,
reserved1:9;
} b;
};
union AFBC_MODE_BITS {
unsigned int d32;
struct {
unsigned int horz_skip_uv:2,
vert_skip_uv:2,
horz_skip_y:2,
vert_skip_y:2,
compbits_y:2, /* 0-8bits 1-9bits 2-10bits */
compbits_u:2, /* 0-8bits 1-9bits 2-10bits */
compbits_v:2, /* 0-8bits 1-9bits 2-10bits */
burst_len:2,
hold_line_num:7,
reserved2:1,
mif_urgent:2,
rev_mode:2,
blk_mem_mode:1,
ddr_sz_mode:1,
reserved1:2;
} b;
};
union AFBC_SIZE_IN_BITS {
unsigned int d32;
struct {
unsigned int vsize_in:13,
reserved2:3,
hsize_in:13,
reserved1:3;
} b;
};
union AFBC_DEC_DEF_COLOR_BITS {
unsigned int d32;
struct {
unsigned int def_color_v:10,
def_color_u:10,
def_color_y:10,
reserved1:2;
} b;
};
union AFBC_CONV_CTRL_BITS {
unsigned int d32;
struct {
unsigned int conv_lbf_len:12,
fmt_mode:2,
reserved1:18;
} b;
};
union AFBC_LBUF_DEPTH_BITS {
unsigned int d32;
struct {
unsigned int mif_lbuf_depth:12,
reserved2:4,
dec_lbuf_depth:12,
reserved1:4;
} b;
};
union AFBC_SIZE_OUT_BITS {
unsigned int d32;
struct {
unsigned int vsize_out:13,
reserved2:3,
hszie_out:13,
reserved1:3;
} b;
};
union AFBC_OUT_YSCOPE_BITS {
unsigned int d32;
struct {
unsigned int out_vert_end:13,
reserved2:3,
out_vert_bgn:13,
reserved1:3;
} b;
};
union AFBC_STAT_BITS {
unsigned int d32;
struct {
unsigned int frm_end_stat:1,
ro_dbg_top_info:31;
} b;
};
union AFBC_VD_CFMT_CTRL_BITS {
unsigned int d32;
struct {
unsigned int cvfmt_en:1,
phase_step:7,
cvfmt_ini_phase:4,
skip_line_num:4,
rpt_line0_en:1,
phase0_nrpt_en:1,
rpt_last_dis:1,
phase0_always_en:1,
chfmt_en:1,
yc_ratio:2,
rpt_p0_en:1,
ini_phase:4,
rpt_pix:1,
reserved1:1,
cfmt_soft_rst:1,
gclk_bit_dis:1;
} b;
};
union AFBC_VD_CFMT_W_BITS {
unsigned int d32;
struct {
unsigned int v_f_width:12,
reserved2:4,
h_f_width:12,
reserved1:4;
} b;
};
union AFBC_MIF_HOR_SCOPE_BITS {
unsigned int d32;
struct {
unsigned int mif_blk_end_h:10,
reserved2:6,
mif_blk_bgn_h:10,
reserved1:6;
} b;
};
union AFBC_MIF_VER_SCOPE_BITS {
unsigned int d32;
struct {
unsigned int mif_blk_end_v:12,
reserved2:4,
mif_blk_bgn_v:12,
reserved1:4;
} b;
};
union AFBC_PIXEL_HOR_SCOPE_BITS {
unsigned int d32;
struct {
unsigned int dec_pixel_end_h:13,
reserved2:3,
dec_pixel_bgn_h:13,
reserved1:3;
} b;
};
union AFBC_PIXEL_VER_SCOPE_BITS {
unsigned int d32;
struct {
unsigned int dec_pixel_end_v:13,
reserved2:3,
dec_pixel_bgn_v:13,
reserved1:3;
} b;
};
union AFBC_VD_CFMT_H_BITS {
unsigned int d32;
struct {
unsigned int v_fmt_height:13,
reserved1:19;
} b;
};
struct reg_afbc_bits_s {
union AFBC_ENABLE_BITS enable;
union AFBC_MODE_BITS mode;
union AFBC_SIZE_IN_BITS size_in;
union AFBC_DEC_DEF_COLOR_BITS dec_color;
union AFBC_CONV_CTRL_BITS conv_ctr;
union AFBC_LBUF_DEPTH_BITS lbuf_depth;
/*
*
*/
unsigned int head_addr;
unsigned int body_addr;
union AFBC_SIZE_OUT_BITS size_out;
union AFBC_OUT_YSCOPE_BITS out_yscope;
union AFBC_STAT_BITS state;
union AFBC_VD_CFMT_CTRL_BITS vd_cfmt;
union AFBC_VD_CFMT_W_BITS vd_cfmt_w;
union AFBC_MIF_HOR_SCOPE_BITS mif_hor_scope;
union AFBC_MIF_VER_SCOPE_BITS mif_v_scope;
union AFBC_PIXEL_HOR_SCOPE_BITS pixel_h;
union AFBC_PIXEL_VER_SCOPE_BITS pixel_v;
union AFBC_VD_CFMT_H_BITS vd_cfmt_h;
};
struct afbc_ctr_s {
union {
unsigned int d32;
struct {
//unsigned int support : 1;
unsigned int int_flg : 1; /*addr ini*/
unsigned int en : 1;
unsigned int rev1 : 2;
unsigned int chg_level : 2;
unsigned int rev2 : 26;
} b;
};
unsigned int l_vtype;
unsigned int l_h;
unsigned int l_w;
unsigned int l_bitdepth;
unsigned int addr_h;
unsigned int addr_b;
};
#ifdef MARK_SC2 /*temp for AFBC_REG_INDEX_NUB define*/
struct reg_afbs_s {
unsigned int support;
struct afbc_ctr_s ctr;
union {
struct reg_afbc_bits_s bits;
unsigned int d32[AFBC_REG_INDEX_NUB];
};
unsigned int addr[AFBC_REG_INDEX_NUB];
};
#endif
/**************************************************************/
/*move from deinterlace.c*/
#define AFBC_B_DEC_FRM_START (0)
#define AFBC_B_HEAD_LEN_SEL (1)
#define AFBC_B_DEC_ENABLE (2)
#define AFBC_B_CMD_BLK_SIZE (3)
#define AFBC_B_DDR_BLK_SIZE (4)
#define AFBC_B_SOFT_RST (5)
#define AFBC_B_DOS_UNCOMP_MODE (6)
#define AFBC_B_FMT444_COMB (7)
#define AFBC_B_ADDR_LINK_EN (8)
#define AFBC_B_FMT_SIZE_SW_MODE (9)
#define AFBC_B_HORZ_SKIP_UV (10)
#define AFBC_B_VERT_SKIP_UV (11)
#define AFBC_B_HORZ_SKIP_Y (12)
#define AFBC_B_VERT_SKIP_Y (13)
#define AFBC_B_COMPBITS_Y (14)
#define AFBC_B_COMPBITS_U (15)
#define AFBC_B_COMPBITS_V (16)
#define AFBC_B_BURST_LEN (17)
#define AFBC_B_HOLD_LINE_NUM (18)
#define AFBC_B_MIF_URGENT (19)
#define AFBC_B_REV_MODE (20)
#define AFBC_B_BLK_MEM_MODE (21)
#define AFBC_B_DDR_SZ_MODE (22)
#define AFBC_B_VSIZE_IN (23)
#define AFBC_B_HSIZE_IN (24)
#define AFBC_B_DEF_COLOR_V (25)
#define AFBC_B_DEF_COLOR_U (26)
#define AFBC_B_DEF_COLOR_Y (27)
#define AFBC_B_CONV_LBF_LEN (28)
#define AFBC_B_FMT_MODE (29)
#define AFBC_B_MIF_LBUF_DEPTH (30)
#define AFBC_B_DEC_LBUF_DEPTH (31)
#define AFBC_B_MIF_INFO_BADDR (32)
#define AFBC_B_VSIZE_OUT (33)
#define AFBC_B_HSZIE_OUT (34)
#define AFBC_B_OUT_VERT_END (35)
#define AFBC_B_OUT_VERT_BGN (36)
#define AFBC_B_FRM_END_STAT (37)
#define AFBC_B_RO_DBG_TOP_INFO (38)
#define AFBC_B_CVFMT_EN (39)
#define AFBC_B_PHASE_STEP (40)
#define AFBC_B_CVFMT_INI_PHASE (41)
#define AFBC_B_SKIP_LINE_NUM (42)
#define AFBC_B_RPT_LINE0_EN (43)
#define AFBC_B_PHASE0_NRPT_EN (44)
#define AFBC_B_RPT_LAST_DIS (45)
#define AFBC_B_PHASE0_ALWAYS_EN (46)
#define AFBC_B_CHFMT_EN (47)
#define AFBC_B_YC_RATIO (48)
#define AFBC_B_RPT_P0_EN (49)
#define AFBC_B_INI_PHASE (50)
#define AFBC_B_RPT_PIX (51)
#define AFBC_B_CFMT_SOFT_RST (52)
#define AFBC_B_GCLK_BIT_DIS (53)
#define AFBC_B_V_F_WIDTH (54)
#define AFBC_B_H_F_WIDTH (55)
#define AFBC_B_MIF_BLK_END_H (56)
#define AFBC_B_MIF_BLK_BGN_H (57)
#define AFBC_B_MIF_BLK_END_V (58)
#define AFBC_B_MIF_BLK_BGN_V (59)
#define AFBC_B_DEC_PIXEL_END_H (60)
#define AFBC_B_DEC_PIXEL_BGN_H (61)
#define AFBC_B_DEC_PIXEL_END_V (62)
#define AFBC_B_DEC_PIXEL_BGN_V (63)
#define AFBC_B_V_FMT_HEIGHT (64)
#endif /*__REG_BITS_AFBC_H__*/