1/* 2 * Copyright (C) 2011 Texas Instruments Inc 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * 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#ifndef _VPIF_TYPES_H 18#define _VPIF_TYPES_H 19 20#include <linux/i2c.h> 21 22#define VPIF_CAPTURE_MAX_CHANNELS 2 23#define VPIF_DISPLAY_MAX_CHANNELS 2 24 25enum vpif_if_type { 26 VPIF_IF_BT656, 27 VPIF_IF_BT1120, 28 VPIF_IF_RAW_BAYER 29}; 30 31struct vpif_interface { 32 enum vpif_if_type if_type; 33 unsigned hd_pol:1; 34 unsigned vd_pol:1; 35 unsigned fid_pol:1; 36}; 37 38struct vpif_subdev_info { 39 const char *name; 40 struct i2c_board_info board_info; 41}; 42 43struct vpif_output { 44 struct v4l2_output output; 45 const char *subdev_name; 46 u32 input_route; 47 u32 output_route; 48}; 49 50struct vpif_display_chan_config { 51 const struct vpif_output *outputs; 52 int output_count; 53 bool clip_en; 54}; 55 56struct vpif_display_config { 57 int (*set_clock)(int, int); 58 struct vpif_subdev_info *subdevinfo; 59 int subdev_count; 60 struct vpif_display_chan_config chan_config[VPIF_DISPLAY_MAX_CHANNELS]; 61 const char *card_name; 62 struct v4l2_async_subdev **asd; /* Flat array, arranged in groups */ 63 int *asd_sizes; /* 0-terminated array of asd group sizes */ 64}; 65 66struct vpif_input { 67 struct v4l2_input input; 68 const char *subdev_name; 69 u32 input_route; 70 u32 output_route; 71}; 72 73struct vpif_capture_chan_config { 74 struct vpif_interface vpif_if; 75 const struct vpif_input *inputs; 76 int input_count; 77}; 78 79struct vpif_capture_config { 80 int (*setup_input_channel_mode)(int); 81 int (*setup_input_path)(int, const char *); 82 struct vpif_capture_chan_config chan_config[VPIF_CAPTURE_MAX_CHANNELS]; 83 struct vpif_subdev_info *subdev_info; 84 int subdev_count; 85 const char *card_name; 86 struct v4l2_async_subdev **asd; /* Flat array, arranged in groups */ 87 int *asd_sizes; /* 0-terminated array of asd group sizes */ 88}; 89#endif /* _VPIF_TYPES_H */ 90