The V4L2_DEV_DEBUG_IOCTL macros actually define a bitmask,
but without using Kernel's modern standards. Also,
documentation looks akward.

So, convert them into an enum with valid bits, adding
the correspoinding kernel-doc documentation for it.

In order to avoid possible conflicts, rename them from
V4L2_DEV_DEBUG_foo to V4L2_DEBUG_foo.

Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
---
 drivers/media/v4l2-core/v4l2-dev.c   | 18 +++++++++---------
 drivers/media/v4l2-core/v4l2-ioctl.c |  7 ++++---
 include/media/v4l2-ioctl.h           | 33 +++++++++++++++++++--------------
 3 files changed, 32 insertions(+), 26 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-dev.c 
b/drivers/media/v4l2-core/v4l2-dev.c
index d5e0e536ef04..ab876ddaa707 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -307,8 +307,8 @@ static ssize_t v4l2_read(struct file *filp, char __user 
*buf,
                return -EINVAL;
        if (video_is_registered(vdev))
                ret = vdev->fops->read(filp, buf, sz, off);
-       if ((vdev->dev_debug & V4L2_DEV_DEBUG_FOP) &&
-           (vdev->dev_debug & V4L2_DEV_DEBUG_STREAMING))
+       if ((vdev->dev_debug & BIT(V4L2_DEBUG_FOP)) &&
+           (vdev->dev_debug & BIT(V4L2_DEBUG_STREAMING)))
                printk(KERN_DEBUG "%s: read: %zd (%d)\n",
                        video_device_node_name(vdev), sz, ret);
        return ret;
@@ -324,8 +324,8 @@ static ssize_t v4l2_write(struct file *filp, const char 
__user *buf,
                return -EINVAL;
        if (video_is_registered(vdev))
                ret = vdev->fops->write(filp, buf, sz, off);
-       if ((vdev->dev_debug & V4L2_DEV_DEBUG_FOP) &&
-           (vdev->dev_debug & V4L2_DEV_DEBUG_STREAMING))
+       if ((vdev->dev_debug & BIT(V4L2_DEBUG_FOP)) &&
+           (vdev->dev_debug & BIT(V4L2_DEBUG_STREAMING)))
                printk(KERN_DEBUG "%s: write: %zd (%d)\n",
                        video_device_node_name(vdev), sz, ret);
        return ret;
@@ -340,7 +340,7 @@ static unsigned int v4l2_poll(struct file *filp, struct 
poll_table_struct *poll)
                return DEFAULT_POLLMASK;
        if (video_is_registered(vdev))
                res = vdev->fops->poll(filp, poll);
-       if (vdev->dev_debug & V4L2_DEV_DEBUG_POLL)
+       if (vdev->dev_debug & BIT(V4L2_DEBUG_POLL))
                printk(KERN_DEBUG "%s: poll: %08x\n",
                        video_device_node_name(vdev), res);
        return res;
@@ -381,7 +381,7 @@ static unsigned long v4l2_get_unmapped_area(struct file 
*filp,
        if (!video_is_registered(vdev))
                return -ENODEV;
        ret = vdev->fops->get_unmapped_area(filp, addr, len, pgoff, flags);
-       if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP)
+       if (vdev->dev_debug & BIT(V4L2_DEBUG_FOP))
                printk(KERN_DEBUG "%s: get_unmapped_area (%d)\n",
                        video_device_node_name(vdev), ret);
        return ret;
@@ -397,7 +397,7 @@ static int v4l2_mmap(struct file *filp, struct 
vm_area_struct *vm)
                return -ENODEV;
        if (video_is_registered(vdev))
                ret = vdev->fops->mmap(filp, vm);
-       if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP)
+       if (vdev->dev_debug & BIT(V4L2_DEBUG_FOP))
                printk(KERN_DEBUG "%s: mmap (%d)\n",
                        video_device_node_name(vdev), ret);
        return ret;
@@ -427,7 +427,7 @@ static int v4l2_open(struct inode *inode, struct file *filp)
                        ret = -ENODEV;
        }
 
