HPM SDK
HPMicro Software Development Kit
hpm_cam_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_CAM_H
10 #define HPM_CAM_H
11 
12 typedef struct {
13  __RW uint32_t CR1; /* 0x0: Control Register */
14  __RW uint32_t INT_EN; /* 0x4: Interrupt Enable Register */
15  __R uint8_t RESERVED0[8]; /* 0x8 - 0xF: Reserved */
16  __RW uint32_t CR2; /* 0x10: Control 2 Register */
17  __R uint8_t RESERVED1[16]; /* 0x14 - 0x23: Reserved */
18  __RW uint32_t STA; /* 0x24: Status Register */
19  __R uint8_t RESERVED2[8]; /* 0x28 - 0x2F: Reserved */
20  __RW uint32_t DMASA_FB1; /* 0x30: Pixel DMA Frame Buffer 1 Address */
21  __RW uint32_t DMASA_FB2; /* 0x34: Pixel DMA Frame Buffer 2 Address */
22  __RW uint32_t BUF_PARA; /* 0x38: Buffer Parameters Register */
23  __RW uint32_t IDEAL_WN_SIZE; /* 0x3C: Ideal Image Size Register */
24  __R uint8_t RESERVED3[12]; /* 0x40 - 0x4B: Reserved */
25  __RW uint32_t CR18; /* 0x4C: Control CR18 Register */
26  __R uint8_t RESERVED4[8]; /* 0x50 - 0x57: Reserved */
27  __RW uint32_t CR20; /* 0x58: Control CR20 Register */
28  __R uint8_t RESERVED5[20]; /* 0x5C - 0x6F: Reserved */
29  __RW uint32_t CSC_COEF0; /* 0x70: Color Space Conversion Config Register 0 */
30  __RW uint32_t CSC_COEF1; /* 0x74: Color Space Conversion Config Register 1 */
31  __RW uint32_t CSC_COEF2; /* 0x78: Color Space Conversion Config Register 2 */
32  __RW uint32_t CLRKEY_LOW; /* 0x7C: Low Color Key Register */
33  __RW uint32_t CLRKEY_HIGH; /* 0x80: High Color Key Register */
34  __R uint8_t RESERVED6[12]; /* 0x84 - 0x8F: Reserved */
35  __R uint32_t HISTOGRAM_FIFO[256]; /* 0x90 - 0x48C: Histogram Registers */
36 } CAM_Type;
37 
38 
39 /* Bitfield definition for register: CR1 */
40 /*
41  * COLOR_EXT (RW)
42  *
43  * If asserted, will change the output color to ARGB8888 mode. Used by input color as RGB565, RGB888, YUV888, etc.
44  * The byte sequence is B,G,R,A. Depends on correct CR2[ClrBitFormat] configuration.
45  */
46 #define CAM_CR1_COLOR_EXT_MASK (0x20000000UL)
47 #define CAM_CR1_COLOR_EXT_SHIFT (29U)
48 #define CAM_CR1_COLOR_EXT_SET(x) (((uint32_t)(x) << CAM_CR1_COLOR_EXT_SHIFT) & CAM_CR1_COLOR_EXT_MASK)
49 #define CAM_CR1_COLOR_EXT_GET(x) (((uint32_t)(x) & CAM_CR1_COLOR_EXT_MASK) >> CAM_CR1_COLOR_EXT_SHIFT)
50 
51 /*
52  * INV_PIXCLK (RW)
53  *
54  * invert pixclk pad input before it is used
55  */
56 #define CAM_CR1_INV_PIXCLK_MASK (0x10000000UL)
57 #define CAM_CR1_INV_PIXCLK_SHIFT (28U)
58 #define CAM_CR1_INV_PIXCLK_SET(x) (((uint32_t)(x) << CAM_CR1_INV_PIXCLK_SHIFT) & CAM_CR1_INV_PIXCLK_MASK)
59 #define CAM_CR1_INV_PIXCLK_GET(x) (((uint32_t)(x) & CAM_CR1_INV_PIXCLK_MASK) >> CAM_CR1_INV_PIXCLK_SHIFT)
60 
61 /*
62  * INV_HSYNC (RW)
63  *
64  * invert hsync pad input before it is used
65  */
66 #define CAM_CR1_INV_HSYNC_MASK (0x8000000UL)
67 #define CAM_CR1_INV_HSYNC_SHIFT (27U)
68 #define CAM_CR1_INV_HSYNC_SET(x) (((uint32_t)(x) << CAM_CR1_INV_HSYNC_SHIFT) & CAM_CR1_INV_HSYNC_MASK)
69 #define CAM_CR1_INV_HSYNC_GET(x) (((uint32_t)(x) & CAM_CR1_INV_HSYNC_MASK) >> CAM_CR1_INV_HSYNC_SHIFT)
70 
71 /*
72  * INV_VSYNC (RW)
73  *
74  * invert vsync pad input before it is used
75  */
76 #define CAM_CR1_INV_VSYNC_MASK (0x4000000UL)
77 #define CAM_CR1_INV_VSYNC_SHIFT (26U)
78 #define CAM_CR1_INV_VSYNC_SET(x) (((uint32_t)(x) << CAM_CR1_INV_VSYNC_SHIFT) & CAM_CR1_INV_VSYNC_MASK)
79 #define CAM_CR1_INV_VSYNC_GET(x) (((uint32_t)(x) & CAM_CR1_INV_VSYNC_MASK) >> CAM_CR1_INV_VSYNC_SHIFT)
80 
81 /*
82  * SWAP16_EN (RW)
83  *
84  * SWAP 16-Bit Enable. This bit enables the swapping of 16-bit data. Data is packed from 8-bit or 10-bit to 32-bit first (according to the setting of PACK_DIR) and then swapped as 16-bit words before being put into the RX FIFO. The action of the bit only affects the RX FIFO.
85  * NOTE: Example of swapping enabled:
86  * Data input to FIFO = 0x11223344
87  * Data in RX FIFO = 0x 33441122
88  * NOTE: Example of swapping disabled:
89  * Data input to FIFO = 0x11223344
90  * Data in RX FIFO = 0x11223344
91  * 0 Disable swapping
92  * 1 Enable swapping
93  */
94 #define CAM_CR1_SWAP16_EN_MASK (0x2000000UL)
95 #define CAM_CR1_SWAP16_EN_SHIFT (25U)
96 #define CAM_CR1_SWAP16_EN_SET(x) (((uint32_t)(x) << CAM_CR1_SWAP16_EN_SHIFT) & CAM_CR1_SWAP16_EN_MASK)
97 #define CAM_CR1_SWAP16_EN_GET(x) (((uint32_t)(x) & CAM_CR1_SWAP16_EN_MASK) >> CAM_CR1_SWAP16_EN_SHIFT)
98 
99 /*
100  * RESTART_BUSPTR (RW)
101  *
102  * force to restart the bus pointer at the every end of the sof period, and at the same time, clr the fifo pointer
103  */
104 #define CAM_CR1_RESTART_BUSPTR_MASK (0x800000UL)
105 #define CAM_CR1_RESTART_BUSPTR_SHIFT (23U)
106 #define CAM_CR1_RESTART_BUSPTR_SET(x) (((uint32_t)(x) << CAM_CR1_RESTART_BUSPTR_SHIFT) & CAM_CR1_RESTART_BUSPTR_MASK)
107 #define CAM_CR1_RESTART_BUSPTR_GET(x) (((uint32_t)(x) & CAM_CR1_RESTART_BUSPTR_MASK) >> CAM_CR1_RESTART_BUSPTR_SHIFT)
108 
109 /*
110  * ASYNC_RXFIFO_CLR (RW)
111  *
112  * ASynchronous Rx FIFO Clear.
113  * When asserted, this bit clears RXFIFO immediately.
114  * It will be auto-cleared.
115  */
116 #define CAM_CR1_ASYNC_RXFIFO_CLR_MASK (0x100000UL)
117 #define CAM_CR1_ASYNC_RXFIFO_CLR_SHIFT (20U)
118 #define CAM_CR1_ASYNC_RXFIFO_CLR_SET(x) (((uint32_t)(x) << CAM_CR1_ASYNC_RXFIFO_CLR_SHIFT) & CAM_CR1_ASYNC_RXFIFO_CLR_MASK)
119 #define CAM_CR1_ASYNC_RXFIFO_CLR_GET(x) (((uint32_t)(x) & CAM_CR1_ASYNC_RXFIFO_CLR_MASK) >> CAM_CR1_ASYNC_RXFIFO_CLR_SHIFT)
120 
121 /*
122  * SYNC_RXFIFO_CLR (RW)
123  *
124  * Synchronous Rx FIFO Clear.
125  * When asserted, this bit clears RXFIFO on every SOF.
126  */
127 #define CAM_CR1_SYNC_RXFIFO_CLR_MASK (0x80000UL)
128 #define CAM_CR1_SYNC_RXFIFO_CLR_SHIFT (19U)
129 #define CAM_CR1_SYNC_RXFIFO_CLR_SET(x) (((uint32_t)(x) << CAM_CR1_SYNC_RXFIFO_CLR_SHIFT) & CAM_CR1_SYNC_RXFIFO_CLR_MASK)
130 #define CAM_CR1_SYNC_RXFIFO_CLR_GET(x) (((uint32_t)(x) & CAM_CR1_SYNC_RXFIFO_CLR_MASK) >> CAM_CR1_SYNC_RXFIFO_CLR_SHIFT)
131 
132 /*
133  * SOF_INT_POL (RW)
134  *
135  * SOF Interrupt Polarity. This bit controls the condition that generates an SOF interrupt.
136  * 0 SOF interrupt is generated on SOF falling edge
137  * 1 SOF interrupt is generated on SOF rising edge
138  */
139 #define CAM_CR1_SOF_INT_POL_MASK (0x20000UL)
140 #define CAM_CR1_SOF_INT_POL_SHIFT (17U)
141 #define CAM_CR1_SOF_INT_POL_SET(x) (((uint32_t)(x) << CAM_CR1_SOF_INT_POL_SHIFT) & CAM_CR1_SOF_INT_POL_MASK)
142 #define CAM_CR1_SOF_INT_POL_GET(x) (((uint32_t)(x) & CAM_CR1_SOF_INT_POL_MASK) >> CAM_CR1_SOF_INT_POL_SHIFT)
143 
144 /*
145  * INV_DATA (RW)
146  *
147  * Invert Data Input. This bit enables or disables internal inverters on the data lines.
148  * 0 CAM_D data lines are directly applied to internal circuitry
149  * 1 CAM_D data lines are inverted before applied to internal circuitry
150  */
151 #define CAM_CR1_INV_DATA_MASK (0x8000U)
152 #define CAM_CR1_INV_DATA_SHIFT (15U)
153 #define CAM_CR1_INV_DATA_SET(x) (((uint32_t)(x) << CAM_CR1_INV_DATA_SHIFT) & CAM_CR1_INV_DATA_MASK)
154 #define CAM_CR1_INV_DATA_GET(x) (((uint32_t)(x) & CAM_CR1_INV_DATA_MASK) >> CAM_CR1_INV_DATA_SHIFT)
155 
156 /*
157  * STORAGE_MODE (RW)
158  *
159  * 00: Normal Mode (one plane mode)
160  * 01: Two Plane Mode (Y, UV plane)
161  * 10: Y-only Mode, byte sequence as Y0,Y1,Y2,Y3
162  * 11: Binary Mode, bit sequence is from LSB to MSB when CR20[BIG_END]=0
163  */
164 #define CAM_CR1_STORAGE_MODE_MASK (0xC00U)
165 #define CAM_CR1_STORAGE_MODE_SHIFT (10U)
166 #define CAM_CR1_STORAGE_MODE_SET(x) (((uint32_t)(x) << CAM_CR1_STORAGE_MODE_SHIFT) & CAM_CR1_STORAGE_MODE_MASK)
167 #define CAM_CR1_STORAGE_MODE_GET(x) (((uint32_t)(x) & CAM_CR1_STORAGE_MODE_MASK) >> CAM_CR1_STORAGE_MODE_SHIFT)
168 
169 /*
170  * COLOR_FORMATS (RW)
171  *
172  * input color formats:
173  * 0010b:24bit:RGB888
174  * 0011b:24bit:RGB666
175  * 0100b:16bit:RGB565
176  * 0101b:16bit:RGB444
177  * 0110b:16bit:RGB555
178  * 0111b: 16bit: YCbCr422 (Y0 Cb Y1 Cr, each 8-bit)
179  * YUV
180  * YCrCb
181  * Note: YUV420 is not supported.
182  * 1000b: 24bit: YUV444
183  */
184 #define CAM_CR1_COLOR_FORMATS_MASK (0x78U)
185 #define CAM_CR1_COLOR_FORMATS_SHIFT (3U)
186 #define CAM_CR1_COLOR_FORMATS_SET(x) (((uint32_t)(x) << CAM_CR1_COLOR_FORMATS_SHIFT) & CAM_CR1_COLOR_FORMATS_MASK)
187 #define CAM_CR1_COLOR_FORMATS_GET(x) (((uint32_t)(x) & CAM_CR1_COLOR_FORMATS_MASK) >> CAM_CR1_COLOR_FORMATS_SHIFT)
188 
189 /*
190  * SENSOR_BIT_WIDTH (RW)
191  *
192  * the bit width of the sensor
193  * 1: 10 bits
194  * 3:24bits
195  * Others: Undefined
196  */
197 #define CAM_CR1_SENSOR_BIT_WIDTH_MASK (0x7U)
198 #define CAM_CR1_SENSOR_BIT_WIDTH_SHIFT (0U)
199 #define CAM_CR1_SENSOR_BIT_WIDTH_SET(x) (((uint32_t)(x) << CAM_CR1_SENSOR_BIT_WIDTH_SHIFT) & CAM_CR1_SENSOR_BIT_WIDTH_MASK)
200 #define CAM_CR1_SENSOR_BIT_WIDTH_GET(x) (((uint32_t)(x) & CAM_CR1_SENSOR_BIT_WIDTH_MASK) >> CAM_CR1_SENSOR_BIT_WIDTH_SHIFT)
201 
202 /* Bitfield definition for register: INT_EN */
203 /*
204  * ERR_CL_BWID_CFG_INT_EN (RW)
205  *
206  * The unsupported color (color_formats[3:0]) and bitwidth (sensor_bit_width[2:0]) configuation interrupt enable
207  */
208 #define CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_MASK (0x2000U)
209 #define CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_SHIFT (13U)
210 #define CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_SET(x) (((uint32_t)(x) << CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_SHIFT) & CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_MASK)
211 #define CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_GET(x) (((uint32_t)(x) & CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_MASK) >> CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_SHIFT)
212 
213 /*
214  * HIST_DONE_INT_EN (RW)
215  *
216  * Enable hist done int
217  */
218 #define CAM_INT_EN_HIST_DONE_INT_EN_MASK (0x1000U)
219 #define CAM_INT_EN_HIST_DONE_INT_EN_SHIFT (12U)
220 #define CAM_INT_EN_HIST_DONE_INT_EN_SET(x) (((uint32_t)(x) << CAM_INT_EN_HIST_DONE_INT_EN_SHIFT) & CAM_INT_EN_HIST_DONE_INT_EN_MASK)
221 #define CAM_INT_EN_HIST_DONE_INT_EN_GET(x) (((uint32_t)(x) & CAM_INT_EN_HIST_DONE_INT_EN_MASK) >> CAM_INT_EN_HIST_DONE_INT_EN_SHIFT)
222 
223 /*
224  * HRESP_ERR_EN (RW)
225  *
226  * Hresponse Error Enable. This bit enables the hresponse error interrupt.
227  * 0 Disable hresponse error interrupt
228  * 1 Enable hresponse error interrupt
229  */
230 #define CAM_INT_EN_HRESP_ERR_EN_MASK (0x800U)
231 #define CAM_INT_EN_HRESP_ERR_EN_SHIFT (11U)
232 #define CAM_INT_EN_HRESP_ERR_EN_SET(x) (((uint32_t)(x) << CAM_INT_EN_HRESP_ERR_EN_SHIFT) & CAM_INT_EN_HRESP_ERR_EN_MASK)
233 #define CAM_INT_EN_HRESP_ERR_EN_GET(x) (((uint32_t)(x) & CAM_INT_EN_HRESP_ERR_EN_MASK) >> CAM_INT_EN_HRESP_ERR_EN_SHIFT)
234 
235 /*
236  * EOF_INT_EN (RW)
237  *
238  * End-of-Frame Interrupt Enable. This bit enables and disables the EOF interrupt.
239  * 0 EOF interrupt is disabled.
240  * 1 EOF interrupt is generated when RX count value is reached.
241  */
242 #define CAM_INT_EN_EOF_INT_EN_MASK (0x200U)
243 #define CAM_INT_EN_EOF_INT_EN_SHIFT (9U)
244 #define CAM_INT_EN_EOF_INT_EN_SET(x) (((uint32_t)(x) << CAM_INT_EN_EOF_INT_EN_SHIFT) & CAM_INT_EN_EOF_INT_EN_MASK)
245 #define CAM_INT_EN_EOF_INT_EN_GET(x) (((uint32_t)(x) & CAM_INT_EN_EOF_INT_EN_MASK) >> CAM_INT_EN_EOF_INT_EN_SHIFT)
246 
247 /*
248  * RF_OR_INTEN (RW)
249  *
250  * RxFIFO Overrun Interrupt Enable. This bit enables the RX FIFO overrun interrupt.
251  * 0 RxFIFO overrun interrupt is disabled
252  * 1 RxFIFO overrun interrupt is enabled
253  */
254 #define CAM_INT_EN_RF_OR_INTEN_MASK (0x40U)
255 #define CAM_INT_EN_RF_OR_INTEN_SHIFT (6U)
256 #define CAM_INT_EN_RF_OR_INTEN_SET(x) (((uint32_t)(x) << CAM_INT_EN_RF_OR_INTEN_SHIFT) & CAM_INT_EN_RF_OR_INTEN_MASK)
257 #define CAM_INT_EN_RF_OR_INTEN_GET(x) (((uint32_t)(x) & CAM_INT_EN_RF_OR_INTEN_MASK) >> CAM_INT_EN_RF_OR_INTEN_SHIFT)
258 
259 /*
260  * FB2_DMA_DONE_INTEN (RW)
261  *
262  * Frame Buffer2 DMA Transfer Done Interrupt Enable. This bit enables the interrupt of Frame Buffer2 DMA
263  * transfer done.
264  * 0 Frame Buffer2 DMA Transfer Done interrupt disable
265  * 1 Frame Buffer2 DMA Transfer Done interrupt enable
266  */
267 #define CAM_INT_EN_FB2_DMA_DONE_INTEN_MASK (0x8U)
268 #define CAM_INT_EN_FB2_DMA_DONE_INTEN_SHIFT (3U)
269 #define CAM_INT_EN_FB2_DMA_DONE_INTEN_SET(x) (((uint32_t)(x) << CAM_INT_EN_FB2_DMA_DONE_INTEN_SHIFT) & CAM_INT_EN_FB2_DMA_DONE_INTEN_MASK)
270 #define CAM_INT_EN_FB2_DMA_DONE_INTEN_GET(x) (((uint32_t)(x) & CAM_INT_EN_FB2_DMA_DONE_INTEN_MASK) >> CAM_INT_EN_FB2_DMA_DONE_INTEN_SHIFT)
271 
272 /*
273  * FB1_DMA_DONE_INTEN (RW)
274  *
275  * Frame Buffer1 DMA Transfer Done Interrupt Enable. This bit enables the interrupt of Frame Buffer1 DMA
276  * transfer done.
277  * 0 Frame Buffer1 DMA Transfer Done interrupt disable
278  * 1 Frame Buffer1 DMA Transfer Done interrupt enable
279  */
280 #define CAM_INT_EN_FB1_DMA_DONE_INTEN_MASK (0x4U)
281 #define CAM_INT_EN_FB1_DMA_DONE_INTEN_SHIFT (2U)
282 #define CAM_INT_EN_FB1_DMA_DONE_INTEN_SET(x) (((uint32_t)(x) << CAM_INT_EN_FB1_DMA_DONE_INTEN_SHIFT) & CAM_INT_EN_FB1_DMA_DONE_INTEN_MASK)
283 #define CAM_INT_EN_FB1_DMA_DONE_INTEN_GET(x) (((uint32_t)(x) & CAM_INT_EN_FB1_DMA_DONE_INTEN_MASK) >> CAM_INT_EN_FB1_DMA_DONE_INTEN_SHIFT)
284 
285 /*
286  * SOF_INT_EN (RW)
287  *
288  * Start Of Frame (SOF) Interrupt Enable. This bit enables the SOF interrupt.
289  * 0 SOF interrupt disable
290  * 1 SOF interrupt enable
291  */
292 #define CAM_INT_EN_SOF_INT_EN_MASK (0x1U)
293 #define CAM_INT_EN_SOF_INT_EN_SHIFT (0U)
294 #define CAM_INT_EN_SOF_INT_EN_SET(x) (((uint32_t)(x) << CAM_INT_EN_SOF_INT_EN_SHIFT) & CAM_INT_EN_SOF_INT_EN_MASK)
295 #define CAM_INT_EN_SOF_INT_EN_GET(x) (((uint32_t)(x) & CAM_INT_EN_SOF_INT_EN_MASK) >> CAM_INT_EN_SOF_INT_EN_SHIFT)
296 
297 /* Bitfield definition for register: CR2 */
298 /*
299  * FRMCNT_15_0 (RO)
300  *
301  * Frame Counter. This is a 16-bit Frame Counter
302  * (Wraps around automatically after reaching the maximum)
303  */
304 #define CAM_CR2_FRMCNT_15_0_MASK (0xFFFF0000UL)
305 #define CAM_CR2_FRMCNT_15_0_SHIFT (16U)
306 #define CAM_CR2_FRMCNT_15_0_GET(x) (((uint32_t)(x) & CAM_CR2_FRMCNT_15_0_MASK) >> CAM_CR2_FRMCNT_15_0_SHIFT)
307 
308 /*
309  * FRMCNT_RST (RW)
310  *
311  * Frame Count Reset. Resets the Frame Counter.
312  * 0 Do not reset
313  * 1 Reset frame counter immediately
314  */
315 #define CAM_CR2_FRMCNT_RST_MASK (0x8000U)
316 #define CAM_CR2_FRMCNT_RST_SHIFT (15U)
317 #define CAM_CR2_FRMCNT_RST_SET(x) (((uint32_t)(x) << CAM_CR2_FRMCNT_RST_SHIFT) & CAM_CR2_FRMCNT_RST_MASK)
318 #define CAM_CR2_FRMCNT_RST_GET(x) (((uint32_t)(x) & CAM_CR2_FRMCNT_RST_MASK) >> CAM_CR2_FRMCNT_RST_SHIFT)
319 
320 /*
321  * RXFF_LEVEL (RW)
322  *
323  * RxFIFO Full Level. When the number of data in RxFIFO reaches this level, a RxFIFO full interrupt is generated, or an RXFIFO DMA request is sent.
324  * 000 4 Double words
325  * 001 8 Double words
326  * 010 16 Double words
327  * 011 24 Double words
328  * 100 32 Double words
329  * 101 48 Double words
330  * 110 64 Double words
331  * 111 96 Double words
332  */
333 #define CAM_CR2_RXFF_LEVEL_MASK (0xE00U)
334 #define CAM_CR2_RXFF_LEVEL_SHIFT (9U)
335 #define CAM_CR2_RXFF_LEVEL_SET(x) (((uint32_t)(x) << CAM_CR2_RXFF_LEVEL_SHIFT) & CAM_CR2_RXFF_LEVEL_MASK)
336 #define CAM_CR2_RXFF_LEVEL_GET(x) (((uint32_t)(x) & CAM_CR2_RXFF_LEVEL_MASK) >> CAM_CR2_RXFF_LEVEL_SHIFT)
337 
338 /*
339  * DMA_REQ_EN_RFF (RW)
340  *
341  * DMA Request Enable for RxFIFO. This bit enables the dma request from RxFIFO to the embedded DMA controller.
342  * 0 Disable the dma request
343  * 1 Enable the dma request. The UV Rx FIFO is only enabled to filling data in 2 plane mode.
344  */
345 #define CAM_CR2_DMA_REQ_EN_RFF_MASK (0x20U)
346 #define CAM_CR2_DMA_REQ_EN_RFF_SHIFT (5U)
347 #define CAM_CR2_DMA_REQ_EN_RFF_SET(x) (((uint32_t)(x) << CAM_CR2_DMA_REQ_EN_RFF_SHIFT) & CAM_CR2_DMA_REQ_EN_RFF_MASK)
348 #define CAM_CR2_DMA_REQ_EN_RFF_GET(x) (((uint32_t)(x) & CAM_CR2_DMA_REQ_EN_RFF_MASK) >> CAM_CR2_DMA_REQ_EN_RFF_SHIFT)
349 
350 /*
351  * CLRBITFORMAT (RW)
352  *
353  * Input Byte & bit sequence same as OV5640, except for Raw mode. Used only for internal ARGB conversion.
354  */
355 #define CAM_CR2_CLRBITFORMAT_MASK (0xFU)
356 #define CAM_CR2_CLRBITFORMAT_SHIFT (0U)
357 #define CAM_CR2_CLRBITFORMAT_SET(x) (((uint32_t)(x) << CAM_CR2_CLRBITFORMAT_SHIFT) & CAM_CR2_CLRBITFORMAT_MASK)
358 #define CAM_CR2_CLRBITFORMAT_GET(x) (((uint32_t)(x) & CAM_CR2_CLRBITFORMAT_MASK) >> CAM_CR2_CLRBITFORMAT_SHIFT)
359 
360 /* Bitfield definition for register: STA */
361 /*
362  * ERR_CL_BWID_CFG (W1C)
363  *
364  * The unsupported color (color_formats[3:0]) and bitwidth (sensor_bit_width[2:0]) configuation found
365  */
366 #define CAM_STA_ERR_CL_BWID_CFG_MASK (0x80000UL)
367 #define CAM_STA_ERR_CL_BWID_CFG_SHIFT (19U)
368 #define CAM_STA_ERR_CL_BWID_CFG_SET(x) (((uint32_t)(x) << CAM_STA_ERR_CL_BWID_CFG_SHIFT) & CAM_STA_ERR_CL_BWID_CFG_MASK)
369 #define CAM_STA_ERR_CL_BWID_CFG_GET(x) (((uint32_t)(x) & CAM_STA_ERR_CL_BWID_CFG_MASK) >> CAM_STA_ERR_CL_BWID_CFG_SHIFT)
370 
371 /*
372  * HIST_DONE (W1C)
373  *
374  * hist cal done
375  */
376 #define CAM_STA_HIST_DONE_MASK (0x40000UL)
377 #define CAM_STA_HIST_DONE_SHIFT (18U)
378 #define CAM_STA_HIST_DONE_SET(x) (((uint32_t)(x) << CAM_STA_HIST_DONE_SHIFT) & CAM_STA_HIST_DONE_MASK)
379 #define CAM_STA_HIST_DONE_GET(x) (((uint32_t)(x) & CAM_STA_HIST_DONE_MASK) >> CAM_STA_HIST_DONE_SHIFT)
380 
381 /*
382  * RF_OR_INT (W1C)
383  *
384  * RxFIFO Overrun Interrupt Status. Indicates the overflow status of the RxFIFO register. (Cleared by writing
385  * 1)
386  * 0 RXFIFO has not overflowed.
387  * 1 RXFIFO has overflowed.
388  */
389 #define CAM_STA_RF_OR_INT_MASK (0x2000U)
390 #define CAM_STA_RF_OR_INT_SHIFT (13U)
391 #define CAM_STA_RF_OR_INT_SET(x) (((uint32_t)(x) << CAM_STA_RF_OR_INT_SHIFT) & CAM_STA_RF_OR_INT_MASK)
392 #define CAM_STA_RF_OR_INT_GET(x) (((uint32_t)(x) & CAM_STA_RF_OR_INT_MASK) >> CAM_STA_RF_OR_INT_SHIFT)
393 
394 /*
395  * DMA_TSF_DONE_FB2 (W1C)
396  *
397  * DMA Transfer Done in Frame Buffer2. Indicates that the DMA transfer from RxFIFO to Frame Buffer2 is completed. It can trigger an interrupt if the corresponding enable bit is set in CAM_CR1. This bit can be cleared by by writing 1 or reflashing the RxFIFO dma controller in CAM_CR3. (Cleared by writing 1)
398  * 0 DMA transfer is not completed.
399  * 1 DMA transfer is completed.
400  */
401 #define CAM_STA_DMA_TSF_DONE_FB2_MASK (0x400U)
402 #define CAM_STA_DMA_TSF_DONE_FB2_SHIFT (10U)
403 #define CAM_STA_DMA_TSF_DONE_FB2_SET(x) (((uint32_t)(x) << CAM_STA_DMA_TSF_DONE_FB2_SHIFT) & CAM_STA_DMA_TSF_DONE_FB2_MASK)
404 #define CAM_STA_DMA_TSF_DONE_FB2_GET(x) (((uint32_t)(x) & CAM_STA_DMA_TSF_DONE_FB2_MASK) >> CAM_STA_DMA_TSF_DONE_FB2_SHIFT)
405 
406 /*
407  * DMA_TSF_DONE_FB1 (W1C)
408  *
409  * DMA Transfer Done in Frame Buffer1. Indicates that the DMA transfer from RxFIFO to Frame Buffer1 is completed. It can trigger an interrupt if the corresponding enable bit is set in CAM_CR1. This bit can be cleared by by writing 1 or reflashing the RxFIFO dma controller in CAM_CR3. (Cleared by writing 1)
410  * 0 DMA transfer is not completed.
411  * 1 DMA transfer is completed.
412  */
413 #define CAM_STA_DMA_TSF_DONE_FB1_MASK (0x200U)
414 #define CAM_STA_DMA_TSF_DONE_FB1_SHIFT (9U)
415 #define CAM_STA_DMA_TSF_DONE_FB1_SET(x) (((uint32_t)(x) << CAM_STA_DMA_TSF_DONE_FB1_SHIFT) & CAM_STA_DMA_TSF_DONE_FB1_MASK)
416 #define CAM_STA_DMA_TSF_DONE_FB1_GET(x) (((uint32_t)(x) & CAM_STA_DMA_TSF_DONE_FB1_MASK) >> CAM_STA_DMA_TSF_DONE_FB1_SHIFT)
417 
418 /*
419  * EOF_INT (W1C)
420  *
421  * End of Frame (EOF) Interrupt Status. Indicates when EOF is detected. (Cleared by writing 1)
422  * 0 EOF is not detected.
423  * 1 EOF is detected.
424  */
425 #define CAM_STA_EOF_INT_MASK (0x80U)
426 #define CAM_STA_EOF_INT_SHIFT (7U)
427 #define CAM_STA_EOF_INT_SET(x) (((uint32_t)(x) << CAM_STA_EOF_INT_SHIFT) & CAM_STA_EOF_INT_MASK)
428 #define CAM_STA_EOF_INT_GET(x) (((uint32_t)(x) & CAM_STA_EOF_INT_MASK) >> CAM_STA_EOF_INT_SHIFT)
429 
430 /*
431  * SOF_INT (W1C)
432  *
433  * Start of Frame Interrupt Status. Indicates when SOF is detected. (Cleared by writing 1)
434  * 0 SOF is not detected.
435  * 1 SOF is detected.
436  */
437 #define CAM_STA_SOF_INT_MASK (0x40U)
438 #define CAM_STA_SOF_INT_SHIFT (6U)
439 #define CAM_STA_SOF_INT_SET(x) (((uint32_t)(x) << CAM_STA_SOF_INT_SHIFT) & CAM_STA_SOF_INT_MASK)
440 #define CAM_STA_SOF_INT_GET(x) (((uint32_t)(x) & CAM_STA_SOF_INT_MASK) >> CAM_STA_SOF_INT_SHIFT)
441 
442 /*
443  * HRESP_ERR_INT (W1C)
444  *
445  * Hresponse Error Interrupt Status. Indicates that a hresponse error has been detected. (Cleared by writing
446  * 1)
447  * 0 No hresponse error.
448  * 1 Hresponse error is detected.
449  */
450 #define CAM_STA_HRESP_ERR_INT_MASK (0x4U)
451 #define CAM_STA_HRESP_ERR_INT_SHIFT (2U)
452 #define CAM_STA_HRESP_ERR_INT_SET(x) (((uint32_t)(x) << CAM_STA_HRESP_ERR_INT_SHIFT) & CAM_STA_HRESP_ERR_INT_MASK)
453 #define CAM_STA_HRESP_ERR_INT_GET(x) (((uint32_t)(x) & CAM_STA_HRESP_ERR_INT_MASK) >> CAM_STA_HRESP_ERR_INT_SHIFT)
454 
455 /* Bitfield definition for register: DMASA_FB1 */
456 /*
457  * PTR (RW)
458  *
459  * DMA Start Address in Frame Buffer1. Indicates the start address to write data. The embedded DMA controller will read data from RxFIFO and write it from this address through AHB bus. The address should be double words aligned.
460  * In Two-Plane Mode, Y buffer1
461  */
462 #define CAM_DMASA_FB1_PTR_MASK (0xFFFFFFFCUL)
463 #define CAM_DMASA_FB1_PTR_SHIFT (2U)
464 #define CAM_DMASA_FB1_PTR_SET(x) (((uint32_t)(x) << CAM_DMASA_FB1_PTR_SHIFT) & CAM_DMASA_FB1_PTR_MASK)
465 #define CAM_DMASA_FB1_PTR_GET(x) (((uint32_t)(x) & CAM_DMASA_FB1_PTR_MASK) >> CAM_DMASA_FB1_PTR_SHIFT)
466 
467 /* Bitfield definition for register: DMASA_FB2 */
468 /*
469  * PTR (RW)
470  *
471  * DMA Start Address in Frame Buffer2. Indicates the start address to write data. The embedded DMA controller will read data from RxFIFO and write it from this address through AHB bus. The address should be double words aligned.
472  * In Two-Plane Mode, Y buffer2
473  */
474 #define CAM_DMASA_FB2_PTR_MASK (0xFFFFFFFCUL)
475 #define CAM_DMASA_FB2_PTR_SHIFT (2U)
476 #define CAM_DMASA_FB2_PTR_SET(x) (((uint32_t)(x) << CAM_DMASA_FB2_PTR_SHIFT) & CAM_DMASA_FB2_PTR_MASK)
477 #define CAM_DMASA_FB2_PTR_GET(x) (((uint32_t)(x) & CAM_DMASA_FB2_PTR_MASK) >> CAM_DMASA_FB2_PTR_SHIFT)
478 
479 /* Bitfield definition for register: BUF_PARA */
480 /*
481  * LINEBSP_STRIDE (RW)
482  *
483  * Line Blank Space Stride. Indicates the space between the end of line image storage and the start of a new line storage in the frame buffer.
484  * The width of the line storage in frame buffer(in double words) minus the width of the image(in double words) is the stride. The stride should be double words aligned. The embedded DMA controller will skip the stride before starting to write the next row of the image.
485  */
486 #define CAM_BUF_PARA_LINEBSP_STRIDE_MASK (0xFFFFU)
487 #define CAM_BUF_PARA_LINEBSP_STRIDE_SHIFT (0U)
488 #define CAM_BUF_PARA_LINEBSP_STRIDE_SET(x) (((uint32_t)(x) << CAM_BUF_PARA_LINEBSP_STRIDE_SHIFT) & CAM_BUF_PARA_LINEBSP_STRIDE_MASK)
489 #define CAM_BUF_PARA_LINEBSP_STRIDE_GET(x) (((uint32_t)(x) & CAM_BUF_PARA_LINEBSP_STRIDE_MASK) >> CAM_BUF_PARA_LINEBSP_STRIDE_SHIFT)
490 
491 /* Bitfield definition for register: IDEAL_WN_SIZE */
492 /*
493  * HEIGHT (RW)
494  *
495  * Image Height. Indicates how many active pixels in a column of the image from the sensor.
496  */
497 #define CAM_IDEAL_WN_SIZE_HEIGHT_MASK (0xFFFF0000UL)
498 #define CAM_IDEAL_WN_SIZE_HEIGHT_SHIFT (16U)
499 #define CAM_IDEAL_WN_SIZE_HEIGHT_SET(x) (((uint32_t)(x) << CAM_IDEAL_WN_SIZE_HEIGHT_SHIFT) & CAM_IDEAL_WN_SIZE_HEIGHT_MASK)
500 #define CAM_IDEAL_WN_SIZE_HEIGHT_GET(x) (((uint32_t)(x) & CAM_IDEAL_WN_SIZE_HEIGHT_MASK) >> CAM_IDEAL_WN_SIZE_HEIGHT_SHIFT)
501 
502 /*
503  * WIDTH (RW)
504  *
505  * Image Width. Indicates how many active pixels in a line of the image from the sensor.
506  * The number of bytes to be transferred is re-calculated automatically in hardware based on cr1[color_ext] and cr1[store_mode]. Default value is 2*pixel number.
507  * As the input data from the sensor is 8-bit/pixel format, the IMAGE_WIDTH should be a multiple of 8 pixels.
508  */
509 #define CAM_IDEAL_WN_SIZE_WIDTH_MASK (0xFFFFU)
510 #define CAM_IDEAL_WN_SIZE_WIDTH_SHIFT (0U)
511 #define CAM_IDEAL_WN_SIZE_WIDTH_SET(x) (((uint32_t)(x) << CAM_IDEAL_WN_SIZE_WIDTH_SHIFT) & CAM_IDEAL_WN_SIZE_WIDTH_MASK)
512 #define CAM_IDEAL_WN_SIZE_WIDTH_GET(x) (((uint32_t)(x) & CAM_IDEAL_WN_SIZE_WIDTH_MASK) >> CAM_IDEAL_WN_SIZE_WIDTH_SHIFT)
513 
514 /* Bitfield definition for register: CR18 */
515 /*
516  * CAM_ENABLE (RW)
517  *
518  * CAM global enable signal. Only when this bit is 1, CAM can start to receive the data and store to memory.
519  */
520 #define CAM_CR18_CAM_ENABLE_MASK (0x80000000UL)
521 #define CAM_CR18_CAM_ENABLE_SHIFT (31U)
522 #define CAM_CR18_CAM_ENABLE_SET(x) (((uint32_t)(x) << CAM_CR18_CAM_ENABLE_SHIFT) & CAM_CR18_CAM_ENABLE_MASK)
523 #define CAM_CR18_CAM_ENABLE_GET(x) (((uint32_t)(x) & CAM_CR18_CAM_ENABLE_MASK) >> CAM_CR18_CAM_ENABLE_SHIFT)
524 
525 /*
526  * AWQOS (RW)
527  *
528  * AWQOS for bus fabric arbitration
529  */
530 #define CAM_CR18_AWQOS_MASK (0x780U)
531 #define CAM_CR18_AWQOS_SHIFT (7U)
532 #define CAM_CR18_AWQOS_SET(x) (((uint32_t)(x) << CAM_CR18_AWQOS_SHIFT) & CAM_CR18_AWQOS_MASK)
533 #define CAM_CR18_AWQOS_GET(x) (((uint32_t)(x) & CAM_CR18_AWQOS_MASK) >> CAM_CR18_AWQOS_SHIFT)
534 
535 /* Bitfield definition for register: CR20 */
536 /*
537  * BINARY_EN (RW)
538  *
539  * binary picture output enable
540  */
541 #define CAM_CR20_BINARY_EN_MASK (0x80000000UL)
542 #define CAM_CR20_BINARY_EN_SHIFT (31U)
543 #define CAM_CR20_BINARY_EN_SET(x) (((uint32_t)(x) << CAM_CR20_BINARY_EN_SHIFT) & CAM_CR20_BINARY_EN_MASK)
544 #define CAM_CR20_BINARY_EN_GET(x) (((uint32_t)(x) & CAM_CR20_BINARY_EN_MASK) >> CAM_CR20_BINARY_EN_SHIFT)
545 
546 /*
547  * HISTOGRAM_EN (RW)
548  *
549  * histogarm enable
550  */
551 #define CAM_CR20_HISTOGRAM_EN_MASK (0x40000000UL)
552 #define CAM_CR20_HISTOGRAM_EN_SHIFT (30U)
553 #define CAM_CR20_HISTOGRAM_EN_SET(x) (((uint32_t)(x) << CAM_CR20_HISTOGRAM_EN_SHIFT) & CAM_CR20_HISTOGRAM_EN_MASK)
554 #define CAM_CR20_HISTOGRAM_EN_GET(x) (((uint32_t)(x) & CAM_CR20_HISTOGRAM_EN_MASK) >> CAM_CR20_HISTOGRAM_EN_SHIFT)
555 
556 /*
557  * BIG_END (RW)
558  *
559  * Asserted when binary output is in big-endian type, which mean the right most data is at the LSBs. Take function only inside the 32-bit word.
560  */
561 #define CAM_CR20_BIG_END_MASK (0x100U)
562 #define CAM_CR20_BIG_END_SHIFT (8U)
563 #define CAM_CR20_BIG_END_SET(x) (((uint32_t)(x) << CAM_CR20_BIG_END_SHIFT) & CAM_CR20_BIG_END_MASK)
564 #define CAM_CR20_BIG_END_GET(x) (((uint32_t)(x) & CAM_CR20_BIG_END_MASK) >> CAM_CR20_BIG_END_SHIFT)
565 
566 /*
567  * THRESHOLD (RW)
568  *
569  * Threshold to generate binary color. Bin 1 is output if the pixel is greater than the threshold.
570  */
571 #define CAM_CR20_THRESHOLD_MASK (0xFFU)
572 #define CAM_CR20_THRESHOLD_SHIFT (0U)
573 #define CAM_CR20_THRESHOLD_SET(x) (((uint32_t)(x) << CAM_CR20_THRESHOLD_SHIFT) & CAM_CR20_THRESHOLD_MASK)
574 #define CAM_CR20_THRESHOLD_GET(x) (((uint32_t)(x) & CAM_CR20_THRESHOLD_MASK) >> CAM_CR20_THRESHOLD_SHIFT)
575 
576 /* Bitfield definition for register: CSC_COEF0 */
577 /*
578  * YCBCR_MODE (RW)
579  *
580  * This bit changes the behavior when performing U/V converting.
581  * 0b - Converting YUV to RGB data
582  * 1b - Converting YCbCr to RGB data
583  */
584 #define CAM_CSC_COEF0_YCBCR_MODE_MASK (0x80000000UL)
585 #define CAM_CSC_COEF0_YCBCR_MODE_SHIFT (31U)
586 #define CAM_CSC_COEF0_YCBCR_MODE_SET(x) (((uint32_t)(x) << CAM_CSC_COEF0_YCBCR_MODE_SHIFT) & CAM_CSC_COEF0_YCBCR_MODE_MASK)
587 #define CAM_CSC_COEF0_YCBCR_MODE_GET(x) (((uint32_t)(x) & CAM_CSC_COEF0_YCBCR_MODE_MASK) >> CAM_CSC_COEF0_YCBCR_MODE_SHIFT)
588 
589 /*
590  * ENABLE (RW)
591  *
592  * Enable the CSC unit
593  * 0b - The CSC is bypassed and the input pixels are RGB data already
594  * 1b - The CSC is enabled and the pixels will be converted to RGB data
595  */
596 #define CAM_CSC_COEF0_ENABLE_MASK (0x40000000UL)
597 #define CAM_CSC_COEF0_ENABLE_SHIFT (30U)
598 #define CAM_CSC_COEF0_ENABLE_SET(x) (((uint32_t)(x) << CAM_CSC_COEF0_ENABLE_SHIFT) & CAM_CSC_COEF0_ENABLE_MASK)
599 #define CAM_CSC_COEF0_ENABLE_GET(x) (((uint32_t)(x) & CAM_CSC_COEF0_ENABLE_MASK) >> CAM_CSC_COEF0_ENABLE_SHIFT)
600 
601 /*
602  * C0 (RW)
603  *
604  * Two's compliment Y multiplier coefficient. YUV=0x100 (1.000) YCbCr=0x12A (1.164)
605  */
606 #define CAM_CSC_COEF0_C0_MASK (0x1FFC0000UL)
607 #define CAM_CSC_COEF0_C0_SHIFT (18U)
608 #define CAM_CSC_COEF0_C0_SET(x) (((uint32_t)(x) << CAM_CSC_COEF0_C0_SHIFT) & CAM_CSC_COEF0_C0_MASK)
609 #define CAM_CSC_COEF0_C0_GET(x) (((uint32_t)(x) & CAM_CSC_COEF0_C0_MASK) >> CAM_CSC_COEF0_C0_SHIFT)
610 
611 /*
612  * UV_OFFSET (RW)
613  *
614  * Two's compliment phase offset implicit for CbCr data. Generally used for YCbCr to RGB conversion.
615  * YCbCr=0x180, YUV=0x000 (typically -128 or 0x180 to indicate normalized -0.5 to 0.5 range).
616  */
617 #define CAM_CSC_COEF0_UV_OFFSET_MASK (0x3FE00UL)
618 #define CAM_CSC_COEF0_UV_OFFSET_SHIFT (9U)
619 #define CAM_CSC_COEF0_UV_OFFSET_SET(x) (((uint32_t)(x) << CAM_CSC_COEF0_UV_OFFSET_SHIFT) & CAM_CSC_COEF0_UV_OFFSET_MASK)
620 #define CAM_CSC_COEF0_UV_OFFSET_GET(x) (((uint32_t)(x) & CAM_CSC_COEF0_UV_OFFSET_MASK) >> CAM_CSC_COEF0_UV_OFFSET_SHIFT)
621 
622 /*
623  * Y_OFFSET (RW)
624  *
625  * Two's compliment amplitude offset implicit in the Y data. For YUV, this is typically 0 and for YCbCr, this is
626  * typically -16 (0x1F0).
627  */
628 #define CAM_CSC_COEF0_Y_OFFSET_MASK (0x1FFU)
629 #define CAM_CSC_COEF0_Y_OFFSET_SHIFT (0U)
630 #define CAM_CSC_COEF0_Y_OFFSET_SET(x) (((uint32_t)(x) << CAM_CSC_COEF0_Y_OFFSET_SHIFT) & CAM_CSC_COEF0_Y_OFFSET_MASK)
631 #define CAM_CSC_COEF0_Y_OFFSET_GET(x) (((uint32_t)(x) & CAM_CSC_COEF0_Y_OFFSET_MASK) >> CAM_CSC_COEF0_Y_OFFSET_SHIFT)
632 
633 /* Bitfield definition for register: CSC_COEF1 */
634 /*
635  * C1 (RW)
636  *
637  * Two's compliment Red V/Cr multiplier coefficient. YUV=0x123 (1.140) YCbCr=0x198 (1.596).
638  */
639 #define CAM_CSC_COEF1_C1_MASK (0x7FF0000UL)
640 #define CAM_CSC_COEF1_C1_SHIFT (16U)
641 #define CAM_CSC_COEF1_C1_SET(x) (((uint32_t)(x) << CAM_CSC_COEF1_C1_SHIFT) & CAM_CSC_COEF1_C1_MASK)
642 #define CAM_CSC_COEF1_C1_GET(x) (((uint32_t)(x) & CAM_CSC_COEF1_C1_MASK) >> CAM_CSC_COEF1_C1_SHIFT)
643 
644 /*
645  * C4 (RW)
646  *
647  * Two's compliment Blue U/Cb multiplier coefficient. YUV=0x208 (2.032) YCbCr=0x204 (2.017).
648  */
649 #define CAM_CSC_COEF1_C4_MASK (0x7FFU)
650 #define CAM_CSC_COEF1_C4_SHIFT (0U)
651 #define CAM_CSC_COEF1_C4_SET(x) (((uint32_t)(x) << CAM_CSC_COEF1_C4_SHIFT) & CAM_CSC_COEF1_C4_MASK)
652 #define CAM_CSC_COEF1_C4_GET(x) (((uint32_t)(x) & CAM_CSC_COEF1_C4_MASK) >> CAM_CSC_COEF1_C4_SHIFT)
653 
654 /* Bitfield definition for register: CSC_COEF2 */
655 /*
656  * C2 (RW)
657  *
658  * Two's compliment Green V/Cr multiplier coefficient. YUV=0x76B (-0.581) YCbCr=0x730 (-0.813).
659  */
660 #define CAM_CSC_COEF2_C2_MASK (0x7FF0000UL)
661 #define CAM_CSC_COEF2_C2_SHIFT (16U)
662 #define CAM_CSC_COEF2_C2_SET(x) (((uint32_t)(x) << CAM_CSC_COEF2_C2_SHIFT) & CAM_CSC_COEF2_C2_MASK)
663 #define CAM_CSC_COEF2_C2_GET(x) (((uint32_t)(x) & CAM_CSC_COEF2_C2_MASK) >> CAM_CSC_COEF2_C2_SHIFT)
664 
665 /*
666  * C3 (RW)
667  *
668  * Two's compliment Green U/Cb multiplier coefficient. YUV=0x79C (-0.394) YCbCr=0x79C (-0.392).
669  */
670 #define CAM_CSC_COEF2_C3_MASK (0x7FFU)
671 #define CAM_CSC_COEF2_C3_SHIFT (0U)
672 #define CAM_CSC_COEF2_C3_SET(x) (((uint32_t)(x) << CAM_CSC_COEF2_C3_SHIFT) & CAM_CSC_COEF2_C3_MASK)
673 #define CAM_CSC_COEF2_C3_GET(x) (((uint32_t)(x) & CAM_CSC_COEF2_C3_MASK) >> CAM_CSC_COEF2_C3_SHIFT)
674 
675 /* Bitfield definition for register: CLRKEY_LOW */
676 /*
677  * LIMIT (RW)
678  *
679  * Low range of color key applied to PS buffer. To disable PS colorkeying, set the low colorkey to 0xFFFFFF and the high colorkey to 0x000000.
680  */
681 #define CAM_CLRKEY_LOW_LIMIT_MASK (0xFFFFFFUL)
682 #define CAM_CLRKEY_LOW_LIMIT_SHIFT (0U)
683 #define CAM_CLRKEY_LOW_LIMIT_SET(x) (((uint32_t)(x) << CAM_CLRKEY_LOW_LIMIT_SHIFT) & CAM_CLRKEY_LOW_LIMIT_MASK)
684 #define CAM_CLRKEY_LOW_LIMIT_GET(x) (((uint32_t)(x) & CAM_CLRKEY_LOW_LIMIT_MASK) >> CAM_CLRKEY_LOW_LIMIT_SHIFT)
685 
686 /* Bitfield definition for register: CLRKEY_HIGH */
687 /*
688  * LIMIT (RW)
689  *
690  * Low range of color key applied to PS buffer. To disable PS colorkeying, set the low colorkey to 0xFFFFFF and the high colorkey to 0x000000.
691  */
692 #define CAM_CLRKEY_HIGH_LIMIT_MASK (0xFFFFFFUL)
693 #define CAM_CLRKEY_HIGH_LIMIT_SHIFT (0U)
694 #define CAM_CLRKEY_HIGH_LIMIT_SET(x) (((uint32_t)(x) << CAM_CLRKEY_HIGH_LIMIT_SHIFT) & CAM_CLRKEY_HIGH_LIMIT_MASK)
695 #define CAM_CLRKEY_HIGH_LIMIT_GET(x) (((uint32_t)(x) & CAM_CLRKEY_HIGH_LIMIT_MASK) >> CAM_CLRKEY_HIGH_LIMIT_SHIFT)
696 
697 /* Bitfield definition for register array: HISTOGRAM_FIFO */
698 /*
699  * HIST_Y (RO)
700  *
701  * the appearance of bin x (x=(address-DATA0)/4)
702  */
703 #define CAM_HISTOGRAM_FIFO_HIST_Y_MASK (0xFFFFFFUL)
704 #define CAM_HISTOGRAM_FIFO_HIST_Y_SHIFT (0U)
705 #define CAM_HISTOGRAM_FIFO_HIST_Y_GET(x) (((uint32_t)(x) & CAM_HISTOGRAM_FIFO_HIST_Y_MASK) >> CAM_HISTOGRAM_FIFO_HIST_Y_SHIFT)
706 
707 
708 
709 /* HISTOGRAM_FIFO register group index macro definition */
710 #define CAM_HISTOGRAM_FIFO_DATA0 (0UL)
711 #define CAM_HISTOGRAM_FIFO_DATA1 (1UL)
712 #define CAM_HISTOGRAM_FIFO_DATA2 (2UL)
713 #define CAM_HISTOGRAM_FIFO_DATA3 (3UL)
714 #define CAM_HISTOGRAM_FIFO_DATA4 (4UL)
715 #define CAM_HISTOGRAM_FIFO_DATA5 (5UL)
716 #define CAM_HISTOGRAM_FIFO_DATA6 (6UL)
717 #define CAM_HISTOGRAM_FIFO_DATA7 (7UL)
718 #define CAM_HISTOGRAM_FIFO_DATA8 (8UL)
719 #define CAM_HISTOGRAM_FIFO_DATA9 (9UL)
720 #define CAM_HISTOGRAM_FIFO_DATA10 (10UL)
721 #define CAM_HISTOGRAM_FIFO_DATA11 (11UL)
722 #define CAM_HISTOGRAM_FIFO_DATA12 (12UL)
723 #define CAM_HISTOGRAM_FIFO_DATA13 (13UL)
724 #define CAM_HISTOGRAM_FIFO_DATA14 (14UL)
725 #define CAM_HISTOGRAM_FIFO_DATA15 (15UL)
726 #define CAM_HISTOGRAM_FIFO_DATA16 (16UL)
727 #define CAM_HISTOGRAM_FIFO_DATA17 (17UL)
728 #define CAM_HISTOGRAM_FIFO_DATA18 (18UL)
729 #define CAM_HISTOGRAM_FIFO_DATA19 (19UL)
730 #define CAM_HISTOGRAM_FIFO_DATA20 (20UL)
731 #define CAM_HISTOGRAM_FIFO_DATA21 (21UL)
732 #define CAM_HISTOGRAM_FIFO_DATA22 (22UL)
733 #define CAM_HISTOGRAM_FIFO_DATA23 (23UL)
734 #define CAM_HISTOGRAM_FIFO_DATA24 (24UL)
735 #define CAM_HISTOGRAM_FIFO_DATA25 (25UL)
736 #define CAM_HISTOGRAM_FIFO_DATA26 (26UL)
737 #define CAM_HISTOGRAM_FIFO_DATA27 (27UL)
738 #define CAM_HISTOGRAM_FIFO_DATA28 (28UL)
739 #define CAM_HISTOGRAM_FIFO_DATA29 (29UL)
740 #define CAM_HISTOGRAM_FIFO_DATA30 (30UL)
741 #define CAM_HISTOGRAM_FIFO_DATA31 (31UL)
742 #define CAM_HISTOGRAM_FIFO_DATA32 (32UL)
743 #define CAM_HISTOGRAM_FIFO_DATA33 (33UL)
744 #define CAM_HISTOGRAM_FIFO_DATA34 (34UL)
745 #define CAM_HISTOGRAM_FIFO_DATA35 (35UL)
746 #define CAM_HISTOGRAM_FIFO_DATA36 (36UL)
747 #define CAM_HISTOGRAM_FIFO_DATA37 (37UL)
748 #define CAM_HISTOGRAM_FIFO_DATA38 (38UL)
749 #define CAM_HISTOGRAM_FIFO_DATA39 (39UL)
750 #define CAM_HISTOGRAM_FIFO_DATA40 (40UL)
751 #define CAM_HISTOGRAM_FIFO_DATA41 (41UL)
752 #define CAM_HISTOGRAM_FIFO_DATA42 (42UL)
753 #define CAM_HISTOGRAM_FIFO_DATA43 (43UL)
754 #define CAM_HISTOGRAM_FIFO_DATA44 (44UL)
755 #define CAM_HISTOGRAM_FIFO_DATA45 (45UL)
756 #define CAM_HISTOGRAM_FIFO_DATA46 (46UL)
757 #define CAM_HISTOGRAM_FIFO_DATA47 (47UL)
758 #define CAM_HISTOGRAM_FIFO_DATA48 (48UL)
759 #define CAM_HISTOGRAM_FIFO_DATA49 (49UL)
760 #define CAM_HISTOGRAM_FIFO_DATA50 (50UL)
761 #define CAM_HISTOGRAM_FIFO_DATA51 (51UL)
762 #define CAM_HISTOGRAM_FIFO_DATA52 (52UL)
763 #define CAM_HISTOGRAM_FIFO_DATA53 (53UL)
764 #define CAM_HISTOGRAM_FIFO_DATA54 (54UL)
765 #define CAM_HISTOGRAM_FIFO_DATA55 (55UL)
766 #define CAM_HISTOGRAM_FIFO_DATA56 (56UL)
767 #define CAM_HISTOGRAM_FIFO_DATA57 (57UL)
768 #define CAM_HISTOGRAM_FIFO_DATA58 (58UL)
769 #define CAM_HISTOGRAM_FIFO_DATA59 (59UL)
770 #define CAM_HISTOGRAM_FIFO_DATA60 (60UL)
771 #define CAM_HISTOGRAM_FIFO_DATA61 (61UL)
772 #define CAM_HISTOGRAM_FIFO_DATA62 (62UL)
773 #define CAM_HISTOGRAM_FIFO_DATA63 (63UL)
774 #define CAM_HISTOGRAM_FIFO_DATA64 (64UL)
775 #define CAM_HISTOGRAM_FIFO_DATA65 (65UL)
776 #define CAM_HISTOGRAM_FIFO_DATA66 (66UL)
777 #define CAM_HISTOGRAM_FIFO_DATA67 (67UL)
778 #define CAM_HISTOGRAM_FIFO_DATA68 (68UL)
779 #define CAM_HISTOGRAM_FIFO_DATA69 (69UL)
780 #define CAM_HISTOGRAM_FIFO_DATA70 (70UL)
781 #define CAM_HISTOGRAM_FIFO_DATA71 (71UL)
782 #define CAM_HISTOGRAM_FIFO_DATA72 (72UL)
783 #define CAM_HISTOGRAM_FIFO_DATA73 (73UL)
784 #define CAM_HISTOGRAM_FIFO_DATA74 (74UL)
785 #define CAM_HISTOGRAM_FIFO_DATA75 (75UL)
786 #define CAM_HISTOGRAM_FIFO_DATA76 (76UL)
787 #define CAM_HISTOGRAM_FIFO_DATA77 (77UL)
788 #define CAM_HISTOGRAM_FIFO_DATA78 (78UL)
789 #define CAM_HISTOGRAM_FIFO_DATA79 (79UL)
790 #define CAM_HISTOGRAM_FIFO_DATA80 (80UL)
791 #define CAM_HISTOGRAM_FIFO_DATA81 (81UL)
792 #define CAM_HISTOGRAM_FIFO_DATA82 (82UL)
793 #define CAM_HISTOGRAM_FIFO_DATA83 (83UL)
794 #define CAM_HISTOGRAM_FIFO_DATA84 (84UL)
795 #define CAM_HISTOGRAM_FIFO_DATA85 (85UL)
796 #define CAM_HISTOGRAM_FIFO_DATA86 (86UL)
797 #define CAM_HISTOGRAM_FIFO_DATA87 (87UL)
798 #define CAM_HISTOGRAM_FIFO_DATA88 (88UL)
799 #define CAM_HISTOGRAM_FIFO_DATA89 (89UL)
800 #define CAM_HISTOGRAM_FIFO_DATA90 (90UL)
801 #define CAM_HISTOGRAM_FIFO_DATA91 (91UL)
802 #define CAM_HISTOGRAM_FIFO_DATA92 (92UL)
803 #define CAM_HISTOGRAM_FIFO_DATA93 (93UL)
804 #define CAM_HISTOGRAM_FIFO_DATA94 (94UL)
805 #define CAM_HISTOGRAM_FIFO_DATA95 (95UL)
806 #define CAM_HISTOGRAM_FIFO_DATA96 (96UL)
807 #define CAM_HISTOGRAM_FIFO_DATA97 (97UL)
808 #define CAM_HISTOGRAM_FIFO_DATA98 (98UL)
809 #define CAM_HISTOGRAM_FIFO_DATA99 (99UL)
810 #define CAM_HISTOGRAM_FIFO_DATA100 (100UL)
811 #define CAM_HISTOGRAM_FIFO_DATA101 (101UL)
812 #define CAM_HISTOGRAM_FIFO_DATA102 (102UL)
813 #define CAM_HISTOGRAM_FIFO_DATA103 (103UL)
814 #define CAM_HISTOGRAM_FIFO_DATA104 (104UL)
815 #define CAM_HISTOGRAM_FIFO_DATA105 (105UL)
816 #define CAM_HISTOGRAM_FIFO_DATA106 (106UL)
817 #define CAM_HISTOGRAM_FIFO_DATA107 (107UL)
818 #define CAM_HISTOGRAM_FIFO_DATA108 (108UL)
819 #define CAM_HISTOGRAM_FIFO_DATA109 (109UL)
820 #define CAM_HISTOGRAM_FIFO_DATA110 (110UL)
821 #define CAM_HISTOGRAM_FIFO_DATA111 (111UL)
822 #define CAM_HISTOGRAM_FIFO_DATA112 (112UL)
823 #define CAM_HISTOGRAM_FIFO_DATA113 (113UL)
824 #define CAM_HISTOGRAM_FIFO_DATA114 (114UL)
825 #define CAM_HISTOGRAM_FIFO_DATA115 (115UL)
826 #define CAM_HISTOGRAM_FIFO_DATA116 (116UL)
827 #define CAM_HISTOGRAM_FIFO_DATA117 (117UL)
828 #define CAM_HISTOGRAM_FIFO_DATA118 (118UL)
829 #define CAM_HISTOGRAM_FIFO_DATA119 (119UL)
830 #define CAM_HISTOGRAM_FIFO_DATA120 (120UL)
831 #define CAM_HISTOGRAM_FIFO_DATA121 (121UL)
832 #define CAM_HISTOGRAM_FIFO_DATA122 (122UL)
833 #define CAM_HISTOGRAM_FIFO_DATA123 (123UL)
834 #define CAM_HISTOGRAM_FIFO_DATA124 (124UL)
835 #define CAM_HISTOGRAM_FIFO_DATA125 (125UL)
836 #define CAM_HISTOGRAM_FIFO_DATA126 (126UL)
837 #define CAM_HISTOGRAM_FIFO_DATA127 (127UL)
838 #define CAM_HISTOGRAM_FIFO_DATA128 (128UL)
839 #define CAM_HISTOGRAM_FIFO_DATA129 (129UL)
840 #define CAM_HISTOGRAM_FIFO_DATA130 (130UL)
841 #define CAM_HISTOGRAM_FIFO_DATA131 (131UL)
842 #define CAM_HISTOGRAM_FIFO_DATA132 (132UL)
843 #define CAM_HISTOGRAM_FIFO_DATA133 (133UL)
844 #define CAM_HISTOGRAM_FIFO_DATA134 (134UL)
845 #define CAM_HISTOGRAM_FIFO_DATA135 (135UL)
846 #define CAM_HISTOGRAM_FIFO_DATA136 (136UL)
847 #define CAM_HISTOGRAM_FIFO_DATA137 (137UL)
848 #define CAM_HISTOGRAM_FIFO_DATA138 (138UL)
849 #define CAM_HISTOGRAM_FIFO_DATA139 (139UL)
850 #define CAM_HISTOGRAM_FIFO_DATA140 (140UL)
851 #define CAM_HISTOGRAM_FIFO_DATA141 (141UL)
852 #define CAM_HISTOGRAM_FIFO_DATA142 (142UL)
853 #define CAM_HISTOGRAM_FIFO_DATA143 (143UL)
854 #define CAM_HISTOGRAM_FIFO_DATA144 (144UL)
855 #define CAM_HISTOGRAM_FIFO_DATA145 (145UL)
856 #define CAM_HISTOGRAM_FIFO_DATA146 (146UL)
857 #define CAM_HISTOGRAM_FIFO_DATA147 (147UL)
858 #define CAM_HISTOGRAM_FIFO_DATA148 (148UL)
859 #define CAM_HISTOGRAM_FIFO_DATA149 (149UL)
860 #define CAM_HISTOGRAM_FIFO_DATA150 (150UL)
861 #define CAM_HISTOGRAM_FIFO_DATA151 (151UL)
862 #define CAM_HISTOGRAM_FIFO_DATA152 (152UL)
863 #define CAM_HISTOGRAM_FIFO_DATA153 (153UL)
864 #define CAM_HISTOGRAM_FIFO_DATA154 (154UL)
865 #define CAM_HISTOGRAM_FIFO_DATA155 (155UL)
866 #define CAM_HISTOGRAM_FIFO_DATA156 (156UL)
867 #define CAM_HISTOGRAM_FIFO_DATA157 (157UL)
868 #define CAM_HISTOGRAM_FIFO_DATA158 (158UL)
869 #define CAM_HISTOGRAM_FIFO_DATA159 (159UL)
870 #define CAM_HISTOGRAM_FIFO_DATA160 (160UL)
871 #define CAM_HISTOGRAM_FIFO_DATA161 (161UL)
872 #define CAM_HISTOGRAM_FIFO_DATA162 (162UL)
873 #define CAM_HISTOGRAM_FIFO_DATA163 (163UL)
874 #define CAM_HISTOGRAM_FIFO_DATA164 (164UL)
875 #define CAM_HISTOGRAM_FIFO_DATA165 (165UL)
876 #define CAM_HISTOGRAM_FIFO_DATA166 (166UL)
877 #define CAM_HISTOGRAM_FIFO_DATA167 (167UL)
878 #define CAM_HISTOGRAM_FIFO_DATA168 (168UL)
879 #define CAM_HISTOGRAM_FIFO_DATA169 (169UL)
880 #define CAM_HISTOGRAM_FIFO_DATA170 (170UL)
881 #define CAM_HISTOGRAM_FIFO_DATA171 (171UL)
882 #define CAM_HISTOGRAM_FIFO_DATA172 (172UL)
883 #define CAM_HISTOGRAM_FIFO_DATA173 (173UL)
884 #define CAM_HISTOGRAM_FIFO_DATA174 (174UL)
885 #define CAM_HISTOGRAM_FIFO_DATA175 (175UL)
886 #define CAM_HISTOGRAM_FIFO_DATA176 (176UL)
887 #define CAM_HISTOGRAM_FIFO_DATA177 (177UL)
888 #define CAM_HISTOGRAM_FIFO_DATA178 (178UL)
889 #define CAM_HISTOGRAM_FIFO_DATA179 (179UL)
890 #define CAM_HISTOGRAM_FIFO_DATA180 (180UL)
891 #define CAM_HISTOGRAM_FIFO_DATA181 (181UL)
892 #define CAM_HISTOGRAM_FIFO_DATA182 (182UL)
893 #define CAM_HISTOGRAM_FIFO_DATA183 (183UL)
894 #define CAM_HISTOGRAM_FIFO_DATA184 (184UL)
895 #define CAM_HISTOGRAM_FIFO_DATA185 (185UL)
896 #define CAM_HISTOGRAM_FIFO_DATA186 (186UL)
897 #define CAM_HISTOGRAM_FIFO_DATA187 (187UL)
898 #define CAM_HISTOGRAM_FIFO_DATA188 (188UL)
899 #define CAM_HISTOGRAM_FIFO_DATA189 (189UL)
900 #define CAM_HISTOGRAM_FIFO_DATA190 (190UL)
901 #define CAM_HISTOGRAM_FIFO_DATA191 (191UL)
902 #define CAM_HISTOGRAM_FIFO_DATA192 (192UL)
903 #define CAM_HISTOGRAM_FIFO_DATA193 (193UL)
904 #define CAM_HISTOGRAM_FIFO_DATA194 (194UL)
905 #define CAM_HISTOGRAM_FIFO_DATA195 (195UL)
906 #define CAM_HISTOGRAM_FIFO_DATA196 (196UL)
907 #define CAM_HISTOGRAM_FIFO_DATA197 (197UL)
908 #define CAM_HISTOGRAM_FIFO_DATA198 (198UL)
909 #define CAM_HISTOGRAM_FIFO_DATA199 (199UL)
910 #define CAM_HISTOGRAM_FIFO_DATA200 (200UL)
911 #define CAM_HISTOGRAM_FIFO_DATA201 (201UL)
912 #define CAM_HISTOGRAM_FIFO_DATA202 (202UL)
913 #define CAM_HISTOGRAM_FIFO_DATA203 (203UL)
914 #define CAM_HISTOGRAM_FIFO_DATA204 (204UL)
915 #define CAM_HISTOGRAM_FIFO_DATA205 (205UL)
916 #define CAM_HISTOGRAM_FIFO_DATA206 (206UL)
917 #define CAM_HISTOGRAM_FIFO_DATA207 (207UL)
918 #define CAM_HISTOGRAM_FIFO_DATA208 (208UL)
919 #define CAM_HISTOGRAM_FIFO_DATA209 (209UL)
920 #define CAM_HISTOGRAM_FIFO_DATA210 (210UL)
921 #define CAM_HISTOGRAM_FIFO_DATA211 (211UL)
922 #define CAM_HISTOGRAM_FIFO_DATA212 (212UL)
923 #define CAM_HISTOGRAM_FIFO_DATA213 (213UL)
924 #define CAM_HISTOGRAM_FIFO_DATA214 (214UL)
925 #define CAM_HISTOGRAM_FIFO_DATA215 (215UL)
926 #define CAM_HISTOGRAM_FIFO_DATA216 (216UL)
927 #define CAM_HISTOGRAM_FIFO_DATA217 (217UL)
928 #define CAM_HISTOGRAM_FIFO_DATA218 (218UL)
929 #define CAM_HISTOGRAM_FIFO_DATA219 (219UL)
930 #define CAM_HISTOGRAM_FIFO_DATA220 (220UL)
931 #define CAM_HISTOGRAM_FIFO_DATA221 (221UL)
932 #define CAM_HISTOGRAM_FIFO_DATA222 (222UL)
933 #define CAM_HISTOGRAM_FIFO_DATA223 (223UL)
934 #define CAM_HISTOGRAM_FIFO_DATA224 (224UL)
935 #define CAM_HISTOGRAM_FIFO_DATA225 (225UL)
936 #define CAM_HISTOGRAM_FIFO_DATA226 (226UL)
937 #define CAM_HISTOGRAM_FIFO_DATA227 (227UL)
938 #define CAM_HISTOGRAM_FIFO_DATA228 (228UL)
939 #define CAM_HISTOGRAM_FIFO_DATA229 (229UL)
940 #define CAM_HISTOGRAM_FIFO_DATA230 (230UL)
941 #define CAM_HISTOGRAM_FIFO_DATA231 (231UL)
942 #define CAM_HISTOGRAM_FIFO_DATA232 (232UL)
943 #define CAM_HISTOGRAM_FIFO_DATA233 (233UL)
944 #define CAM_HISTOGRAM_FIFO_DATA234 (234UL)
945 #define CAM_HISTOGRAM_FIFO_DATA235 (235UL)
946 #define CAM_HISTOGRAM_FIFO_DATA236 (236UL)
947 #define CAM_HISTOGRAM_FIFO_DATA237 (237UL)
948 #define CAM_HISTOGRAM_FIFO_DATA238 (238UL)
949 #define CAM_HISTOGRAM_FIFO_DATA239 (239UL)
950 #define CAM_HISTOGRAM_FIFO_DATA240 (240UL)
951 #define CAM_HISTOGRAM_FIFO_DATA241 (241UL)
952 #define CAM_HISTOGRAM_FIFO_DATA242 (242UL)
953 #define CAM_HISTOGRAM_FIFO_DATA243 (243UL)
954 #define CAM_HISTOGRAM_FIFO_DATA244 (244UL)
955 #define CAM_HISTOGRAM_FIFO_DATA245 (245UL)
956 #define CAM_HISTOGRAM_FIFO_DATA246 (246UL)
957 #define CAM_HISTOGRAM_FIFO_DATA247 (247UL)
958 #define CAM_HISTOGRAM_FIFO_DATA248 (248UL)
959 #define CAM_HISTOGRAM_FIFO_DATA249 (249UL)
960 #define CAM_HISTOGRAM_FIFO_DATA250 (250UL)
961 #define CAM_HISTOGRAM_FIFO_DATA251 (251UL)
962 #define CAM_HISTOGRAM_FIFO_DATA252 (252UL)
963 #define CAM_HISTOGRAM_FIFO_DATA253 (253UL)
964 #define CAM_HISTOGRAM_FIFO_DATA254 (254UL)
965 #define CAM_HISTOGRAM_FIFO_DATA255 (255UL)
966 
967 
968 #endif /* HPM_CAM_H */
Definition: hpm_cam_regs.h:12