Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / media / davinci_vpfe / vpfe.h
1 /*
2  * Copyright (C) 2012 Texas Instruments Inc
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation version 2.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16  *
17  * Contributors:
18  *      Manjunath Hadli <manjunath.hadli@ti.com>
19  *      Prabhakar Lad <prabhakar.lad@ti.com>
20  */
21
22 #ifndef _VPFE_H
23 #define _VPFE_H
24
25 #ifdef __KERNEL__
26 #include <linux/v4l2-subdev.h>
27 #include <linux/clk.h>
28 #include <linux/i2c.h>
29
30 #include <media/davinci/vpfe_types.h>
31
32 #define CAPTURE_DRV_NAME        "vpfe-capture"
33
34 struct vpfe_route {
35         __u32 input;
36         __u32 output;
37 };
38
39 enum vpfe_subdev_id {
40         VPFE_SUBDEV_TVP5146 = 1,
41         VPFE_SUBDEV_MT9T031 = 2,
42         VPFE_SUBDEV_TVP7002 = 3,
43         VPFE_SUBDEV_MT9P031 = 4,
44 };
45
46 struct vpfe_ext_subdev_info {
47         /* v4l2 subdev */
48         struct v4l2_subdev *subdev;
49         /* Sub device module name */
50         char module_name[32];
51         /* Sub device group id */
52         int grp_id;
53         /* Number of inputs supported */
54         int num_inputs;
55         /* inputs available at the sub device */
56         struct v4l2_input *inputs;
57         /* Sub dev routing information for each input */
58         struct vpfe_route *routes;
59         /* ccdc bus/interface configuration */
60         struct vpfe_hw_if_param ccdc_if_params;
61         /* i2c subdevice board info */
62         struct i2c_board_info board_info;
63         /* Is this a camera sub device ? */
64         unsigned is_camera:1;
65         /* check if sub dev supports routing */
66         unsigned can_route:1;
67         /* registered ? */
68         unsigned registered:1;
69 };
70
71 struct vpfe_config {
72         /* Number of sub devices connected to vpfe */
73         int num_subdevs;
74         /* information about each subdev */
75         struct vpfe_ext_subdev_info *sub_devs;
76         /* evm card info */
77         char *card_name;
78         /* setup function for the input path */
79         int (*setup_input)(enum vpfe_subdev_id id);
80         /* number of clocks */
81         int num_clocks;
82         /* clocks used for vpfe capture */
83         char *clocks[];
84 };
85 #endif
86 #endif