/
mt9t013.h
141 lines (108 loc) · 4.12 KB
/
mt9t013.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
* Copyright (C) 2007-2008 HTC Corporation.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef CAMERA_MT9T013_H
#define CAMERA_MT9T013_H
#include <linux/cdev.h>
#include <linux/types.h>
#include <linux/ioctl.h>
#include <asm/sizes.h>
/*************************************************************
* IOCTL define
*************************************************************/
#define MT9T013_I2C_IOCTL_MAGIC 'm'
#define MT9T013_I2C_IOCTL_W \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 0, unsigned)
#define MT9T013_I2C_IOCTL_R \
_IOR(MT9T013_I2C_IOCTL_MAGIC, 1, unsigned)
#define MT9T013_I2C_IOCTL_AF_W \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 2, unsigned)
#define MT9T013_I2C_IOCTL_CAMIF_PAD_REG_RESET \
_IO(MT9T013_I2C_IOCTL_MAGIC, 3)
#define MT9T013_I2C_IOCTL_CAMIF_PAD_REG_RESET_2 \
_IO(MT9T013_I2C_IOCTL_MAGIC, 4)
#define CAMERA_CONFIGURE_GPIOS \
_IO(MT9T013_I2C_IOCTL_MAGIC, 7)
#define CAMERA_UNCONFIGURE_GPIOS \
_IO(MT9T013_I2C_IOCTL_MAGIC, 8)
#define CAMERA_LENS_POWER_ON \
_IO(MT9T013_I2C_IOCTL_MAGIC, 9)
#define CAMERA_LENS_POWER_OFF \
_IO(MT9T013_I2C_IOCTL_MAGIC, 10)
#define MT9T013_I2C_IOCTL_CAMIF_APPS_RESET \
_IO(MT9T013_I2C_IOCTL_MAGIC, 11)
/* Replacement ioctls() for the clkrgm_sec RPCs. */
#define CAMIO_VFE_MDC_CLK 1 /* enable, disable */
#define CAMIO_MDC_CLK 2 /* enable, disable */
#define CAMIO_VFE_CLK 3 /* clk_select, freq_prog */
#define MT9T013_I2C_IOCTL_CLK_ENABLE \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 12, unsigned)
#define MT9T013_I2C_IOCTL_CLK_DISABLE \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 13, unsigned)
#define MT9T013_I2C_IOCTL_CLK_SELECT \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 14, unsigned)
#define MT9T013_I2C_IOCTL_CLK_FREQ_PROG \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 15, unsigned)
#define CAMSENSOR_REG_INIT 0<<0
#define CAMSENSOR_REG_UPDATE_PERIODIC 1<<0
#define CAMSENSOR_TYPE_PREVIEW 0<<1
#define CAMSENSOR_TYPE_SNAPSHOT 1<<1
#define MT9T013_I2C_IOCTL_SENSOR_SETTING \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 16, uint32_t)
struct mt9t013_reg_struct
{
uint16_t vt_pix_clk_div; /* 0x0300 */
uint16_t vt_sys_clk_div; /* 0x0302 */
uint16_t pre_pll_clk_div; /* 0x0304 */
uint16_t pll_multiplier; /* 0x0306 */
uint16_t op_pix_clk_div; /* 0x0308 */
uint16_t op_sys_clk_div; /* 0x030A */
uint16_t scale_m; /* 0x0404 */
uint16_t row_speed; /* 0x3016 */
uint16_t x_addr_start; /* 0x3004 */
uint16_t x_addr_end; /* 0x3008 */
uint16_t y_addr_start; /* 0x3002 */
uint16_t y_addr_end; /* 0x3006 */
uint16_t read_mode; /* 0x3040 */
uint16_t x_output_size ; /* 0x034C */
uint16_t y_output_size; /* 0x034E */
uint16_t line_length_pck; /* 0x300C */
uint16_t frame_length_lines; /* 0x300A */
uint16_t coarse_integration_time; /* 0x3012 */
uint16_t fine_integration_time; /* 0x3014 */
};
struct mt9t013_reg_pat {
struct mt9t013_reg_struct reg[2];
};
#define MT9T013_I2C_IOCTL_GET_REGISTERS \
_IOR(MT9T013_I2C_IOCTL_MAGIC, 17, struct mt9t013_reg_pat *)
struct mt9t013_exposure_gain {
uint16_t gain;
uint16_t line;
uint32_t mode;
};
#define MT9T013_I2C_IOCTL_EXPOSURE_GAIN \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 18, struct exposure_gain *)
#define MT9T013_I2C_IOCTL_MOVE_FOCUS \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 19, uint32_t)
#define MT9T013_I2C_IOCTL_SET_DEFAULT_FOCUS \
_IOW(MT9T013_I2C_IOCTL_MAGIC, 20, uint32_t)
#define MT9T013_I2C_IOCTL_POWER_DOWN \
_IO(MT9T013_I2C_IOCTL_MAGIC, 21)
struct mt9t013_init {
int preview; /* in: 1 for preview, 0 for capture */
uint16_t chipid; /* out: chip id */
};
#define MT9T013_I2C_IOCTL_INIT \
_IOWR(MT9T013_I2C_IOCTL_MAGIC, 22, struct mt9t013_init *)
#endif