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