[media] v4l2-dv-timings: export the timings list
authorHans Verkuil <hans.verkuil@cisco.com>
Mon, 19 Aug 2013 13:19:54 +0000 (10:19 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Sat, 24 Aug 2013 07:28:05 +0000 (04:28 -0300)
Some drivers need to be able to access the full list of timings.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/v4l2-core/v4l2-dv-timings.c
include/media/v4l2-dv-timings.h

index c2f5af7acbedb89227cbe036daa1230b5067973c..f515997a734126358fc7e44b2ea34bc60c3a29e4 100644 (file)
@@ -26,7 +26,7 @@
 #include <linux/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_720X480I59_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_2560X1600P85,
        V4L2_DV_BT_DMT_2560X1600P120_RB,
+       { }
 };
+EXPORT_SYMBOL_GPL(v4l2_dv_timings_presets);
 
 bool v4l2_dv_valid_timings(const struct v4l2_dv_timings *t,
                           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;
 
        memset(t->reserved, 0, sizeof(t->reserved));
-       for (i = idx = 0; i < ARRAY_SIZE(timings); i++) {
-               if (v4l2_dv_valid_timings(timings + i, cap) &&
+       for (i = idx = 0; v4l2_dv_timings_presets[i].bt.width; i++) {
+               if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
                    idx++ == t->index) {
-                       t->timings = timings[i];
+                       t->timings = v4l2_dv_timings_presets[i];
                        return 0;
                }
        }
@@ -179,10 +181,10 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t,
        if (!v4l2_dv_valid_timings(t, cap))
                return false;
 
-       for (i = 0; i < ARRAY_SIZE(timings); i++) {
-               if (v4l2_dv_valid_timings(timings + i, cap) &&
-                   v4l2_match_dv_timings(t, timings + i, pclock_delta)) {
-                       *t = timings[i];
+       for (i = 0; i < v4l2_dv_timings_presets[i].bt.width; i++) {
+               if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
+                   v4l2_match_dv_timings(t, v4l2_dv_timings_presets + i, pclock_delta)) {
+                       *t = v4l2_dv_timings_presets[i];
                        return true;
                }
        }
index 43f6b67af1cbecac7cee9dc20ea7884d48d62e3d..0fe310b8bc809dc889e3deb6a49560a87256c568 100644 (file)
 
 #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?
   * @t:          the v4l2_dv_timings struct.
   * @cap: the v4l2_dv_timings_cap capabilities.