Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+10 −8
Original line number Original line Diff line number Diff line
@@ -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[] = {
	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,
	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,
	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;
		}
		}
	}
	}
+4 −0
Original line number Original line Diff line number Diff line
@@ -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.