History

[media] media: platform: add VPFE capture driver support for AM437X

This patch adds Video Processing Front End (VPFE) driver for AM437X family of devices Driver supports the following: - V4L2 API using MMAP buffer access based on videobuf2 api - Asynchronous sensor/decoder sub device registration - DT support Signed-off-by: Benoit Parrot <bparrot@ti.com> Signed-off-by: Darren Etheridge <detheridge@ti.com> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> [hans.verkuil@cisco.com: swapped two lines to fix vpfe_release() & add pinctrl include] Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>

Benoit Parrot committed 11 years ago

Commit 417d2e51 parent 3b1635e11 files · +3411 −0Browse files

Showing the changes to include/uapi/linux (2 of 11 files). Show all

Unified · Split

2 files
  1. include/uapi/linux/Kbuild +1 −0
  2. include/uapi/linux/am437x-vpfe.h +122 −0
include/uapi/linux/Kbuild+1−0
@@ -35,6 +35,7 @@ header-y += adfs_fs.h · 34 unmodified lines
3535 header-y += affs_hardblocks.h
3636 header-y += agpgart.h
3737 header-y += aio_abi.h
38+header-y += am437x-vpfe.h
3839 header-y += apm_bios.h
3940 header-y += arcfb.h
4041 header-y += atalk.h
include/uapi/linux/am437x-vpfe.h+122−0
@@ -0,0 +1,122 @@
1+/*
2+ * Copyright (C) 2013 - 2014 Texas Instruments, Inc.
3+ *
4+ * Benoit Parrot <bparrot@ti.com>
5+ * Lad, Prabhakar <prabhakar.csengg@gmail.com>
6+ *
7+ * This program is free software; you may redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; version 2 of the License.
10+ *
11+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
12+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
14+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
15+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
16+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
17+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18+ * SOFTWARE.
19+ */
20+
21+#ifndef AM437X_VPFE_USER_H
22+#define AM437X_VPFE_USER_H
23+
24+enum vpfe_ccdc_data_size {
25+ VPFE_CCDC_DATA_16BITS = 0,
26+ VPFE_CCDC_DATA_15BITS,
27+ VPFE_CCDC_DATA_14BITS,
28+ VPFE_CCDC_DATA_13BITS,
29+ VPFE_CCDC_DATA_12BITS,
30+ VPFE_CCDC_DATA_11BITS,
31+ VPFE_CCDC_DATA_10BITS,
32+ VPFE_CCDC_DATA_8BITS,
33+};
34+
35+/* enum for No of pixel per line to be avg. in Black Clamping*/
36+enum vpfe_ccdc_sample_length {
37+ VPFE_CCDC_SAMPLE_1PIXELS = 0,
38+ VPFE_CCDC_SAMPLE_2PIXELS,
39+ VPFE_CCDC_SAMPLE_4PIXELS,
40+ VPFE_CCDC_SAMPLE_8PIXELS,
41+ VPFE_CCDC_SAMPLE_16PIXELS,
42+};
43+
44+/* enum for No of lines in Black Clamping */
45+enum vpfe_ccdc_sample_line {
46+ VPFE_CCDC_SAMPLE_1LINES = 0,
47+ VPFE_CCDC_SAMPLE_2LINES,
48+ VPFE_CCDC_SAMPLE_4LINES,
49+ VPFE_CCDC_SAMPLE_8LINES,
50+ VPFE_CCDC_SAMPLE_16LINES,
51+};
52+
53+/* enum for Alaw gamma width */
54+enum vpfe_ccdc_gamma_width {
55+ VPFE_CCDC_GAMMA_BITS_15_6 = 0, /* use bits 15-6 for gamma */
56+ VPFE_CCDC_GAMMA_BITS_14_5,
57+ VPFE_CCDC_GAMMA_BITS_13_4,
58+ VPFE_CCDC_GAMMA_BITS_12_3,
59+ VPFE_CCDC_GAMMA_BITS_11_2,
60+ VPFE_CCDC_GAMMA_BITS_10_1,
61+ VPFE_CCDC_GAMMA_BITS_09_0, /* use bits 9-0 for gamma */
62+};
63+
64+/* structure for ALaw */
65+struct vpfe_ccdc_a_law {
66+ /* Enable/disable A-Law */
67+ unsigned char enable;
68+ /* Gamma Width Input */
69+ enum vpfe_ccdc_gamma_width gamma_wd;
70+};
71+
72+/* structure for Black Clamping */
73+struct vpfe_ccdc_black_clamp {
74+ unsigned char enable;
75+ /* only if bClampEnable is TRUE */
76+ enum vpfe_ccdc_sample_length sample_pixel;
77+ /* only if bClampEnable is TRUE */
78+ enum vpfe_ccdc_sample_line sample_ln;
79+ /* only if bClampEnable is TRUE */
80+ unsigned short start_pixel;
81+ /* only if bClampEnable is TRUE */
82+ unsigned short sgain;
83+ /* only if bClampEnable is FALSE */
84+ unsigned short dc_sub;
85+};
86+
87+/* structure for Black Level Compensation */
88+struct vpfe_ccdc_black_compensation {
89+ /* Constant value to subtract from Red component */
90+ char r;
91+ /* Constant value to subtract from Gr component */
92+ char gr;
93+ /* Constant value to subtract from Blue component */
94+ char b;
95+ /* Constant value to subtract from Gb component */
96+ char gb;
97+};
98+
99+/* Structure for CCDC configuration parameters for raw capture mode passed
100+ * by application
101+ */
102+struct vpfe_ccdc_config_params_raw {
103+ /* data size value from 8 to 16 bits */
104+ enum vpfe_ccdc_data_size data_sz;
105+ /* Structure for Optional A-Law */
106+ struct vpfe_ccdc_a_law alaw;
107+ /* Structure for Optical Black Clamp */
108+ struct vpfe_ccdc_black_clamp blk_clamp;
109+ /* Structure for Black Compensation */
110+ struct vpfe_ccdc_black_compensation blk_comp;
111+};
112+
113+/*
114+ * Private IOCTL
115+ * VIDIOC_AM437X_CCDC_CFG - Set CCDC configuration for raw capture
116+ * This is an experimental ioctl that will change in future kernels. So use
117+ * this ioctl with care !
118+ **/
119+#define VIDIOC_AM437X_CCDC_CFG \
120+ _IOW('V', BASE_VIDIOC_PRIVATE + 1, void *)
121+
122+#endif /* AM437X_VPFE_USER_H */