-       if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP)
+       if (vdev->dev_debug & BIT(V4L2_DEBUG_FOP))
                printk(KERN_DEBUG "%s: open (%d)\n",
                        video_device_node_name(vdev), ret);
        /* decrease the refcount in case of an error */
@@ -444,7 +444,7 @@ static int v4l2_release(struct inode *inode, struct file 
*filp)
 
        if (vdev->fops->release)
                ret = vdev->fops->release(filp);
-       if (vdev->dev_debug & V4L2_DEV_DEBUG_FOP)
+       if (vdev->dev_debug & BIT(V4L2_DEBUG_FOP))
                printk(KERN_DEBUG "%s: release\n",
                        video_device_node_name(vdev));
 
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c 
b/drivers/media/v4l2-core/v4l2-ioctl.c
index 79614992ee21..cdd1e9470dbe 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -2760,15 +2760,16 @@ static long __video_do_ioctl(struct file *file,
        }
 
 done:
-       if (dev_debug & (V4L2_DEV_DEBUG_IOCTL | V4L2_DEV_DEBUG_IOCTL_ARG)) {
-               if (!(dev_debug & V4L2_DEV_DEBUG_STREAMING) &&
+       if (dev_debug & (BIT(V4L2_DEBUG_IOCTL)
+                        | BIT(V4L2_DEBUG_IOCTL_ARG))) {
+               if (!(dev_debug & BIT(V4L2_DEBUG_STREAMING)) &&
                    (cmd == VIDIOC_QBUF || cmd == VIDIOC_DQBUF))
                        return ret;
 
                v4l_printk_ioctl(video_device_node_name(vfd), cmd);
                if (ret < 0)
                        pr_cont(": error %ld", ret);
-               if (!(dev_debug & V4L2_DEV_DEBUG_IOCTL_ARG))
+               if (!(dev_debug & BIT(V4L2_DEBUG_IOCTL_ARG)))
                        pr_cont("\n");
                else if (_IOC_DIR(cmd) == _IOC_NONE)
                        info->debug(arg, write_only);
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index a7b3f7c75d62..9f8d04ad4bdd 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -589,20 +589,25 @@ struct v4l2_ioctl_ops {
 };
 
 
-/* v4l debugging and diagnostics */
-
-/* Device debug flags to be used with the video device debug attribute */
-
-/* Just log the ioctl name + error code */
-#define V4L2_DEV_DEBUG_IOCTL           0x01
-/* Log the ioctl name arguments + error code */
-#define V4L2_DEV_DEBUG_IOCTL_ARG       0x02
-/* Log the file operations open, release, mmap and get_unmapped_area */
-#define V4L2_DEV_DEBUG_FOP             0x04
-/* Log the read and write file operations and the VIDIOC_(D)QBUF ioctls */
-#define V4L2_DEV_DEBUG_STREAMING       0x08
-/* Log poll() */
-#define V4L2_DEV_DEBUG_POLL            0x10
+/**
+ * enum v4l2_debug_bits - Device debug bits to be used with the video
+ *     device debug attribute
+ *
+ * @V4L2_DEBUG_IOCTL:          Just log the ioctl name + error code.
+ * @V4L2_DEBUG_IOCTL_ARG:      Log the ioctl name arguments + error code.
+ * @V4L2_DEBUG_FOP:            Log the file operations and open, release,
+ *                             mmap and get_unmapped_area syscalls.
+ * @V4L2_DEBUG_STREAMING:      Log the read and write syscalls and
+ *                             :c:ref:`VIDIOC_[Q|DQ]BUF <VIDIOC_QBUF>` ioctls.
+ * @V4L2_DEBUG_POLL:           Log poll syscalls.
+ */
+enum v4l2_debug_bits {
+       V4L2_DEBUG_IOCTL        = 0,
+       V4L2_DEBUG_IOCTL_ARG    = 1,
+       V4L2_DEBUG_FOP          = 2,
+       V4L2_DEBUG_STREAMING    = 3,
+       V4L2_DEBUG_POLL         = 4,
+};
 
 /*  Video standard functions  */
 
-- 
2.14.3

Reply via email to