diff options
author | Hans Verkuil <hverkuil@xs4all.nl> | 2006-03-25 07:20:28 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-04-02 03:54:54 -0400 |
commit | 1f8f5fa9b78ce344a03aeb1e6e12fffeb6a4c0c4 (patch) | |
tree | 72d923f9ee76b303debd4a21a50c0a2f516b96f1 | |
parent | 013423588af1950e8eb7a44d80a684fd50174827 (diff) |
V4L/DVB (3607): Implement routing command for saa7115.c
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/video/saa7115.c | 41 | ||||
-rw-r--r-- | include/media/saa7115.h | 37 |
2 files changed, 78 insertions, 0 deletions
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c index f2123d62f1f8..615ec903355a 100644 --- a/drivers/media/video/saa7115.c +++ b/drivers/media/video/saa7115.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/i2c.h> | 40 | #include <linux/i2c.h> |
41 | #include <linux/videodev2.h> | 41 | #include <linux/videodev2.h> |
42 | #include <media/v4l2-common.h> | 42 | #include <media/v4l2-common.h> |
43 | #include <media/saa7115.h> | ||
43 | #include <asm/div64.h> | 44 | #include <asm/div64.h> |
44 | 45 | ||
45 | MODULE_DESCRIPTION("Philips SAA7113/SAA7114/SAA7115 video decoder driver"); | 46 | MODULE_DESCRIPTION("Philips SAA7113/SAA7114/SAA7115 video decoder driver"); |
@@ -1180,6 +1181,46 @@ static int saa7115_command(struct i2c_client *client, unsigned int cmd, void *ar | |||
1180 | state->radio = 1; | 1181 | state->radio = 1; |
1181 | break; | 1182 | break; |
1182 | 1183 | ||
1184 | case VIDIOC_INT_G_VIDEO_ROUTING: | ||
1185 | { | ||
1186 | struct v4l2_routing *route = arg; | ||
1187 | |||
1188 | route->input = state->input; | ||
1189 | route->output = 0; | ||
1190 | break; | ||
1191 | } | ||
1192 | |||
1193 | case VIDIOC_INT_S_VIDEO_ROUTING: | ||
1194 | { | ||
1195 | struct v4l2_routing *route = arg; | ||
1196 | |||
1197 | v4l_dbg(1, debug, client, "decoder set input %d\n", route->input); | ||
1198 | /* saa7113 does not have these inputs */ | ||
1199 | if (state->ident == V4L2_IDENT_SAA7113 && | ||
1200 | (route->input == SAA7115_COMPOSITE4 || | ||
1201 | route->input == SAA7115_COMPOSITE5)) { | ||
1202 | return -EINVAL; | ||
1203 | } | ||
1204 | if (route->input > SAA7115_SVIDEO3) | ||
1205 | return -EINVAL; | ||
1206 | if (state->input == route->input) | ||
1207 | break; | ||
1208 | v4l_dbg(1, debug, client, "now setting %s input\n", | ||
1209 | (route->input >= SAA7115_SVIDEO0) ? "S-Video" : "Composite"); | ||
1210 | state->input = route->input; | ||
1211 | |||
1212 | /* select mode */ | ||
1213 | saa7115_write(client, 0x02, | ||
1214 | (saa7115_read(client, 0x02) & 0xf0) | | ||
1215 | state->input); | ||
1216 | |||
1217 | /* bypass chrominance trap for S-Video modes */ | ||
1218 | saa7115_write(client, 0x09, | ||
1219 | (saa7115_read(client, 0x09) & 0x7f) | | ||
1220 | (state->input >= SAA7115_SVIDEO0 ? 0x80 : 0x0)); | ||
1221 | break; | ||
1222 | } | ||
1223 | |||
1183 | case VIDIOC_G_INPUT: | 1224 | case VIDIOC_G_INPUT: |
1184 | *(int *)arg = state->input; | 1225 | *(int *)arg = state->input; |
1185 | break; | 1226 | break; |
diff --git a/include/media/saa7115.h b/include/media/saa7115.h new file mode 100644 index 000000000000..6b4836f3f057 --- /dev/null +++ b/include/media/saa7115.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | saa7115.h - definition for saa7113/4/5 inputs | ||
3 | |||
4 | Copyright (C) 2006 Hans Verkuil (hverkuil@xs4all.nl) | ||
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 as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _SAA7115_H_ | ||
22 | #define _SAA7115_H_ | ||
23 | |||
24 | /* SAA7113/4/5 HW inputs */ | ||
25 | #define SAA7115_COMPOSITE0 0 | ||
26 | #define SAA7115_COMPOSITE1 1 | ||
27 | #define SAA7115_COMPOSITE2 2 | ||
28 | #define SAA7115_COMPOSITE3 3 | ||
29 | #define SAA7115_COMPOSITE4 4 /* not available for the saa7113 */ | ||
30 | #define SAA7115_COMPOSITE5 5 /* not available for the saa7113 */ | ||
31 | #define SAA7115_SVIDEO0 6 | ||
32 | #define SAA7115_SVIDEO1 7 | ||
33 | #define SAA7115_SVIDEO2 8 | ||
34 | #define SAA7115_SVIDEO3 9 | ||
35 | |||
36 | #endif | ||
37 | |||