Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb: (196 commits) V4L/DVB (5253): Qt1010: whitespace / 80 column cleanups V4L/DVB (5252): Qt1010: use ARRAY_SIZE macro when appropriate V4L/DVB (5251): Qt1010: fix compiler warning V4L/DVB (5249): Fix compiler warning in vivi.c V4L/DVB (5247): Stv0297: Enable BER/UNC counting V4L/DVB (5246): Budget-ci: IR handling fixups V4L/DVB (5245): Dvb-ttpci: use i2c gate ctrl from stv0297 frontend driver V4L/DVB (5244): Dvbdev: fix illegal re-usage of fileoperations struct V4L/DVB (5178): Avoid race when deregistering the IR control for dvb-usb V4L/DVB (5240): Qt1010: use i2c_gate_ctrl where appropriate V4L/DVB (5239): Whitespace / 80-column cleanups V4L/DVB (5238): Kconfig: qt1010 should be selected by gl861 and au6610 V4L/DVB (5237): Dvb: add new qt1010 tuner module V4L/DVB (5236): Initial support for Sigmatek DVB-110 DVB-T V4L/DVB (5235): Gl861: use parallel_ts V4L/DVB (5234): Gl861: remove unneeded declaration V4L/DVB (5233): Gl861: correct address of the bulk endpoint V4L/DVB (5232): Gl861: correct oops when loading module V4L/DVB (5231): Gl861: whitespace cleanups V4L/DVB (5230): Gl861: remove NULL entry from gl861_properties ...
This commit is contained in:
+57
-14
@@ -1,5 +1,45 @@
|
||||
/*
|
||||
* Video for Linux Two
|
||||
* Video for Linux Two header file
|
||||
*
|
||||
* Copyright (C) 1999-2007 the contributors
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* Alternatively you can redistribute this file under the terms of the
|
||||
* BSD license as stated below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. The names of its contributors may not be used to endorse or promote
|
||||
* products derived from this software without specific prior written
|
||||
* permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* Header file for v4l or V4L2 drivers and applications
|
||||
* with public API.
|
||||
@@ -8,8 +48,9 @@
|
||||
*
|
||||
* See http://linuxtv.org for more info
|
||||
*
|
||||
* Author: Bill Dirks <bdirks@pacbell.net>
|
||||
* Author: Bill Dirks <bill@thedirks.org>
|
||||
* Justin Schoeman
|
||||
* Hans Verkuil <hverkuil@xs4all.nl>
|
||||
* et al.
|
||||
*/
|
||||
#ifndef __LINUX_VIDEODEV2_H
|
||||
@@ -90,11 +131,8 @@ enum v4l2_buf_type {
|
||||
V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
|
||||
V4L2_BUF_TYPE_VBI_CAPTURE = 4,
|
||||
V4L2_BUF_TYPE_VBI_OUTPUT = 5,
|
||||
#if 1
|
||||
/* Experimental Sliced VBI */
|
||||
V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
|
||||
V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
|
||||
#endif
|
||||
V4L2_BUF_TYPE_PRIVATE = 0x80,
|
||||
};
|
||||
|
||||
@@ -186,10 +224,8 @@ struct v4l2_capability
|
||||
#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */
|
||||
#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */
|
||||
#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */
|
||||
#if 1
|
||||
#define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */
|
||||
#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */
|
||||
#endif
|
||||
#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
|
||||
|
||||
#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
|
||||
@@ -1179,7 +1215,6 @@ struct v4l2_vbi_format
|
||||
#define V4L2_VBI_UNSYNC (1<< 0)
|
||||
#define V4L2_VBI_INTERLACED (1<< 1)
|
||||
|
||||
#if 1
|
||||
/* Sliced VBI
|
||||
*
|
||||
* This implements is a proposal V4L2 API to allow SLICED VBI
|
||||
@@ -1212,7 +1247,6 @@ struct v4l2_sliced_vbi_format
|
||||
#define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
|
||||
#define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
|
||||
|
||||
|
||||
struct v4l2_sliced_vbi_cap
|
||||
{
|
||||
__u16 service_set;
|
||||
@@ -1233,7 +1267,6 @@ struct v4l2_sliced_vbi_data
|
||||
__u32 reserved; /* must be 0 */
|
||||
__u8 data[48];
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A G G R E G A T E S T R U C T U R E S
|
||||
@@ -1249,9 +1282,7 @@ struct v4l2_format
|
||||
struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||
struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY
|
||||
struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE
|
||||
#if 1
|
||||
struct v4l2_sliced_vbi_format sliced; // V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
|
||||
#endif
|
||||
__u8 raw_data[200]; // user-defined
|
||||
} fmt;
|
||||
};
|
||||
@@ -1270,6 +1301,17 @@ struct v4l2_streamparm
|
||||
} parm;
|
||||
};
|
||||
|
||||
/*
|
||||
* A D V A N C E D D E B U G G I N G
|
||||
*/
|
||||
|
||||
/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
|
||||
struct v4l2_register {
|
||||
__u64 reg;
|
||||
__u32 i2c_id; /* I2C driver ID of the I2C chip, or 0 for the host */
|
||||
__u32 val;
|
||||
};
|
||||
|
||||
/*
|
||||
* I O C T L C O D E S F O R V I D E O D E V I C E S
|
||||
*
|
||||
@@ -1328,9 +1370,7 @@ struct v4l2_streamparm
|
||||
#define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout)
|
||||
#define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority)
|
||||
#define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority)
|
||||
#if 1
|
||||
#define VIDIOC_G_SLICED_VBI_CAP _IOWR ('V', 69, struct v4l2_sliced_vbi_cap)
|
||||
#endif
|
||||
#define VIDIOC_LOG_STATUS _IO ('V', 70)
|
||||
#define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls)
|
||||
#define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls)
|
||||
@@ -1339,6 +1379,9 @@ struct v4l2_streamparm
|
||||
#define VIDIOC_ENUM_FRAMESIZES _IOWR ('V', 74, struct v4l2_frmsizeenum)
|
||||
#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR ('V', 75, struct v4l2_frmivalenum)
|
||||
#endif
|
||||
/* only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */
|
||||
#define VIDIOC_DBG_S_REGISTER _IOW ('d', 100, struct v4l2_register)
|
||||
#define VIDIOC_DBG_G_REGISTER _IOWR('d', 101, struct v4l2_register)
|
||||
|
||||
#ifdef __OLD_VIDIOC_
|
||||
/* for compatibility, will go away some day */
|
||||
|
||||
@@ -57,7 +57,6 @@ struct cx2341x_mpeg_params {
|
||||
u16 video_b_frames;
|
||||
u16 video_gop_size;
|
||||
u16 video_gop_closure;
|
||||
u16 video_pulldown;
|
||||
enum v4l2_mpeg_video_bitrate_mode video_bitrate_mode;
|
||||
u32 video_bitrate;
|
||||
u32 video_bitrate_peak;
|
||||
@@ -121,8 +120,6 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix);
|
||||
#define CX2341X_DEC_SET_DISPLAY_BUFFERS 0x18
|
||||
#define CX2341X_DEC_EXTRACT_VBI 0x19
|
||||
#define CX2341X_DEC_SET_DECODER_SOURCE 0x1a
|
||||
#define CX2341X_DEC_SET_AUDIO_OUTPUT 0x1b
|
||||
#define CX2341X_DEC_SET_AV_DELAY 0x1c
|
||||
#define CX2341X_DEC_SET_PREBUFFERING 0x1e
|
||||
|
||||
/* MPEG encoder API */
|
||||
@@ -141,7 +138,6 @@ void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix);
|
||||
#define CX2341X_ENC_SET_DNR_FILTER_PROPS 0x9d
|
||||
#define CX2341X_ENC_SET_CORING_LEVELS 0x9f
|
||||
#define CX2341X_ENC_SET_SPATIAL_FILTER_TYPE 0xa1
|
||||
#define CX2341X_ENC_SET_3_2_PULLDOWN 0xb1
|
||||
#define CX2341X_ENC_SET_VBI_LINE 0xb7
|
||||
#define CX2341X_ENC_SET_STREAM_TYPE 0xb9
|
||||
#define CX2341X_ENC_SET_OUTPUT_PORT 0xbb
|
||||
|
||||
@@ -36,6 +36,11 @@
|
||||
#define IR_KEYCODE(tab,code) (((unsigned)code < IR_KEYTAB_SIZE) \
|
||||
? tab[code] : KEY_RESERVED)
|
||||
|
||||
#define RC5_START(x) (((x)>>12)&3)
|
||||
#define RC5_TOGGLE(x) (((x)>>11)&1)
|
||||
#define RC5_ADDR(x) (((x)>>6)&31)
|
||||
#define RC5_INSTR(x) ((x)&63)
|
||||
|
||||
struct ir_input_state {
|
||||
/* configuration */
|
||||
int ir_type;
|
||||
@@ -48,6 +53,40 @@ struct ir_input_state {
|
||||
int keypressed; /* current state */
|
||||
};
|
||||
|
||||
/* this was saa7134_ir and bttv_ir, moved here for
|
||||
* rc5 decoding. */
|
||||
struct card_ir {
|
||||
struct input_dev *dev;
|
||||
struct ir_input_state ir;
|
||||
char name[32];
|
||||
char phys[32];
|
||||
|
||||
/* Usual gpio signalling */
|
||||
|
||||
u32 mask_keycode;
|
||||
u32 mask_keydown;
|
||||
u32 mask_keyup;
|
||||
u32 polling;
|
||||
u32 last_gpio;
|
||||
int shift_by;
|
||||
int start; // What should RC5_START() be
|
||||
int addr; // What RC5_ADDR() should be.
|
||||
int rc5_key_timeout;
|
||||
int rc5_remote_gap;
|
||||
struct work_struct work;
|
||||
struct timer_list timer;
|
||||
|
||||
/* RC5 gpio */
|
||||
u32 rc5_gpio;
|
||||
struct timer_list timer_end; /* timer_end for code completion */
|
||||
struct timer_list timer_keyup; /* timer_end for key release */
|
||||
u32 last_rc5; /* last good rc5 code */
|
||||
u32 last_bit; /* last raw bit seen */
|
||||
u32 code; /* raw code under construction */
|
||||
struct timeval base_time; /* time of last seen code */
|
||||
int active; /* building raw code */
|
||||
};
|
||||
|
||||
void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
|
||||
int ir_type, IR_KEYTAB_TYPE *ir_codes);
|
||||
void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir);
|
||||
@@ -58,6 +97,10 @@ int ir_dump_samples(u32 *samples, int count);
|
||||
int ir_decode_biphase(u32 *samples, int count, int low, int high);
|
||||
int ir_decode_pulsedistance(u32 *samples, int count, int low, int high);
|
||||
|
||||
u32 ir_rc5_decode(unsigned int code);
|
||||
void ir_rc5_timer_end(unsigned long data);
|
||||
void ir_rc5_timer_keyup(unsigned long data);
|
||||
|
||||
/* Keymaps to be used by other modules */
|
||||
|
||||
extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE];
|
||||
@@ -94,6 +137,9 @@ extern IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE];
|
||||
extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE];
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -42,5 +42,8 @@
|
||||
#define SAA7115_FREQ_FL_CGCDIV (1 << 1) /* SA 3A[6], CGCDIV, SAA7115 only */
|
||||
#define SAA7115_FREQ_FL_APLL (1 << 2) /* SA 3A[3], APLL, SAA7114/5 only */
|
||||
|
||||
#define SAA7115_IPORT_ON 1
|
||||
#define SAA7115_IPORT_OFF 0
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -64,9 +64,6 @@
|
||||
/* Prints the ioctl in a human-readable format */
|
||||
extern void v4l_printk_ioctl(unsigned int cmd);
|
||||
|
||||
/* Prints the ioctl and arg in a human-readable format */
|
||||
extern void v4l_printk_ioctl_arg(char *s,unsigned int cmd, void *arg);
|
||||
|
||||
/* Use this macro for non-I2C drivers. Pass the driver name as the first arg. */
|
||||
#define v4l_print_ioctl(name, cmd) \
|
||||
do { \
|
||||
@@ -99,13 +96,6 @@ u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id);
|
||||
|
||||
/* Internal ioctls */
|
||||
|
||||
/* VIDIOC_INT_G_REGISTER and VIDIOC_INT_S_REGISTER */
|
||||
struct v4l2_register {
|
||||
u32 i2c_id; /* I2C driver ID of the I2C chip. 0 for the I2C adapter. */
|
||||
unsigned long reg;
|
||||
u32 val;
|
||||
};
|
||||
|
||||
/* VIDIOC_INT_DECODE_VBI_LINE */
|
||||
struct v4l2_decode_vbi_line {
|
||||
u32 is_second_field; /* Set to 0 for the first (odd) field,
|
||||
@@ -175,9 +165,7 @@ enum v4l2_chip_ident {
|
||||
Replacement of TUNER_SET_STANDBY. */
|
||||
#define VIDIOC_INT_S_STANDBY _IOW('d', 94, u32)
|
||||
|
||||
/* only implemented if CONFIG_VIDEO_ADV_DEBUG is defined */
|
||||
#define VIDIOC_INT_S_REGISTER _IOW ('d', 100, struct v4l2_register)
|
||||
#define VIDIOC_INT_G_REGISTER _IOWR('d', 101, struct v4l2_register)
|
||||
/* 100, 101 used by VIDIOC_DBG_[SG]_REGISTER */
|
||||
|
||||
/* Generic reset command. The argument selects which subsystems to reset.
|
||||
Passing 0 will always reset the whole chip. */
|
||||
|
||||
@@ -296,6 +296,15 @@ struct video_device
|
||||
int (*vidioc_log_status) (struct file *file, void *fh);
|
||||
|
||||
|
||||
/* Debugging ioctls */
|
||||
#ifdef CONFIG_VIDEO_ADV_DEBUG
|
||||
int (*vidioc_g_register) (struct file *file, void *fh,
|
||||
struct v4l2_register *reg);
|
||||
int (*vidioc_s_register) (struct file *file, void *fh,
|
||||
struct v4l2_register *reg);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef OBSOLETE_OWNER /* to be removed soon */
|
||||
/* obsolete -- fops->owner is used instead */
|
||||
struct module *owner;
|
||||
|
||||
@@ -78,6 +78,9 @@ struct videobuf_dmabuf {
|
||||
/* for kernel buffers */
|
||||
void *vmalloc;
|
||||
|
||||
/* Stores the userspace pointer to vmalloc area */
|
||||
void *varea;
|
||||
|
||||
/* for overlay buffers (pci-pci dma) */
|
||||
dma_addr_t bus_addr;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user