SmartAudio/lichee/linux-4.9/drivers/char/sunxi-di/di_ebios.h

1056 lines
30 KiB
C
Executable File

/*
* Allwinner SoCs de-interlace driver.
*
* Copyright (C) 2016 Allwinner.
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
#ifndef __DI_EBIOS_H__
#define __DI_EBIOS_H__
#include <linux/types.h>
typedef struct __SCAL_SRC_TYPE {
/* 0:plannar; 1: interleaved; 2: plannar uv combined;
* 4: plannar mb; 6: uv combined mb
*/
__u8 mod;
/* 0:yuv444; 1: yuv422; 2: yuv420; 3:yuv411; 4: csi rgb; 5:rgb888 */
__u8 fmt;
__u8 ps; /* */
} __di_src_type_t;
typedef struct __SCAL_OUT_TYPE {
/* 0:plannar rgb; 1: argb(byte0,byte1, byte2, byte3); 2:bgra;
* 4:yuv444; 5:yuv420; 6:yuv422; 7:yuv411
*/
__u8 fmt;
__u8 ps; /* */
/* output alpha channel enable, valid when rgb888fmt */
__u8 alpha_en;
} __di_out_type_t;
typedef struct __SCAL_SRC_SIZE {
__u32 src_width;
__u32 src_height;
__u32 scal_width;
__u32 scal_height;
} __di_src_size_t;
typedef struct __SCAL_OUT_SIZE {
__u32 width;
__u32 height;
__u32 fb_width;
__u32 fb_height;
} __di_out_size_t;
typedef struct _SCAL_BUF_ADDR {
__u32 ch0_addr;
__u32 ch1_addr;
__u32 ch2_addr;
} __di_buf_addr_t;
typedef enum {
DI_BGRA = 0,
DI_ARGB = 1,
DI_AYUV = 0,
DI_VUYA = 1,
DI_UVUV = 0,
DI_VUVU = 1,
DI_UYVY = 0,
DI_YUYV = 1,
DI_VYUY = 2,
DI_YVYU = 3,
DI_RGB565 = 0,
DI_BGR565 = 1,
DI_ARGB4444 = 0,
DI_BGRA4444 = 1,
DI_ARGB1555 = 0,
DI_BGRA5551 = 1
} __di_ps_t;
typedef enum {
DI_PLANNAR = 0,
DI_INTERLEAVED,
DI_UVCOMBINED,
DI_PLANNARMB = 4,
DI_UVCOMBINEDMB = 6
} __di_inmode_t;
typedef enum {
DI_INYUV444 = 0,
DI_INYUV422,
DI_INYUV420,
DI_INYUV411,
DI_INRGB565,
DI_INRGB888,
DI_INRGB4444,
DI_INRGB1555
} __di_infmt_t;
typedef enum {
DI_OUTPRGB888 = 0,
DI_OUTI0RGB888,
DI_OUTI1RGB888,
DI_OUTPYUV444 = 4,
DI_OUTPYUV420,
DI_OUTPYUV422,
DI_OUTPYUV411,
DI_OUTUVCYUV420 = 13
} __di_outfmt_t;
typedef union {
u32 dwval;
struct {
u32 en : 1; /* Default: 0x0; */
u32 res0 : 31; /* Default:; */
} bits;
} DI_EN_REG_t;
typedef union {
u32 dwval;
struct {
u32 reg_rdy_en : 1; /* Default: 0x0; */
u32 coef_rdy_en : 1; /* Default: 0x0; */
u32 wb_en : 1; /* Default: 0x0; */
u32 res0 : 5; /* Default:; */
u32 out_port_sel : 2; /* Default: 0x0; */
u32 res1 : 1; /* Default:; */
u32 out_ctrl : 1; /* Default: 0x0; */
u32 in_ctrl : 3; /* Default: 0x0; */
u32 res2 : 1; /* Default:; */
u32 frm_start : 1; /* Default: 0x0; */
u32 res3 : 6; /* Default:; */
/* fir coef ram access control, for single buffer */
u32 coef_access_ctrl : 1;
u32 res4 : 8; /* Default:; */
} bits;
} DI_FRM_CTRL_REG_t;
typedef union {
u32 dwval;
struct {
u32 res0 : 1; /* Default:; */
u32 csc_bypass_en : 1; /* Default: 0x0; */
u32 res1 : 28; /* Default:; */
u32 sram_map_sel : 2; /* Default: 0x0; */
} bits;
} DI_BYPASS_REG_t;
typedef union {
u32 dwval;
struct {
u32 res0 : 8; /* Default:; */
u32 linebuf_agth : 1; /* Default: 0x0; */
u32 res1 : 23; /* Default:; */
} bits;
} DI_AGTH_SEL_REG_t;
typedef union {
u32 dwval;
struct {
u32 trig_line : 13; /* Default: 0x0; */
u32 res0 : 2; /* Default:; */
u32 field_sel : 1; /* Default: 0x0; */
u32 current_line : 12; /* Default: 0x0; */
u32 res1 : 4; /* Default:; */
} bits;
} DI_LINT_CTRL_REG_t;
typedef union {
u32 dwval;
struct {
u32 prefrm_addr; /* Default: 0x0; */
} bits;
} DI_3D_PRELUMA_REG_t;
typedef union {
u32 dwval;
struct {
u32 buf_addr; /* Default: 0x0; */
} bits;
} DI_BUF_ADDR0_REG_t;
typedef union {
u32 dwval;
struct {
u32 buf_addr; /* Default: 0x0; */
} bits;
} DI_BUF_ADDR1_REG_t;
typedef union {
u32 dwval;
struct {
u32 buf_addr; /* Default: 0x0; */
} bits;
} DI_BUF_ADDR2_REG_t;
typedef union {
u32 dwval;
struct {
u32 field_cnt : 8; /* Default: 0x0; */
u32 valid_field_cnt : 3; /* Default: 0x0; */
u32 res0 : 1; /* Default:; */
u32 field_loop_mod : 1; /* Default: 0x0; */
u32 res1 : 11; /* Default:; */
u32 fir_offset : 6; /* Default: 0x20; */
u32 res2 : 2; /* Default:; */
} bits;
} DI_FIELD_CTRL_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_TB_OFF0_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_TB_OFF1_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_TB_OFF2_REG_t;
typedef union {
u32 dwval;
struct {
u32 prefrm_addr; /* Default: 0x0; */
} bits;
} DI_3D_PRECHROMA_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_stride; /* Default: 0x0; */
} bits;
} DI_LINESTRD0_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_stride; /* Default: 0x0; */
} bits;
} DI_LINESTRD1_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_stride; /* Default: 0x0; */
} bits;
} DI_LINESTRD2_REG_t;
typedef union {
u32 dwval;
struct {
u32 data_ps : 2; /* Default: 0x0; */
u32 res0 : 2; /* Default:; */
u32 data_fmt : 3; /* Default: 0x0; */
u32 res1 : 1; /* Default:; */
u32 data_mod : 3; /* Default: 0x0; */
u32 res2 : 1; /* Default:; */
u32 scan_mod : 1; /* Default: 0x0; */
u32 res3 : 1; /* Default:; */
u32 a_coef_sel : 1; /* Default: 0x0; */
u32 res4 : 1; /* Default:; */
u32 byte_seq : 1; /* Default: 0x0; */
u32 res5 : 15; /* Default:; */
} bits;
} DI_INPUT_FMT_REG_t;
typedef union {
u32 dwval;
struct {
u32 wb_addr; /* Default: 0x0; */
} bits;
} DI_WB_ADDR0_REG_t;
typedef union {
u32 dwval;
struct {
u32 wb_addr; /* Default: 0x0; */
} bits;
} DI_WB_ADDR1_REG_t;
typedef union {
u32 dwval;
struct {
u32 wb_addr; /* Default: 0x0; */
} bits;
} DI_WB_ADDR2_REG_t;
typedef union {
u32 dwval;
struct {
u32 data_fmt : 4; /* Default: 0x0; */
u32 scan_mod : 1; /* Default: 0x0; */
u32 data_ps : 2; /* Default:; */
u32 alpha_en : 1; /* Default: 0x0; */
u32 byte_seq : 1; /* Default: 0x0; */
u32 res2 : 23; /* Default:; */
} bits;
} DI_OUTPUT_FMT_REG_t;
typedef union {
u32 dwval;
struct {
u32 res0 : 7; /* Default:; */
u32 wb_en : 1; /* Default: 0x0; */
u32 res1 : 1; /* Default:; */
u32 line_en : 1; /* Default: 0x0; */
u32 reg_load_en : 1; /* Default: 0x0; */
u32 res2 : 21; /* Default:; */
} bits;
} DI_INT_EN_REG_t;
typedef union {
u32 dwval;
struct {
u32 res0 : 7; /* Default:; */
u32 wb_status : 1; /* Default: 0x0; */
u32 res1 : 1; /* Default:; */
u32 line_status : 1; /* Default: 0x0; */
u32 reg_load_status : 1; /* Default: 0x0; */
u32 res2 : 21; /* Default:; */
} bits;
} DI_INT_STATUS_REG_t;
typedef union {
u32 dwval;
struct {
u32 frm_busy : 1; /* Default: 0x0; */
u32 wb_status : 1; /* Default: 0x0; */
u32 cfg_pending : 1; /* Default: 0x0; */
u32 res0 : 1; /* Default:; */
u32 dram_status : 1; /* Default: 0x0; */
u32 lcd_field : 1; /* Default: 0x0; */
u32 res1 : 5; /* Default:; */
/* fir coef access status, for single buffer */
u32 coef_access_status : 1;
u32 wb_err_status : 1; /* Default: 0x0; */
u32 res2 : 1; /* Default:; */
u32 wb_err_losedata : 1; /* Default: 0x0; */
u32 wb_err_sync : 1; /* Default: 0x0; */
u32 line_on_sync : 13; /* Default: 0x0; */
u32 res3 : 3; /* Default:; */
} bits;
} DI_STATUS_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF00_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF01_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF02_REG_t;
typedef union {
u32 dwval;
struct {
u32 cont : 14; /* Default: 0x0; */
u32 res0 : 18; /* Default:; */
} bits;
} DI_CSC_COEF03_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF10_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF11_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF12_REG_t;
typedef union {
u32 dwval;
struct {
u32 cont : 14; /* Default: 0x0; */
u32 res0 : 18; /* Default:; */
} bits;
} DI_CSC_COEF13_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF20_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF21_REG_t;
typedef union {
u32 dwval;
struct {
u32 coef : 13; /* Default: 0x0; */
u32 res0 : 19; /* Default:; */
} bits;
} DI_CSC_COEF22_REG_t;
typedef union {
u32 dwval;
struct {
u32 cont : 14; /* Default: 0x0; */
u32 res0 : 18; /* Default:; */
} bits;
} DI_CSC_COEF23_REG_t;
typedef union {
u32 dwval;
struct {
u32 en : 1; /* Default: 0x0; */
u32 res0 : 7; /* Default:; */
u32 flag_out_en : 1; /* Default: 0x0; */
u32 res1 : 7; /* Default:; */
u32 mod : 2; /* Default: 0x0; */
u32 res2 : 6; /* Default:; */
u32 diagintp_en : 1; /* Default: 0x0; */
u32 tempdiff_en : 1; /* Default: 0x0; */
u32 res3 : 6; /* Default:; */
} bits;
} DI_DI_CTRL_REG_t;
typedef union {
u32 dwval;
struct {
u32 th0 : 7; /* Default: 0x28; */
u32 res0 : 1; /* Default:; */
u32 th1 : 7; /* Default: 0x5; */
u32 res1 : 9; /* Default:; */
u32 th3 : 8; /* Default: 0x8; */
} bits;
} DI_DI_DIAGINTP_REG_t;
typedef union {
u32 dwval;
struct {
u32 sad_central_th : 7; /* Default: 0xA; */
u32 res0 : 1; /* Default:; */
u32 ambiguity_th : 7; /* Default: 0xA; */
u32 res1 : 1; /* Default:; */
u32 direct_dither_th : 11; /* Default: 0xF; */
u32 res2 : 5; /* Default:; */
} bits;
} DI_DI_TEMPDIFF_REG_t;
typedef union {
u32 dwval;
struct {
u32 minlumath : 8; /* Default: 0x9; */
u32 maxlumath : 8; /* Default: 0x10; */
u32 avglumashifter : 8; /* Default: 0x6; */
u32 pixel_static_th : 2; /* Default: 0x3; */
u32 res0 : 6; /* Default:; */
} bits;
} DI_DI_LUMA_TH_REG_t;
typedef union {
u32 dwval;
struct {
u32 th2 : 8; /* Default: 0xA; */
u32 res0 : 8; /* Default:; */
u32 th3 : 8; /* Default: 0x14; */
u32 res1 : 8; /* Default:; */
} bits;
} DI_DI_SPATCOMP_REG_t;
typedef union {
u32 dwval;
struct {
u32 chroma_diff_th : 8; /* Default: 0x5; */
u32 res0 : 8; /* Default:; */
u32 luma : 6; /* Default: 0x1F; */
u32 res1 : 2; /* Default:; */
u32 chroma : 6; /* Default: 0x1F; */
u32 res2 : 2; /* Default:; */
} bits;
} DI_DI_CHROMADIFF_REG_t;
typedef union {
u32 dwval;
struct {
u32 prefrm_addr; /* Default: 0x0; */
} bits;
} DI_DI_PRELUMA_REG_t;
typedef union {
u32 dwval;
struct {
u32 prefrm_addr; /* Default: 0x0; */
} bits;
} DI_DI_PRECHROMA_REG_t;
typedef union {
u32 dwval;
struct {
u32 tile_flag_addr0; /* Default: 0x0; */
} bits;
} DI_DI_TILEFLAG0_REG_t;
typedef union {
u32 dwval;
struct {
u32 tile_flag_addr1; /* Default: 0x0; */
} bits;
} DI_DI_TILEFLAG1_REG_t;
typedef union {
u32 dwval;
struct {
u32 tile_flag_linestrd; /* Default: 0x200; */
} bits;
} DI_DI_FLAGLINESTRD_REG_t;
typedef union {
u32 dwval;
struct {
u32 field_cnt : 8; /* Default: 0x0; */
u32 valid_field_cnt : 3; /* Default: 0x0; */
u32 res0 : 1;
u32 field_loop_mod : 1; /* Default: 0x0; */
u32 res1 : 19;
} bits;
} DI_DI_FLAG_SEQ_REG_t;
typedef union {
u32 dwval;
struct {
u32 en : 1; /* Default: 0x0; */
u32 res0 : 31; /* Default:; */
} bits;
} DI_WB_LINESTRD_EN_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_strd; /* Default: 0x0; */
} bits;
} DI_WB_LINESTRD0_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_strd; /* Default: 0x0; */
} bits;
} DI_WB_LINESTRD1_REG_t;
typedef union {
u32 dwval;
struct {
u32 line_strd; /* Default: 0x0; */
} bits;
} DI_WB_LINESTRD2_REG_t;
typedef union {
u32 dwval;
struct {
u32 mod_sel : 2; /* Default: 0x0; */
u32 res0 : 6; /* Default:; */
u32 ci_out_en : 1; /* Default: 0x0; */
u32 res1 : 1; /* Default:; */
u32 ss_out_en : 1; /* Default: 0x0; */
u32 li_in_en : 1; /* Default: 0x0; */
u32 tb_out_scan_mod : 1; /* Default: 0x0; */
u32 res2 : 3; /* Default:; */
u32 ci_out_mod : 3; /* Default: 0x0; */
u32 res3 : 5; /* Default:; */
u32 tb_out_mod_field : 2; /* Default: 0x0; */
u32 res4 : 6; /* Default:; */
} bits;
} DI_3D_CTRL_REG_t;
typedef union {
u32 dwval;
struct {
u32 right_ch0_addr; /* Default: 0x0; */
} bits;
} DI_3D_BUF_ADDR0_REG_t;
typedef union {
u32 dwval;
struct {
u32 right_ch1_addr; /* Default: 0x0; */
} bits;
} DI_3D_BUF_ADDR1_REG_t;
typedef union {
u32 dwval;
struct {
u32 right_ch2_addr; /* Default: 0x0; */
} bits;
} DI_3D_BUF_ADDR2_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_3D_TB_OFF0_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_3D_TB_OFF1_REG_t;
typedef union {
u32 dwval;
struct {
u32 x_offset0 : 5; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 y_offset0 : 5; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
u32 x_offset1 : 5; /* Default: 0x0; */
u32 res2 : 11; /* Default:; */
} bits;
} DI_3D_TB_OFF2_REG_t;
typedef union {
u32 dwval;
struct {
u32 wb_stride : 5; /* Default: 0x0; */
} bits;
} DI_3D_WB_STRD_REG_t;
typedef union {
u32 dwval;
struct {
u32 in_width : 13; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 in_height : 13; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
} bits;
} DI_CH0_INSIZE_REG_t;
typedef union {
u32 dwval;
struct {
u32 out_width : 13; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 out_height : 13; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
} bits;
} DI_CH0_OUTSIZE_REG_t;
typedef union {
u32 dwval;
struct {
u32 factor_frac : 16; /* Default: 0x0; */
u32 factor_int : 8; /* Default: 0x0; */
u32 res0 : 8; /* Default:; */
} bits;
} DI_CH0_HORZFACT_REG_t;
typedef union {
u32 dwval;
struct {
u32 factor_frac : 16; /* Default: 0x0; */
u32 factor_int : 8; /* Default: 0x0; */
u32 res0 : 8; /* Default:; */
} bits;
} DI_CH0_VERTFACT_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH0_HORZPHASE_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH0_VERTPHASE0_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH0_VERTPHASE1_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 7; /* Default: 0x7D; */
u32 res0 : 1; /* Default:; */
u32 tap1 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap2 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap3 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH0_HORZTAP0_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap4 : 7; /* Default: 0x1; */
u32 res0 : 1; /* Default:; */
u32 tap5 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap6 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap7 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH0_HORZTAP1_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 7; /* Default: 0x7F; */
u32 res0 : 1; /* Default:; */
u32 tap1 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap2 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap3 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH0_VERTTAP_REG_t;
typedef union {
u32 dwval;
struct {
u32 in_width : 13; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 in_height : 13; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
} bits;
} DI_CH1_INSIZE_REG_t;
typedef union {
u32 dwval;
struct {
u32 out_width : 13; /* Default: 0x0; */
u32 res0 : 3; /* Default:; */
u32 out_height : 13; /* Default: 0x0; */
u32 res1 : 3; /* Default:; */
} bits;
} DI_CH1_OUTSIZE_REG_t;
typedef union {
u32 dwval;
struct {
u32 factor_frac : 16; /* Default: 0x0; */
u32 factor_int : 8; /* Default: 0x0; */
u32 res0 : 8; /* Default:; */
} bits;
} DI_CH1_HORZFACT_REG_t;
typedef union {
u32 dwval;
struct {
u32 factor_frac : 16; /* Default: 0x0; */
u32 factor_int : 8; /* Default: 0x0; */
u32 res0 : 8; /* Default:; */
} bits;
} DI_CH1_VERTFACT_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH1_HORZPHASE_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH1_VERTPHASE0_REG_t;
typedef union {
u32 dwval;
struct {
u32 phase : 20; /* Default: 0x0; */
u32 res0 : 12; /* Default:; */
} bits;
} DI_CH1_VERTPHASE1_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 7; /* Default: 0x7D; */
u32 res0 : 1; /* Default:; */
u32 tap1 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap2 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap3 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH1_HORZTAP0_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap4 : 7; /* Default: 0x1; */
u32 res0 : 1; /* Default:; */
u32 tap5 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap6 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap7 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH1_HORZTAP1_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 7; /* Default: 0x7F; */
u32 res0 : 1; /* Default:; */
u32 tap1 : 7; /* Default: 0x1; */
u32 res1 : 1; /* Default:; */
u32 tap2 : 7; /* Default: 0x1; */
u32 res2 : 1; /* Default:; */
u32 tap3 : 7; /* Default: 0x1; */
u32 res3 : 1; /* Default:; */
} bits;
} DI_CH1_VERTTAP_REG_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 8;
u32 tap1 : 8;
u32 tap2 : 8;
u32 tap3 : 8;
} bits;
} DI_CH0_HORZCOEF0_REGN_t;
typedef union {
u32 dwval;
struct {
u32 tap4 : 8;
u32 tap5 : 8;
u32 tap6 : 8;
u32 tap7 : 8;
} bits;
} DI_CH0_HORZCOEF1_REGN_t;
typedef union {
u32 dwval;
struct {
u32 tap0 : 8;
u32 tap1 : 8;
u32 tap2 : 8;
u32 tap3 : 8;
} bits;
} DI_CH0_VERTCOEF_REGN_t;
typedef union {
u32 dwval;
struct {
u32 res0 : 32; /* */
} bits;
} DI_RESEVED_REG_t;
/* device define */
typedef struct {
DI_EN_REG_t modl_en;/* 0x00 */
DI_FRM_CTRL_REG_t frm_ctrl;/* 0x04 */
DI_BYPASS_REG_t bypass;/* 0x08 */
DI_AGTH_SEL_REG_t agth_sel;/* 0x0c */
DI_LINT_CTRL_REG_t lint_ctrl;/* 0x10 */
DI_RESEVED_REG_t res0x14[2];/* 0x14~0x1b */
DI_3D_PRELUMA_REG_t trd_preluma;/* 0x1c */
DI_BUF_ADDR0_REG_t buf_addr0;/* 0x20 */
DI_BUF_ADDR1_REG_t buf_addr1;/* 0x24 */
DI_BUF_ADDR2_REG_t buf_addr2;/* 0x28 */
DI_FIELD_CTRL_REG_t field_ctrl;/* 0x2c */
DI_TB_OFF0_REG_t tb_off0;/* 0x30 */
DI_TB_OFF1_REG_t tb_off1;/* 0x34 */
DI_TB_OFF2_REG_t tb_off2;/* 0x38 */
DI_3D_PRECHROMA_REG_t trd_prechroma;/* 0x3c */
DI_LINESTRD0_REG_t linestrd0;/* 0x40 */
DI_LINESTRD1_REG_t linestrd1;/* 0x44 */
DI_LINESTRD2_REG_t linestrd2;/* 0x48 */
DI_INPUT_FMT_REG_t input_fmt;/* 0x4c */
DI_WB_ADDR0_REG_t wb_addr0;/* 0x50 */
DI_WB_ADDR1_REG_t wb_addr1;/* 0x54 */
DI_WB_ADDR2_REG_t wb_addr2;/* 0x58 */
DI_OUTPUT_FMT_REG_t output_fmt;/* 0x5c */
DI_INT_EN_REG_t int_en;/* 0x60 */
DI_INT_STATUS_REG_t int_status;/* 0x64 */
DI_STATUS_REG_t status;/* 0x68 */
DI_RESEVED_REG_t res0x6c;/* 0x6c */
DI_CSC_COEF03_REG_t csc_coef[12];/* 0x70~0x9f */
DI_DI_CTRL_REG_t di_ctrl;/* 0xa0 */
DI_DI_DIAGINTP_REG_t di_diagintp;/* 0xa4 */
DI_DI_TEMPDIFF_REG_t di_tempdiff;/* 0xa8 */
DI_DI_LUMA_TH_REG_t di_lumath;/* 0xac */
DI_DI_SPATCOMP_REG_t di_spatcomp;/* 0xb0 */
DI_DI_CHROMADIFF_REG_t di_chromadiff;/* 0xb4 */
DI_DI_PRELUMA_REG_t di_preluma;/* 0xb8 */
DI_DI_PRECHROMA_REG_t di_prechroma;/* 0xbc */
DI_DI_TILEFLAG0_REG_t di_tileflag0;/* 0xc0 */
DI_DI_TILEFLAG1_REG_t di_tileflag1;/* 0xc4 */
DI_DI_FLAGLINESTRD_REG_t di_flaglinestrd;/* 0xc8 */
DI_DI_FLAG_SEQ_REG_t di_flagseq;/* 0xcc */
DI_WB_LINESTRD_EN_REG_t wb_linestrd_en;/* 0xd0 */
DI_WB_LINESTRD0_REG_t wb_linestrd0;/* 0xd4 */
DI_WB_LINESTRD1_REG_t wb_linestrd1;/* 0xd8 */
DI_WB_LINESTRD2_REG_t wb_linestrd2;/* 0xdc */
DI_3D_CTRL_REG_t trd_ctrl;/* 0xe0 */
DI_3D_BUF_ADDR0_REG_t trd_buf_addr0;/* 0xe4 */
DI_3D_BUF_ADDR1_REG_t trd_buf_addr1;/* 0xe8 */
DI_3D_BUF_ADDR2_REG_t trd_buf_addr2;/* 0xec */
DI_3D_TB_OFF0_REG_t trd_tb_off0;/* 0xf0 */
DI_3D_TB_OFF1_REG_t trd_tb_off1;/* 0xf4 */
DI_3D_TB_OFF2_REG_t trd_tb_off2;/* 0xf8 */
DI_3D_WB_STRD_REG_t trd_wb_strd;/* 0xfc */
DI_CH0_INSIZE_REG_t ch0_insize;/* 0x100 */
DI_CH0_OUTSIZE_REG_t ch0_outsize;/* 0x104 */
DI_CH0_HORZFACT_REG_t ch0_horzfact;/* 0x108 */
DI_CH0_VERTFACT_REG_t ch0_vertfact;/* 0x10c */
DI_CH0_HORZPHASE_REG_t ch0_horzphase;/* 0x110 */
DI_CH0_VERTPHASE0_REG_t ch0_vertphase0;/* 0x114 */
DI_CH0_VERTPHASE1_REG_t ch0_vertphase1;/* 0x118 */
DI_RESEVED_REG_t res0x11c;/* 0x11c */
DI_CH0_HORZTAP0_REG_t ch0_horztap0;/* 0x120 */
DI_CH0_HORZTAP1_REG_t ch0_horztap1;/* 0x124 */
DI_CH0_VERTTAP_REG_t ch0_verttap;/* 0x128 */
DI_RESEVED_REG_t res0x12c[53];/* 0x12c~0x1FF */
DI_CH1_INSIZE_REG_t ch1_insize;/* 0x200 */
DI_CH1_OUTSIZE_REG_t ch1_outsize;/* 0x204 */
DI_CH1_HORZFACT_REG_t ch1_horzfact;/* 0x208 */
DI_CH1_VERTFACT_REG_t ch1_vertfact;/* 0x20c */
DI_CH1_HORZPHASE_REG_t ch1_horzphase;/* 0x210 */
DI_CH1_VERTPHASE0_REG_t ch1_vertphase0;/* 0x214 */
DI_CH1_VERTPHASE1_REG_t ch1_vertphase1;/* 0x218 */
DI_RESEVED_REG_t res0x21c;/* 0x21c */
DI_CH1_HORZTAP0_REG_t ch1_horztap0;/* 0x220 */
DI_CH1_HORZTAP1_REG_t ch1_horztap1;/* 0x224 */
DI_CH1_VERTTAP_REG_t ch1_verttap;/* 0x228 */
DI_RESEVED_REG_t res0x22c[117];/* 0x22c~0x3FF */
DI_CH0_HORZCOEF0_REGN_t ch0_horzcoef0[32];/* 0x400~0x47f */
DI_CH0_HORZCOEF1_REGN_t ch0_horzcoef1[32];/* 0x480~0x4ff */
DI_CH0_VERTCOEF_REGN_t ch0_vertcoef[32];/* 0x500~0x5ff */
DI_RESEVED_REG_t res0x580[32];/* 0x580~0x57f */
DI_CH0_HORZCOEF0_REGN_t ch1_horzcoef0[32];/* 0x600~0x67f */
DI_CH0_HORZCOEF1_REGN_t ch1_horzcoef1[32];/* 0x680~6ff */
DI_CH0_VERTCOEF_REGN_t ch1_vertcoef[32];/* 0x700~0x77f */
DI_RESEVED_REG_t res0x780[32];/* 0x780~0x7ff */
DI_CH0_HORZCOEF0_REGN_t ch3_horzcoef0[32];/* 0x800~0x87f */
DI_CH0_HORZCOEF1_REGN_t ch3_horzcoef1[32];/* 0x880~8ff */
DI_CH0_VERTCOEF_REGN_t ch3_vertcoef[32];/* 0x900~0x97f */
DI_RESEVED_REG_t res0xA80[32];/* 0xa80~0xaff */
} __di_dev_t;
__s32 DI_Init(void);
__s32 DI_Config_Src(__di_buf_addr_t *addr, __di_src_size_t *size,
__di_src_type_t *type);
__s32 DI_Set_Scaling_Factor(__di_src_size_t *in_size,
__di_out_size_t *out_size);
__s32 DI_Set_Scaling_Coef(__di_src_size_t *in_size, __di_out_size_t *out_size,
__di_src_type_t *in_type, __di_out_type_t *out_type);
__s32 DI_Set_Out_Format(__di_out_type_t *out_type);
__s32 DI_Set_Out_Size(__di_out_size_t *out_size);
__s32 DI_Set_Writeback_Addr(__di_buf_addr_t *addr);
__s32 DI_Set_Writeback_Addr_ex(__di_buf_addr_t *addr, __di_out_size_t *size,
__di_out_type_t *type);
__s32 DI_Set_Di_Ctrl(__u8 en, __u8 mode, __u8 diagintp_en, __u8 tempdiff_en);
__s32 DI_Set_Di_PreFrame_Addr(__u32 luma_addr, __u32 chroma_addr);
__s32 DI_Set_Di_MafFlag_Src(__u32 cur_addr, __u32 pre_addr, __u32 stride);
__s32 DI_Set_Di_Field(u32 field);
__s32 DI_Set_Reg_Rdy(void);
__s32 DI_Enable(void);
__s32 DI_Module_Enable(void);
__s32 DI_Set_Reset(void);
__s32 DI_Set_Irq_Enable(__u32 enable);
__s32 DI_Clear_irq(void);
__s32 DI_Get_Irq_Status(void);
__s32 DI_Set_Writeback_Start(void);
__s32 DI_Internal_Set_Clk(__u32 enable);
__u32 DI_VAtoPA(__u32 va);
#endif