]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A5_SAMA5D2x_Xplained_IAR/AtmelFiles/drivers/peripherals/isc.h
Add SAMA5D2 Xplained IAR demo.
[freertos] / FreeRTOS / Demo / CORTEX_A5_SAMA5D2x_Xplained_IAR / AtmelFiles / drivers / peripherals / isc.h
1 /* ----------------------------------------------------------------------------\r
2  *         SAM Software Package License\r
3  * ----------------------------------------------------------------------------\r
4  * Copyright (c) 2013, Atmel Corporation\r
5  *\r
6  * All rights reserved.\r
7  *\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
10  *\r
11  * - Redistributions of source code must retain the above copyright notice,\r
12  * this list of conditions and the disclaimer below.\r
13  *\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
16  *\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
28  */\r
29 \r
30 /** \file */\r
31 \r
32 /** \addtogroup isc_module\r
33  * @{\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
37  */\r
38 /**@}*/\r
39 \r
40 #ifndef ISC_H\r
41 #define ISC_H\r
42 \r
43 #include <stdint.h>\r
44 \r
45 /*------------------------------------------------------------------------------\r
46  *         Type\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
51         uint16_t rOffset;\r
52         /** Green Component Offset (signed 13 bits, 1:12:0)*/\r
53         uint16_t gOffset;\r
54         /** Green Component Offset (signed 13 bits, 1:12:0)*/\r
55         uint16_t bOffset;\r
56         /** Red Gain for Red Component (signed 12 bits, 1:3:8)*/\r
57         uint16_t rrGain;\r
58         /** Green Component (Red row) Gain (unsigned 13 bits, 0:4:9)*/\r
59         uint16_t rgGain;\r
60         /** Blue Gain for Red Component (signed 12 bits, 1:3:8)*/\r
61         uint16_t rbGain;\r
62         /** Green Gain for Green Component (signed 12 bits, 1:3:8)*/\r
63         uint16_t ggGain;\r
64         /** Red Gain for Green Component (signed 12 bits, 1:3:8)*/\r
65         uint16_t grGain;\r
66         /** Blue Gain for Green Component (signed 12 bits, 1:3:8)*/\r
67         uint16_t gbGain;\r
68         /** Green Gain for Blue Component (signed 12 bits, 1:3:8) */\r
69         uint16_t bgGain;\r
70         /** Red Gain for Blue Component (signed 12 bits, 1:3:8) */\r
71         uint16_t brGain;\r
72         /** Blue Gain for Blue Component (signed 12 bits, 1:3:8)*/\r
73         uint16_t bbGain;\r
74 };\r
75 \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
79         uint16_t YrGain;\r
80         /** Green Gain for Luminance (signed 12 bits 1:3:8)*/\r
81         uint16_t YgGain;\r
82         /** Blue Gain for Luminance Component (12 bits signed 1:3:8)*/\r
83         uint16_t YbGain;\r
84         /** Luminance Offset (11 bits signed 1:10:0)*/\r
85         uint16_t Yoffset;\r
86         /** Green Gain for Blue Chrominance (signed 12 bits 1:3:8)*/\r
87         uint16_t cbrGain;\r
88         /** Red Gain for Blue Chrominance (signed 12 bits, 1:3:8)*/\r
89         uint16_t cbgGain;\r
90         /** Blue Gain for Blue Chrominance (signed 12 bits 1:3:8)*/\r
91         uint16_t cbbGain;\r
92         /** Blue Chrominance Offset (signed 11 bits 1:10:0)*/\r
93         uint16_t cbOffset;\r
94         /** Red Gain for Red Chrominance (signed 12 bits 1:3:8)*/\r
95         uint16_t crrGain;\r
96         /** Green Gain for Red Chrominance (signed 12 bits 1:3:8)*/\r
97         uint16_t crgGain;\r
98         /** Blue Gain for Red Chrominance (signed 12 bits 1:3:8)*/\r
99         uint16_t crbGain;\r
100         /** Red Chrominance Offset (signed 11 bits 1:10:0)*/\r
101         uint16_t crOffset;\r
102 };\r
103 \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
107 {\r
108         /** ISC DMA Control. */\r
109         uint32_t ctrl;\r
110         /** Next ISC DMA Descriptor Address number. */\r
111         uint32_t next_desc;\r
112         /** Transfer Address. */\r
113         uint32_t addr;\r
114         /** stride . */\r
115         uint32_t stride;\r
116 };\r
117 \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
121 {\r
122         /** ISC DMA Control. */\r
123         uint32_t ctrl;\r
124         /** Next ISC DMA Descriptor Address number. */\r
125         uint32_t next_desc;\r
126         /** Transfer Address 0. */\r
127         uint32_t addr0;\r
128         /** stride 0 . */\r
129         uint32_t stride0;\r
130         /** Transfer Address 1. */\r
131         uint32_t addr1;\r
132         /** stride 1 . */\r
133         uint32_t stride1;\r
134 \r
135 };\r
136 \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
140 {\r
141         /** ISC DMA Control. */\r
142         uint32_t ctrl;\r
143         /** Next ISC DMA Descriptor Address number. */\r
144         uint32_t next_desc;\r
145         /** Transfer Address 0. */\r
146         uint32_t addr0;\r
147         /** stride 0. */\r
148         uint32_t stride0;\r
149         /** Transfer Address 1. */\r
150         uint32_t addr1;\r
151         /** stride 1 . */\r
152         uint32_t stride1;\r
153         /** Transfer Address 2. */\r
154         uint32_t addr2;\r
155         /** stride 2. */\r
156         uint32_t stride2;\r
157 };\r
158 \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
170 \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
185 \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
200 \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
207 \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
217 \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
223 \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
229 \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
237 \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
243 \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
250 \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
256                                  uint8_t lpf);\r
257 extern void isc_sub420_configure(uint8_t enabled, uint8_t filter);\r
258 \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
263 \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
269                                     uint8_t reset);\r
270 extern void isc_update_histogram_table(void);\r
271 extern void isc_clear_histogram_table(void);\r
272 \r
273 /*------------------------------------------\r
274  *         DMA functions\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
280 \r
281 #endif //#ifndef ISC_H\r