aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/tvp514x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/tvp514x.c')
-rw-r--r--drivers/media/video/tvp514x.c45
1 files changed, 9 insertions, 36 deletions
diff --git a/drivers/media/video/tvp514x.c b/drivers/media/video/tvp514x.c
index b802da71311..cb428438413 100644
--- a/drivers/media/video/tvp514x.c
+++ b/drivers/media/video/tvp514x.c
@@ -89,8 +89,6 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
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 91 * @pix: Current pixel format
92 * @num_fmts: Number of formats
93 * @fmt_list: Format list
94 * @current_std: Current standard 92 * @current_std: Current standard
95 * @num_stds: Number of standards 93 * @num_stds: Number of standards
96 * @std_list: Standards list 94 * @std_list: Standards list
@@ -106,8 +104,6 @@ struct tvp514x_decoder {
106 int streaming; 104 int streaming;
107 105
108 struct v4l2_pix_format pix; 106 struct v4l2_pix_format pix;
109 int num_fmts;
110 const struct v4l2_fmtdesc *fmt_list;
111 107
112 enum tvp514x_std current_std; 108 enum tvp514x_std current_std;
113 int num_stds; 109 int num_stds;
@@ -960,27 +956,18 @@ tvp514x_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
960static int 956static int
961tvp514x_enum_fmt_cap(struct v4l2_subdev *sd, struct v4l2_fmtdesc *fmt) 957tvp514x_enum_fmt_cap(struct v4l2_subdev *sd, struct v4l2_fmtdesc *fmt)
962{ 958{
963 struct tvp514x_decoder *decoder = to_decoder(sd); 959 if (fmt == NULL || fmt->index)
964 int index;
965
966 if (fmt == NULL)
967 return -EINVAL;
968
969 index = fmt->index;
970 if ((index >= decoder->num_fmts) || (index < 0))
971 /* Index out of bound */
972 return -EINVAL; 960 return -EINVAL;
973 961
974 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) 962 if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
975 /* only capture is supported */ 963 /* only capture is supported */
976 return -EINVAL; 964 return -EINVAL;
977 965
978 memcpy(fmt, &decoder->fmt_list[index], 966 /* only one format */
979 sizeof(struct v4l2_fmtdesc)); 967 fmt->flags = 0;
980 968 strlcpy(fmt->description, "8-bit UYVY 4:2:2 Format",
981 v4l2_dbg(1, debug, sd, "Current FMT: index - %d (%s)", 969 sizeof(fmt->description));
982 decoder->fmt_list[index].index, 970 fmt->pixelformat = V4L2_PIX_FMT_UYVY;
983 decoder->fmt_list[index].description);
984 return 0; 971 return 0;
985} 972}
986 973
@@ -997,7 +984,6 @@ static int
997tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f) 984tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
998{ 985{
999 struct tvp514x_decoder *decoder = to_decoder(sd); 986 struct tvp514x_decoder *decoder = to_decoder(sd);
1000 int ifmt;
1001 struct v4l2_pix_format *pix; 987 struct v4l2_pix_format *pix;
1002 enum tvp514x_std current_std; 988 enum tvp514x_std current_std;
1003 989
@@ -1013,28 +999,18 @@ tvp514x_try_fmt_cap(struct v4l2_subdev *sd, struct v4l2_format *f)
1013 /* Calculate height and width based on current standard */ 999 /* Calculate height and width based on current standard */
1014 current_std = decoder->current_std; 1000 current_std = decoder->current_std;
1015 1001
1002 pix->pixelformat = V4L2_PIX_FMT_UYVY;
1016 pix->width = decoder->std_list[current_std].width; 1003 pix->width = decoder->std_list[current_std].width;
1017 pix->height = decoder->std_list[current_std].height; 1004 pix->height = decoder->std_list[current_std].height;
1018
1019 for (ifmt = 0; ifmt < decoder->num_fmts; ifmt++) {
1020 if (pix->pixelformat ==
1021 decoder->fmt_list[ifmt].pixelformat)
1022 break;
1023 }
1024 if (ifmt == decoder->num_fmts)
1025 /* None of the format matched, select default */
1026 ifmt = 0;
1027 pix->pixelformat = decoder->fmt_list[ifmt].pixelformat;
1028
1029 pix->field = V4L2_FIELD_INTERLACED; 1005 pix->field = V4L2_FIELD_INTERLACED;
1030 pix->bytesperline = pix->width * 2; 1006 pix->bytesperline = pix->width * 2;
1031 pix->sizeimage = pix->bytesperline * pix->height; 1007 pix->sizeimage = pix->bytesperline * pix->height;
1032 pix->colorspace = V4L2_COLORSPACE_SMPTE170M; 1008 pix->colorspace = V4L2_COLORSPACE_SMPTE170M;
1033 pix->priv = 0; 1009 pix->priv = 0;
1034 1010
1035 v4l2_dbg(1, debug, sd, "Try FMT: pixelformat - %s, bytesperline - %d" 1011 v4l2_dbg(1, debug, sd, "Try FMT: bytesperline - %d"
1036 "Width - %d, Height - %d", 1012 "Width - %d, Height - %d",
1037 decoder->fmt_list[ifmt].description, pix->bytesperline, 1013 pix->bytesperline,
1038 pix->width, pix->height); 1014 pix->width, pix->height);
1039 return 0; 1015 return 0;
1040} 1016}
@@ -1254,9 +1230,6 @@ static const struct v4l2_subdev_ops tvp514x_ops = {
1254static struct tvp514x_decoder tvp514x_dev = { 1230static struct tvp514x_decoder tvp514x_dev = {
1255 .streaming = 0, 1231 .streaming = 0,
1256 1232
1257 .fmt_list = tvp514x_fmt_list,
1258 .num_fmts = ARRAY_SIZE(tvp514x_fmt_list),
1259
1260 .pix = { 1233 .pix = {
1261 /* Default to NTSC 8-bit YUV 422 */ 1234 /* Default to NTSC 8-bit YUV 422 */
1262 .width = NTSC_NUM_ACTIVE_PIXELS, 1235 .width = NTSC_NUM_ACTIVE_PIXELS,