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

[media] v4l2-dv-timings: export the timings list

Some drivers need to be able to access the full list of timings.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 074ca43f
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <linux/v4l2-dv-timings.h> #include <linux/v4l2-dv-timings.h>
#include <media/v4l2-dv-timings.h> #include <media/v4l2-dv-timings.h>
static const struct v4l2_dv_timings timings[] = { const struct v4l2_dv_timings v4l2_dv_timings_presets[] = {
V4L2_DV_BT_CEA_640X480P59_94, V4L2_DV_BT_CEA_640X480P59_94,
V4L2_DV_BT_CEA_720X480I59_94, V4L2_DV_BT_CEA_720X480I59_94,
V4L2_DV_BT_CEA_720X480P59_94, V4L2_DV_BT_CEA_720X480P59_94,
...@@ -127,7 +127,9 @@ static const struct v4l2_dv_timings timings[] = { ...@@ -127,7 +127,9 @@ static const struct v4l2_dv_timings timings[] = {
V4L2_DV_BT_DMT_2560X1600P75, V4L2_DV_BT_DMT_2560X1600P75,
V4L2_DV_BT_DMT_2560X1600P85, V4L2_DV_BT_DMT_2560X1600P85,
V4L2_DV_BT_DMT_2560X1600P120_RB, V4L2_DV_BT_DMT_2560X1600P120_RB,
{ }
}; };
EXPORT_SYMBOL_GPL(v4l2_dv_timings_presets);
bool v4l2_dv_valid_timings(const struct v4l2_dv_timings *t, bool v4l2_dv_valid_timings(const struct v4l2_dv_timings *t,
const struct v4l2_dv_timings_cap *dvcap) const struct v4l2_dv_timings_cap *dvcap)
...@@ -159,10 +161,10 @@ int v4l2_enum_dv_timings_cap(struct v4l2_enum_dv_timings *t, ...@@ -159,10 +161,10 @@ int v4l2_enum_dv_timings_cap(struct v4l2_enum_dv_timings *t,
u32 i, idx; u32 i, idx;
memset(t->reserved, 0, sizeof(t->reserved)); memset(t->reserved, 0, sizeof(t->reserved));
for (i = idx = 0; i < ARRAY_SIZE(timings); i++) { for (i = idx = 0; v4l2_dv_timings_presets[i].bt.width; i++) {
if (v4l2_dv_valid_timings(timings + i, cap) && if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
idx++ == t->index) { idx++ == t->index) {
t->timings = timings[i]; t->timings = v4l2_dv_timings_presets[i];
return 0; return 0;
} }
} }
...@@ -179,10 +181,10 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t, ...@@ -179,10 +181,10 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t,
if (!v4l2_dv_valid_timings(t, cap)) if (!v4l2_dv_valid_timings(t, cap))
return false; return false;
for (i = 0; i < ARRAY_SIZE(timings); i++) { for (i = 0; i < v4l2_dv_timings_presets[i].bt.width; i++) {
if (v4l2_dv_valid_timings(timings + i, cap) && if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
v4l2_match_dv_timings(t, timings + i, pclock_delta)) { v4l2_match_dv_timings(t, v4l2_dv_timings_presets + i, pclock_delta)) {
*t = timings[i]; *t = v4l2_dv_timings_presets[i];
return true; return true;
} }
} }
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
#include <linux/videodev2.h> #include <linux/videodev2.h>
/** v4l2_dv_timings_presets: list of all dv_timings presets.
*/
extern const struct v4l2_dv_timings v4l2_dv_timings_presets[];
/** v4l2_dv_valid_timings() - are these timings valid? /** v4l2_dv_valid_timings() - are these timings valid?
* @t: the v4l2_dv_timings struct. * @t: the v4l2_dv_timings struct.
* @cap: the v4l2_dv_timings_cap capabilities. * @cap: the v4l2_dv_timings_cap capabilities.
......
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