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

V4L/DVB (10544): v4l2-common: add comments warning that about the sort order

Control arrays as are used with v4l2_ctrl_next must be sorted from
low to high. Add a comment at the top of all such arrays to warn
about this.
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 1b6f1d96
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "cx18-mailbox.h" #include "cx18-mailbox.h"
#include "cx18-controls.h" #include "cx18-controls.h"
/* Must be sorted from low to high control ID! */
static const u32 user_ctrls[] = { static const u32 user_ctrls[] = {
V4L2_CID_USER_CLASS, V4L2_CID_USER_CLASS,
V4L2_CID_BRIGHTNESS, V4L2_CID_BRIGHTNESS,
......
...@@ -38,6 +38,7 @@ static int debug; ...@@ -38,6 +38,7 @@ static int debug;
module_param(debug, int, 0644); module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Debug level (0-1)"); MODULE_PARM_DESC(debug, "Debug level (0-1)");
/* Must be sorted from low to high control ID! */
const u32 cx2341x_mpeg_ctrls[] = { const u32 cx2341x_mpeg_ctrls[] = {
V4L2_CID_MPEG_CLASS, V4L2_CID_MPEG_CLASS,
V4L2_CID_MPEG_STREAM_TYPE, V4L2_CID_MPEG_STREAM_TYPE,
......
...@@ -244,6 +244,7 @@ static struct cx23885_ctrl cx23885_ctls[] = { ...@@ -244,6 +244,7 @@ static struct cx23885_ctrl cx23885_ctls[] = {
}; };
static const int CX23885_CTLS = ARRAY_SIZE(cx23885_ctls); static const int CX23885_CTLS = ARRAY_SIZE(cx23885_ctls);
/* Must be sorted from low to high control ID! */
static const u32 cx23885_user_ctrls[] = { static const u32 cx23885_user_ctrls[] = {
V4L2_CID_USER_CLASS, V4L2_CID_USER_CLASS,
V4L2_CID_BRIGHTNESS, V4L2_CID_BRIGHTNESS,
......
...@@ -298,6 +298,7 @@ static struct cx88_ctrl cx8800_ctls[] = { ...@@ -298,6 +298,7 @@ static struct cx88_ctrl cx8800_ctls[] = {
}; };
static const int CX8800_CTLS = ARRAY_SIZE(cx8800_ctls); static const int CX8800_CTLS = ARRAY_SIZE(cx8800_ctls);
/* Must be sorted from low to high control ID! */
const u32 cx88_user_ctrls[] = { const u32 cx88_user_ctrls[] = {
V4L2_CID_USER_CLASS, V4L2_CID_USER_CLASS,
V4L2_CID_BRIGHTNESS, V4L2_CID_BRIGHTNESS,
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "ivtv-mailbox.h" #include "ivtv-mailbox.h"
#include "ivtv-controls.h" #include "ivtv-controls.h"
/* Must be sorted from low to high control ID! */
static const u32 user_ctrls[] = { static const u32 user_ctrls[] = {
V4L2_CID_USER_CLASS, V4L2_CID_USER_CLASS,
V4L2_CID_BRIGHTNESS, V4L2_CID_BRIGHTNESS,
......
...@@ -352,6 +352,7 @@ static int empress_s_ctrl(struct file *file, void *priv, ...@@ -352,6 +352,7 @@ static int empress_s_ctrl(struct file *file, void *priv,
static int empress_queryctrl(struct file *file, void *priv, static int empress_queryctrl(struct file *file, void *priv,
struct v4l2_queryctrl *c) struct v4l2_queryctrl *c)
{ {
/* Must be sorted from low to high control ID! */
static const u32 user_ctrls[] = { static const u32 user_ctrls[] = {
V4L2_CID_USER_CLASS, V4L2_CID_USER_CLASS,
V4L2_CID_BRIGHTNESS, V4L2_CID_BRIGHTNESS,
...@@ -364,6 +365,7 @@ static int empress_queryctrl(struct file *file, void *priv, ...@@ -364,6 +365,7 @@ static int empress_queryctrl(struct file *file, void *priv,
0 0
}; };
/* Must be sorted from low to high control ID! */
static const u32 mpeg_ctrls[] = { static const u32 mpeg_ctrls[] = {
V4L2_CID_MPEG_CLASS, V4L2_CID_MPEG_CLASS,
V4L2_CID_MPEG_STREAM_TYPE, V4L2_CID_MPEG_STREAM_TYPE,
......
...@@ -749,7 +749,7 @@ EXPORT_SYMBOL(v4l2_ctrl_query_menu_valid_items); ...@@ -749,7 +749,7 @@ EXPORT_SYMBOL(v4l2_ctrl_query_menu_valid_items);
/* ctrl_classes points to an array of u32 pointers, the last element is /* ctrl_classes points to an array of u32 pointers, the last element is
a NULL pointer. Each u32 array is a 0-terminated array of control IDs. a NULL pointer. Each u32 array is a 0-terminated array of control IDs.
Each array must be sorted low to high and belong to the same control Each array must be sorted low to high and belong to the same control
class. The array of u32 pointer must also be sorted, from low class IDs class. The array of u32 pointers must also be sorted, from low class IDs
to high class IDs. to high class IDs.
This function returns the first ID that follows after the given ID. This function returns the first ID that follows after the given ID.
......
...@@ -107,6 +107,11 @@ int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu, ...@@ -107,6 +107,11 @@ int v4l2_ctrl_query_menu(struct v4l2_querymenu *qmenu,
struct v4l2_queryctrl *qctrl, const char **menu_items); struct v4l2_queryctrl *qctrl, const char **menu_items);
#define V4L2_CTRL_MENU_IDS_END (0xffffffff) #define V4L2_CTRL_MENU_IDS_END (0xffffffff)
int v4l2_ctrl_query_menu_valid_items(struct v4l2_querymenu *qmenu, const u32 *ids); int v4l2_ctrl_query_menu_valid_items(struct v4l2_querymenu *qmenu, const u32 *ids);
/* Note: ctrl_classes points to an array of u32 pointers. Each u32 array is a
0-terminated array of control IDs. Each array must be sorted low to high
and belong to the same control class. The array of u32 pointers must also
be sorted, from low class IDs to high class IDs. */
u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 id); u32 v4l2_ctrl_next(const u32 * const *ctrl_classes, u32 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