Commit 0598c17b authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] vpif: replace preset with the timings API

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarLad, Prabhakar <prabhakar.lad@ti.com>
Signed-off-by: default avatarManjunath Hadli <manjunath.hadli@ti.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e34db066
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/v4l2-dv-timings.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include "vpif.h" #include "vpif.h"
...@@ -65,7 +67,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -65,7 +67,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_480P59_94, .dv_timings = V4L2_DV_BT_CEA_720X480P59_94,
}, },
{ {
.name = "576p50", .name = "576p50",
...@@ -82,7 +84,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -82,7 +84,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_576P50, .dv_timings = V4L2_DV_BT_CEA_720X576P50,
}, },
{ {
.name = "720p50", .name = "720p50",
...@@ -99,7 +101,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -99,7 +101,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_720P50, .dv_timings = V4L2_DV_BT_CEA_1280X720P50,
}, },
{ {
.name = "720p60", .name = "720p60",
...@@ -116,7 +118,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -116,7 +118,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_720P60, .dv_timings = V4L2_DV_BT_CEA_1280X720P60,
}, },
{ {
.name = "1080I50", .name = "1080I50",
...@@ -136,7 +138,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -136,7 +138,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_1080I50, .dv_timings = V4L2_DV_BT_CEA_1920X1080I50,
}, },
{ {
.name = "1080I60", .name = "1080I60",
...@@ -156,7 +158,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -156,7 +158,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_1080I60, .dv_timings = V4L2_DV_BT_CEA_1920X1080I60,
}, },
{ {
.name = "1080p60", .name = "1080p60",
...@@ -173,7 +175,7 @@ const struct vpif_channel_config_params ch_params[] = { ...@@ -173,7 +175,7 @@ const struct vpif_channel_config_params ch_params[] = {
.capture_format = 0, .capture_format = 0,
.vbi_supported = 0, .vbi_supported = 0,
.hd_sd = 1, .hd_sd = 1,
.dv_preset = V4L2_DV_1080P60, .dv_timings = V4L2_DV_BT_CEA_1920X1080P60,
}, },
/* SDTV formats */ /* SDTV formats */
......
...@@ -533,7 +533,7 @@ static inline void channel2_clipping_enable(int enable) ...@@ -533,7 +533,7 @@ static inline void channel2_clipping_enable(int enable)
} }
} }
/* function to enable clipping (for both active and blanking regions) on ch 2 */ /* function to enable clipping (for both active and blanking regions) on ch 3 */
static inline void channel3_clipping_enable(int enable) static inline void channel3_clipping_enable(int enable)
{ {
if (enable) { if (enable) {
...@@ -634,7 +634,7 @@ struct vpif_channel_config_params { ...@@ -634,7 +634,7 @@ struct vpif_channel_config_params {
* supports capturing vbi or not */ * supports capturing vbi or not */
u8 hd_sd; /* HDTV (1) or SDTV (0) format */ u8 hd_sd; /* HDTV (1) or SDTV (0) format */
v4l2_std_id stdid; /* SDTV format */ v4l2_std_id stdid; /* SDTV format */
u32 dv_preset; /* HDTV format */ struct v4l2_dv_timings dv_timings; /* HDTV format */
}; };
extern const unsigned int vpif_ch_params_count; extern const unsigned int vpif_ch_params_count;
......
...@@ -551,7 +551,8 @@ static int vpif_update_std_info(struct channel_obj *ch) ...@@ -551,7 +551,8 @@ static int vpif_update_std_info(struct channel_obj *ch)
} }
} else { } else {
vpif_dbg(2, debug, "HD format\n"); vpif_dbg(2, debug, "HD format\n");
if (config->dv_preset == vid_ch->dv_preset) { if (!memcmp(&config->dv_timings, &vid_ch->dv_timings,
sizeof(vid_ch->dv_timings))) {
memcpy(std_info, config, sizeof(*config)); memcpy(std_info, config, sizeof(*config));
break; break;
} }
...@@ -1384,8 +1385,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id *std_id) ...@@ -1384,8 +1385,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id *std_id)
/* Call encoder subdevice function to set the standard */ /* Call encoder subdevice function to set the standard */
ch->video.stdid = *std_id; ch->video.stdid = *std_id;
ch->video.dv_preset = V4L2_DV_INVALID; memset(&ch->video.dv_timings, 0, sizeof(ch->video.dv_timings));
memset(&ch->video.bt_timings, 0, sizeof(ch->video.bt_timings));
/* Get the information about the standard */ /* Get the information about the standard */
if (vpif_update_std_info(ch)) { if (vpif_update_std_info(ch)) {
...@@ -1719,108 +1719,37 @@ static int vpif_cropcap(struct file *file, void *priv, ...@@ -1719,108 +1719,37 @@ static int vpif_cropcap(struct file *file, void *priv,
} }
/** /**
* vpif_enum_dv_presets() - ENUM_DV_PRESETS handler * vpif_enum_dv_timings() - ENUM_DV_TIMINGS handler
* @file: file ptr * @file: file ptr
* @priv: file handle * @priv: file handle
* @preset: input preset * @timings: input timings
*/ */
static int vpif_enum_dv_presets(struct file *file, void *priv, static int
struct v4l2_dv_enum_preset *preset) vpif_enum_dv_timings(struct file *file, void *priv,
struct v4l2_enum_dv_timings *timings)
{ {
struct vpif_fh *fh = priv; struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel; struct channel_obj *ch = fh->channel;
return v4l2_subdev_call(vpif_obj.sd[ch->curr_sd_index], return v4l2_subdev_call(vpif_obj.sd[ch->curr_sd_index],
video, enum_dv_presets, preset); video, enum_dv_timings, timings);
} }
/** /**
* vpif_query_dv_presets() - QUERY_DV_PRESET handler * vpif_query_dv_timings() - QUERY_DV_TIMINGS handler
* @file: file ptr * @file: file ptr
* @priv: file handle * @priv: file handle
* @preset: input preset * @timings: input timings
*/ */
static int vpif_query_dv_preset(struct file *file, void *priv, static int
struct v4l2_dv_preset *preset) vpif_query_dv_timings(struct file *file, void *priv,
struct v4l2_dv_timings *timings)
{ {
struct vpif_fh *fh = priv; struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel; struct channel_obj *ch = fh->channel;
return v4l2_subdev_call(vpif_obj.sd[ch->curr_sd_index], return v4l2_subdev_call(vpif_obj.sd[ch->curr_sd_index],
video, query_dv_preset, preset); video, query_dv_timings, timings);
}
/**
* vpif_s_dv_presets() - S_DV_PRESETS handler
* @file: file ptr
* @priv: file handle
* @preset: input preset
*/
static int vpif_s_dv_preset(struct file *file, void *priv,
struct v4l2_dv_preset *preset)
{
struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel;
struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
int ret = 0;
if (common->started) {
vpif_dbg(1, debug, "streaming in progress\n");
return -EBUSY;
}
if ((VPIF_CHANNEL0_VIDEO == ch->channel_id) ||
(VPIF_CHANNEL1_VIDEO == ch->channel_id)) {
if (!fh->initialized) {
vpif_dbg(1, debug, "Channel Busy\n");
return -EBUSY;
}
}
ret = v4l2_prio_check(&ch->prio, fh->prio);
if (ret)
return ret;
fh->initialized = 1;
/* Call encoder subdevice function to set the standard */
if (mutex_lock_interruptible(&common->lock))
return -ERESTARTSYS;
ch->video.dv_preset = preset->preset;
ch->video.stdid = V4L2_STD_UNKNOWN;
memset(&ch->video.bt_timings, 0, sizeof(ch->video.bt_timings));
/* Get the information about the standard */
if (vpif_update_std_info(ch)) {
vpif_dbg(1, debug, "Error getting the standard info\n");
ret = -EINVAL;
} else {
/* Configure the default format information */
vpif_config_format(ch);
ret = v4l2_subdev_call(vpif_obj.sd[ch->curr_sd_index],
video, s_dv_preset, preset);
}
mutex_unlock(&common->lock);
return ret;
}
/**
* vpif_g_dv_presets() - G_DV_PRESETS handler
* @file: file ptr
* @priv: file handle
* @preset: input preset
*/
static int vpif_g_dv_preset(struct file *file, void *priv,
struct v4l2_dv_preset *preset)
{
struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel;
preset->preset = ch->video.dv_preset;
return 0;
} }
/** /**
...@@ -1837,7 +1766,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1837,7 +1766,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
struct vpif_params *vpifparams = &ch->vpifparams; struct vpif_params *vpifparams = &ch->vpifparams;
struct vpif_channel_config_params *std_info = &vpifparams->std_info; struct vpif_channel_config_params *std_info = &vpifparams->std_info;
struct video_obj *vid_ch = &ch->video; struct video_obj *vid_ch = &ch->video;
struct v4l2_bt_timings *bt = &vid_ch->bt_timings; struct v4l2_bt_timings *bt = &vid_ch->dv_timings.bt;
int ret; int ret;
if (timings->type != V4L2_DV_BT_656_1120) { if (timings->type != V4L2_DV_BT_656_1120) {
...@@ -1873,7 +1802,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1873,7 +1802,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
return -EINVAL; return -EINVAL;
} }
*bt = timings->bt; vid_ch->dv_timings = *timings;
/* Configure video port timings */ /* Configure video port timings */
...@@ -1916,10 +1845,8 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1916,10 +1845,8 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
std_info->vbi_supported = 0; std_info->vbi_supported = 0;
std_info->hd_sd = 1; std_info->hd_sd = 1;
std_info->stdid = 0; std_info->stdid = 0;
std_info->dv_preset = V4L2_DV_INVALID;
vid_ch->stdid = 0; vid_ch->stdid = 0;
vid_ch->dv_preset = V4L2_DV_INVALID;
return 0; return 0;
} }
...@@ -1935,9 +1862,8 @@ static int vpif_g_dv_timings(struct file *file, void *priv, ...@@ -1935,9 +1862,8 @@ static int vpif_g_dv_timings(struct file *file, void *priv,
struct vpif_fh *fh = priv; struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel; struct channel_obj *ch = fh->channel;
struct video_obj *vid_ch = &ch->video; struct video_obj *vid_ch = &ch->video;
struct v4l2_bt_timings *bt = &vid_ch->bt_timings;
timings->bt = *bt; *timings = vid_ch->dv_timings;
return 0; return 0;
} }
...@@ -2040,10 +1966,8 @@ static const struct v4l2_ioctl_ops vpif_ioctl_ops = { ...@@ -2040,10 +1966,8 @@ static const struct v4l2_ioctl_ops vpif_ioctl_ops = {
.vidioc_streamon = vpif_streamon, .vidioc_streamon = vpif_streamon,
.vidioc_streamoff = vpif_streamoff, .vidioc_streamoff = vpif_streamoff,
.vidioc_cropcap = vpif_cropcap, .vidioc_cropcap = vpif_cropcap,
.vidioc_enum_dv_presets = vpif_enum_dv_presets, .vidioc_enum_dv_timings = vpif_enum_dv_timings,
.vidioc_s_dv_preset = vpif_s_dv_preset, .vidioc_query_dv_timings = vpif_query_dv_timings,
.vidioc_g_dv_preset = vpif_g_dv_preset,
.vidioc_query_dv_preset = vpif_query_dv_preset,
.vidioc_s_dv_timings = vpif_s_dv_timings, .vidioc_s_dv_timings = vpif_s_dv_timings,
.vidioc_g_dv_timings = vpif_g_dv_timings, .vidioc_g_dv_timings = vpif_g_dv_timings,
.vidioc_g_chip_ident = vpif_g_chip_ident, .vidioc_g_chip_ident = vpif_g_chip_ident,
......
...@@ -54,8 +54,7 @@ struct video_obj { ...@@ -54,8 +54,7 @@ struct video_obj {
enum v4l2_field buf_field; enum v4l2_field buf_field;
/* Currently selected or default standard */ /* Currently selected or default standard */
v4l2_std_id stdid; v4l2_std_id stdid;
u32 dv_preset; struct v4l2_dv_timings dv_timings;
struct v4l2_bt_timings bt_timings;
/* This is to track the last input that is passed to application */ /* This is to track the last input that is passed to application */
u32 input_idx; u32 input_idx;
}; };
......
...@@ -499,12 +499,6 @@ static int vpif_update_std_info(struct channel_obj *ch) ...@@ -499,12 +499,6 @@ static int vpif_update_std_info(struct channel_obj *ch)
memcpy(std_info, config, sizeof(*config)); memcpy(std_info, config, sizeof(*config));
break; break;
} }
} else {
vpif_dbg(2, debug, "HD format\n");
if (config->dv_preset == vid_ch->dv_preset) {
memcpy(std_info, config, sizeof(*config));
break;
}
} }
} }
...@@ -523,10 +517,10 @@ static int vpif_update_resolution(struct channel_obj *ch) ...@@ -523,10 +517,10 @@ static int vpif_update_resolution(struct channel_obj *ch)
struct vpif_params *vpifparams = &ch->vpifparams; struct vpif_params *vpifparams = &ch->vpifparams;
struct vpif_channel_config_params *std_info = &vpifparams->std_info; struct vpif_channel_config_params *std_info = &vpifparams->std_info;
if (!vid_ch->stdid && !vid_ch->dv_preset && !vid_ch->bt_timings.height) if (!vid_ch->stdid && !vid_ch->dv_timings.bt.height)
return -EINVAL; return -EINVAL;
if (vid_ch->stdid || vid_ch->dv_preset) { if (vid_ch->stdid) {
if (vpif_update_std_info(ch)) if (vpif_update_std_info(ch))
return -EINVAL; return -EINVAL;
} }
...@@ -1055,9 +1049,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id *std_id) ...@@ -1055,9 +1049,7 @@ static int vpif_s_std(struct file *file, void *priv, v4l2_std_id *std_id)
/* Call encoder subdevice function to set the standard */ /* Call encoder subdevice function to set the standard */
ch->video.stdid = *std_id; ch->video.stdid = *std_id;
ch->video.dv_preset = V4L2_DV_INVALID; memset(&ch->video.dv_timings, 0, sizeof(ch->video.dv_timings));
memset(&ch->video.bt_timings, 0, sizeof(ch->video.bt_timings));
/* Get the information about the standard */ /* Get the information about the standard */
if (vpif_update_resolution(ch)) if (vpif_update_resolution(ch))
return -EINVAL; return -EINVAL;
...@@ -1287,87 +1279,23 @@ static int vpif_s_priority(struct file *file, void *priv, enum v4l2_priority p) ...@@ -1287,87 +1279,23 @@ static int vpif_s_priority(struct file *file, void *priv, enum v4l2_priority p)
} }
/** /**
* vpif_enum_dv_presets() - ENUM_DV_PRESETS handler * vpif_enum_dv_timings() - ENUM_DV_TIMINGS handler
* @file: file ptr * @file: file ptr
* @priv: file handle * @priv: file handle
* @preset: input preset * @timings: input timings
*/ */
static int vpif_enum_dv_presets(struct file *file, void *priv, static int
struct v4l2_dv_enum_preset *preset) vpif_enum_dv_timings(struct file *file, void *priv,
struct v4l2_enum_dv_timings *timings)
{ {
struct vpif_fh *fh = priv; struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel; struct channel_obj *ch = fh->channel;
struct video_obj *vid_ch = &ch->video; struct video_obj *vid_ch = &ch->video;
return v4l2_subdev_call(vpif_obj.sd[vid_ch->output_id], return v4l2_subdev_call(vpif_obj.sd[vid_ch->output_id],
video, enum_dv_presets, preset); video, enum_dv_timings, timings);
} }
/**
* vpif_s_dv_presets() - S_DV_PRESETS handler
* @file: file ptr
* @priv: file handle
* @preset: input preset
*/
static int vpif_s_dv_preset(struct file *file, void *priv,
struct v4l2_dv_preset *preset)
{
struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel;
struct common_obj *common = &ch->common[VPIF_VIDEO_INDEX];
struct video_obj *vid_ch = &ch->video;
int ret = 0;
if (common->started) {
vpif_dbg(1, debug, "streaming in progress\n");
return -EBUSY;
}
ret = v4l2_prio_check(&ch->prio, fh->prio);
if (ret != 0)
return ret;
fh->initialized = 1;
/* Call encoder subdevice function to set the standard */
if (mutex_lock_interruptible(&common->lock))
return -ERESTARTSYS;
ch->video.dv_preset = preset->preset;
ch->video.stdid = V4L2_STD_UNKNOWN;
memset(&ch->video.bt_timings, 0, sizeof(ch->video.bt_timings));
/* Get the information about the standard */
if (vpif_update_resolution(ch)) {
ret = -EINVAL;
} else {
/* Configure the default format information */
vpif_config_format(ch);
ret = v4l2_subdev_call(vpif_obj.sd[vid_ch->output_id],
video, s_dv_preset, preset);
}
mutex_unlock(&common->lock);
return ret;
}
/**
* vpif_g_dv_presets() - G_DV_PRESETS handler
* @file: file ptr
* @priv: file handle
* @preset: input preset
*/
static int vpif_g_dv_preset(struct file *file, void *priv,
struct v4l2_dv_preset *preset)
{
struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel;
preset->preset = ch->video.dv_preset;
return 0;
}
/** /**
* vpif_s_dv_timings() - S_DV_TIMINGS handler * vpif_s_dv_timings() - S_DV_TIMINGS handler
* @file: file ptr * @file: file ptr
...@@ -1382,7 +1310,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1382,7 +1310,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
struct vpif_params *vpifparams = &ch->vpifparams; struct vpif_params *vpifparams = &ch->vpifparams;
struct vpif_channel_config_params *std_info = &vpifparams->std_info; struct vpif_channel_config_params *std_info = &vpifparams->std_info;
struct video_obj *vid_ch = &ch->video; struct video_obj *vid_ch = &ch->video;
struct v4l2_bt_timings *bt = &vid_ch->bt_timings; struct v4l2_bt_timings *bt = &vid_ch->dv_timings.bt;
int ret; int ret;
if (timings->type != V4L2_DV_BT_656_1120) { if (timings->type != V4L2_DV_BT_656_1120) {
...@@ -1418,7 +1346,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1418,7 +1346,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
return -EINVAL; return -EINVAL;
} }
*bt = timings->bt; vid_ch->dv_timings = *timings;
/* Configure video port timings */ /* Configure video port timings */
...@@ -1462,10 +1390,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv, ...@@ -1462,10 +1390,7 @@ static int vpif_s_dv_timings(struct file *file, void *priv,
std_info->vbi_supported = 0; std_info->vbi_supported = 0;
std_info->hd_sd = 1; std_info->hd_sd = 1;
std_info->stdid = 0; std_info->stdid = 0;
std_info->dv_preset = V4L2_DV_INVALID;
vid_ch->stdid = 0; vid_ch->stdid = 0;
vid_ch->dv_preset = V4L2_DV_INVALID;
return 0; return 0;
} }
...@@ -1482,9 +1407,8 @@ static int vpif_g_dv_timings(struct file *file, void *priv, ...@@ -1482,9 +1407,8 @@ static int vpif_g_dv_timings(struct file *file, void *priv,
struct vpif_fh *fh = priv; struct vpif_fh *fh = priv;
struct channel_obj *ch = fh->channel; struct channel_obj *ch = fh->channel;
struct video_obj *vid_ch = &ch->video; struct video_obj *vid_ch = &ch->video;
struct v4l2_bt_timings *bt = &vid_ch->bt_timings;
timings->bt = *bt; *timings = vid_ch->dv_timings;
return 0; return 0;
} }
...@@ -1588,9 +1512,7 @@ static const struct v4l2_ioctl_ops vpif_ioctl_ops = { ...@@ -1588,9 +1512,7 @@ static const struct v4l2_ioctl_ops vpif_ioctl_ops = {
.vidioc_s_output = vpif_s_output, .vidioc_s_output = vpif_s_output,
.vidioc_g_output = vpif_g_output, .vidioc_g_output = vpif_g_output,
.vidioc_cropcap = vpif_cropcap, .vidioc_cropcap = vpif_cropcap,
.vidioc_enum_dv_presets = vpif_enum_dv_presets, .vidioc_enum_dv_timings = vpif_enum_dv_timings,
.vidioc_s_dv_preset = vpif_s_dv_preset,
.vidioc_g_dv_preset = vpif_g_dv_preset,
.vidioc_s_dv_timings = vpif_s_dv_timings, .vidioc_s_dv_timings = vpif_s_dv_timings,
.vidioc_g_dv_timings = vpif_g_dv_timings, .vidioc_g_dv_timings = vpif_g_dv_timings,
.vidioc_g_chip_ident = vpif_g_chip_ident, .vidioc_g_chip_ident = vpif_g_chip_ident,
......
...@@ -62,8 +62,7 @@ struct video_obj { ...@@ -62,8 +62,7 @@ struct video_obj {
* most recent displayed frame only */ * most recent displayed frame only */
v4l2_std_id stdid; /* Currently selected or default v4l2_std_id stdid; /* Currently selected or default
* standard */ * standard */
u32 dv_preset; struct v4l2_dv_timings dv_timings;
struct v4l2_bt_timings bt_timings;
u32 output_id; /* Current output id */ u32 output_id; /* Current output id */
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment