1 /* ----------------------------------------------------------------------------
\r
2 * SAM Software Package License
\r
3 * ----------------------------------------------------------------------------
\r
4 * Copyright (c) 2013, Atmel Corporation
\r
6 * All rights reserved.
\r
8 * Redistribution and use in source and binary forms, with or without
\r
9 * modification, are permitted provided that the following conditions are met:
\r
11 * - Redistributions of source code must retain the above copyright notice,
\r
12 * this list of conditions and the disclaimer below.
\r
14 * Atmel's name may not be used to endorse or promote products derived from
\r
15 * this software without specific prior written permission.
\r
17 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
\r
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
\r
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
\r
20 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
\r
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
\r
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
\r
23 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
\r
24 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
\r
25 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
\r
26 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\r
27 * ----------------------------------------------------------------------------
\r
32 /** \addtogroup isc_module
\r
34 * \section isc_usage Usage
\r
35 * - isc_start_capture: Send Capture Input Stream Command to start a single
\r
36 * shot capture or a multiple frame
\r
45 /*------------------------------------------------------------------------------
\r
47 *----------------------------------------------------------------------------*/
\r
48 /** color correction components structure */
\r
49 struct _color_correct {
\r
50 /** Red Component Offset (signed 13 bits, 1:12:0) */
\r
52 /** Green Component Offset (signed 13 bits, 1:12:0)*/
\r
54 /** Green Component Offset (signed 13 bits, 1:12:0)*/
\r
56 /** Red Gain for Red Component (signed 12 bits, 1:3:8)*/
\r
58 /** Green Component (Red row) Gain (unsigned 13 bits, 0:4:9)*/
\r
60 /** Blue Gain for Red Component (signed 12 bits, 1:3:8)*/
\r
62 /** Green Gain for Green Component (signed 12 bits, 1:3:8)*/
\r
64 /** Red Gain for Green Component (signed 12 bits, 1:3:8)*/
\r
66 /** Blue Gain for Green Component (signed 12 bits, 1:3:8)*/
\r
68 /** Green Gain for Blue Component (signed 12 bits, 1:3:8) */
\r
70 /** Red Gain for Blue Component (signed 12 bits, 1:3:8) */
\r
72 /** Blue Gain for Blue Component (signed 12 bits, 1:3:8)*/
\r
76 /** color space convertion components structure */
\r
77 struct _color_space {
\r
78 /** Red Gain for Luminance (signed 12 bits 1:3:8) */
\r
80 /** Green Gain for Luminance (signed 12 bits 1:3:8)*/
\r
82 /** Blue Gain for Luminance Component (12 bits signed 1:3:8)*/
\r
84 /** Luminance Offset (11 bits signed 1:10:0)*/
\r
86 /** Green Gain for Blue Chrominance (signed 12 bits 1:3:8)*/
\r
88 /** Red Gain for Blue Chrominance (signed 12 bits, 1:3:8)*/
\r
90 /** Blue Gain for Blue Chrominance (signed 12 bits 1:3:8)*/
\r
92 /** Blue Chrominance Offset (signed 11 bits 1:10:0)*/
\r
94 /** Red Gain for Red Chrominance (signed 12 bits 1:3:8)*/
\r
96 /** Green Gain for Red Chrominance (signed 12 bits 1:3:8)*/
\r
98 /** Blue Gain for Red Chrominance (signed 12 bits 1:3:8)*/
\r
100 /** Red Chrominance Offset (signed 11 bits 1:10:0)*/
\r
104 /** \brief Structure for ISC DMA descriptor view0 that can be
\r
105 * performed when the pixel or data stream is packed.*/
\r
106 struct _isc_dma_view0
\r
108 /** ISC DMA Control. */
\r
110 /** Next ISC DMA Descriptor Address number. */
\r
111 uint32_t next_desc;
\r
112 /** Transfer Address. */
\r
118 /** \brief Structure for ISC DMA descriptor view1 that can be
\r
119 * performed for YCbCr semi-planar pixel stream.*/
\r
120 struct _isc_dma_view1
\r
122 /** ISC DMA Control. */
\r
124 /** Next ISC DMA Descriptor Address number. */
\r
125 uint32_t next_desc;
\r
126 /** Transfer Address 0. */
\r
130 /** Transfer Address 1. */
\r
137 /** \brief Structure for ISC DMA descriptor view2 that can be
\r
138 * performed for used for YCbCr planar pixel stream.*/
\r
139 struct _isc_dma_view2
\r
141 /** ISC DMA Control. */
\r
143 /** Next ISC DMA Descriptor Address number. */
\r
144 uint32_t next_desc;
\r
145 /** Transfer Address 0. */
\r
149 /** Transfer Address 1. */
\r
153 /** Transfer Address 2. */
\r
159 /*------------------------------------------------------------------------------
\r
160 * Exported functions
\r
161 *----------------------------------------------------------------------------*/
\r
162 /*------------------------------------------
\r
163 * ISC Control functions
\r
164 *----------------------------------------*/
\r
165 extern void isc_start_capture(void);
\r
166 extern void isc_stop_capture(void);
\r
167 extern uint32_t isc_get_ctrl_status(void);
\r
168 extern void isc_update_profile(void);
\r
169 extern void isc_software_reset(void);
\r
171 /*------------------------------------------
\r
172 * PFE(Parallel Front End) functions
\r
173 *----------------------------------------*/
\r
174 extern void isc_pfe_set_video_mode(uint32_t vmode);
\r
175 extern void isc_pfe_set_sync_polarity(uint32_t hpol, uint32_t vpol);
\r
176 extern void isc_pfe_set_pixel_polarity(uint32_t ppol);
\r
177 extern void isc_pfe_set_field_polarity(uint32_t fpol);
\r
178 extern void isc_pfe_set_gated_clock(uint8_t en);
\r
179 extern void isc_pfe_set_cropping_enabled(uint8_t enCol, uint8_t enRow);
\r
180 extern void isc_pfe_set_bps(uint32_t bps);
\r
181 extern void isc_pfe_set_single_shot(void);
\r
182 extern void isc_pfe_set_continuous_shot(void);
\r
183 extern void isc_pfe_set_cropping_area(uint32_t Hstart, uint32_t Hend,
\r
184 uint32_t Vstart, uint32_t Vend);
\r
186 /*------------------------------------------
\r
187 * Clock configuration functions
\r
188 *----------------------------------------*/
\r
189 extern void isc_configure_isp_clock(uint32_t isp_clk_div,
\r
190 uint32_t isp_clk_sel);
\r
191 extern void isc_enable_isp_clock(void);
\r
192 extern void isc_disable_isp_clock(void);
\r
193 extern void isc_reset_isp_clock(void);
\r
194 extern void isc_configure_master_clock(uint32_t master_clk_div,
\r
195 uint32_t master_clk_sel);
\r
196 extern void isc_enable_master_clock(void);
\r
197 extern void isc_disable_master_clock(void);
\r
198 extern void isc_reset_master_clock(void);
\r
199 extern uint32_t isc_get_clock_status(void);
\r
201 /*------------------------------------------
\r
202 * Interrupt functions
\r
203 *----------------------------------------*/
\r
204 extern void isc_enable_interrupt(uint32_t flag);
\r
205 extern void isc_disable_interrupt(uint32_t flag);
\r
206 extern uint32_t isc_interrupt_status(void);
\r
208 /*------------------------------------------
\r
209 * White Balance functions
\r
210 *----------------------------------------*/
\r
211 extern void isc_wb_enabled(uint8_t enabled);
\r
212 extern void isc_wb_set_bayer_pattern(uint8_t pattern);
\r
213 extern void isc_wb_adjust_bayer_color(uint32_t rOffset, uint32_t grOffset,
\r
214 uint32_t bOffset, uint32_t gbOffset,
\r
215 uint32_t rGain, uint32_t grGain,
\r
216 uint32_t bGain, uint32_t gbGain);
\r
218 /*------------------------------------------
\r
219 * Color Filter Array functions
\r
220 *----------------------------------------*/
\r
221 extern void isc_cfa_enabled(uint8_t enabled);
\r
222 extern void isc_cfa_configure(uint8_t pattern, uint8_t edge);
\r
224 /*------------------------------------------
\r
225 * Color Correction functions
\r
226 *----------------------------------------*/
\r
227 extern void isc_cc_enabled(uint8_t enabled);
\r
228 extern void isc_cc_configure(struct _color_correct* cc);
\r
230 /*------------------------------------------
\r
231 * Gamma Correction functions
\r
232 *----------------------------------------*/
\r
233 extern void isc_gamma_enabled(uint8_t enabled, uint8_t channels);
\r
234 extern void isc_gamma_configure(uint16_t* rGamConstant, uint16_t* rGamSlope,
\r
235 uint16_t* gGamConstant, uint16_t* gGamSlope,
\r
236 uint16_t* bGamConstant, uint16_t* bGamSlope);
\r
238 /*------------------------------------------
\r
239 * Color Space Conversion functions
\r
240 *----------------------------------------*/
\r
241 extern void isc_csc_enabled(uint8_t enabled);
\r
242 extern void isc_csc_configure(struct _color_space* cs);
\r
244 /*------------------------------------------
\r
245 * Contrast And Brightness functions
\r
246 *----------------------------------------*/
\r
247 extern void isc_cbc_enabled(uint8_t enabled);
\r
248 extern void isc_cbc_configure(uint8_t ccir656, uint8_t byteOrder,
\r
249 uint16_t brightness, uint16_t contrast);
\r
251 /*------------------------------------------
\r
252 * Sub-sampling functions
\r
253 *----------------------------------------*/
\r
254 extern void isc_sub422_enabled(uint8_t enabled);
\r
255 extern void isc_sub422_configure(uint8_t ccir656, uint8_t byte_order,
\r
257 extern void isc_sub420_configure(uint8_t enabled, uint8_t filter);
\r
259 /*------------------------------------------
\r
260 * Rounding, Limiting and Packing functions
\r
261 *----------------------------------------*/
\r
262 extern void isc_rlp_configure(uint8_t rlpMode, uint8_t alpha);
\r
264 /*------------------------------------------
\r
265 * Histogram functions
\r
266 *----------------------------------------*/
\r
267 extern void isc_histogram_enabled(uint8_t enabled);
\r
268 extern void isc_histogram_configure(uint8_t mode, uint8_t bay_sel,
\r
270 extern void isc_update_histogram_table(void);
\r
271 extern void isc_clear_histogram_table(void);
\r
273 /*------------------------------------------
\r
275 *----------------------------------------*/
\r
276 extern void isc_dma_configure_input_mode(uint32_t mode);
\r
277 extern void isc_dma_configure_desc_entry(uint32_t desc_entry);
\r
278 extern void isc_dma_enable(uint32_t ctrl);
\r
279 extern void isc_dma_adderss(uint8_t channel, uint32_t address, uint32_t stride);
\r
281 #endif //#ifndef ISC_H
\r