diff options
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/ir-common.h | 11 | ||||
-rw-r--r-- | include/media/saa7115.h | 19 | ||||
-rw-r--r-- | include/media/saa7146.h | 4 | ||||
-rw-r--r-- | include/media/sh_mobile_ceu.h | 2 | ||||
-rw-r--r-- | include/media/soc_camera.h | 3 | ||||
-rw-r--r-- | include/media/soc_camera_platform.h | 11 | ||||
-rw-r--r-- | include/media/tuner.h | 4 | ||||
-rw-r--r-- | include/media/v4l2-chip-ident.h | 5 | ||||
-rw-r--r-- | include/media/v4l2-common.h | 15 | ||||
-rw-r--r-- | include/media/v4l2-dev.h | 75 | ||||
-rw-r--r-- | include/media/v4l2-i2c-drv-legacy.h | 11 | ||||
-rw-r--r-- | include/media/v4l2-i2c-drv.h | 11 | ||||
-rw-r--r-- | include/media/v4l2-ioctl.h | 5 | ||||
-rw-r--r-- | include/media/videobuf-dvb.h | 29 |
14 files changed, 139 insertions, 66 deletions
diff --git a/include/media/ir-common.h b/include/media/ir-common.h index b8e8aa91905a..38f2d93c3957 100644 --- a/include/media/ir-common.h +++ b/include/media/ir-common.h | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include <linux/input.h> | 26 | #include <linux/input.h> |
27 | #include <linux/workqueue.h> | 27 | #include <linux/workqueue.h> |
28 | #include <linux/interrupt.h> | ||
28 | 29 | ||
29 | #define IR_TYPE_RC5 1 | 30 | #define IR_TYPE_RC5 1 |
30 | #define IR_TYPE_PD 2 /* Pulse distance encoded IR */ | 31 | #define IR_TYPE_PD 2 /* Pulse distance encoded IR */ |
@@ -85,6 +86,10 @@ struct card_ir { | |||
85 | u32 code; /* raw code under construction */ | 86 | u32 code; /* raw code under construction */ |
86 | struct timeval base_time; /* time of last seen code */ | 87 | struct timeval base_time; /* time of last seen code */ |
87 | int active; /* building raw code */ | 88 | int active; /* building raw code */ |
89 | |||
90 | /* NEC decoding */ | ||
91 | u32 nec_gpio; | ||
92 | struct tasklet_struct tlet; | ||
88 | }; | 93 | }; |
89 | 94 | ||
90 | void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, | 95 | void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, |
@@ -105,6 +110,7 @@ void ir_rc5_timer_keyup(unsigned long data); | |||
105 | extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; | 110 | extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; |
106 | extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; | 111 | extern IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE]; |
107 | extern IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE]; | 112 | extern IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE]; |
113 | extern IR_KEYTAB_TYPE ir_codes_avermedia_m135a[IR_KEYTAB_SIZE]; | ||
108 | extern IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE]; | 114 | extern IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE]; |
109 | extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; | 115 | extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; |
110 | extern IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE]; | 116 | extern IR_KEYTAB_TYPE ir_codes_pixelview_new[IR_KEYTAB_SIZE]; |
@@ -139,6 +145,7 @@ extern IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE]; | |||
139 | extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE]; | 145 | extern IR_KEYTAB_TYPE ir_codes_budget_ci_old[IR_KEYTAB_SIZE]; |
140 | extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE]; | 146 | extern IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE]; |
141 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE]; | 147 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE]; |
148 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv2[IR_KEYTAB_SIZE]; | ||
142 | extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE]; | 149 | extern IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE]; |
143 | extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE]; | 150 | extern IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE]; |
144 | extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE]; | 151 | extern IR_KEYTAB_TYPE ir_codes_behold[IR_KEYTAB_SIZE]; |
@@ -147,7 +154,9 @@ extern IR_KEYTAB_TYPE ir_codes_pinnacle_pctv_hd[IR_KEYTAB_SIZE]; | |||
147 | extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; | 154 | extern IR_KEYTAB_TYPE ir_codes_genius_tvgo_a11mce[IR_KEYTAB_SIZE]; |
148 | extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE]; | 155 | extern IR_KEYTAB_TYPE ir_codes_powercolor_real_angel[IR_KEYTAB_SIZE]; |
149 | extern IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE]; | 156 | extern IR_KEYTAB_TYPE ir_codes_avermedia_a16d[IR_KEYTAB_SIZE]; |
150 | 157 | extern IR_KEYTAB_TYPE ir_codes_encore_enltv_fm53[IR_KEYTAB_SIZE]; | |
158 | extern IR_KEYTAB_TYPE ir_codes_real_audio_220_32_keys[IR_KEYTAB_SIZE]; | ||
159 | extern IR_KEYTAB_TYPE ir_codes_msi_tvanywhere_plus[IR_KEYTAB_SIZE]; | ||
151 | #endif | 160 | #endif |
152 | 161 | ||
153 | /* | 162 | /* |
diff --git a/include/media/saa7115.h b/include/media/saa7115.h index f677dfb9d373..bab212719591 100644 --- a/include/media/saa7115.h +++ b/include/media/saa7115.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | saa7115.h - definition for saa7113/4/5 inputs and frequency flags | 2 | saa7115.h - definition for saa7111/3/4/5 inputs and frequency flags |
3 | 3 | ||
4 | Copyright (C) 2006 Hans Verkuil (hverkuil@xs4all.nl) | 4 | Copyright (C) 2006 Hans Verkuil (hverkuil@xs4all.nl) |
5 | 5 | ||
@@ -21,13 +21,13 @@ | |||
21 | #ifndef _SAA7115_H_ | 21 | #ifndef _SAA7115_H_ |
22 | #define _SAA7115_H_ | 22 | #define _SAA7115_H_ |
23 | 23 | ||
24 | /* SAA7113/4/5 HW inputs */ | 24 | /* SAA7111/3/4/5 HW inputs */ |
25 | #define SAA7115_COMPOSITE0 0 | 25 | #define SAA7115_COMPOSITE0 0 |
26 | #define SAA7115_COMPOSITE1 1 | 26 | #define SAA7115_COMPOSITE1 1 |
27 | #define SAA7115_COMPOSITE2 2 | 27 | #define SAA7115_COMPOSITE2 2 |
28 | #define SAA7115_COMPOSITE3 3 | 28 | #define SAA7115_COMPOSITE3 3 |
29 | #define SAA7115_COMPOSITE4 4 /* not available for the saa7113 */ | 29 | #define SAA7115_COMPOSITE4 4 /* not available for the saa7111/3 */ |
30 | #define SAA7115_COMPOSITE5 5 /* not available for the saa7113 */ | 30 | #define SAA7115_COMPOSITE5 5 /* not available for the saa7111/3 */ |
31 | #define SAA7115_SVIDEO0 6 | 31 | #define SAA7115_SVIDEO0 6 |
32 | #define SAA7115_SVIDEO1 7 | 32 | #define SAA7115_SVIDEO1 7 |
33 | #define SAA7115_SVIDEO2 8 | 33 | #define SAA7115_SVIDEO2 8 |
@@ -42,8 +42,15 @@ | |||
42 | #define SAA7115_FREQ_FL_CGCDIV (1 << 1) /* SA 3A[6], CGCDIV, SAA7115 only */ | 42 | #define SAA7115_FREQ_FL_CGCDIV (1 << 1) /* SA 3A[6], CGCDIV, SAA7115 only */ |
43 | #define SAA7115_FREQ_FL_APLL (1 << 2) /* SA 3A[3], APLL, SAA7114/5 only */ | 43 | #define SAA7115_FREQ_FL_APLL (1 << 2) /* SA 3A[3], APLL, SAA7114/5 only */ |
44 | 44 | ||
45 | #define SAA7115_IPORT_ON 1 | 45 | #define SAA7115_IPORT_ON 1 |
46 | #define SAA7115_IPORT_OFF 0 | 46 | #define SAA7115_IPORT_OFF 0 |
47 | |||
48 | /* SAA7111 specific output flags */ | ||
49 | #define SAA7111_VBI_BYPASS 2 | ||
50 | #define SAA7111_FMT_YUV422 0x00 | ||
51 | #define SAA7111_FMT_RGB 0x40 | ||
52 | #define SAA7111_FMT_CCIR 0x80 | ||
53 | #define SAA7111_FMT_YUV411 0xc0 | ||
47 | 54 | ||
48 | #endif | 55 | #endif |
49 | 56 | ||
diff --git a/include/media/saa7146.h b/include/media/saa7146.h index 2f68f4cd0037..c5a6e22a4b37 100644 --- a/include/media/saa7146.h +++ b/include/media/saa7146.h | |||
@@ -24,13 +24,13 @@ | |||
24 | 24 | ||
25 | extern unsigned int saa7146_debug; | 25 | extern unsigned int saa7146_debug; |
26 | 26 | ||
27 | //#define DEBUG_PROLOG printk("(0x%08x)(0x%08x) %s: %s(): ",(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,RPS_ADDR0))),(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,IER))),KBUILD_MODNAME,__FUNCTION__) | 27 | //#define DEBUG_PROLOG printk("(0x%08x)(0x%08x) %s: %s(): ",(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,RPS_ADDR0))),(dev==0?-1:(dev->mem==0?-1:saa7146_read(dev,IER))),KBUILD_MODNAME,__func__) |
28 | 28 | ||
29 | #ifndef DEBUG_VARIABLE | 29 | #ifndef DEBUG_VARIABLE |
30 | #define DEBUG_VARIABLE saa7146_debug | 30 | #define DEBUG_VARIABLE saa7146_debug |
31 | #endif | 31 | #endif |
32 | 32 | ||
33 | #define DEBUG_PROLOG printk("%s: %s(): ",KBUILD_MODNAME,__FUNCTION__) | 33 | #define DEBUG_PROLOG printk("%s: %s(): ",KBUILD_MODNAME, __func__) |
34 | #define INFO(x) { printk("%s: ",KBUILD_MODNAME); printk x; } | 34 | #define INFO(x) { printk("%s: ",KBUILD_MODNAME); printk x; } |
35 | 35 | ||
36 | #define ERR(x) { DEBUG_PROLOG; printk x; } | 36 | #define ERR(x) { DEBUG_PROLOG; printk x; } |
diff --git a/include/media/sh_mobile_ceu.h b/include/media/sh_mobile_ceu.h index 234a4711d2ec..b5dbefea3740 100644 --- a/include/media/sh_mobile_ceu.h +++ b/include/media/sh_mobile_ceu.h | |||
@@ -5,8 +5,6 @@ | |||
5 | 5 | ||
6 | struct sh_mobile_ceu_info { | 6 | struct sh_mobile_ceu_info { |
7 | unsigned long flags; /* SOCAM_... */ | 7 | unsigned long flags; /* SOCAM_... */ |
8 | void (*enable_camera)(void); | ||
9 | void (*disable_camera)(void); | ||
10 | }; | 8 | }; |
11 | 9 | ||
12 | #endif /* __ASM_SH_MOBILE_CEU_H__ */ | 10 | #endif /* __ASM_SH_MOBILE_CEU_H__ */ |
diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h index d548de326722..c5de7bb19fda 100644 --- a/include/media/soc_camera.h +++ b/include/media/soc_camera.h | |||
@@ -83,6 +83,9 @@ struct soc_camera_link { | |||
83 | int bus_id; | 83 | int bus_id; |
84 | /* GPIO number to switch between 8 and 10 bit modes */ | 84 | /* GPIO number to switch between 8 and 10 bit modes */ |
85 | unsigned int gpio; | 85 | unsigned int gpio; |
86 | /* Optional callbacks to power on or off and reset the sensor */ | ||
87 | int (*power)(struct device *, int); | ||
88 | int (*reset)(struct device *); | ||
86 | }; | 89 | }; |
87 | 90 | ||
88 | static inline struct soc_camera_device *to_soc_camera_dev(struct device *dev) | 91 | static inline struct soc_camera_device *to_soc_camera_dev(struct device *dev) |
diff --git a/include/media/soc_camera_platform.h b/include/media/soc_camera_platform.h index 851f18220984..1d092b4678aa 100644 --- a/include/media/soc_camera_platform.h +++ b/include/media/soc_camera_platform.h | |||
@@ -1,3 +1,13 @@ | |||
1 | /* | ||
2 | * Generic Platform Camera Driver Header | ||
3 | * | ||
4 | * Copyright (C) 2008 Magnus Damm | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
1 | #ifndef __SOC_CAMERA_H__ | 11 | #ifndef __SOC_CAMERA_H__ |
2 | #define __SOC_CAMERA_H__ | 12 | #define __SOC_CAMERA_H__ |
3 | 13 | ||
@@ -9,6 +19,7 @@ struct soc_camera_platform_info { | |||
9 | unsigned long format_depth; | 19 | unsigned long format_depth; |
10 | struct v4l2_pix_format format; | 20 | struct v4l2_pix_format format; |
11 | unsigned long bus_param; | 21 | unsigned long bus_param; |
22 | void (*power)(int); | ||
12 | int (*set_capture)(struct soc_camera_platform_info *info, int enable); | 23 | int (*set_capture)(struct soc_camera_platform_info *info, int enable); |
13 | }; | 24 | }; |
14 | 25 | ||
diff --git a/include/media/tuner.h b/include/media/tuner.h index 77068fcc86bd..7d4e2db78076 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -122,6 +122,8 @@ | |||
122 | #define TUNER_TDA9887 74 /* This tuner should be used only internally */ | 122 | #define TUNER_TDA9887 74 /* This tuner should be used only internally */ |
123 | #define TUNER_TEA5761 75 /* Only FM Radio Tuner */ | 123 | #define TUNER_TEA5761 75 /* Only FM Radio Tuner */ |
124 | #define TUNER_XC5000 76 /* Xceive Silicon Tuner */ | 124 | #define TUNER_XC5000 76 /* Xceive Silicon Tuner */ |
125 | #define TUNER_TCL_MF02GIP_5N 77 /* TCL MF02GIP_5N */ | ||
126 | #define TUNER_PHILIPS_FMD1216MEX_MK3 78 | ||
125 | 127 | ||
126 | /* tv card specific */ | 128 | /* tv card specific */ |
127 | #define TDA9887_PRESENT (1<<0) | 129 | #define TDA9887_PRESENT (1<<0) |
@@ -178,7 +180,7 @@ struct tuner_setup { | |||
178 | unsigned int type; /* Tuner type */ | 180 | unsigned int type; /* Tuner type */ |
179 | unsigned int mode_mask; /* Allowed tuner modes */ | 181 | unsigned int mode_mask; /* Allowed tuner modes */ |
180 | unsigned int config; /* configuraion for more complex tuners */ | 182 | unsigned int config; /* configuraion for more complex tuners */ |
181 | int (*tuner_callback) (void *dev, int command,int arg); | 183 | int (*tuner_callback) (void *dev, int component, int cmd, int arg); |
182 | }; | 184 | }; |
183 | 185 | ||
184 | #endif /* __KERNEL__ */ | 186 | #endif /* __KERNEL__ */ |
diff --git a/include/media/v4l2-chip-ident.h b/include/media/v4l2-chip-ident.h index 41b509babf3f..d73a8e9028a5 100644 --- a/include/media/v4l2-chip-ident.h +++ b/include/media/v4l2-chip-ident.h | |||
@@ -72,6 +72,10 @@ enum { | |||
72 | /* module cs5345: just ident 5345 */ | 72 | /* module cs5345: just ident 5345 */ |
73 | V4L2_IDENT_CS5345 = 5345, | 73 | V4L2_IDENT_CS5345 = 5345, |
74 | 74 | ||
75 | /* module saa6752hs: reserved range 6750-6759 */ | ||
76 | V4L2_IDENT_SAA6752HS = 6752, | ||
77 | V4L2_IDENT_SAA6752HS_AC3 = 6753, | ||
78 | |||
75 | /* module wm8739: just ident 8739 */ | 79 | /* module wm8739: just ident 8739 */ |
76 | V4L2_IDENT_WM8739 = 8739, | 80 | V4L2_IDENT_WM8739 = 8739, |
77 | 81 | ||
@@ -161,6 +165,7 @@ enum { | |||
161 | /* Micron CMOS sensor chips: 45000-45099 */ | 165 | /* Micron CMOS sensor chips: 45000-45099 */ |
162 | V4L2_IDENT_MT9M001C12ST = 45000, | 166 | V4L2_IDENT_MT9M001C12ST = 45000, |
163 | V4L2_IDENT_MT9M001C12STM = 45005, | 167 | V4L2_IDENT_MT9M001C12STM = 45005, |
168 | V4L2_IDENT_MT9M111 = 45007, | ||
164 | V4L2_IDENT_MT9V022IX7ATC = 45010, /* No way to detect "normal" I77ATx */ | 169 | V4L2_IDENT_MT9V022IX7ATC = 45010, /* No way to detect "normal" I77ATx */ |
165 | V4L2_IDENT_MT9V022IX7ATM = 45015, /* and "lead free" IA7ATx chips */ | 170 | V4L2_IDENT_MT9V022IX7ATM = 45015, /* and "lead free" IA7ATx chips */ |
166 | }; | 171 | }; |
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h index 07d3a9a575d1..2f8719abf5cb 100644 --- a/include/media/v4l2-common.h +++ b/include/media/v4l2-common.h | |||
@@ -76,11 +76,14 @@ int v4l2_prio_check(struct v4l2_prio_state *global, enum v4l2_priority *local); | |||
76 | 76 | ||
77 | int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl, | 77 | int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl, |
78 | const char **menu_items); | 78 | const char **menu_items); |
79 | const char *v4l2_ctrl_get_name(u32 id); | ||
79 | const char **v4l2_ctrl_get_menu(u32 id); | 80 | const char **v4l2_ctrl_get_menu(u32 id); |
80 | int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def); | 81 | int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def); |
81 | int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl); | 82 | int v4l2_ctrl_query_fill_std(struct v4l2_queryctrl *qctrl); |
82 | int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu, | 83 | int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu, |
83 | struct v4l2_queryctrl *qctrl, const char **menu_items); | 84 | struct v4l2_queryctrl *qctrl, const char **menu_items); |
85 | #define V4L2_CTRL_MENU_IDS_END (0xffffffff) | ||
86 | int v4l2_ctrl_query_menu_valid_items(struct v4l2_querymenu *qmenu, const u32 *ids); | ||
84 | u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); | 87 | u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); |
85 | 88 | ||
86 | /* ------------------------------------------------------------------------- */ | 89 | /* ------------------------------------------------------------------------- */ |
@@ -222,18 +225,22 @@ struct v4l2_crystal_freq { | |||
222 | An extra flags field allows device specific configuration regarding | 225 | An extra flags field allows device specific configuration regarding |
223 | clock frequency dividers, etc. If not used, then set flags to 0. | 226 | clock frequency dividers, etc. If not used, then set flags to 0. |
224 | If the frequency is not supported, then -EINVAL is returned. */ | 227 | If the frequency is not supported, then -EINVAL is returned. */ |
225 | #define VIDIOC_INT_S_CRYSTAL_FREQ _IOW ('d', 113, struct v4l2_crystal_freq) | 228 | #define VIDIOC_INT_S_CRYSTAL_FREQ _IOW('d', 113, struct v4l2_crystal_freq) |
226 | 229 | ||
227 | /* Initialize the sensor registors to some sort of reasonable | 230 | /* Initialize the sensor registors to some sort of reasonable |
228 | default values. */ | 231 | default values. */ |
229 | #define VIDIOC_INT_INIT _IOW ('d', 114, u32) | 232 | #define VIDIOC_INT_INIT _IOW('d', 114, u32) |
230 | 233 | ||
231 | /* Set v4l2_std_id for video OUTPUT devices. This is ignored by | 234 | /* Set v4l2_std_id for video OUTPUT devices. This is ignored by |
232 | video input devices. */ | 235 | video input devices. */ |
233 | #define VIDIOC_INT_S_STD_OUTPUT _IOW ('d', 115, v4l2_std_id) | 236 | #define VIDIOC_INT_S_STD_OUTPUT _IOW('d', 115, v4l2_std_id) |
234 | 237 | ||
235 | /* Get v4l2_std_id for video OUTPUT devices. This is ignored by | 238 | /* Get v4l2_std_id for video OUTPUT devices. This is ignored by |
236 | video input devices. */ | 239 | video input devices. */ |
237 | #define VIDIOC_INT_G_STD_OUTPUT _IOW ('d', 116, v4l2_std_id) | 240 | #define VIDIOC_INT_G_STD_OUTPUT _IOW('d', 116, v4l2_std_id) |
241 | |||
242 | /* Set GPIO pins. Very simple right now, might need to be extended with | ||
243 | a v4l2_gpio struct if a direction is also needed. */ | ||
244 | #define VIDIOC_INT_S_GPIO _IOW('d', 117, u32) | ||
238 | 245 | ||
239 | #endif /* V4L2_COMMON_H_ */ | 246 | #endif /* V4L2_COMMON_H_ */ |
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h index 2745e1afc722..a0a6b41c5e09 100644 --- a/include/media/v4l2-dev.h +++ b/include/media/v4l2-dev.h | |||
@@ -9,30 +9,20 @@ | |||
9 | #ifndef _V4L2_DEV_H | 9 | #ifndef _V4L2_DEV_H |
10 | #define _V4L2_DEV_H | 10 | #define _V4L2_DEV_H |
11 | 11 | ||
12 | #define OBSOLETE_DEVDATA 1 /* to be removed soon */ | ||
13 | |||
14 | #include <linux/poll.h> | 12 | #include <linux/poll.h> |
15 | #include <linux/fs.h> | 13 | #include <linux/fs.h> |
16 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/cdev.h> | ||
17 | #include <linux/mutex.h> | 16 | #include <linux/mutex.h> |
18 | #include <linux/compiler.h> /* need __user */ | ||
19 | #include <linux/videodev2.h> | 17 | #include <linux/videodev2.h> |
20 | 18 | ||
21 | #define VIDEO_MAJOR 81 | 19 | #define VIDEO_MAJOR 81 |
22 | /* Minor device allocation */ | ||
23 | #define MINOR_VFL_TYPE_GRABBER_MIN 0 | ||
24 | #define MINOR_VFL_TYPE_GRABBER_MAX 63 | ||
25 | #define MINOR_VFL_TYPE_RADIO_MIN 64 | ||
26 | #define MINOR_VFL_TYPE_RADIO_MAX 127 | ||
27 | #define MINOR_VFL_TYPE_VTX_MIN 192 | ||
28 | #define MINOR_VFL_TYPE_VTX_MAX 223 | ||
29 | #define MINOR_VFL_TYPE_VBI_MIN 224 | ||
30 | #define MINOR_VFL_TYPE_VBI_MAX 255 | ||
31 | 20 | ||
32 | #define VFL_TYPE_GRABBER 0 | 21 | #define VFL_TYPE_GRABBER 0 |
33 | #define VFL_TYPE_VBI 1 | 22 | #define VFL_TYPE_VBI 1 |
34 | #define VFL_TYPE_RADIO 2 | 23 | #define VFL_TYPE_RADIO 2 |
35 | #define VFL_TYPE_VTX 3 | 24 | #define VFL_TYPE_VTX 3 |
25 | #define VFL_TYPE_MAX 4 | ||
36 | 26 | ||
37 | struct v4l2_ioctl_callbacks; | 27 | struct v4l2_ioctl_callbacks; |
38 | 28 | ||
@@ -49,12 +39,15 @@ struct video_device | |||
49 | 39 | ||
50 | /* sysfs */ | 40 | /* sysfs */ |
51 | struct device dev; /* v4l device */ | 41 | struct device dev; /* v4l device */ |
42 | struct cdev cdev; /* character device */ | ||
43 | void (*cdev_release)(struct kobject *kobj); | ||
52 | struct device *parent; /* device parent */ | 44 | struct device *parent; /* device parent */ |
53 | 45 | ||
54 | /* device info */ | 46 | /* device info */ |
55 | char name[32]; | 47 | char name[32]; |
56 | int vfl_type; | 48 | int vfl_type; |
57 | int minor; | 49 | int minor; |
50 | u16 num; | ||
58 | /* attribute to differentiate multiple indices on one physical device */ | 51 | /* attribute to differentiate multiple indices on one physical device */ |
59 | int index; | 52 | int index; |
60 | 53 | ||
@@ -69,50 +62,50 @@ struct video_device | |||
69 | 62 | ||
70 | /* ioctl callbacks */ | 63 | /* ioctl callbacks */ |
71 | const struct v4l2_ioctl_ops *ioctl_ops; | 64 | const struct v4l2_ioctl_ops *ioctl_ops; |
72 | |||
73 | #ifdef OBSOLETE_DEVDATA /* to be removed soon */ | ||
74 | /* dev->driver_data will be used instead some day. | ||
75 | * Use the video_{get|set}_drvdata() helper functions, | ||
76 | * so the switch over will be transparent for you. | ||
77 | * Or use {pci|usb}_{get|set}_drvdata() directly. */ | ||
78 | void *priv; | ||
79 | #endif | ||
80 | |||
81 | /* for videodev.c internal usage -- please don't touch */ | ||
82 | int users; /* video_exclusive_{open|close} ... */ | ||
83 | struct mutex lock; /* ... helper function uses these */ | ||
84 | }; | 65 | }; |
85 | 66 | ||
86 | /* Class-dev to video-device */ | 67 | /* dev to video-device */ |
87 | #define to_video_device(cd) container_of(cd, struct video_device, dev) | 68 | #define to_video_device(cd) container_of(cd, struct video_device, dev) |
88 | 69 | ||
89 | /* Version 2 functions */ | 70 | /* Register and unregister devices. Note that if video_register_device fails, |
90 | extern int video_register_device(struct video_device *vfd, int type, int nr); | 71 | the release() callback of the video_device structure is *not* called, so |
91 | int video_register_device_index(struct video_device *vfd, int type, int nr, | 72 | the caller is responsible for freeing any data. Usually that means that |
92 | int index); | 73 | you call video_device_release() on failure. */ |
93 | void video_unregister_device(struct video_device *); | 74 | int __must_check video_register_device(struct video_device *vfd, int type, int nr); |
75 | int __must_check video_register_device_index(struct video_device *vfd, | ||
76 | int type, int nr, int index); | ||
77 | void video_unregister_device(struct video_device *vfd); | ||
94 | 78 | ||
95 | /* helper functions to alloc / release struct video_device, the | 79 | /* helper functions to alloc/release struct video_device, the |
96 | later can be used for video_device->release() */ | 80 | latter can also be used for video_device->release(). */ |
97 | struct video_device *video_device_alloc(void); | 81 | struct video_device * __must_check video_device_alloc(void); |
82 | |||
83 | /* this release function frees the vfd pointer */ | ||
98 | void video_device_release(struct video_device *vfd); | 84 | void video_device_release(struct video_device *vfd); |
99 | 85 | ||
100 | #ifdef OBSOLETE_DEVDATA /* to be removed soon */ | 86 | /* this release function does nothing, use when the video_device is a |
87 | static global struct. Note that having a static video_device is | ||
88 | a dubious construction at best. */ | ||
89 | void video_device_release_empty(struct video_device *vfd); | ||
90 | |||
101 | /* helper functions to access driver private data. */ | 91 | /* helper functions to access driver private data. */ |
102 | static inline void *video_get_drvdata(struct video_device *dev) | 92 | static inline void *video_get_drvdata(struct video_device *dev) |
103 | { | 93 | { |
104 | return dev->priv; | 94 | return dev_get_drvdata(&dev->dev); |
105 | } | 95 | } |
106 | 96 | ||
107 | static inline void video_set_drvdata(struct video_device *dev, void *data) | 97 | static inline void video_set_drvdata(struct video_device *dev, void *data) |
108 | { | 98 | { |
109 | dev->priv = data; | 99 | dev_set_drvdata(&dev->dev, data); |
110 | } | 100 | } |
111 | 101 | ||
112 | /* Obsolete stuff - Still needed for radio devices and obsolete drivers */ | 102 | struct video_device *video_devdata(struct file *file); |
113 | extern struct video_device* video_devdata(struct file*); | 103 | |
114 | extern int video_exclusive_open(struct inode *inode, struct file *file); | 104 | /* Combine video_get_drvdata and video_devdata as this is |
115 | extern int video_exclusive_release(struct inode *inode, struct file *file); | 105 | used very often. */ |
116 | #endif | 106 | static inline void *video_drvdata(struct file *file) |
107 | { | ||
108 | return video_get_drvdata(video_devdata(file)); | ||
109 | } | ||
117 | 110 | ||
118 | #endif /* _V4L2_DEV_H */ | 111 | #endif /* _V4L2_DEV_H */ |
diff --git a/include/media/v4l2-i2c-drv-legacy.h b/include/media/v4l2-i2c-drv-legacy.h index 975ffbf4e2c5..e65dd9d84e8b 100644 --- a/include/media/v4l2-i2c-drv-legacy.h +++ b/include/media/v4l2-i2c-drv-legacy.h | |||
@@ -21,6 +21,17 @@ | |||
21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /* NOTE: the full version of this header is in the v4l-dvb repository | ||
25 | * and allows v4l i2c drivers to be compiled on older kernels as well. | ||
26 | * The version of this header as it appears in the kernel is a stripped | ||
27 | * version (without all the backwards compatibility stuff) and so it | ||
28 | * looks a bit odd. | ||
29 | * | ||
30 | * If you look at the full version then you will understand the reason | ||
31 | * for introducing this header since you really don't want to have all | ||
32 | * the tricky backwards compatibility code in each and every i2c driver. | ||
33 | */ | ||
34 | |||
24 | struct v4l2_i2c_driver_data { | 35 | struct v4l2_i2c_driver_data { |
25 | const char * const name; | 36 | const char * const name; |
26 | int driverid; | 37 | int driverid; |
diff --git a/include/media/v4l2-i2c-drv.h b/include/media/v4l2-i2c-drv.h index 40ecef29801d..efdc8bf27f87 100644 --- a/include/media/v4l2-i2c-drv.h +++ b/include/media/v4l2-i2c-drv.h | |||
@@ -21,6 +21,17 @@ | |||
21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /* NOTE: the full version of this header is in the v4l-dvb repository | ||
25 | * and allows v4l i2c drivers to be compiled on older kernels as well. | ||
26 | * The version of this header as it appears in the kernel is a stripped | ||
27 | * version (without all the backwards compatibility stuff) and so it | ||
28 | * looks a bit odd. | ||
29 | * | ||
30 | * If you look at the full version then you will understand the reason | ||
31 | * for introducing this header since you really don't want to have all | ||
32 | * the tricky backwards compatibility code in each and every i2c driver. | ||
33 | */ | ||
34 | |||
24 | #ifndef __V4L2_I2C_DRV_H__ | 35 | #ifndef __V4L2_I2C_DRV_H__ |
25 | #define __V4L2_I2C_DRV_H__ | 36 | #define __V4L2_I2C_DRV_H__ |
26 | 37 | ||
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h index dc6404618555..0bef03add796 100644 --- a/include/media/v4l2-ioctl.h +++ b/include/media/v4l2-ioctl.h | |||
@@ -39,11 +39,6 @@ struct v4l2_ioctl_ops { | |||
39 | struct v4l2_fmtdesc *f); | 39 | struct v4l2_fmtdesc *f); |
40 | int (*vidioc_enum_fmt_vid_out) (struct file *file, void *fh, | 40 | int (*vidioc_enum_fmt_vid_out) (struct file *file, void *fh, |
41 | struct v4l2_fmtdesc *f); | 41 | struct v4l2_fmtdesc *f); |
42 | #if 1 | ||
43 | /* deprecated, will be removed in 2.6.28 */ | ||
44 | int (*vidioc_enum_fmt_vbi_cap) (struct file *file, void *fh, | ||
45 | struct v4l2_fmtdesc *f); | ||
46 | #endif | ||
47 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, | 42 | int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh, |
48 | struct v4l2_fmtdesc *f); | 43 | struct v4l2_fmtdesc *f); |
49 | 44 | ||
diff --git a/include/media/videobuf-dvb.h b/include/media/videobuf-dvb.h index b77748696329..80471c2b6343 100644 --- a/include/media/videobuf-dvb.h +++ b/include/media/videobuf-dvb.h | |||
@@ -16,7 +16,6 @@ struct videobuf_dvb { | |||
16 | int nfeeds; | 16 | int nfeeds; |
17 | 17 | ||
18 | /* videobuf_dvb_(un)register manges this */ | 18 | /* videobuf_dvb_(un)register manges this */ |
19 | struct dvb_adapter adapter; | ||
20 | struct dvb_demux demux; | 19 | struct dvb_demux demux; |
21 | struct dmxdev dmxdev; | 20 | struct dmxdev dmxdev; |
22 | struct dmx_frontend fe_hw; | 21 | struct dmx_frontend fe_hw; |
@@ -24,12 +23,34 @@ struct videobuf_dvb { | |||
24 | struct dvb_net net; | 23 | struct dvb_net net; |
25 | }; | 24 | }; |
26 | 25 | ||
27 | int videobuf_dvb_register(struct videobuf_dvb *dvb, | 26 | struct videobuf_dvb_frontend { |
27 | struct list_head felist; | ||
28 | int id; | ||
29 | struct videobuf_dvb dvb; | ||
30 | }; | ||
31 | |||
32 | struct videobuf_dvb_frontends { | ||
33 | struct list_head felist; | ||
34 | struct mutex lock; | ||
35 | struct dvb_adapter adapter; | ||
36 | int active_fe_id; /* Indicates which frontend in the felist is in use */ | ||
37 | int gate; /* Frontend with gate control 0=!MFE,1=fe0,2=fe1 etc */ | ||
38 | }; | ||
39 | |||
40 | int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f, | ||
28 | struct module *module, | 41 | struct module *module, |
29 | void *adapter_priv, | 42 | void *adapter_priv, |
30 | struct device *device, | 43 | struct device *device, |
31 | short *adapter_nr); | 44 | short *adapter_nr, |
32 | void videobuf_dvb_unregister(struct videobuf_dvb *dvb); | 45 | int mfe_shared); |
46 | |||
47 | void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f); | ||
48 | |||
49 | struct videobuf_dvb_frontend * videobuf_dvb_alloc_frontend(struct videobuf_dvb_frontends *f, int id); | ||
50 | |||
51 | struct videobuf_dvb_frontend * videobuf_dvb_get_frontend(struct videobuf_dvb_frontends *f, int id); | ||
52 | int videobuf_dvb_find_frontend(struct videobuf_dvb_frontends *f, struct dvb_frontend *p); | ||
53 | |||
33 | 54 | ||
34 | /* | 55 | /* |
35 | * Local variables: | 56 | * Local variables: |