0001
0002
0003
0004
0005
0006 #ifndef _VPFE_CAPTURE_H
0007 #define _VPFE_CAPTURE_H
0008
0009 #ifdef __KERNEL__
0010
0011
0012 #include <media/v4l2-dev.h>
0013 #include <linux/videodev2.h>
0014 #include <linux/clk.h>
0015 #include <linux/i2c.h>
0016 #include <media/v4l2-fh.h>
0017 #include <media/v4l2-ioctl.h>
0018 #include <media/v4l2-device.h>
0019 #include <media/videobuf-dma-contig.h>
0020 #include <media/davinci/vpfe_types.h>
0021
0022 #define VPFE_CAPTURE_NUM_DECODERS 5
0023
0024
0025 #define VPFE_MAJOR_RELEASE 0
0026 #define VPFE_MINOR_RELEASE 0
0027 #define VPFE_BUILD 1
0028 #define VPFE_CAPTURE_VERSION_CODE ((VPFE_MAJOR_RELEASE << 16) | \
0029 (VPFE_MINOR_RELEASE << 8) | \
0030 VPFE_BUILD)
0031
0032 #define CAPTURE_DRV_NAME "vpfe-capture"
0033
0034 struct vpfe_pixel_format {
0035 u32 pixelformat;
0036
0037 int bpp;
0038 };
0039
0040 struct vpfe_std_info {
0041 int active_pixels;
0042 int active_lines;
0043
0044 int frame_format;
0045 };
0046
0047 struct vpfe_route {
0048 u32 input;
0049 u32 output;
0050 };
0051
0052 struct vpfe_subdev_info {
0053
0054 char name[32];
0055
0056 int grp_id;
0057
0058 int num_inputs;
0059
0060 struct v4l2_input *inputs;
0061
0062 struct vpfe_route *routes;
0063
0064 int can_route;
0065
0066 struct vpfe_hw_if_param ccdc_if_params;
0067
0068 struct i2c_board_info board_info;
0069 };
0070
0071 struct vpfe_config {
0072
0073 int num_subdevs;
0074
0075 int i2c_adapter_id;
0076
0077 struct vpfe_subdev_info *sub_devs;
0078
0079 char *card_name;
0080
0081 char *ccdc;
0082
0083 struct clk *vpssclk;
0084 struct clk *slaveclk;
0085
0086 void (*clr_intr)(int vdint);
0087 };
0088
0089 struct vpfe_device {
0090
0091
0092 struct video_device video_dev;
0093
0094 struct v4l2_subdev **sd;
0095
0096 struct vpfe_config *cfg;
0097
0098 struct v4l2_device v4l2_dev;
0099
0100 struct device *pdev;
0101
0102 u32 usrs;
0103
0104 u32 field_id;
0105
0106 u8 initialized;
0107
0108 struct vpfe_hw_if_param vpfe_if_params;
0109
0110 struct vpfe_subdev_info *current_subdev;
0111
0112 int current_input;
0113
0114 struct vpfe_std_info std_info;
0115
0116 int std_index;
0117
0118 unsigned int ccdc_irq0;
0119 unsigned int ccdc_irq1;
0120
0121 u32 numbuffers;
0122
0123 u8 *fbuffers[VIDEO_MAX_FRAME];
0124
0125 struct videobuf_buffer *cur_frm;
0126
0127 struct videobuf_buffer *next_frm;
0128
0129
0130
0131
0132 enum v4l2_memory memory;
0133
0134 struct v4l2_format fmt;
0135
0136
0137
0138
0139 struct v4l2_rect crop;
0140
0141 struct videobuf_queue buffer_queue;
0142
0143 struct list_head dma_queue;
0144
0145 spinlock_t irqlock;
0146
0147 spinlock_t dma_queue_lock;
0148
0149 struct mutex lock;
0150
0151 u32 io_usrs;
0152
0153 u8 started;
0154
0155
0156
0157
0158 u32 field_off;
0159 };
0160
0161
0162 struct vpfe_fh {
0163 struct v4l2_fh fh;
0164 struct vpfe_device *vpfe_dev;
0165
0166 u8 io_allowed;
0167 };
0168
0169 struct vpfe_config_params {
0170 u8 min_numbuffers;
0171 u8 numbuffers;
0172 u32 min_bufsize;
0173 u32 device_bufsize;
0174 };
0175
0176 #endif
0177 #endif