aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil@xs4all.nl>2010-05-09 05:44:16 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-06-01 00:21:48 -0400
commit283d637bbd7301c9fb2236103b990b9d66099d78 (patch)
treed233994df83847081e917d1b24898bdeaae3a544 /drivers/media
parentf1a4435f3efa510760adf6acb87c62653de9a0ee (diff)
V4L/DVB: tvp514x: simplify try/g/s_fmt handling
Since there is only one possible format just have all three calls do the same. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Reviewed-by: Vaibhav Hiremath <hvaibhav@ti.com> Tested-by: Vaibhav Hiremath <hvaibhav@ti.com> Acked-by: Vaibhav Hiremath <hvaibhav@ti.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/tvp514x.c98
1 files changed, 9 insertions, 89 deletions
diff --git a/drivers/media/video/tvp514x.c b/drivers/media/video/tvp514x.c
index bb5df5176377..71c73fa0d68c 100644
--- a/drivers/media/video/tvp514x.c
+++ b/drivers/media/video/tvp514x.c
@@ -88,7 +88,6 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
88 * @pdata: Board specific 88 * @pdata: Board specific
89 * @ver: Chip version 89 * @ver: Chip version
90 * @streaming: TVP5146/47 decoder streaming - enabled or disabled. 90 * @streaming: TVP5146/47 decoder streaming - enabled or disabled.
91 * @pix: Current pixel format
92 * @current_std: Current standard 91 * @current_std: Current standard
93 * @num_stds: Number of standards 92 * @num_stds: Number of standards
94 * @std_list: Standards list 93 * @std_list: Standards list
@@ -103,8 +102,6 @@ struct tvp514x_decoder {
103 int ver; 102 int ver;
104 int streaming; 103 int streaming;
105 104
106 struct v4l2_pix_format pix;
107
108 enum tvp514x_std current_std; 105 enum tvp514x_std current_std;
109 int num_stds; 106 int num_stds;
110 const struct tvp514x_std_info *std_list; 107 const struct tvp514x_std_info *std_list;
@@ -957,16 +954,15 @@ tvp514x_enum_fmt_cap(struct v4l2_subdev *sd, struct v4l2_fmtdesc *fmt)
957} 954}
958 955
959/** 956/**
960 * tvp514x_try_fmt_cap() - V4L2 decoder interface handler for try_fmt 957 * tvp514x_fmt_cap() - V4L2 decoder interface handler for try/s/g_fmt
961 * @sd: pointer to standard V4L2 sub-device structure 958 * @sd: pointer to standard V4L2 sub-device structure
962 * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure 959 * @f: pointer to standard V4L2 VIDIOC_TRY_FMT ioctl structure
963 * 960 *
964 * Implement the VIDIOC_TRY_FMT ioctl for the CAPTURE buffer type. This 961 * Implement the VIDIOC_TRY/S/G_FMT ioctl for the CAPTURE buffer type. This
965 * ioctl is used to negotiate the image capture size and pixel format 962 * ioctl is used to negotiate the image capture size and pixel format.
966 * without actually making it take effect.
967 */ 963 */
968static int 964static int
969tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f) 965tvp514x_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
970{ 966{
971 struct tvp514x_decoder *decoder = to_decoder(sd); 967 struct tvp514x_decoder *decoder = to_decoder(sd);
972 struct v4l2_pix_format *pix; 968 struct v4l2_pix_format *pix;
@@ -976,8 +972,7 @@ tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
976 return -EINVAL; 972 return -EINVAL;
977 973
978 if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) 974 if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
979 /* only capture is supported */ 975 return -EINVAL;
980 f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
981 976
982 pix = &f->fmt.pix; 977 pix = &f->fmt.pix;
983 978
@@ -993,7 +988,7 @@ tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
993 pix->colorspace = V4L2_COLORSPACE_SMPTE170M; 988 pix->colorspace = V4L2_COLORSPACE_SMPTE170M;
994 pix->priv = 0; 989 pix->priv = 0;
995 990
996 v4l2_dbg(1, debug, sd, "Try FMT: bytesperline - %d" 991 v4l2_dbg(1, debug, sd, "FMT: bytesperline - %d"
997 "Width - %d, Height - %d\n", 992 "Width - %d, Height - %d\n",
998 pix->bytesperline, 993 pix->bytesperline,
999 pix->width, pix->height); 994 pix->width, pix->height);
@@ -1001,68 +996,6 @@ tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
1001} 996}
1002 997
1003/** 998/**
1004 * tvp514x_s_fmt_cap() - V4L2 decoder interface handler for s_fmt
1005 * @sd: pointer to standard V4L2 sub-device structure
1006 * @f: pointer to standard V4L2 VIDIOC_S_FMT ioctl structure
1007 *
1008 * If the requested format is supported, configures the HW to use that
1009 * format, returns error code if format not supported or HW can't be
1010 * correctly configured.
1011 */
1012static int
1013tvp514x_s_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
1014{
1015 struct tvp514x_decoder *decoder = to_decoder(sd);
1016 struct v4l2_pix_format *pix;
1017 int rval;
1018
1019 if (f == NULL)
1020 return -EINVAL;
1021
1022 if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1023 /* only capture is supported */
1024 return -EINVAL;
1025
1026 pix = &f->fmt.pix;
1027 rval = tvp514x_try_fmt_cap(sd, f);
1028 if (rval)
1029 return rval;
1030
1031 decoder->pix = *pix;
1032
1033 return rval;
1034}
1035
1036/**
1037 * tvp514x_g_fmt_cap() - V4L2 decoder interface handler for tvp514x_g_fmt_cap
1038 * @sd: pointer to standard V4L2 sub-device structure
1039 * @f: pointer to standard V4L2 v4l2_format structure
1040 *
1041 * Returns the decoder's current pixel format in the v4l2_format
1042 * parameter.
1043 */
1044static int
1045tvp514x_g_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
1046{
1047 struct tvp514x_decoder *decoder = to_decoder(sd);
1048
1049 if (f == NULL)
1050 return -EINVAL;
1051
1052 if (f->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
1053 /* only capture is supported */
1054 return -EINVAL;
1055
1056 f->fmt.pix = decoder->pix;
1057
1058 v4l2_dbg(1, debug, sd, "Current FMT: bytesperline - %d"
1059 "Width - %d, Height - %d\n",
1060 decoder->pix.bytesperline,
1061 decoder->pix.width, decoder->pix.height);
1062 return 0;
1063}
1064
1065/**
1066 * tvp514x_g_parm() - V4L2 decoder interface handler for g_parm 999 * tvp514x_g_parm() - V4L2 decoder interface handler for g_parm
1067 * @sd: pointer to standard V4L2 sub-device structure 1000 * @sd: pointer to standard V4L2 sub-device structure
1068 * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure 1001 * @a: pointer to standard V4L2 VIDIOC_G_PARM ioctl structure
@@ -1199,9 +1132,9 @@ static const struct v4l2_subdev_video_ops tvp514x_video_ops = {
1199 .s_routing = tvp514x_s_routing, 1132 .s_routing = tvp514x_s_routing,
1200 .querystd = tvp514x_querystd, 1133 .querystd = tvp514x_querystd,
1201 .enum_fmt = tvp514x_enum_fmt_cap, 1134 .enum_fmt = tvp514x_enum_fmt_cap,
1202 .g_fmt = tvp514x_g_fmt_cap, 1135 .g_fmt = tvp514x_fmt_cap,
1203 .try_fmt = tvp514x_try_fmt_cap, 1136 .try_fmt = tvp514x_fmt_cap,
1204 .s_fmt = tvp514x_s_fmt_cap, 1137 .s_fmt = tvp514x_fmt_cap,
1205 .g_parm = tvp514x_g_parm, 1138 .g_parm = tvp514x_g_parm,
1206 .s_parm = tvp514x_s_parm, 1139 .s_parm = tvp514x_s_parm,
1207 .s_stream = tvp514x_s_stream, 1140 .s_stream = tvp514x_s_stream,
@@ -1214,19 +1147,6 @@ static const struct v4l2_subdev_ops tvp514x_ops = {
1214 1147
1215static struct tvp514x_decoder tvp514x_dev = { 1148static struct tvp514x_decoder tvp514x_dev = {
1216 .streaming = 0, 1149 .streaming = 0,
1217
1218 .pix = {
1219 /* Default to NTSC 8-bit YUV 422 */
1220 .width = NTSC_NUM_ACTIVE_PIXELS,
1221 .height = NTSC_NUM_ACTIVE_LINES,
1222 .pixelformat = V4L2_PIX_FMT_UYVY,
1223 .field = V4L2_FIELD_INTERLACED,
1224 .bytesperline = NTSC_NUM_ACTIVE_PIXELS * 2,
1225 .sizeimage =
1226 NTSC_NUM_ACTIVE_PIXELS * 2 * NTSC_NUM_ACTIVE_LINES,
1227 .colorspace = V4L2_COLORSPACE_SMPTE170M,
1228 },
1229
1230 .current_std = STD_NTSC_MJ, 1150 .current_std = STD_NTSC_MJ,
1231 .std_list = tvp514x_std_list, 1151 .std_list = tvp514x_std_list,
1232 .num_stds = ARRAY_SIZE(tvp514x_std_list), 1152 .num_stds = ARRAY_SIZE(tvp514x_std_list),