Ver Fonte

V4L/DVB (5883): V4L: Fix a compile warning on non-32-bit machines.

Fix a compile warning on non-32-bit machines in v4l2-int-device.h.
Add internal ioctl interface fallback function for ioctls with one
argument.

Signed-off-by: Sakari Ailus <sakari.ailus@nokia.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Sakari Ailus há 18 anos atrás
pai
commit
63116febb9
2 ficheiros alterados com 20 adições e 10 exclusões
  1. 19 9
      drivers/media/video/v4l2-int-device.c
  2. 1 1
      include/media/v4l2-int-device.h

+ 19 - 9
drivers/media/video/v4l2-int-device.c

@@ -115,13 +115,9 @@ void v4l2_int_device_unregister(struct v4l2_int_device *d)
 	mutex_unlock(&mutex);
 }
 
-static int no_such_ioctl(struct v4l2_int_device *d)
-{
-	return -EINVAL;
-}
-
 /* Adapted from search_extable in extable.c. */
-static v4l2_int_ioctl_func *find_ioctl(struct v4l2_int_slave *slave, int cmd)
+static v4l2_int_ioctl_func *find_ioctl(struct v4l2_int_slave *slave, int cmd,
+				       v4l2_int_ioctl_func *no_such_ioctl)
 {
 	const struct v4l2_int_ioctl_desc *first = slave->ioctls;
 	const struct v4l2_int_ioctl_desc *last =
@@ -140,15 +136,29 @@ static v4l2_int_ioctl_func *find_ioctl(struct v4l2_int_slave *slave, int cmd)
 			return mid->func;
 	}
 
-	return &no_such_ioctl;
+	return no_such_ioctl;
+}
+
+static int no_such_ioctl_0(struct v4l2_int_device *d)
+{
+	return -EINVAL;
 }
 
 int v4l2_int_ioctl_0(struct v4l2_int_device *d, int cmd)
 {
-	return ((v4l2_int_ioctl_func_0 *)find_ioctl(d->u.slave, cmd))(d);
+	return ((v4l2_int_ioctl_func_0 *)
+		find_ioctl(d->u.slave, cmd,
+			   (v4l2_int_ioctl_func *)&no_such_ioctl_0))(d);
+}
+
+static int no_such_ioctl_1(struct v4l2_int_device *d, void *arg)
+{
+	return -EINVAL;
 }
 
 int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg)
 {
-	return ((v4l2_int_ioctl_func_1 *)find_ioctl(d->u.slave, cmd))(d, arg);
+	return ((v4l2_int_ioctl_func_1 *)
+		find_ioctl(d->u.slave, cmd,
+			   (v4l2_int_ioctl_func *)&no_such_ioctl_1))(d, arg);
 }

+ 1 - 1
include/media/v4l2-int-device.h

@@ -170,7 +170,7 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg);
 					    arg_type asterisk arg)	\
 	{								\
 		return v4l2_int_ioctl_1(d, vidioc_int_##name##_num,	\
-					(void *)arg);			\
+					(void *)(unsigned long)arg);	\
 	}								\
 									\
 	static inline struct v4l2_int_ioctl_desc			\