xref: /OK3568_Linux_fs/kernel/drivers/media/i2c/tvp514x_regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * drivers/media/i2c/tvp514x_regs.h
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2008 Texas Instruments Inc
6*4882a593Smuzhiyun  * Author: Vaibhav Hiremath <hvaibhav@ti.com>
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * Contributors:
9*4882a593Smuzhiyun  *     Sivaraj R <sivaraj@ti.com>
10*4882a593Smuzhiyun  *     Brijesh R Jadav <brijesh.j@ti.com>
11*4882a593Smuzhiyun  *     Hardik Shah <hardik.shah@ti.com>
12*4882a593Smuzhiyun  *     Manjunath Hadli <mrh@ti.com>
13*4882a593Smuzhiyun  *     Karicheri Muralidharan <m-karicheri2@ti.com>
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #ifndef _TVP514X_REGS_H
17*4882a593Smuzhiyun #define _TVP514X_REGS_H
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /*
20*4882a593Smuzhiyun  * TVP5146/47 registers
21*4882a593Smuzhiyun  */
22*4882a593Smuzhiyun #define REG_INPUT_SEL			(0x00)
23*4882a593Smuzhiyun #define REG_AFE_GAIN_CTRL		(0x01)
24*4882a593Smuzhiyun #define REG_VIDEO_STD			(0x02)
25*4882a593Smuzhiyun #define REG_OPERATION_MODE		(0x03)
26*4882a593Smuzhiyun #define REG_AUTOSWITCH_MASK		(0x04)
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #define REG_COLOR_KILLER		(0x05)
29*4882a593Smuzhiyun #define REG_LUMA_CONTROL1		(0x06)
30*4882a593Smuzhiyun #define REG_LUMA_CONTROL2		(0x07)
31*4882a593Smuzhiyun #define REG_LUMA_CONTROL3		(0x08)
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #define REG_BRIGHTNESS			(0x09)
34*4882a593Smuzhiyun #define REG_CONTRAST			(0x0A)
35*4882a593Smuzhiyun #define REG_SATURATION			(0x0B)
36*4882a593Smuzhiyun #define REG_HUE				(0x0C)
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #define REG_CHROMA_CONTROL1		(0x0D)
39*4882a593Smuzhiyun #define REG_CHROMA_CONTROL2		(0x0E)
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /* 0x0F Reserved */
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun #define REG_COMP_PR_SATURATION		(0x10)
44*4882a593Smuzhiyun #define REG_COMP_Y_CONTRAST		(0x11)
45*4882a593Smuzhiyun #define REG_COMP_PB_SATURATION		(0x12)
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun /* 0x13 Reserved */
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun #define REG_COMP_Y_BRIGHTNESS		(0x14)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /* 0x15 Reserved */
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define REG_AVID_START_PIXEL_LSB	(0x16)
54*4882a593Smuzhiyun #define REG_AVID_START_PIXEL_MSB	(0x17)
55*4882a593Smuzhiyun #define REG_AVID_STOP_PIXEL_LSB		(0x18)
56*4882a593Smuzhiyun #define REG_AVID_STOP_PIXEL_MSB		(0x19)
57*4882a593Smuzhiyun 
58*4882a593Smuzhiyun #define REG_HSYNC_START_PIXEL_LSB	(0x1A)
59*4882a593Smuzhiyun #define REG_HSYNC_START_PIXEL_MSB	(0x1B)
60*4882a593Smuzhiyun #define REG_HSYNC_STOP_PIXEL_LSB	(0x1C)
61*4882a593Smuzhiyun #define REG_HSYNC_STOP_PIXEL_MSB	(0x1D)
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun #define REG_VSYNC_START_LINE_LSB	(0x1E)
64*4882a593Smuzhiyun #define REG_VSYNC_START_LINE_MSB	(0x1F)
65*4882a593Smuzhiyun #define REG_VSYNC_STOP_LINE_LSB		(0x20)
66*4882a593Smuzhiyun #define REG_VSYNC_STOP_LINE_MSB		(0x21)
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun #define REG_VBLK_START_LINE_LSB		(0x22)
69*4882a593Smuzhiyun #define REG_VBLK_START_LINE_MSB		(0x23)
70*4882a593Smuzhiyun #define REG_VBLK_STOP_LINE_LSB		(0x24)
71*4882a593Smuzhiyun #define REG_VBLK_STOP_LINE_MSB		(0x25)
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun /* 0x26 - 0x27 Reserved */
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define REG_FAST_SWTICH_CONTROL		(0x28)
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun /* 0x29 Reserved */
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #define REG_FAST_SWTICH_SCART_DELAY	(0x2A)
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /* 0x2B Reserved */
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #define REG_SCART_DELAY			(0x2C)
84*4882a593Smuzhiyun #define REG_CTI_DELAY			(0x2D)
85*4882a593Smuzhiyun #define REG_CTI_CONTROL			(0x2E)
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun /* 0x2F - 0x31 Reserved */
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #define REG_SYNC_CONTROL		(0x32)
90*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER1		(0x33)
91*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER2		(0x34)
92*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER3		(0x35)
93*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER4		(0x36)
94*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER5		(0x37)
95*4882a593Smuzhiyun #define REG_OUTPUT_FORMATTER6		(0x38)
96*4882a593Smuzhiyun #define REG_CLEAR_LOST_LOCK		(0x39)
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define REG_STATUS1			(0x3A)
99*4882a593Smuzhiyun #define REG_STATUS2			(0x3B)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define REG_AGC_GAIN_STATUS_LSB		(0x3C)
102*4882a593Smuzhiyun #define REG_AGC_GAIN_STATUS_MSB		(0x3D)
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun /* 0x3E Reserved */
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define REG_VIDEO_STD_STATUS		(0x3F)
107*4882a593Smuzhiyun #define REG_GPIO_INPUT1			(0x40)
108*4882a593Smuzhiyun #define REG_GPIO_INPUT2			(0x41)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun /* 0x42 - 0x45 Reserved */
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH1		(0x46)
113*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH2		(0x47)
114*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH3		(0x48)
115*4882a593Smuzhiyun #define REG_AFE_COARSE_GAIN_CH4		(0x49)
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PB_B_LSB	(0x4A)
118*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PB_B_MSB	(0x4B)
119*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_Y_G_CHROMA_LSB	(0x4C)
120*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_Y_G_CHROMA_MSB	(0x4D)
121*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PR_R_LSB	(0x4E)
122*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_PR_R_MSB	(0x4F)
123*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_CVBS_LUMA_LSB	(0x50)
124*4882a593Smuzhiyun #define REG_AFE_FINE_GAIN_CVBS_LUMA_MSB	(0x51)
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun /* 0x52 - 0x68 Reserved */
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #define REG_FBIT_VBIT_CONTROL1		(0x69)
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun /* 0x6A - 0x6B Reserved */
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #define REG_BACKEND_AGC_CONTROL		(0x6C)
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun /* 0x6D - 0x6E Reserved */
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun #define REG_AGC_DECREMENT_SPEED_CONTROL	(0x6F)
137*4882a593Smuzhiyun #define REG_ROM_VERSION			(0x70)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun /* 0x71 - 0x73 Reserved */
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun #define REG_AGC_WHITE_PEAK_PROCESSING	(0x74)
142*4882a593Smuzhiyun #define REG_FBIT_VBIT_CONTROL2		(0x75)
143*4882a593Smuzhiyun #define REG_VCR_TRICK_MODE_CONTROL	(0x76)
144*4882a593Smuzhiyun #define REG_HORIZONTAL_SHAKE_INCREMENT	(0x77)
145*4882a593Smuzhiyun #define REG_AGC_INCREMENT_SPEED		(0x78)
146*4882a593Smuzhiyun #define REG_AGC_INCREMENT_DELAY		(0x79)
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun /* 0x7A - 0x7F Reserved */
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #define REG_CHIP_ID_MSB			(0x80)
151*4882a593Smuzhiyun #define REG_CHIP_ID_LSB			(0x81)
152*4882a593Smuzhiyun 
153*4882a593Smuzhiyun /* 0x82 Reserved */
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun #define REG_CPLL_SPEED_CONTROL		(0x83)
156*4882a593Smuzhiyun 
157*4882a593Smuzhiyun /* 0x84 - 0x96 Reserved */
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun #define REG_STATUS_REQUEST		(0x97)
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun /* 0x98 - 0x99 Reserved */
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun #define REG_VERTICAL_LINE_COUNT_LSB	(0x9A)
164*4882a593Smuzhiyun #define REG_VERTICAL_LINE_COUNT_MSB	(0x9B)
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun /* 0x9C - 0x9D Reserved */
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #define REG_AGC_DECREMENT_DELAY		(0x9E)
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun /* 0x9F - 0xB0 Reserved */
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK1	(0xB1)
173*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK2	(0xB2)
174*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK3	(0xB3)
175*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK4	(0xB4)
176*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_1_MASK5	(0xB5)
177*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK1	(0xB6)
178*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK2	(0xB7)
179*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK3	(0xB8)
180*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK4	(0xB9)
181*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_2_MASK5	(0xBA)
182*4882a593Smuzhiyun #define REG_VDP_TTX_FILTER_CONTROL	(0xBB)
183*4882a593Smuzhiyun #define REG_VDP_FIFO_WORD_COUNT		(0xBC)
184*4882a593Smuzhiyun #define REG_VDP_FIFO_INTERRUPT_THRLD	(0xBD)
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun /* 0xBE Reserved */
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun #define REG_VDP_FIFO_RESET		(0xBF)
189*4882a593Smuzhiyun #define REG_VDP_FIFO_OUTPUT_CONTROL	(0xC0)
190*4882a593Smuzhiyun #define REG_VDP_LINE_NUMBER_INTERRUPT	(0xC1)
191*4882a593Smuzhiyun #define REG_VDP_PIXEL_ALIGNMENT_LSB	(0xC2)
192*4882a593Smuzhiyun #define REG_VDP_PIXEL_ALIGNMENT_MSB	(0xC3)
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun /* 0xC4 - 0xD5 Reserved */
195*4882a593Smuzhiyun 
196*4882a593Smuzhiyun #define REG_VDP_LINE_START		(0xD6)
197*4882a593Smuzhiyun #define REG_VDP_LINE_STOP		(0xD7)
198*4882a593Smuzhiyun #define REG_VDP_GLOBAL_LINE_MODE	(0xD8)
199*4882a593Smuzhiyun #define REG_VDP_FULL_FIELD_ENABLE	(0xD9)
200*4882a593Smuzhiyun #define REG_VDP_FULL_FIELD_MODE		(0xDA)
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun /* 0xDB - 0xDF Reserved */
203*4882a593Smuzhiyun 
204*4882a593Smuzhiyun #define REG_VBUS_DATA_ACCESS_NO_VBUS_ADDR_INCR	(0xE0)
205*4882a593Smuzhiyun #define REG_VBUS_DATA_ACCESS_VBUS_ADDR_INCR	(0xE1)
206*4882a593Smuzhiyun #define REG_FIFO_READ_DATA			(0xE2)
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun /* 0xE3 - 0xE7 Reserved */
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS1	(0xE8)
211*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS2	(0xE9)
212*4882a593Smuzhiyun #define REG_VBUS_ADDRESS_ACCESS3	(0xEA)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun /* 0xEB - 0xEF Reserved */
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun #define REG_INTERRUPT_RAW_STATUS0	(0xF0)
217*4882a593Smuzhiyun #define REG_INTERRUPT_RAW_STATUS1	(0xF1)
218*4882a593Smuzhiyun #define REG_INTERRUPT_STATUS0		(0xF2)
219*4882a593Smuzhiyun #define REG_INTERRUPT_STATUS1		(0xF3)
220*4882a593Smuzhiyun #define REG_INTERRUPT_MASK0		(0xF4)
221*4882a593Smuzhiyun #define REG_INTERRUPT_MASK1		(0xF5)
222*4882a593Smuzhiyun #define REG_INTERRUPT_CLEAR0		(0xF6)
223*4882a593Smuzhiyun #define REG_INTERRUPT_CLEAR1		(0xF7)
224*4882a593Smuzhiyun 
225*4882a593Smuzhiyun /* 0xF8 - 0xFF Reserved */
226*4882a593Smuzhiyun 
227*4882a593Smuzhiyun /*
228*4882a593Smuzhiyun  * Mask and bit definitions of TVP5146/47 registers
229*4882a593Smuzhiyun  */
230*4882a593Smuzhiyun /* The ID values we are looking for */
231*4882a593Smuzhiyun #define TVP514X_CHIP_ID_MSB		(0x51)
232*4882a593Smuzhiyun #define TVP5146_CHIP_ID_LSB		(0x46)
233*4882a593Smuzhiyun #define TVP5147_CHIP_ID_LSB		(0x47)
234*4882a593Smuzhiyun 
235*4882a593Smuzhiyun #define VIDEO_STD_MASK			(0x07)
236*4882a593Smuzhiyun #define VIDEO_STD_AUTO_SWITCH_BIT	(0x00)
237*4882a593Smuzhiyun #define VIDEO_STD_NTSC_MJ_BIT		(0x01)
238*4882a593Smuzhiyun #define VIDEO_STD_PAL_BDGHIN_BIT	(0x02)
239*4882a593Smuzhiyun #define VIDEO_STD_PAL_M_BIT		(0x03)
240*4882a593Smuzhiyun #define VIDEO_STD_PAL_COMBINATION_N_BIT	(0x04)
241*4882a593Smuzhiyun #define VIDEO_STD_NTSC_4_43_BIT		(0x05)
242*4882a593Smuzhiyun #define VIDEO_STD_SECAM_BIT		(0x06)
243*4882a593Smuzhiyun #define VIDEO_STD_PAL_60_BIT		(0x07)
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /*
246*4882a593Smuzhiyun  * Status bit
247*4882a593Smuzhiyun  */
248*4882a593Smuzhiyun #define STATUS_TV_VCR_BIT		(1<<0)
249*4882a593Smuzhiyun #define STATUS_HORZ_SYNC_LOCK_BIT	(1<<1)
250*4882a593Smuzhiyun #define STATUS_VIRT_SYNC_LOCK_BIT	(1<<2)
251*4882a593Smuzhiyun #define STATUS_CLR_SUBCAR_LOCK_BIT	(1<<3)
252*4882a593Smuzhiyun #define STATUS_LOST_LOCK_DETECT_BIT	(1<<4)
253*4882a593Smuzhiyun #define STATUS_FEILD_RATE_BIT		(1<<5)
254*4882a593Smuzhiyun #define STATUS_LINE_ALTERNATING_BIT	(1<<6)
255*4882a593Smuzhiyun #define STATUS_PEAK_WHITE_DETECT_BIT	(1<<7)
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun /* Tokens for register write */
258*4882a593Smuzhiyun #define TOK_WRITE                       (0)     /* token for write operation */
259*4882a593Smuzhiyun #define TOK_TERM                        (1)     /* terminating token */
260*4882a593Smuzhiyun #define TOK_DELAY                       (2)     /* delay token for reg list */
261*4882a593Smuzhiyun #define TOK_SKIP                        (3)     /* token to skip a register */
262*4882a593Smuzhiyun /**
263*4882a593Smuzhiyun  * struct tvp514x_reg - Structure for TVP5146/47 register initialization values
264*4882a593Smuzhiyun  * @token - Token: TOK_WRITE, TOK_TERM etc..
265*4882a593Smuzhiyun  * @reg - Register offset
266*4882a593Smuzhiyun  * @val - Register Value for TOK_WRITE or delay in ms for TOK_DELAY
267*4882a593Smuzhiyun  */
268*4882a593Smuzhiyun struct tvp514x_reg {
269*4882a593Smuzhiyun 	u8 token;
270*4882a593Smuzhiyun 	u8 reg;
271*4882a593Smuzhiyun 	u32 val;
272*4882a593Smuzhiyun };
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun #endif				/* ifndef _TVP514X_REGS_H */
275