xref: /OK3568_Linux_fs/kernel/drivers/media/i2c/nvp6158_drv/nvp6158_video.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /********************************************************************************
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun *  Copyright (C) 2017 	NEXTCHIP Inc. All rights reserved.
5*4882a593Smuzhiyun *  Module		: The decoder's video format module
6*4882a593Smuzhiyun *  Description	: Video format
7*4882a593Smuzhiyun *  Author		:
8*4882a593Smuzhiyun *  Date         :
9*4882a593Smuzhiyun *  Version		: Version 2.0
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun ********************************************************************************
12*4882a593Smuzhiyun *  History      :
13*4882a593Smuzhiyun *
14*4882a593Smuzhiyun *
15*4882a593Smuzhiyun ********************************************************************************/
16*4882a593Smuzhiyun #ifndef _NVP6158_VIDEO_HI_
17*4882a593Smuzhiyun #define _NVP6158_VIDEO_HI_
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #include "nvp6158_common.h"
20*4882a593Smuzhiyun /* ===============================================
21*4882a593Smuzhiyun  * APP -> DRV
22*4882a593Smuzhiyun  * =============================================== */
23*4882a593Smuzhiyun typedef struct _video_input_init {
24*4882a593Smuzhiyun 	unsigned char ch;
25*4882a593Smuzhiyun 	unsigned char format;
26*4882a593Smuzhiyun 	unsigned char dist;
27*4882a593Smuzhiyun 	unsigned char input;
28*4882a593Smuzhiyun 	unsigned char val;
29*4882a593Smuzhiyun 	unsigned char interface;
30*4882a593Smuzhiyun } video_input_init;
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun typedef struct _video_init_all {
33*4882a593Smuzhiyun 	video_input_init ch_param[4];
34*4882a593Smuzhiyun 	NVP6158_DVP_MODE mode;
35*4882a593Smuzhiyun } video_init_all;
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun /********************************************************************
38*4882a593Smuzhiyun  *  define and enum
39*4882a593Smuzhiyun  ********************************************************************/
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun typedef enum _nvp6158_outmode_sel {
42*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_SD = 0,
43*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_HD,
44*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_FHD,
45*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_FHD_DDR,
46*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_SD,
47*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_HD,
48*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_MIX,
49*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_FHD,
50*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_SD,
51*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_HD,
52*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_MIX,
53*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_297MHz,
54*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_BT1120S_720P,
55*4882a593Smuzhiyun 	NVP6158_OUTMODE_1MUX_BT1120S_1080P,
56*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_BT1120S,
57*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_BT1120S_720P,
58*4882a593Smuzhiyun 	NVP6158_OUTMODE_2MUX_BT1120S_1080P,
59*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_BT1120S,
60*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_BT1120S_DDR,
61*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_BT1120S_720P,
62*4882a593Smuzhiyun 	NVP6158_OUTMODE_4MUX_BT1120S_1080P,
63*4882a593Smuzhiyun 	NVP6158_OUTMODE_BUTT
64*4882a593Smuzhiyun } NVP6158_OUTMODE_SEL;
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun typedef enum _nvp6158_det_sel {
67*4882a593Smuzhiyun 	NVP6158_DET_MODE_AUTO = 0,
68*4882a593Smuzhiyun 	NVP6158_DET_MODE_AHD,
69*4882a593Smuzhiyun 	NVP6158_DET_MODE_CVI,
70*4882a593Smuzhiyun 	NVP6158_DET_MODE_TVI,
71*4882a593Smuzhiyun 	NVP6158_DET_MODE_OTHER,
72*4882a593Smuzhiyun 	NVP6158_DET_MODE_BUTT
73*4882a593Smuzhiyun } NVP6158_DET_SEL;
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /********************************************************************
76*4882a593Smuzhiyun  *  structure
77*4882a593Smuzhiyun  ********************************************************************/
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun /********************************************************************
80*4882a593Smuzhiyun  *  external api
81*4882a593Smuzhiyun  ********************************************************************/
82*4882a593Smuzhiyun void nvp6158_common_init(unsigned char chip);
83*4882a593Smuzhiyun int nvp6158_set_portmode(const unsigned char chip, const unsigned char portsel,
84*4882a593Smuzhiyun 			const unsigned char portmode, const unsigned char chid);
85*4882a593Smuzhiyun int nvp6158_set_chnmode(const unsigned char ch, const unsigned char chnmode);
86*4882a593Smuzhiyun int nvp6168_set_chnmode(const unsigned char ch, const unsigned char chnmode);
87*4882a593Smuzhiyun void nvp6158_set_portcontrol(unsigned char chip, unsigned char portsel,
88*4882a593Smuzhiyun 				unsigned char enclk, unsigned char endata);
89*4882a593Smuzhiyun void nvp6158_set_chn_commonvalue(const unsigned char ch, const unsigned char chnmode);
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun unsigned int nvp6158_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts);
92*4882a593Smuzhiyun unsigned int nvp6168_video_fmt_det(const unsigned char ch, NVP6158_INFORMATION_S *ps_nvp6158_vfmts);
93*4882a593Smuzhiyun unsigned char nvp6158_video_fmt_debounce(unsigned char ch,
94*4882a593Smuzhiyun 		unsigned char keep_fmt, unsigned int keep_sync_width);
95*4882a593Smuzhiyun unsigned int nvp6158_getvideoloss(void);
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun void nvp6158_video_set_contrast(unsigned char ch, unsigned int value, unsigned int v_format);
98*4882a593Smuzhiyun void nvp6158_video_set_brightness(unsigned char ch, unsigned int value, unsigned int v_format);
99*4882a593Smuzhiyun void nvp6158_video_set_saturation(unsigned char ch, unsigned int value, unsigned int v_format);
100*4882a593Smuzhiyun void nvp6158_video_set_hue(unsigned char ch, unsigned int value, unsigned int v_format);
101*4882a593Smuzhiyun void nvp6158_video_set_sharpness(unsigned char ch, unsigned int value);
102*4882a593Smuzhiyun void nvp6158_video_set_ugain(unsigned char ch, unsigned int value);
103*4882a593Smuzhiyun void nvp6158_video_set_vgain(unsigned char ch, unsigned int value);
104*4882a593Smuzhiyun void nvp6158_video_set_adcclk(unsigned char ch, unsigned char value);
105*4882a593Smuzhiyun unsigned char nvp6158_video_get_adcclk(unsigned char ch);
106*4882a593Smuzhiyun void nvp6158_hide_ch(unsigned char ch);
107*4882a593Smuzhiyun void nvp6158_show_ch(unsigned char ch);
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun void nvp6158_vd_chnreset(unsigned char ch);
110*4882a593Smuzhiyun int nvp6158_GetAgcLockStatus(unsigned char ch);
111*4882a593Smuzhiyun int nvp6158_GetFSCLockStatus(unsigned char ch);
112*4882a593Smuzhiyun void nvp6158_ResetFSCLock(unsigned char ch);
113*4882a593Smuzhiyun void nvp6158_chn_killcolor(unsigned char ch, unsigned char onoff);
114*4882a593Smuzhiyun int nvp6158_acp_SetVFmt(unsigned char ch, const unsigned char vfmt);
115*4882a593Smuzhiyun void nvp6158_video_input_new_format_set(const unsigned char ch, const unsigned char chnmode);
116*4882a593Smuzhiyun void nvp6158_dump_reg(unsigned char ch, unsigned char bank);
117*4882a593Smuzhiyun NC_FORMAT_STANDARD NVP6158_GetFmtStd_from_Fmtdef(NC_VIVO_CH_FORMATDEF vivofmt);
118*4882a593Smuzhiyun void nvp6158_additional_for3MoverDef(unsigned char chip);
119*4882a593Smuzhiyun void nvp6158_video_powerdown(unsigned char ch);
120*4882a593Smuzhiyun void nvp6158_set_colorpattern(void);
121*4882a593Smuzhiyun void nvp6158_set_colorpattern2(void);
122*4882a593Smuzhiyun void nvp6158_set_colorpattern3(void);
123*4882a593Smuzhiyun void nvp6158_channel_reset(unsigned char ch);
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun #endif // End of _NVP6158_VIDEO_HI_
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun /********************************************************************
129*4882a593Smuzhiyun  *  End of file
130*4882a593Smuzhiyun  ********************************************************************/
131