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