]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/blob - drivers/media/platform/tegra/camera/registers.h
drivers: media: platform: tegra: VI mode
[sojka/nv-tegra/linux-3.10.git] / drivers / media / platform / tegra / camera / registers.h
1 /*
2  * drivers/media/platform/tegra/camera/registers.h
3  *
4  * Tegra VI/CSI register offsets
5  *
6  * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms and conditions of the GNU General Public License,
10  * version 2, as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  * more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #ifndef __REGISTERS_H__
22 #define __REGISTERS_H__
23
24 /* VI registers */
25 #define TEGRA_VI_SYNCPT_WAIT_TIMEOUT                    200
26 #define TEGRA_VI_CFG_VI_INCR_SYNCPT                     0x000
27 #define VI_CFG_VI_INCR_SYNCPT_COND(x)                   (x << 8)
28 #define VI_CSI_PP_LINE_START(port)                      (4 + (port) * 4)
29 #define VI_CSI_PP_FRAME_START(port)                     (5 + (port) * 4)
30 #define VI_CSI_MW_REQ_DONE(port)                        (6 + (port) * 4)
31 #define VI_CSI_MW_ACK_DONE(port)                        (7 + (port) * 4)
32
33 #define TEGRA_VI_CFG_VI_INCR_SYNCPT_CNTRL               0x004
34 #define TEGRA_VI_CFG_VI_INCR_SYNCPT_ERROR               0x008
35 #define TEGRA_VI_CFG_CTXSW                              0x020
36 #define TEGRA_VI_CFG_INTSTATUS                          0x024
37 #define TEGRA_VI_CFG_PWM_CONTROL                        0x038
38 #define TEGRA_VI_CFG_PWM_HIGH_PULSE                     0x03c
39 #define TEGRA_VI_CFG_PWM_LOW_PULSE                      0x040
40 #define TEGRA_VI_CFG_PWM_SELECT_PULSE_A                 0x044
41 #define TEGRA_VI_CFG_PWM_SELECT_PULSE_B                 0x048
42 #define TEGRA_VI_CFG_PWM_SELECT_PULSE_C                 0x04c
43 #define TEGRA_VI_CFG_PWM_SELECT_PULSE_D                 0x050
44 #define TEGRA_VI_CFG_VGP1                               0x064
45 #define TEGRA_VI_CFG_VGP2                               0x068
46 #define TEGRA_VI_CFG_VGP3                               0x06c
47 #define TEGRA_VI_CFG_VGP4                               0x070
48 #define TEGRA_VI_CFG_VGP5                               0x074
49 #define TEGRA_VI_CFG_VGP6                               0x078
50 #define TEGRA_VI_CFG_INTERRUPT_MASK                     0x08c
51 #define TEGRA_VI_CFG_INTERRUPT_TYPE_SELECT              0x090
52 #define TEGRA_VI_CFG_INTERRUPT_POLARITY_SELECT          0x094
53 #define TEGRA_VI_CFG_INTERRUPT_STATUS                   0x098
54 #define TEGRA_VI_CFG_VGP_SYNCPT_CONFIG                  0x0ac
55 #define TEGRA_VI_CFG_VI_SW_RESET                        0x0b4
56 #define TEGRA_VI_CFG_CG_CTRL                            0x0b8
57 #define VI_CG_2ND_LEVEL_EN                              0x1
58 #define TEGRA_VI_CFG_VI_MCCIF_FIFOCTRL                  0x0e4
59 #define TEGRA_VI_CFG_TIMEOUT_WCOAL_VI                   0x0e8
60 #define TEGRA_VI_CFG_DVFS                               0x0f0
61 #define TEGRA_VI_CFG_RESERVE                            0x0f4
62 #define TEGRA_VI_CFG_RESERVE_1                          0x0f8
63
64 /* CSI registers */
65 #define TEGRA_VI_CSI_BASE(x)                            (0x100 + (x) * 0x100)
66
67 #define TEGRA_VI_CSI_SW_RESET                           0x000
68 #define TEGRA_VI_CSI_SINGLE_SHOT                        0x004
69 #define SINGLE_SHOT_CAPTURE                             0x1
70 #define TEGRA_VI_CSI_SINGLE_SHOT_STATE_UPDATE           0x008
71 #define TEGRA_VI_CSI_IMAGE_DEF                          0x00c
72 #define BYPASS_PXL_TRANSFORM_OFFSET                     24
73 #define IMAGE_DEF_FORMAT_OFFSET                         16
74 #define IMAGE_DEF_DEST_MEM                              0x1
75 #define TEGRA_VI_CSI_RGB2Y_CTRL                         0x010
76 #define TEGRA_VI_CSI_MEM_TILING                         0x014
77 #define TEGRA_VI_CSI_IMAGE_SIZE                         0x018
78 #define IMAGE_SIZE_HEIGHT_OFFSET                        16
79 #define TEGRA_VI_CSI_IMAGE_SIZE_WC                      0x01c
80 #define TEGRA_VI_CSI_IMAGE_DT                           0x020
81 #define TEGRA_VI_CSI_SURFACE0_OFFSET_MSB                0x024
82 #define TEGRA_VI_CSI_SURFACE0_OFFSET_LSB                0x028
83 #define TEGRA_VI_CSI_SURFACE1_OFFSET_MSB                0x02c
84 #define TEGRA_VI_CSI_SURFACE1_OFFSET_LSB                0x030
85 #define TEGRA_VI_CSI_SURFACE2_OFFSET_MSB                0x034
86 #define TEGRA_VI_CSI_SURFACE2_OFFSET_LSB                0x038
87 #define TEGRA_VI_CSI_SURFACE0_BF_OFFSET_MSB             0x03c
88 #define TEGRA_VI_CSI_SURFACE0_BF_OFFSET_LSB             0x040
89 #define TEGRA_VI_CSI_SURFACE1_BF_OFFSET_MSB             0x044
90 #define TEGRA_VI_CSI_SURFACE1_BF_OFFSET_LSB             0x048
91 #define TEGRA_VI_CSI_SURFACE2_BF_OFFSET_MSB             0x04c
92 #define TEGRA_VI_CSI_SURFACE2_BF_OFFSET_LSB             0x050
93 #define TEGRA_VI_CSI_SURFACE0_STRIDE                    0x054
94 #define TEGRA_VI_CSI_SURFACE1_STRIDE                    0x058
95 #define TEGRA_VI_CSI_SURFACE2_STRIDE                    0x05c
96 #define TEGRA_VI_CSI_SURFACE_HEIGHT0                    0x060
97 #define TEGRA_VI_CSI_ISPINTF_CONFIG                     0x064
98 #define TEGRA_VI_CSI_ERROR_STATUS                       0x084
99 #define TEGRA_VI_CSI_ERROR_INT_MASK                     0x088
100 #define TEGRA_VI_CSI_WD_CTRL                            0x08c
101 #define TEGRA_VI_CSI_WD_PERIOD                          0x090
102
103 /* CSI Pixel Parser registers: Starts from 0x838, offset 0x0 */
104 #define TEGRA_CSI_INPUT_STREAM_CONTROL                  0x000
105 #define CSI_SKIP_PACKET_THRESHOLD_OFFSET                16
106
107 #define TEGRA_CSI_PIXEL_STREAM_CONTROL0                 0x004
108 #define CSI_PP_PACKET_HEADER_SENT                       (0x1 << 4)
109 #define CSI_PP_DATA_IDENTIFIER_ENABLE                   (0x1 << 5)
110 #define CSI_PP_WORD_COUNT_SELECT_HEADER                 (0x1 << 6)
111 #define CSI_PP_CRC_CHECK_ENABLE                         (0x1 << 7)
112 #define CSI_PP_WC_CHECK                                 (0x1 << 8)
113 #define CSI_PP_OUTPUT_FORMAT_STORE                      (0x3 << 16)
114 #define CSI_PP_HEADER_EC_DISABLE                        (0x1 << 27)
115 #define CSI_PPA_PAD_FRAME_NOPAD                         (0x2 << 28)
116
117 #define TEGRA_CSI_PIXEL_STREAM_CONTROL1                 0x008
118 #define CSI_PP_TOP_FIELD_FRAME_OFFSET                   0
119 #define CSI_PP_TOP_FIELD_FRAME_MASK_OFFSET              4
120
121 #define TEGRA_CSI_PIXEL_STREAM_GAP                      0x00c
122 #define PP_FRAME_MIN_GAP_OFFSET                         16
123
124 #define TEGRA_CSI_PIXEL_STREAM_PP_COMMAND               0x010
125 #define CSI_PP_ENABLE                                   0x1
126 #define CSI_PP_DISABLE                                  0x2
127 #define CSI_PP_RST                                      0x3
128 #define CSI_PP_SINGLE_SHOT_ENABLE                       (0x1 << 2)
129 #define CSI_PP_START_MARKER_FRAME_MAX_OFFSET            12
130
131 #define TEGRA_CSI_PIXEL_STREAM_EXPECTED_FRAME           0x014
132 #define TEGRA_CSI_PIXEL_PARSER_INTERRUPT_MASK           0x018
133 #define TEGRA_CSI_PIXEL_PARSER_STATUS                   0x01c
134 #define TEGRA_CSI_CSI_SW_SENSOR_RESET                   0x020
135
136 /* CSI PHY registers */
137 #define TEGRA_CSI_PHY_CIL_COMMAND                       0x0d0
138 #define CSI_A_PHY_CIL_ENABLE                            0x1
139 #define CSI_B_PHY_CIL_ENABLE                            (0x1 << 8)
140
141 /* CSI CIL registers: Starts from 0x92c, offset 0xF4 */
142 #define TEGRA_CSI_CIL_OFFSET                            0x0f4
143
144 #define TEGRA_CSI_CIL_PAD_CONFIG0                       0x000
145 #define BRICK_CLOCK_A_4X                                (0x1 << 16)
146 #define BRICK_CLOCK_B_4X                                (0x2 << 16)
147 #define TEGRA_CSI_CIL_PAD_CONFIG1                       0x004
148 #define TEGRA_CSI_CIL_PHY_CONTROL                       0x008
149 #define TEGRA_CSI_CIL_INTERRUPT_MASK                    0x00c
150 #define TEGRA_CSI_CIL_STATUS                            0x010
151 #define TEGRA_CSI_CILX_STATUS                           0x014
152 #define TEGRA_CSI_CIL_ESCAPE_MODE_COMMAND               0x018
153 #define TEGRA_CSI_CIL_ESCAPE_MODE_DATA                  0x01c
154 #define TEGRA_CSI_CIL_SW_SENSOR_RESET                   0x020
155
156 /* CSI Pattern Generator registers: Starts from 0x9c4, offset 0x18c */
157 #define TEGRA_CSI_TPG_OFFSET                            0x18c
158
159 #define TEGRA_CSI_PATTERN_GENERATOR_CTRL                0x000
160 #define PG_MODE_OFFSET                                  2
161 #define PG_ENABLE                                       0x1
162
163 #define TEGRA_CSI_PG_BLANK                              0x004
164 #define TEGRA_CSI_PG_PHASE                              0x008
165 #define TEGRA_CSI_PG_RED_FREQ                           0x00c
166 #define PG_RED_VERT_INIT_FREQ_OFFSET                    16
167 #define PG_RED_HOR_INIT_FREQ_OFFSET                     0
168
169 #define TEGRA_CSI_PG_RED_FREQ_RATE                      0x010
170 #define TEGRA_CSI_PG_GREEN_FREQ                         0x014
171 #define PG_GREEN_VERT_INIT_FREQ_OFFSET                  16
172 #define PG_GREEN_HOR_INIT_FREQ_OFFSET                   0
173
174 #define TEGRA_CSI_PG_GREEN_FREQ_RATE                    0x018
175 #define TEGRA_CSI_PG_BLUE_FREQ                          0x01c
176 #define PG_BLUE_VERT_INIT_FREQ_OFFSET                   16
177 #define PG_BLUE_HOR_INIT_FREQ_OFFSET                    0
178
179 #define TEGRA_CSI_PG_BLUE_FREQ_RATE                     0x020
180 #define TEGRA_CSI_PG_AOHDR                              0x024
181
182 #define TEGRA_CSI_DPCM_CTRL_A                           0xa2c
183 #define TEGRA_CSI_DPCM_CTRL_B                           0xa30
184
185 /* Other CSI registers: Starts from 0xa44, offset 0x20c */
186 #define TEGRA_CSI_STALL_COUNTER                         0x20c
187 #define TEGRA_CSI_CSI_READONLY_STATUS                   0x210
188 #define TEGRA_CSI_CSI_SW_STATUS_RESET                   0x214
189 #define TEGRA_CSI_CLKEN_OVERRIDE                        0x218
190 #define TEGRA_CSI_DEBUG_CONTROL                         0x21c
191 #define TEGRA_CSI_DEBUG_COUNTER_0                       0x220
192 #define TEGRA_CSI_DEBUG_COUNTER_1                       0x224
193 #define TEGRA_CSI_DEBUG_COUNTER_2                       0x228
194
195
196 /* CSI Pixel Parser registers */
197 #define TEGRA_CSI_PIXEL_PARSER_0_BASE                   0x0838
198 #define TEGRA_CSI_PIXEL_PARSER_1_BASE                   0x086c
199 #define TEGRA_CSI_PIXEL_PARSER_2_BASE                   0x1038
200 #define TEGRA_CSI_PIXEL_PARSER_3_BASE                   0x106c
201 #define TEGRA_CSI_PIXEL_PARSER_4_BASE                   0x1838
202 #define TEGRA_CSI_PIXEL_PARSER_5_BASE                   0x186c
203
204 /* CSIA to CSIB register offset */
205 #define TEGRA_CSI_PORT_OFFSET                           0x34
206
207 #endif