video: tegra: dtv: Move swizzling into ioctl
[linux-3.10.git] / include / media / ar0261.h
1 /**
2  * Copyright (c) 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 __AR0261_H__
12 #define __AR0261_H__
13
14 #include <linux/ioctl.h>  /* For IOCTL macros */
15
16 #define AR0261_IOCTL_SET_MODE           _IOW('o', 1, struct ar0261_mode)
17 #define AR0261_IOCTL_GET_STATUS         _IOR('o', 2, __u8)
18 #define AR0261_IOCTL_SET_FRAME_LENGTH   _IOW('o', 3, __u32)
19 #define AR0261_IOCTL_SET_COARSE_TIME    _IOW('o', 4, __u32)
20 #define AR0261_IOCTL_SET_GAIN           _IOW('o', 5, __u16)
21 #define AR0261_IOCTL_GET_SENSORDATA _IOR('o', 6, struct ar0261_sensordata)
22 #define AR0261_IOCTL_SET_GROUP_HOLD     _IOW('o', 7, struct ar0261_ae)
23
24 /* AR0261 registers */
25 #define AR0261_GROUP_PARAM_HOLD                 (0x0104)
26 #define AR0261_COARSE_INTEGRATION_TIME_15_8     (0x0202)
27 #define AR0261_COARSE_INTEGRATION_TIME_7_0      (0x0203)
28 #define AR0261_ANA_GAIN_GLOBAL                  (0x305F)
29 #define AR0261_FRAME_LEN_LINES_15_8             (0x0340)
30 #define AR0261_FRAME_LEN_LINES_7_0              (0x0341)
31
32 #define NUM_OF_FRAME_LEN_REG            2
33 #define NUM_OF_COARSE_TIME_REG          2
34 #define NUM_OF_SENSOR_ID_SPECIFIC_REG   8
35 struct ar0261_mode {
36         int xres;
37         int yres;
38         __u32 frame_length;
39         __u32 coarse_time;
40         __u16 gain;
41 };
42
43 struct ar0261_ae {
44         __u32 frame_length;
45         __u8  frame_length_enable;
46         __u32 coarse_time;
47         __u8  coarse_time_enable;
48         __s32 gain;
49         __u8  gain_enable;
50 };
51
52 struct ar0261_sensordata {
53         __u32 fuse_id_size;
54         __u16 fuse_id[16];
55 };
56
57 #ifdef __KERNEL__
58 struct ar0261_power_rail {
59         struct regulator *dvdd;
60         struct regulator *avdd;
61         struct regulator *iovdd;
62 };
63
64 struct ar0261_platform_data {
65         const char *mclk_name; /* NULL for default default_mclk */
66         int (*power_on)(struct ar0261_power_rail *pw);
67         int (*power_off)(struct ar0261_power_rail *pw);
68 };
69 #endif /* __KERNEL__ */
70
71 #endif  /* __AR0261_H__ */