video: tegra: dtv: Move swizzling into ioctl
[linux-3.10.git] / include / media / imx132.h
1 /**
2  * Copyright (c) 2012-2013 NVIDIA Corporation.  All rights reserved.
3  *
4  * NVIDIA Corporation and its licensors retain all intellectual property
5  * and proprietary rights in and to this software and related documentation
6  * and any modifications thereto.  Any use, reproduction, disclosure or
7  * distribution of this software and related documentation without an express
8  * license agreement from NVIDIA Corporation is strictly prohibited.
9  */
10
11 #ifndef __IMX132_H__
12 #define __IMX132_H__
13
14 #include <linux/ioctl.h>  /* For IOCTL macros */
15
16 #define IMX132_IOCTL_SET_MODE           _IOW('o', 1, struct imx132_mode)
17 #define IMX132_IOCTL_GET_STATUS         _IOR('o', 2, __u8)
18 #define IMX132_IOCTL_SET_FRAME_LENGTH   _IOW('o', 3, __u32)
19 #define IMX132_IOCTL_SET_COARSE_TIME    _IOW('o', 4, __u32)
20 #define IMX132_IOCTL_SET_GAIN           _IOW('o', 5, __u16)
21 #define IMX132_IOCTL_GET_FUSEID         _IOR('o', 6, struct nvc_fuseid)
22 #define IMX132_IOCTL_SET_GROUP_HOLD     _IOW('o', 7, struct imx132_ae)
23
24 /* IMX132 registers */
25 #define IMX132_GROUP_PARAM_HOLD                 (0x0104)
26 #define IMX132_COARSE_INTEGRATION_TIME_15_8     (0x0202)
27 #define IMX132_COARSE_INTEGRATION_TIME_7_0      (0x0203)
28 #define IMX132_ANA_GAIN_GLOBAL                  (0x0205)
29 #define IMX132_FRAME_LEN_LINES_15_8             (0x0340)
30 #define IMX132_FRAME_LEN_LINES_7_0              (0x0341)
31
32 #define NUM_OF_FRAME_LEN_REG            2
33 #define NUM_OF_COARSE_TIME_REG          2
34 struct imx132_mode {
35         int xres;
36         int yres;
37         __u32 frame_length;
38         __u32 coarse_time;
39         __u16 gain;
40 };
41
42 struct imx132_ae {
43         __u32 frame_length;
44         __u8  frame_length_enable;
45         __u32 coarse_time;
46         __u8  coarse_time_enable;
47         __s32 gain;
48         __u8  gain_enable;
49 };
50
51 #ifdef __KERNEL__
52 struct imx132_power_rail {
53         struct regulator *dvdd;
54         struct regulator *avdd;
55         struct regulator *iovdd;
56 };
57
58 struct imx132_platform_data {
59         unsigned int cam2_gpio;
60         bool ext_reg;
61         const char *mclk_name; /* NULL for default */
62         struct edp_client edpc_config;
63         int (*power_on)(struct imx132_power_rail *pw);
64         int (*power_off)(struct imx132_power_rail *pw);
65 };
66 #endif /* __KERNEL__ */
67
68 #endif  /* __IMX132_H__ */