xref: /OK3568_Linux_fs/kernel/drivers/media/usb/stk1160/stk1160-reg.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * STK1160 driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2012 Ezequiel Garcia
6*4882a593Smuzhiyun  * <elezegarcia--a.t--gmail.com>
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * Based on Easycap driver by R.M. Thomas
9*4882a593Smuzhiyun  *	Copyright (C) 2010 R.M. Thomas
10*4882a593Smuzhiyun  *	<rmthomas--a.t--sciolus.org>
11*4882a593Smuzhiyun  */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun /* GPIO Control */
14*4882a593Smuzhiyun #define STK1160_GCTRL			0x000
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* Remote Wakeup Control */
17*4882a593Smuzhiyun #define STK1160_RMCTL			0x00c
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* Power-on Strapping Data */
20*4882a593Smuzhiyun #define STK1160_POSVA			0x010
21*4882a593Smuzhiyun #define STK1160_POSV_L			0x010
22*4882a593Smuzhiyun #define STK1160_POSV_M			0x011
23*4882a593Smuzhiyun #define STK1160_POSV_H			0x012
24*4882a593Smuzhiyun #define  STK1160_POSV_L_ACDOUT		BIT(3)
25*4882a593Smuzhiyun #define  STK1160_POSV_L_ACSYNC		BIT(2)
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /*
28*4882a593Smuzhiyun  * Decoder Control Register:
29*4882a593Smuzhiyun  * This byte controls capture start/stop
30*4882a593Smuzhiyun  * with bit #7 (0x?? OR 0x80 to activate).
31*4882a593Smuzhiyun  */
32*4882a593Smuzhiyun #define STK1160_DCTRL			0x100
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /*
35*4882a593Smuzhiyun  * Decimation Control Register:
36*4882a593Smuzhiyun  * Byte 104: Horizontal Decimation Line Unit Count
37*4882a593Smuzhiyun  * Byte 105: Vertical Decimation Line Unit Count
38*4882a593Smuzhiyun  * Byte 106: Decimation Control
39*4882a593Smuzhiyun  * Bit 0 - Horizontal Decimation Control
40*4882a593Smuzhiyun  *   0 Horizontal decimation is disabled.
41*4882a593Smuzhiyun  *   1 Horizontal decimation is enabled.
42*4882a593Smuzhiyun  * Bit 1 - Decimates Half or More Column
43*4882a593Smuzhiyun  *   0 Decimates less than half from original column,
44*4882a593Smuzhiyun  *     send count unit (0x105) before each unit skipped.
45*4882a593Smuzhiyun  *   1 Decimates half or more from original column,
46*4882a593Smuzhiyun  *     skip count unit (0x105) before each unit sent.
47*4882a593Smuzhiyun  * Bit 2 - Vertical Decimation Control
48*4882a593Smuzhiyun  *   0 Vertical decimation is disabled.
49*4882a593Smuzhiyun  *   1 Vertical decimation is enabled.
50*4882a593Smuzhiyun  * Bit 3 - Vertical Greater or Equal to Half
51*4882a593Smuzhiyun  *   0 Decimates less than half from original row,
52*4882a593Smuzhiyun  *     send count unit (0x105) before each unit skipped.
53*4882a593Smuzhiyun  *   1 Decimates half or more from original row,
54*4882a593Smuzhiyun  *     skip count unit (0x105) before each unit sent.
55*4882a593Smuzhiyun  * Bit 4 - Decimation Unit
56*4882a593Smuzhiyun  *  0 Decimation will work with 2 rows or columns per unit.
57*4882a593Smuzhiyun  *  1 Decimation will work with 4 rows or columns per unit.
58*4882a593Smuzhiyun  */
59*4882a593Smuzhiyun #define STK1160_DMCTRL_H_UNITS		0x104
60*4882a593Smuzhiyun #define STK1160_DMCTRL_V_UNITS		0x105
61*4882a593Smuzhiyun #define STK1160_DMCTRL			0x106
62*4882a593Smuzhiyun #define  STK1160_H_DEC_EN		BIT(0)
63*4882a593Smuzhiyun #define  STK1160_H_DEC_MODE		BIT(1)
64*4882a593Smuzhiyun #define  STK1160_V_DEC_EN		BIT(2)
65*4882a593Smuzhiyun #define  STK1160_V_DEC_MODE		BIT(3)
66*4882a593Smuzhiyun #define  STK1160_DEC_UNIT_SIZE		BIT(4)
67*4882a593Smuzhiyun 
68*4882a593Smuzhiyun /* Capture Frame Start Position */
69*4882a593Smuzhiyun #define STK116_CFSPO			0x110
70*4882a593Smuzhiyun #define STK116_CFSPO_STX_L		0x110
71*4882a593Smuzhiyun #define STK116_CFSPO_STX_H		0x111
72*4882a593Smuzhiyun #define STK116_CFSPO_STY_L		0x112
73*4882a593Smuzhiyun #define STK116_CFSPO_STY_H		0x113
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* Capture Frame End Position */
76*4882a593Smuzhiyun #define STK116_CFEPO			0x114
77*4882a593Smuzhiyun #define STK116_CFEPO_ENX_L		0x114
78*4882a593Smuzhiyun #define STK116_CFEPO_ENX_H		0x115
79*4882a593Smuzhiyun #define STK116_CFEPO_ENY_L		0x116
80*4882a593Smuzhiyun #define STK116_CFEPO_ENY_H		0x117
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun /* Serial Interface Control  */
83*4882a593Smuzhiyun #define STK1160_SICTL			0x200
84*4882a593Smuzhiyun #define STK1160_SICTL_CD		0x202
85*4882a593Smuzhiyun #define STK1160_SICTL_SDA		0x203
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun /* Serial Bus Write */
88*4882a593Smuzhiyun #define STK1160_SBUSW			0x204
89*4882a593Smuzhiyun #define STK1160_SBUSW_WA		0x204
90*4882a593Smuzhiyun #define STK1160_SBUSW_WD		0x205
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun /* Serial Bus Read */
93*4882a593Smuzhiyun #define STK1160_SBUSR			0x208
94*4882a593Smuzhiyun #define STK1160_SBUSR_RA		0x208
95*4882a593Smuzhiyun #define STK1160_SBUSR_RD		0x209
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun /* Alternate Serial Interface Control */
98*4882a593Smuzhiyun #define STK1160_ASIC			0x2fc
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun /* PLL Select Options */
101*4882a593Smuzhiyun #define STK1160_PLLSO			0x018
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun /* PLL Frequency Divider */
104*4882a593Smuzhiyun #define STK1160_PLLFD			0x01c
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /* Timing Generator */
107*4882a593Smuzhiyun #define STK1160_TIGEN			0x300
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun /* Timing Control Parameter */
110*4882a593Smuzhiyun #define STK1160_TICTL			0x350
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun /* AC97 Audio Control */
113*4882a593Smuzhiyun #define STK1160_AC97CTL_0		0x500
114*4882a593Smuzhiyun #define STK1160_AC97CTL_1		0x504
115*4882a593Smuzhiyun #define  STK1160_AC97CTL_0_CR		BIT(1)
116*4882a593Smuzhiyun #define  STK1160_AC97CTL_0_CW		BIT(2)
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun /* Use [0:6] bits of register 0x504 to set codec command address */
119*4882a593Smuzhiyun #define STK1160_AC97_ADDR		0x504
120*4882a593Smuzhiyun /* Use [16:31] bits of register 0x500 to set codec command data */
121*4882a593Smuzhiyun #define STK1160_AC97_CMD		0x502
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun /* Audio I2S Interface */
124*4882a593Smuzhiyun #define STK1160_I2SCTL			0x50c
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun /* EEPROM Interface */
127*4882a593Smuzhiyun #define STK1160_EEPROM_SZ		0x5f0
128