aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/v4l2-core/v4l2-dv-timings.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-dv-timings.c')
-rw-r--r--drivers/media/v4l2-core/v4l2-dv-timings.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/media/v4l2-core/v4l2-dv-timings.c b/drivers/media/v4l2-core/v4l2-dv-timings.c
index c2f5af7acbed..f515997a7341 100644
--- a/drivers/media/v4l2-core/v4l2-dv-timings.c
+++ b/drivers/media/v4l2-core/v4l2-dv-timings.c
@@ -26,7 +26,7 @@
26#include <linux/v4l2-dv-timings.h> 26#include <linux/v4l2-dv-timings.h>
27#include <media/v4l2-dv-timings.h> 27#include <media/v4l2-dv-timings.h>
28 28
29static const struct v4l2_dv_timings timings[] = { 29const struct v4l2_dv_timings v4l2_dv_timings_presets[] = {
30 V4L2_DV_BT_CEA_640X480P59_94, 30 V4L2_DV_BT_CEA_640X480P59_94,
31 V4L2_DV_BT_CEA_720X480I59_94, 31 V4L2_DV_BT_CEA_720X480I59_94,
32 V4L2_DV_BT_CEA_720X480P59_94, 32 V4L2_DV_BT_CEA_720X480P59_94,
@@ -127,7 +127,9 @@ static const struct v4l2_dv_timings timings[] = {
127 V4L2_DV_BT_DMT_2560X1600P75, 127 V4L2_DV_BT_DMT_2560X1600P75,
128 V4L2_DV_BT_DMT_2560X1600P85, 128 V4L2_DV_BT_DMT_2560X1600P85,
129 V4L2_DV_BT_DMT_2560X1600P120_RB, 129 V4L2_DV_BT_DMT_2560X1600P120_RB,
130 { }
130}; 131};
132EXPORT_SYMBOL_GPL(v4l2_dv_timings_presets);
131 133
132bool v4l2_dv_valid_timings(const struct v4l2_dv_timings *t, 134bool v4l2_dv_valid_timings(const struct v4l2_dv_timings *t,
133 const struct v4l2_dv_timings_cap *dvcap) 135 const struct v4l2_dv_timings_cap *dvcap)
@@ -159,10 +161,10 @@ int v4l2_enum_dv_timings_cap(struct v4l2_enum_dv_timings *t,
159 u32 i, idx; 161 u32 i, idx;
160 162
161 memset(t->reserved, 0, sizeof(t->reserved)); 163 memset(t->reserved, 0, sizeof(t->reserved));
162 for (i = idx = 0; i < ARRAY_SIZE(timings); i++) { 164 for (i = idx = 0; v4l2_dv_timings_presets[i].bt.width; i++) {
163 if (v4l2_dv_valid_timings(timings + i, cap) && 165 if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
164 idx++ == t->index) { 166 idx++ == t->index) {
165 t->timings = timings[i]; 167 t->timings = v4l2_dv_timings_presets[i];
166 return 0; 168 return 0;
167 } 169 }
168 } 170 }
@@ -179,10 +181,10 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t,
179 if (!v4l2_dv_valid_timings(t, cap)) 181 if (!v4l2_dv_valid_timings(t, cap))
180 return false; 182 return false;
181 183
182 for (i = 0; i < ARRAY_SIZE(timings); i++) { 184 for (i = 0; i < v4l2_dv_timings_presets[i].bt.width; i++) {
183 if (v4l2_dv_valid_timings(timings + i, cap) && 185 if (v4l2_dv_valid_timings(v4l2_dv_timings_presets + i, cap) &&
184 v4l2_match_dv_timings(t, timings + i, pclock_delta)) { 186 v4l2_match_dv_timings(t, v4l2_dv_timings_presets + i, pclock_delta)) {
185 *t = timings[i]; 187 *t = v4l2_dv_timings_presets[i];
186 return true; 188 return true;
187 } 189 }
188 } 190 }