* [PATCH 03/37] Remove unneeded version.h includes from include/
[not found] <alpine.LNX.2.00.1106232344480.17688@swampdragon.chaosbits.net>
@ 2011-06-23 21:58 ` Jesper Juhl
2011-06-23 22:15 ` Sage Weil
2011-06-24 11:21 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: " Mauro Carvalho Chehab
2011-06-23 22:11 ` [PATCH 10/37] Remove unneeded version.h includes from drivers/media/dvb/ Jesper Juhl
` (2 subsequent siblings)
3 siblings, 2 replies; 31+ messages in thread
From: Jesper Juhl @ 2011-06-23 21:58 UTC (permalink / raw)
To: LKML; +Cc: trivial, linux-media, ceph-devel, Mauro Carvalho Chehab,
Sage Weil
It was pointed out by 'make versioncheck' that some includes of
linux/version.h were not needed in include/.
This patch removes them.
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
include/linux/ceph/messenger.h | 1 -
include/media/pwc-ioctl.h | 1 -
2 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
index 31d91a6..291aa6e 100644
--- a/include/linux/ceph/messenger.h
+++ b/include/linux/ceph/messenger.h
@@ -6,7 +6,6 @@
#include <linux/net.h>
#include <linux/radix-tree.h>
#include <linux/uio.h>
-#include <linux/version.h>
#include <linux/workqueue.h>
#include "types.h"
diff --git a/include/media/pwc-ioctl.h b/include/media/pwc-ioctl.h
index 0f19779..1ed1e61 100644
--- a/include/media/pwc-ioctl.h
+++ b/include/media/pwc-ioctl.h
@@ -53,7 +53,6 @@
*/
#include <linux/types.h>
-#include <linux/version.h>
/* Enumeration of image sizes */
#define PSZ_SQCIF 0x00
--
1.7.5.2
--
Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 10/37] Remove unneeded version.h includes from drivers/media/dvb/
[not found] <alpine.LNX.2.00.1106232344480.17688@swampdragon.chaosbits.net>
2011-06-23 21:58 ` [PATCH 03/37] Remove unneeded version.h includes from include/ Jesper Juhl
@ 2011-06-23 22:11 ` Jesper Juhl
2011-06-23 22:14 ` [PATCH 11/37] Remove unneeded version.h includes (and add where needed) for drivers/media/radio/ Jesper Juhl
2011-06-23 22:17 ` [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/ Jesper Juhl
3 siblings, 0 replies; 31+ messages in thread
From: Jesper Juhl @ 2011-06-23 22:11 UTC (permalink / raw)
To: LKML
Cc: trivial, Mauro Carvalho Chehab, Devin Heitmueller,
Andreas Oberritter, linux-media
It was pointed out by 'make versioncheck' that some includes of
linux/version.h are not needed in drivers/media/dvb/.
This patch removes them.
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
drivers/media/dvb/frontends/drxd_hard.c | 1 -
drivers/media/dvb/siano/smscoreapi.h | 1 -
2 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/media/dvb/frontends/drxd_hard.c b/drivers/media/dvb/frontends/drxd_hard.c
index ea4c1c3..f132e49 100644
--- a/drivers/media/dvb/frontends/drxd_hard.c
+++ b/drivers/media/dvb/frontends/drxd_hard.c
@@ -28,7 +28,6 @@
#include <linux/delay.h>
#include <linux/firmware.h>
#include <linux/i2c.h>
-#include <linux/version.h>
#include <asm/div64.h>
#include "dvb_frontend.h"
diff --git a/drivers/media/dvb/siano/smscoreapi.h b/drivers/media/dvb/siano/smscoreapi.h
index 8ecadec..c592ae0 100644
--- a/drivers/media/dvb/siano/smscoreapi.h
+++ b/drivers/media/dvb/siano/smscoreapi.h
@@ -22,7 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef __SMS_CORE_API_H__
#define __SMS_CORE_API_H__
-#include <linux/version.h>
#include <linux/device.h>
#include <linux/list.h>
#include <linux/mm.h>
--
1.7.5.2
--
Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH 11/37] Remove unneeded version.h includes (and add where needed) for drivers/media/radio/
[not found] <alpine.LNX.2.00.1106232344480.17688@swampdragon.chaosbits.net>
2011-06-23 21:58 ` [PATCH 03/37] Remove unneeded version.h includes from include/ Jesper Juhl
2011-06-23 22:11 ` [PATCH 10/37] Remove unneeded version.h includes from drivers/media/dvb/ Jesper Juhl
@ 2011-06-23 22:14 ` Jesper Juhl
2011-06-23 22:17 ` [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/ Jesper Juhl
3 siblings, 0 replies; 31+ messages in thread
From: Jesper Juhl @ 2011-06-23 22:14 UTC (permalink / raw)
To: LKML
Cc: trivial, Mauro Carvalho Chehab, linux-media, Joonyoung Shim,
Kyungmin Park, Marek Szyprowski, Hans Verkuil, Arnd Bergmann
It was pointed out by 'make versioncheck' that linux/version.h was not
always being included where needed and sometimes included needlessly
in drivers/media/radio/.
This patch fixes up the includes.
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
drivers/media/radio/si470x/radio-si470x-i2c.c | 1 +
drivers/media/radio/si470x/radio-si470x-usb.c | 1 +
drivers/media/radio/si470x/radio-si470x.h | 1 -
3 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/media/radio/si470x/radio-si470x-i2c.c b/drivers/media/radio/si470x/radio-si470x-i2c.c
index a2a6777..2c7700f 100644
--- a/drivers/media/radio/si470x/radio-si470x-i2c.c
+++ b/drivers/media/radio/si470x/radio-si470x-i2c.c
@@ -23,6 +23,7 @@
/* driver definitions */
+#include <linux/version.h>
#define DRIVER_AUTHOR "Joonyoung Shim <jy0922.shim@samsung.com>";
#define DRIVER_KERNEL_VERSION KERNEL_VERSION(1, 0, 1)
#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
diff --git a/drivers/media/radio/si470x/radio-si470x-usb.c b/drivers/media/radio/si470x/radio-si470x-usb.c
index 392e84f..653384d 100644
--- a/drivers/media/radio/si470x/radio-si470x-usb.c
+++ b/drivers/media/radio/si470x/radio-si470x-usb.c
@@ -28,6 +28,7 @@
/* driver definitions */
+#include <linux/version.h>
#define DRIVER_AUTHOR "Tobias Lorenz <tobias.lorenz@gmx.net>"
#define DRIVER_KERNEL_VERSION KERNEL_VERSION(1, 0, 10)
#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
diff --git a/drivers/media/radio/si470x/radio-si470x.h b/drivers/media/radio/si470x/radio-si470x.h
index 68da001..f300a55 100644
--- a/drivers/media/radio/si470x/radio-si470x.h
+++ b/drivers/media/radio/si470x/radio-si470x.h
@@ -32,7 +32,6 @@
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/input.h>
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <linux/mutex.h>
#include <media/v4l2-common.h>
--
1.7.5.2
--
Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-23 21:58 ` [PATCH 03/37] Remove unneeded version.h includes from include/ Jesper Juhl
@ 2011-06-23 22:15 ` Sage Weil
2011-06-24 11:21 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: " Mauro Carvalho Chehab
1 sibling, 0 replies; 31+ messages in thread
From: Sage Weil @ 2011-06-23 22:15 UTC (permalink / raw)
To: Jesper Juhl; +Cc: LKML, trivial, linux-media, ceph-devel, Mauro Carvalho Chehab
On Thu, 23 Jun 2011, Jesper Juhl wrote:
> It was pointed out by 'make versioncheck' that some includes of
> linux/version.h were not needed in include/.
> This patch removes them.
>
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Acked-by: Sage Weil <sage@newdream.net>
for the ceph bit.
sage
> ---
> include/linux/ceph/messenger.h | 1 -
> include/media/pwc-ioctl.h | 1 -
> 2 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
> index 31d91a6..291aa6e 100644
> --- a/include/linux/ceph/messenger.h
> +++ b/include/linux/ceph/messenger.h
> @@ -6,7 +6,6 @@
> #include <linux/net.h>
> #include <linux/radix-tree.h>
> #include <linux/uio.h>
> -#include <linux/version.h>
> #include <linux/workqueue.h>
>
> #include "types.h"
> diff --git a/include/media/pwc-ioctl.h b/include/media/pwc-ioctl.h
> index 0f19779..1ed1e61 100644
> --- a/include/media/pwc-ioctl.h
> +++ b/include/media/pwc-ioctl.h
> @@ -53,7 +53,6 @@
> */
>
> #include <linux/types.h>
> -#include <linux/version.h>
>
> /* Enumeration of image sizes */
> #define PSZ_SQCIF 0x00
> --
> 1.7.5.2
>
>
> --
> Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
> Don't top-post http://www.catb.org/jargon/html/T/top-post.html
> Plain text mails only, please.
>
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/
[not found] <alpine.LNX.2.00.1106232344480.17688@swampdragon.chaosbits.net>
` (2 preceding siblings ...)
2011-06-23 22:14 ` [PATCH 11/37] Remove unneeded version.h includes (and add where needed) for drivers/media/radio/ Jesper Juhl
@ 2011-06-23 22:17 ` Jesper Juhl
2011-06-24 8:52 ` Laurent Pinchart
3 siblings, 1 reply; 31+ messages in thread
From: Jesper Juhl @ 2011-06-23 22:17 UTC (permalink / raw)
To: LKML
Cc: trivial, linux-media, linux-usb, ivtv-devel,
Mauro Carvalho Chehab, Andy Walls, Luca Risolia, Olivier Lorin,
Jean-Francois Moine, Huang Shijie, Kang Yong, Zhang Xiaobing,
Laurent Pinchart
It was pointed out by 'make versioncheck' that linux/version.h was not
always being included where needed and sometimes included needlessly
in drivers/media/video/.
This patch fixes up the includes.
Signed-off-by: Jesper Juhl <jj@chaosbits.net>
---
drivers/media/video/cpia2/cpia2.h | 1 -
drivers/media/video/cx18/cx18-driver.h | 1 -
drivers/media/video/cx18/cx18-version.h | 2 ++
drivers/media/video/cx231xx/cx231xx.h | 1 +
drivers/media/video/cx23885/altera-ci.c | 1 -
drivers/media/video/davinci/vpif_capture.c | 1 -
drivers/media/video/davinci/vpif_capture.h | 1 -
drivers/media/video/davinci/vpif_display.c | 1 -
drivers/media/video/davinci/vpif_display.h | 1 -
drivers/media/video/et61x251/et61x251.h | 1 -
drivers/media/video/et61x251/et61x251_core.c | 1 +
drivers/media/video/gspca/gl860/gl860.h | 1 -
drivers/media/video/hdpvr/hdpvr-video.c | 2 --
drivers/media/video/hdpvr/hdpvr.h | 2 +-
drivers/media/video/ivtv/ivtv-driver.h | 1 -
drivers/media/video/ivtv/ivtv-version.h | 2 ++
drivers/media/video/m5mols/m5mols_capture.c | 2 --
drivers/media/video/m5mols/m5mols_core.c | 1 -
drivers/media/video/pwc/pwc-ioctl.h | 1 -
drivers/media/video/saa7164/saa7164.h | 1 -
drivers/media/video/sn9c102/sn9c102.h | 1 -
drivers/media/video/sn9c102/sn9c102_core.c | 1 +
drivers/media/video/timblogiw.c | 1 -
drivers/media/video/tlg2300/pd-common.h | 1 -
drivers/media/video/tlg2300/pd-video.c | 2 +-
drivers/media/video/uvc/uvc_v4l2.c | 1 -
drivers/media/video/uvc/uvcvideo.h | 1 +
27 files changed, 10 insertions(+), 23 deletions(-)
diff --git a/drivers/media/video/cpia2/cpia2.h b/drivers/media/video/cpia2/cpia2.h
index 6d6d184..5e1faa2 100644
--- a/drivers/media/video/cpia2/cpia2.h
+++ b/drivers/media/video/cpia2/cpia2.h
@@ -31,7 +31,6 @@
#ifndef __CPIA2_H__
#define __CPIA2_H__
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
#include <linux/usb.h>
diff --git a/drivers/media/video/cx18/cx18-driver.h b/drivers/media/video/cx18/cx18-driver.h
index 0864272..1834207 100644
--- a/drivers/media/video/cx18/cx18-driver.h
+++ b/drivers/media/video/cx18/cx18-driver.h
@@ -25,7 +25,6 @@
#ifndef CX18_DRIVER_H
#define CX18_DRIVER_H
-#include <linux/version.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
diff --git a/drivers/media/video/cx18/cx18-version.h b/drivers/media/video/cx18/cx18-version.h
index cd189b6..bbbd503 100644
--- a/drivers/media/video/cx18/cx18-version.h
+++ b/drivers/media/video/cx18/cx18-version.h
@@ -22,6 +22,8 @@
#ifndef CX18_VERSION_H
#define CX18_VERSION_H
+#include <linux/version.h>
+
#define CX18_DRIVER_NAME "cx18"
#define CX18_DRIVER_VERSION_MAJOR 1
#define CX18_DRIVER_VERSION_MINOR 5
diff --git a/drivers/media/video/cx231xx/cx231xx.h b/drivers/media/video/cx231xx/cx231xx.h
index 46dd840..c42b7ff 100644
--- a/drivers/media/video/cx231xx/cx231xx.h
+++ b/drivers/media/video/cx231xx/cx231xx.h
@@ -22,6 +22,7 @@
#ifndef _CX231XX_H
#define _CX231XX_H
+#include <linux/version.h>
#include <linux/videodev2.h>
#include <linux/types.h>
#include <linux/ioctl.h>
diff --git a/drivers/media/video/cx23885/altera-ci.c b/drivers/media/video/cx23885/altera-ci.c
index 678539b..1fa8927 100644
--- a/drivers/media/video/cx23885/altera-ci.c
+++ b/drivers/media/video/cx23885/altera-ci.c
@@ -52,7 +52,6 @@
* | DATA7| DATA6| DATA5| DATA4| DATA3| DATA2| DATA1| DATA0|
* +-------+-------+-------+-------+-------+-------+-------+-------+
*/
-#include <linux/version.h>
#include <media/videobuf-dma-sg.h>
#include <media/videobuf-dvb.h>
#include "altera-ci.h"
diff --git a/drivers/media/video/davinci/vpif_capture.c b/drivers/media/video/davinci/vpif_capture.c
index d93ad74..dbdd1eb 100644
--- a/drivers/media/video/davinci/vpif_capture.c
+++ b/drivers/media/video/davinci/vpif_capture.c
@@ -33,7 +33,6 @@
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/io.h>
-#include <linux/version.h>
#include <linux/slab.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
diff --git a/drivers/media/video/davinci/vpif_capture.h b/drivers/media/video/davinci/vpif_capture.h
index 7a4196d..97e7fd5 100644
--- a/drivers/media/video/davinci/vpif_capture.h
+++ b/drivers/media/video/davinci/vpif_capture.h
@@ -23,7 +23,6 @@
/* Header files */
#include <linux/videodev2.h>
-#include <linux/version.h>
#include <media/v4l2-common.h>
#include <media/v4l2-device.h>
#include <media/videobuf-core.h>
diff --git a/drivers/media/video/davinci/vpif_display.c b/drivers/media/video/davinci/vpif_display.c
index cdf659a..66b1631 100644
--- a/drivers/media/video/davinci/vpif_display.c
+++ b/drivers/media/video/davinci/vpif_display.c
@@ -29,7 +29,6 @@
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/io.h>
-#include <linux/version.h>
#include <linux/slab.h>
#include <asm/irq.h>
diff --git a/drivers/media/video/davinci/vpif_display.h b/drivers/media/video/davinci/vpif_display.h
index b53aaa8..049a42c 100644
--- a/drivers/media/video/davinci/vpif_display.h
+++ b/drivers/media/video/davinci/vpif_display.h
@@ -18,7 +18,6 @@
/* Header files */
#include <linux/videodev2.h>
-#include <linux/version.h>
#include <media/v4l2-common.h>
#include <media/v4l2-device.h>
#include <media/videobuf-core.h>
diff --git a/drivers/media/video/et61x251/et61x251.h b/drivers/media/video/et61x251/et61x251.h
index bf66189..14bb907 100644
--- a/drivers/media/video/et61x251/et61x251.h
+++ b/drivers/media/video/et61x251/et61x251.h
@@ -21,7 +21,6 @@
#ifndef _ET61X251_H_
#define _ET61X251_H_
-#include <linux/version.h>
#include <linux/usb.h>
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c
index a982750..3722711 100644
--- a/drivers/media/video/et61x251/et61x251_core.c
+++ b/drivers/media/video/et61x251/et61x251_core.c
@@ -34,6 +34,7 @@
#include <linux/mm.h>
#include <linux/vmalloc.h>
#include <linux/page-flags.h>
+#include <linux/version.h>
#include <media/v4l2-ioctl.h>
#include <asm/byteorder.h>
#include <asm/page.h>
diff --git a/drivers/media/video/gspca/gl860/gl860.h b/drivers/media/video/gspca/gl860/gl860.h
index 49ad4ac..0330a02 100644
--- a/drivers/media/video/gspca/gl860/gl860.h
+++ b/drivers/media/video/gspca/gl860/gl860.h
@@ -18,7 +18,6 @@
*/
#ifndef GL860_DEV_H
#define GL860_DEV_H
-#include <linux/version.h>
#include "gspca.h"
diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
index 514aea7..79b89a1 100644
--- a/drivers/media/video/hdpvr/hdpvr-video.c
+++ b/drivers/media/video/hdpvr/hdpvr-video.c
@@ -17,9 +17,7 @@
#include <linux/uaccess.h>
#include <linux/usb.h>
#include <linux/mutex.h>
-#include <linux/version.h>
#include <linux/workqueue.h>
-
#include <linux/videodev2.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-common.h>
diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
index 072f23c..e74ba50 100644
--- a/drivers/media/video/hdpvr/hdpvr.h
+++ b/drivers/media/video/hdpvr/hdpvr.h
@@ -14,7 +14,7 @@
#include <linux/mutex.h>
#include <linux/workqueue.h>
#include <linux/videodev2.h>
-
+#include <linux/version.h>
#include <media/v4l2-device.h>
#include <media/ir-kbd-i2c.h>
diff --git a/drivers/media/video/ivtv/ivtv-driver.h b/drivers/media/video/ivtv/ivtv-driver.h
index 84bdf0f..8f9cc17 100644
--- a/drivers/media/video/ivtv/ivtv-driver.h
+++ b/drivers/media/video/ivtv/ivtv-driver.h
@@ -36,7 +36,6 @@
* using information provided by Jiun-Kuei Jung @ AVerMedia.
*/
-#include <linux/version.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/delay.h>
diff --git a/drivers/media/video/ivtv/ivtv-version.h b/drivers/media/video/ivtv/ivtv-version.h
index b67a404..3767237 100644
--- a/drivers/media/video/ivtv/ivtv-version.h
+++ b/drivers/media/video/ivtv/ivtv-version.h
@@ -20,6 +20,8 @@
#ifndef IVTV_VERSION_H
#define IVTV_VERSION_H
+#include <linux/version.h>
+
#define IVTV_DRIVER_NAME "ivtv"
#define IVTV_DRIVER_VERSION_MAJOR 1
#define IVTV_DRIVER_VERSION_MINOR 4
diff --git a/drivers/media/video/m5mols/m5mols_capture.c b/drivers/media/video/m5mols/m5mols_capture.c
index d71a390..bf704cb 100644
--- a/drivers/media/video/m5mols/m5mols_capture.c
+++ b/drivers/media/video/m5mols/m5mols_capture.c
@@ -18,11 +18,9 @@
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
-#include <linux/version.h>
#include <linux/gpio.h>
#include <linux/regulator/consumer.h>
#include <linux/videodev2.h>
-#include <linux/version.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-subdev.h>
diff --git a/drivers/media/video/m5mols/m5mols_core.c b/drivers/media/video/m5mols/m5mols_core.c
index 76eac26..05d086e 100644
--- a/drivers/media/video/m5mols/m5mols_core.c
+++ b/drivers/media/video/m5mols/m5mols_core.c
@@ -18,7 +18,6 @@
#include <linux/irq.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
-#include <linux/version.h>
#include <linux/gpio.h>
#include <linux/regulator/consumer.h>
#include <linux/videodev2.h>
diff --git a/drivers/media/video/pwc/pwc-ioctl.h b/drivers/media/video/pwc/pwc-ioctl.h
index 8c0cae7..b74fea0 100644
--- a/drivers/media/video/pwc/pwc-ioctl.h
+++ b/drivers/media/video/pwc/pwc-ioctl.h
@@ -52,7 +52,6 @@
*/
#include <linux/types.h>
-#include <linux/version.h>
/* Enumeration of image sizes */
#define PSZ_SQCIF 0x00
diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h
index 16745d2..6678bf1 100644
--- a/drivers/media/video/saa7164/saa7164.h
+++ b/drivers/media/video/saa7164/saa7164.h
@@ -48,7 +48,6 @@
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/kdev_t.h>
-#include <linux/version.h>
#include <linux/mutex.h>
#include <linux/crc32.h>
#include <linux/kthread.h>
diff --git a/drivers/media/video/sn9c102/sn9c102.h b/drivers/media/video/sn9c102/sn9c102.h
index cbfc444..22ea211 100644
--- a/drivers/media/video/sn9c102/sn9c102.h
+++ b/drivers/media/video/sn9c102/sn9c102.h
@@ -21,7 +21,6 @@
#ifndef _SN9C102_H_
#define _SN9C102_H_
-#include <linux/version.h>
#include <linux/usb.h>
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
index 0e07c49..8908501 100644
--- a/drivers/media/video/sn9c102/sn9c102_core.c
+++ b/drivers/media/video/sn9c102/sn9c102_core.c
@@ -18,6 +18,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
***************************************************************************/
+#include <linux/version.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
index fc611eb..84cd1b6 100644
--- a/drivers/media/video/timblogiw.c
+++ b/drivers/media/video/timblogiw.c
@@ -20,7 +20,6 @@
* Timberdale FPGA LogiWin Video In
*/
-#include <linux/version.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/dmaengine.h>
diff --git a/drivers/media/video/tlg2300/pd-common.h b/drivers/media/video/tlg2300/pd-common.h
index 46066bd..56564e6 100644
--- a/drivers/media/video/tlg2300/pd-common.h
+++ b/drivers/media/video/tlg2300/pd-common.h
@@ -1,7 +1,6 @@
#ifndef PD_COMMON_H
#define PD_COMMON_H
-#include <linux/version.h>
#include <linux/fs.h>
#include <linux/wait.h>
#include <linux/list.h>
diff --git a/drivers/media/video/tlg2300/pd-video.c b/drivers/media/video/tlg2300/pd-video.c
index a794ae6..f243ec0 100644
--- a/drivers/media/video/tlg2300/pd-video.c
+++ b/drivers/media/video/tlg2300/pd-video.c
@@ -5,7 +5,7 @@
#include <linux/mm.h>
#include <linux/sched.h>
#include <linux/slab.h>
-
+#include <linux/version.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-dev.h>
diff --git a/drivers/media/video/uvc/uvc_v4l2.c b/drivers/media/video/uvc/uvc_v4l2.c
index 543a803..7fbd389 100644
--- a/drivers/media/video/uvc/uvc_v4l2.c
+++ b/drivers/media/video/uvc/uvc_v4l2.c
@@ -12,7 +12,6 @@
*/
#include <linux/kernel.h>
-#include <linux/version.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/slab.h>
diff --git a/drivers/media/video/uvc/uvcvideo.h b/drivers/media/video/uvc/uvcvideo.h
index 20107fd..1c0fe5e 100644
--- a/drivers/media/video/uvc/uvcvideo.h
+++ b/drivers/media/video/uvc/uvcvideo.h
@@ -101,6 +101,7 @@ struct uvc_xu_control {
#include <linux/usb.h>
#include <linux/usb/video.h>
#include <linux/uvcvideo.h>
+#include <linux/version.h>
#include <media/media-device.h>
#include <media/v4l2-device.h>
--
1.7.5.2
--
Jesper Juhl <jj@chaosbits.net> http://www.chaosbits.net/
Don't top-post http://www.catb.org/jargon/html/T/top-post.html
Plain text mails only, please.
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/
2011-06-23 22:17 ` [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/ Jesper Juhl
@ 2011-06-24 8:52 ` Laurent Pinchart
0 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2011-06-24 8:52 UTC (permalink / raw)
To: Jesper Juhl
Cc: LKML, trivial, linux-media, linux-usb, ivtv-devel,
Mauro Carvalho Chehab, Andy Walls, Luca Risolia, Olivier Lorin,
Jean-Francois Moine, Huang Shijie, Kang Yong, Zhang Xiaobing
Hi Jesper,
On Friday 24 June 2011 00:17:01 Jesper Juhl wrote:
> It was pointed out by 'make versioncheck' that linux/version.h was not
> always being included where needed and sometimes included needlessly
> in drivers/media/video/.
> This patch fixes up the includes.
>
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
[snip]
> diff --git a/drivers/media/video/uvc/uvc_v4l2.c
> b/drivers/media/video/uvc/uvc_v4l2.c index 543a803..7fbd389 100644
> --- a/drivers/media/video/uvc/uvc_v4l2.c
> +++ b/drivers/media/video/uvc/uvc_v4l2.c
> @@ -12,7 +12,6 @@
> */
>
> #include <linux/kernel.h>
> -#include <linux/version.h>
> #include <linux/list.h>
> #include <linux/module.h>
> #include <linux/slab.h>
uvc_v4l2.c uses KERNEL_VERSION explicitly. It includes linux/version.h through
linux/media.h, but I'd rather keep the explicit include.
> diff --git a/drivers/media/video/uvc/uvcvideo.h
> b/drivers/media/video/uvc/uvcvideo.h index 20107fd..1c0fe5e 100644
> --- a/drivers/media/video/uvc/uvcvideo.h
> +++ b/drivers/media/video/uvc/uvcvideo.h
> @@ -101,6 +101,7 @@ struct uvc_xu_control {
> #include <linux/usb.h>
> #include <linux/usb/video.h>
> #include <linux/uvcvideo.h>
> +#include <linux/version.h>
> #include <media/media-device.h>
> #include <media/v4l2-device.h>
This file doesn't include linux/version.h anymore in 3.0-rc4.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 31+ messages in thread
* [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-23 21:58 ` [PATCH 03/37] Remove unneeded version.h includes from include/ Jesper Juhl
2011-06-23 22:15 ` Sage Weil
@ 2011-06-24 11:21 ` Mauro Carvalho Chehab
2011-06-24 11:26 ` Hans Verkuil
1 sibling, 1 reply; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 11:21 UTC (permalink / raw)
To: Jesper Juhl; +Cc: LKML, trivial, linux-media, ceph-devel, Sage Weil
Em 23-06-2011 18:58, Jesper Juhl escreveu:
> It was pointed out by 'make versioncheck' that some includes of
> linux/version.h were not needed in include/.
> This patch removes them.
>
> Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> ---
> include/linux/ceph/messenger.h | 1 -
> include/media/pwc-ioctl.h | 1 -
> 2 files changed, 0 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
> index 31d91a6..291aa6e 100644
> --- a/include/linux/ceph/messenger.h
> +++ b/include/linux/ceph/messenger.h
> @@ -6,7 +6,6 @@
> #include <linux/net.h>
> #include <linux/radix-tree.h>
> #include <linux/uio.h>
> -#include <linux/version.h>
> #include <linux/workqueue.h>
>
> #include "types.h"
> diff --git a/include/media/pwc-ioctl.h b/include/media/pwc-ioctl.h
> index 0f19779..1ed1e61 100644
> --- a/include/media/pwc-ioctl.h
> +++ b/include/media/pwc-ioctl.h
> @@ -53,7 +53,6 @@
> */
>
> #include <linux/types.h>
> -#include <linux/version.h>
>
> /* Enumeration of image sizes */
> #define PSZ_SQCIF 0x00
The usage of version.h at the Linux media kernel is due to a V4L2 API requirement[1],
where an ioctl query of VIDIOC_QUERYCAP type would return the driver version formatted
with KERNEL_VERSION() macro.
[1] http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-querycap.html
While a few driver maintainers are careful enough to increment it on every new
kernel version where the driver was touched, others simply keep it outdated.
IMHO, it doesn't make much sense on having a per-driver version field: the V4L2 layer
should be enough to abstract hardware differences, and to avoid userspace to have a per
driver list of hacks. I don't think that the userspace applications are really using it.
Module versions should just use the MODULE_VERSION() macro.
So, IMO, the better would be to convert this field into a V4L2 API version field
instead like the enclosed patch. Of course, this also means to change the V4L2 API
Docbook. After that, we can cleanup all those linux/version.h code on all V4L drivers.
The idea is that, every time we add something new at the V4L2 API, we'll increment it
to match the current kernel version.
On a quick look, all drivers, except by one uses versions <= KERNEL_VERSION(3, 0, 0).
The only exception is the pwc driver, with version is KERNEL_VERSION(10, 0, 12). Due to
a bug on it, it also reports its version as: "10.0.14" at module version. The version
10.0.12 is reported there since 2006, even having suffered a major change, due to the
removal of the V4L1 API, on changeset 479567ce3af7b99d645a3c53b8ca2fc65e46efdc.
So, I think it would be safe to change it to 3.0.0, as using the version here, in the favor
of a greater good. We can keep the driver-specific version only at
Comments?
If others are ok with that, I'll prepare the changesets.
Cheers,
Mauro
-
[media] v4l2 core: Use a per-API version instead of a per driver version
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 213ba7d..d8fa571 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/kernel.h>diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 213ba7d..b19ad56 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/kernel.h>
+#include <linux/version.h>
#include <linux/videodev2.h>
@@ -27,6 +28,8 @@
#include <media/v4l2-device.h>
#include <media/v4l2-chip-ident.h>
+#define V4L2_API_VERSION KERNEL_VERSION(3, 0, 0)
+
#define dbgarg(cmd, fmt, arg...) \
do { \
if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) { \
@@ -606,13 +609,16 @@ static long __video_do_ioctl(struct file *file,
break;
ret = ops->vidioc_querycap(file, fh, cap);
- if (!ret)
+ if (!ret) {
+ cap->version = V4L2_API_VERSION;
+
dbgarg(cmd, "driver=%s, card=%s, bus=%s, "
"version=0x%08x, "
"capabilities=0x%08x\n",
cap->driver, cap->card, cap->bus_info,
cap->version,
cap->capabilities);
+ }
break;
}
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 11:21 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: " Mauro Carvalho Chehab
@ 2011-06-24 11:26 ` Hans Verkuil
2011-06-24 12:20 ` Devin Heitmueller
0 siblings, 1 reply; 31+ messages in thread
From: Hans Verkuil @ 2011-06-24 11:26 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Jesper Juhl, LKML, trivial, linux-media, ceph-devel, Sage Weil
On Friday, June 24, 2011 13:21:14 Mauro Carvalho Chehab wrote:
> Em 23-06-2011 18:58, Jesper Juhl escreveu:
> > It was pointed out by 'make versioncheck' that some includes of
> > linux/version.h were not needed in include/.
> > This patch removes them.
> >
> > Signed-off-by: Jesper Juhl <jj@chaosbits.net>
> > ---
> > include/linux/ceph/messenger.h | 1 -
> > include/media/pwc-ioctl.h | 1 -
> > 2 files changed, 0 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h
> > index 31d91a6..291aa6e 100644
> > --- a/include/linux/ceph/messenger.h
> > +++ b/include/linux/ceph/messenger.h
> > @@ -6,7 +6,6 @@
> > #include <linux/net.h>
> > #include <linux/radix-tree.h>
> > #include <linux/uio.h>
> > -#include <linux/version.h>
> > #include <linux/workqueue.h>
> >
> > #include "types.h"
> > diff --git a/include/media/pwc-ioctl.h b/include/media/pwc-ioctl.h
> > index 0f19779..1ed1e61 100644
> > --- a/include/media/pwc-ioctl.h
> > +++ b/include/media/pwc-ioctl.h
> > @@ -53,7 +53,6 @@
> > */
> >
> > #include <linux/types.h>
> > -#include <linux/version.h>
> >
> > /* Enumeration of image sizes */
> > #define PSZ_SQCIF 0x00
>
>
> The usage of version.h at the Linux media kernel is due to a V4L2 API requirement[1],
> where an ioctl query of VIDIOC_QUERYCAP type would return the driver version formatted
> with KERNEL_VERSION() macro.
>
> [1] http://linuxtv.org/downloads/v4l-dvb-apis/vidioc-querycap.html
>
> While a few driver maintainers are careful enough to increment it on every new
> kernel version where the driver was touched, others simply keep it outdated.
>
> IMHO, it doesn't make much sense on having a per-driver version field: the V4L2 layer
> should be enough to abstract hardware differences, and to avoid userspace to have a per
> driver list of hacks. I don't think that the userspace applications are really using it.
Applications are certainly using it. I know this for a fact for the ivtv driver where
feature improvements are marked that way.
Without more research on how this is used I am not comfortable with this.
Regards,
Hans
> Module versions should just use the MODULE_VERSION() macro.
>
> So, IMO, the better would be to convert this field into a V4L2 API version field
> instead like the enclosed patch. Of course, this also means to change the V4L2 API
> Docbook. After that, we can cleanup all those linux/version.h code on all V4L drivers.
>
> The idea is that, every time we add something new at the V4L2 API, we'll increment it
> to match the current kernel version.
>
> On a quick look, all drivers, except by one uses versions <= KERNEL_VERSION(3, 0, 0).
> The only exception is the pwc driver, with version is KERNEL_VERSION(10, 0, 12). Due to
> a bug on it, it also reports its version as: "10.0.14" at module version. The version
> 10.0.12 is reported there since 2006, even having suffered a major change, due to the
> removal of the V4L1 API, on changeset 479567ce3af7b99d645a3c53b8ca2fc65e46efdc.
> So, I think it would be safe to change it to 3.0.0, as using the version here, in the favor
> of a greater good. We can keep the driver-specific version only at
>
> Comments?
>
> If others are ok with that, I'll prepare the changesets.
>
> Cheers,
> Mauro
>
>
> -
>
> [media] v4l2 core: Use a per-API version instead of a per driver version
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
>
> diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
> index 213ba7d..d8fa571 100644
> --- a/drivers/media/video/v4l2-ioctl.c
> +++ b/drivers/media/video/v4l2-ioctl.c
> @@ -16,6 +16,7 @@
> #include <linux/slab.h>
> #include <linux/types.h>
> #include <linux/kernel.h>diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
> index 213ba7d..b19ad56 100644
> --- a/drivers/media/video/v4l2-ioctl.c
> +++ b/drivers/media/video/v4l2-ioctl.c
> @@ -16,6 +16,7 @@
> #include <linux/slab.h>
> #include <linux/types.h>
> #include <linux/kernel.h>
> +#include <linux/version.h>
>
> #include <linux/videodev2.h>
>
> @@ -27,6 +28,8 @@
> #include <media/v4l2-device.h>
> #include <media/v4l2-chip-ident.h>
>
> +#define V4L2_API_VERSION KERNEL_VERSION(3, 0, 0)
> +
> #define dbgarg(cmd, fmt, arg...) \
> do { \
> if (vfd->debug & V4L2_DEBUG_IOCTL_ARG) { \
> @@ -606,13 +609,16 @@ static long __video_do_ioctl(struct file *file,
> break;
>
> ret = ops->vidioc_querycap(file, fh, cap);
> - if (!ret)
> + if (!ret) {
> + cap->version = V4L2_API_VERSION;
> +
> dbgarg(cmd, "driver=%s, card=%s, bus=%s, "
> "version=0x%08x, "
> "capabilities=0x%08x\n",
> cap->driver, cap->card, cap->bus_info,
> cap->version,
> cap->capabilities);
> + }
> break;
> }
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 11:26 ` Hans Verkuil
@ 2011-06-24 12:20 ` Devin Heitmueller
2011-06-24 13:29 ` Mauro Carvalho Chehab
2011-06-29 21:54 ` Mauro Carvalho Chehab
0 siblings, 2 replies; 31+ messages in thread
From: Devin Heitmueller @ 2011-06-24 12:20 UTC (permalink / raw)
To: Hans Verkuil
Cc: Mauro Carvalho Chehab, Jesper Juhl, LKML, trivial, linux-media,
ceph-devel, Sage Weil
> Applications are certainly using it. I know this for a fact for the ivtv driver where
> feature improvements are marked that way.
>
> Without more research on how this is used I am not comfortable with this.
>
> Regards,
>
> Hans
MythTV has a bunch of these too (mainly so the code can adapt to
driver bugs that are fixed in later revisions). Putting Mauro's patch
upstream will definitely cause breakage.
Also, it screws up the ability for users to get fixes through the
media_build tree (unless you are increasing the revision constantly
with every merge you do).
Devin
--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 12:20 ` Devin Heitmueller
@ 2011-06-24 13:29 ` Mauro Carvalho Chehab
2011-06-24 13:45 ` Devin Heitmueller
2011-06-29 21:54 ` Mauro Carvalho Chehab
1 sibling, 1 reply; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 13:29 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Hans Verkuil, Jesper Juhl, LKML, trivial, linux-media, ceph-devel,
Sage Weil
Em 24-06-2011 09:20, Devin Heitmueller escreveu:
>> Applications are certainly using it. I know this for a fact for the ivtv driver where
>> feature improvements are marked that way.
>>
>> Without more research on how this is used I am not comfortable with this.
>>
>> Regards,
>>
>> Hans
>
> MythTV has a bunch of these too (mainly so the code can adapt to
> driver bugs that are fixed in later revisions). Putting Mauro's patch
> upstream will definitely cause breakage.
It shouldn't, as ivtv driver version is lower than 3.0.0. All the old bug fixes
aren't needed if version is >= 3.0.0.
Besides that, trusting on a driver revision number to detect that a bug is
there is not the right thing to do, as version numbers are never increased at
the stable kernels (nor distro modified kernels take care of increasing revision
number as patches are backported there).
In other words, relying on it doesn't work fine.
> Also, it screws up the ability for users to get fixes through the
> media_build tree (unless you are increasing the revision constantly
> with every merge you do).
Why? Developers don't increase version numbers on every applied patch
(with is great, as it avoids merge conflicts).
Mauro
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 13:29 ` Mauro Carvalho Chehab
@ 2011-06-24 13:45 ` Devin Heitmueller
2011-06-24 13:54 ` Hans Verkuil
0 siblings, 1 reply; 31+ messages in thread
From: Devin Heitmueller @ 2011-06-24 13:45 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Hans Verkuil, Jesper Juhl, LKML, trivial, linux-media, ceph-devel,
Sage Weil
On Fri, Jun 24, 2011 at 9:29 AM, Mauro Carvalho Chehab
<mchehab@infradead.org> wrote:
>> MythTV has a bunch of these too (mainly so the code can adapt to
>> driver bugs that are fixed in later revisions). Putting Mauro's patch
>> upstream will definitely cause breakage.
>
> It shouldn't, as ivtv driver version is lower than 3.0.0. All the old bug fixes
> aren't needed if version is >= 3.0.0.
>
> Besides that, trusting on a driver revision number to detect that a bug is
> there is not the right thing to do, as version numbers are never increased at
> the stable kernels (nor distro modified kernels take care of increasing revision
> number as patches are backported there).
The versions are increased at the discretion of the driver maintainer,
usually when there is some userland visible change in driver behavior.
I assure you the application developers don't *want* to rely on such
a mechanism, but there have definitely been cases in the past where
there was no easy way to detect the behavior of the driver from
userland.
It lets application developers work around things like violations of
the V4L2 standard which get fixed in newer revisions of the driver.
It provides them the ability to put a hack in their code that says "if
(version < X) then this driver feature is broken and I shouldn't use
it."
> In other words, relying on it doesn't work fine.
It's the best (and really only solution) we have today.
>> Also, it screws up the ability for users to get fixes through the
>> media_build tree (unless you are increasing the revision constantly
>> with every merge you do).
>
> Why? Developers don't increase version numbers on every applied patch
> (with is great, as it avoids merge conflicts).
The driver maintainer doesn't *have* to increase the version - he does
it when he thinks it's appropriate. The point is you are taking that
discretion out of *their* hands, and you yourself are unaware of when
it is actually needed.
You need to stop looking at this from a purist standpoint and think of
how application developers actually use the API. They need tools like
this to allow them to work around driver bugs while having a source
codebase which operates against different kernels (including kernels
that may still have those bugs).
Sure, in a perfect world where drivers don't have bugs and
applications don't have to run against older kernels, what you are
saying is not illogical. But then again, we don't live in a perfect
world.
Devin
--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 13:45 ` Devin Heitmueller
@ 2011-06-24 13:54 ` Hans Verkuil
2011-06-24 14:37 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 31+ messages in thread
From: Hans Verkuil @ 2011-06-24 13:54 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Mauro Carvalho Chehab, Jesper Juhl, LKML, trivial, linux-media,
ceph-devel, Sage Weil
On Friday, June 24, 2011 15:45:59 Devin Heitmueller wrote:
> On Fri, Jun 24, 2011 at 9:29 AM, Mauro Carvalho Chehab
> <mchehab@infradead.org> wrote:
> >> MythTV has a bunch of these too (mainly so the code can adapt to
> >> driver bugs that are fixed in later revisions). Putting Mauro's patch
> >> upstream will definitely cause breakage.
> >
> > It shouldn't, as ivtv driver version is lower than 3.0.0. All the old bug fixes
> > aren't needed if version is >= 3.0.0.
> >
> > Besides that, trusting on a driver revision number to detect that a bug is
> > there is not the right thing to do, as version numbers are never increased at
> > the stable kernels (nor distro modified kernels take care of increasing revision
> > number as patches are backported there).
>
> The versions are increased at the discretion of the driver maintainer,
> usually when there is some userland visible change in driver behavior.
> I assure you the application developers don't *want* to rely on such
> a mechanism, but there have definitely been cases in the past where
> there was no easy way to detect the behavior of the driver from
> userland.
>
> It lets application developers work around things like violations of
> the V4L2 standard which get fixed in newer revisions of the driver.
> It provides them the ability to put a hack in their code that says "if
> (version < X) then this driver feature is broken and I shouldn't use
> it."
Indeed. Ideally we shouldn't need it. But reality is different.
What we have right now works and I see no compelling reason to change the
behavior.
Regards,
Hans
> > In other words, relying on it doesn't work fine.
>
> It's the best (and really only solution) we have today.
>
> >> Also, it screws up the ability for users to get fixes through the
> >> media_build tree (unless you are increasing the revision constantly
> >> with every merge you do).
> >
> > Why? Developers don't increase version numbers on every applied patch
> > (with is great, as it avoids merge conflicts).
>
> The driver maintainer doesn't *have* to increase the version - he does
> it when he thinks it's appropriate. The point is you are taking that
> discretion out of *their* hands, and you yourself are unaware of when
> it is actually needed.
>
> You need to stop looking at this from a purist standpoint and think of
> how application developers actually use the API. They need tools like
> this to allow them to work around driver bugs while having a source
> codebase which operates against different kernels (including kernels
> that may still have those bugs).
>
> Sure, in a perfect world where drivers don't have bugs and
> applications don't have to run against older kernels, what you are
> saying is not illogical. But then again, we don't live in a perfect
> world.
>
> Devin
>
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 13:54 ` Hans Verkuil
@ 2011-06-24 14:37 ` Mauro Carvalho Chehab
2011-06-24 18:25 ` [PATCH] [media] Stop using linux/version.h on most drivers Mauro Carvalho Chehab
2011-06-24 18:34 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/ Stefan Richter
0 siblings, 2 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 14:37 UTC (permalink / raw)
To: Hans Verkuil
Cc: Devin Heitmueller, Jesper Juhl, LKML, trivial, linux-media,
ceph-devel, Sage Weil
Em 24-06-2011 10:54, Hans Verkuil escreveu:
> On Friday, June 24, 2011 15:45:59 Devin Heitmueller wrote:
>> On Fri, Jun 24, 2011 at 9:29 AM, Mauro Carvalho Chehab
>> <mchehab@infradead.org> wrote:
>>>> MythTV has a bunch of these too (mainly so the code can adapt to
>>>> driver bugs that are fixed in later revisions). Putting Mauro's patch
>>>> upstream will definitely cause breakage.
>>>
>>> It shouldn't, as ivtv driver version is lower than 3.0.0. All the old bug fixes
>>> aren't needed if version is >= 3.0.0.
>>>
>>> Besides that, trusting on a driver revision number to detect that a bug is
>>> there is not the right thing to do, as version numbers are never increased at
>>> the stable kernels (nor distro modified kernels take care of increasing revision
>>> number as patches are backported there).
>>
>> The versions are increased at the discretion of the driver maintainer,
>> usually when there is some userland visible change in driver behavior.
>> I assure you the application developers don't *want* to rely on such
>> a mechanism, but there have definitely been cases in the past where
>> there was no easy way to detect the behavior of the driver from
>> userland.
>>
>> It lets application developers work around things like violations of
>> the V4L2 standard which get fixed in newer revisions of the driver.
>> It provides them the ability to put a hack in their code that says "if
>> (version < X) then this driver feature is broken and I shouldn't use
>> it."
>
> Indeed. Ideally we shouldn't need it. But reality is different.
>
> What we have right now works and I see no compelling reason to change the
> behavior.
A per-driver version only works if the user is running a vanilla kernel without
any stable patches applied.
I doubt that this covers the large amount of the users: they'll either use an
stable patched kernel or a distribution-specific one. On both cases, the driver
version is not associated with a bug fix, as the driver maintainers just take
care of increasing the driver version once per each new kernel version (when
they care enough).
Also, a git blame for the V4L2 drivers shows that only a few drivers have their
version increased as changes are applied there. So, relying on cap->version
has a minimal chance of working only with a few drivers, with vanilla *.0 kernels.
Anyway, I think that we should at least apply the enclosed patch, and remove
KERNEL_VERSION and linux/version.h includes for the drivers that didn't change
its version in the past 2 kernel releases.
I'll work later on the linux/version.h cleanup patches.
Cheers,
Mauro
-
[media] v4l2-ioctl: Add a default value for kernel version
Most drivers don't increase kernel versions as newer features are added or
bug fixes are solved. So, vidioc_querycap returned value for cap->version is
meaningless. Instead of keeping this situation forever, let's add a default
value matching the current Linux version.
Drivers that want to keep their own version control can still do it, as they
can override the default value for cap->version.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
diff --git a/drivers/media/video/v4l2-ioctl.c b/drivers/media/video/v4l2-ioctl.c
index 213ba7d..61ac6bf 100644
--- a/drivers/media/video/v4l2-ioctl.c
+++ b/drivers/media/video/v4l2-ioctl.c
@@ -16,6 +16,7 @@
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/kernel.h>
+#include <linux/version.h>
#include <linux/videodev2.h>
@@ -605,6 +606,7 @@ static long __video_do_ioctl(struct file *file,
if (!ops->vidioc_querycap)
break;
+ cap->version = LINUX_VERSION_CODE;
ret = ops->vidioc_querycap(file, fh, cap);
if (!ret)
dbgarg(cmd, "driver=%s, card=%s, bus=%s, "
^ permalink raw reply related [flat|nested] 31+ messages in thread
* [PATCH] [media] Stop using linux/version.h on most drivers
2011-06-24 14:37 ` Mauro Carvalho Chehab
@ 2011-06-24 18:25 ` Mauro Carvalho Chehab
2011-06-25 10:09 ` Hans Verkuil
2011-06-24 18:34 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/ Stefan Richter
1 sibling, 1 reply; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 18:25 UTC (permalink / raw)
To: LKML
Cc: Hans Verkuil, Devin Heitmueller, Jesper Juhl, trivial,
linux-media, ceph-devel, Sage Weil
All the modified drivers didn't have any version increment since
Jan, 1 2011. Several of them didn't have any version increment
for a long time, even having new features and important bug fixes
happening.
As we're now filling the QUERYCAP version with the current Kernel
Release, we don't need to maintain a per-driver version control
anymore. So, let's just use the default.
In order to preserve the Kernel module version history, a
KERNEL_VERSION() macro were added to all modified drivers, and
the extraver number were incremented.
I opted to preserve the per-driver version control to a few
drivers: cx18, davinci, fsl-viu, gspca, ivtv, m5mols, soc_camera,
pwc, s2255, s5p-fimc and sh_vou. The rationale is that the
per-driver version control seems to be actively maintained on
those.
A few drivers are still using the legacy way to handle ioctl's.
So, we can't do such change on them, otherwise, they'll break.
Those are: uvc, pvrusb2, et61x251 and sn9c102.
Yet, I think that the better for them would be to just use the
default version numbering, instead of doing that by themselves.
While here, removed a few not needed include linux/version.h.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
Note: This patch assumes that cap->version = LINUX_VERSION_CODE is
filled inside v4l2-ioctl [1]
[1] http://www.mail-archive.com/linux-media@vger.kernel.org/msg33547.html
drivers/media/video/arv.c | 5 ++---
drivers/media/video/au0828/au0828-core.c | 1 +
drivers/media/video/au0828/au0828-video.c | 5 -----
drivers/media/video/bt8xx/bttv-driver.c | 14 ++++----------
drivers/media/video/bt8xx/bttvp.h | 3 ---
drivers/media/video/bw-qcam.c | 3 +--
drivers/media/video/c-qcam.c | 3 +--
drivers/media/video/cpia2/cpia2.h | 5 -----
drivers/media/video/cpia2/cpia2_v4l.c | 12 ++++--------
drivers/media/video/cx231xx/cx231xx-video.c | 14 ++++----------
drivers/media/video/cx231xx/cx231xx.h | 1 -
drivers/media/video/cx23885/altera-ci.c | 1 -
drivers/media/video/cx23885/cx23885-417.c | 1 -
drivers/media/video/cx23885/cx23885-core.c | 13 +++----------
drivers/media/video/cx23885/cx23885-video.c | 1 -
drivers/media/video/cx23885/cx23885.h | 3 +--
drivers/media/video/cx88/cx88-alsa.c | 19 ++++---------------
drivers/media/video/cx88/cx88-blackbird.c | 20 +++-----------------
drivers/media/video/cx88/cx88-dvb.c | 18 +++---------------
drivers/media/video/cx88/cx88-mpeg.c | 11 +++--------
drivers/media/video/cx88/cx88-video.c | 21 +++------------------
drivers/media/video/cx88/cx88.h | 4 ++--
drivers/media/video/em28xx/em28xx-video.c | 14 +++++---------
drivers/media/video/gspca/gl860/gl860.h | 1 -
drivers/media/video/hdpvr/hdpvr-core.c | 1 +
drivers/media/video/hdpvr/hdpvr-video.c | 2 --
drivers/media/video/hdpvr/hdpvr.h | 6 ------
drivers/media/video/mem2mem_testdev.c | 4 +---
drivers/media/video/pms.c | 4 +---
drivers/media/video/pwc/pwc-ioctl.h | 1 -
drivers/media/video/pwc/pwc.h | 8 ++++----
drivers/media/video/saa7134/saa7134-core.c | 12 ++++--------
drivers/media/video/saa7134/saa7134-empress.c | 1 -
drivers/media/video/saa7134/saa7134-video.c | 2 --
drivers/media/video/saa7134/saa7134.h | 3 +--
drivers/media/video/saa7164/saa7164.h | 1 -
drivers/media/video/timblogiw.c | 1 -
drivers/media/video/tlg2300/pd-common.h | 1 -
drivers/media/video/tlg2300/pd-main.c | 1 +
drivers/media/video/tlg2300/pd-radio.c | 2 --
drivers/media/video/usbvision/usbvision-video.c | 12 +-----------
drivers/media/video/vino.c | 5 +----
drivers/media/video/vivi.c | 14 ++++----------
drivers/media/video/w9966.c | 4 +---
drivers/media/video/zoran/zoran.h | 4 ----
drivers/media/video/zoran/zoran_card.c | 7 +++++--
drivers/media/video/zoran/zoran_driver.c | 3 ---
drivers/media/video/zr364xx.c | 6 ++----
48 files changed, 71 insertions(+), 227 deletions(-)
diff --git a/drivers/media/video/arv.c b/drivers/media/video/arv.c
index f989f28..b6ed44a 100644
--- a/drivers/media/video/arv.c
+++ b/drivers/media/video/arv.c
@@ -27,7 +27,6 @@
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sched.h>
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
#include <media/v4l2-device.h>
@@ -54,7 +53,7 @@
*/
#define USE_INT 0 /* Don't modify */
-#define VERSION "0.04"
+#define VERSION "0.0.5"
#define ar_inl(addr) inl((unsigned long)(addr))
#define ar_outl(val, addr) outl((unsigned long)(val), (unsigned long)(addr))
@@ -404,7 +403,6 @@ static int ar_querycap(struct file *file, void *priv,
strlcpy(vcap->driver, ar->vdev.name, sizeof(vcap->driver));
strlcpy(vcap->card, "Colour AR VGA", sizeof(vcap->card));
strlcpy(vcap->bus_info, "Platform", sizeof(vcap->bus_info));
- vcap->version = KERNEL_VERSION(0, 0, 4);
vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
return 0;
}
@@ -879,3 +877,4 @@ module_exit(ar_cleanup_module);
MODULE_AUTHOR("Takeo Takahashi <takahashi.takeo@renesas.com>");
MODULE_DESCRIPTION("Colour AR M64278(VGA) for Video4Linux");
MODULE_LICENSE("GPL");
+MODULE_VERSION(VERSION);
diff --git a/drivers/media/video/au0828/au0828-core.c b/drivers/media/video/au0828/au0828-core.c
index ca342e4..1e4ce50 100644
--- a/drivers/media/video/au0828/au0828-core.c
+++ b/drivers/media/video/au0828/au0828-core.c
@@ -292,3 +292,4 @@ module_exit(au0828_exit);
MODULE_DESCRIPTION("Driver for Auvitek AU0828 based products");
MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
MODULE_LICENSE("GPL");
+MODULE_VERSION("0.0.2");
diff --git a/drivers/media/video/au0828/au0828-video.c b/drivers/media/video/au0828/au0828-video.c
index c03eb29..0b3e481 100644
--- a/drivers/media/video/au0828/au0828-video.c
+++ b/drivers/media/video/au0828/au0828-video.c
@@ -33,7 +33,6 @@
#include <linux/init.h>
#include <linux/device.h>
#include <linux/suspend.h>
-#include <linux/version.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-chip-ident.h>
@@ -43,8 +42,6 @@
static DEFINE_MUTEX(au0828_sysfs_lock);
-#define AU0828_VERSION_CODE KERNEL_VERSION(0, 0, 1)
-
/* ------------------------------------------------------------------
Videobuf operations
------------------------------------------------------------------*/
@@ -1254,8 +1251,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, dev->board.name, sizeof(cap->card));
strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
- cap->version = AU0828_VERSION_CODE;
-
/*set the device capabilities */
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_VBI_CAPTURE |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index a97cf27..696e978 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -57,6 +57,7 @@
#include <media/saa6588.h>
+#define BTTV_VERSION "0.9.19"
unsigned int bttv_num; /* number of Bt848s in use */
struct bttv *bttvs[BTTV_MAX];
@@ -163,6 +164,7 @@ MODULE_PARM_DESC(radio_nr, "radio device numbers");
MODULE_DESCRIPTION("bttv - v4l/v4l2 driver module for bt848/878 based cards");
MODULE_AUTHOR("Ralph Metzler & Marcus Metzler & Gerd Knorr");
MODULE_LICENSE("GPL");
+MODULE_VERSION(BTTV_VERSION);
/* ----------------------------------------------------------------------- */
/* sysfs */
@@ -2616,7 +2618,6 @@ static int bttv_querycap(struct file *file, void *priv,
strlcpy(cap->card, btv->video_dev->name, sizeof(cap->card));
snprintf(cap->bus_info, sizeof(cap->bus_info),
"PCI:%s", pci_name(btv->c.pci));
- cap->version = BTTV_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_VBI_CAPTURE |
@@ -3416,7 +3417,6 @@ static int radio_querycap(struct file *file, void *priv,
strcpy(cap->driver, "bttv");
strlcpy(cap->card, btv->radio_dev->name, sizeof(cap->card));
sprintf(cap->bus_info, "PCI:%s", pci_name(btv->c.pci));
- cap->version = BTTV_VERSION_CODE;
cap->capabilities = V4L2_CAP_TUNER;
return 0;
@@ -4585,14 +4585,8 @@ static int __init bttv_init_module(void)
bttv_num = 0;
- printk(KERN_INFO "bttv: driver version %d.%d.%d loaded\n",
- (BTTV_VERSION_CODE >> 16) & 0xff,
- (BTTV_VERSION_CODE >> 8) & 0xff,
- BTTV_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "bttv: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "bttv: driver version %s loaded\n",
+ BTTV_VERSION);
if (gbuffers < 2 || gbuffers > VIDEO_MAX_FRAME)
gbuffers = 2;
if (gbufsize > BTTV_MAX_FBUF)
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
index 9b776fa..318edf2 100644
--- a/drivers/media/video/bt8xx/bttvp.h
+++ b/drivers/media/video/bt8xx/bttvp.h
@@ -25,9 +25,6 @@
#ifndef _BTTVP_H_
#define _BTTVP_H_
-#include <linux/version.h>
-#define BTTV_VERSION_CODE KERNEL_VERSION(0,9,18)
-
#include <linux/types.h>
#include <linux/wait.h>
#include <linux/i2c.h>
diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c
index c119350..2fc998e 100644
--- a/drivers/media/video/bw-qcam.c
+++ b/drivers/media/video/bw-qcam.c
@@ -71,7 +71,6 @@ OTHER DEALINGS IN THE SOFTWARE.
#include <linux/mm.h>
#include <linux/parport.h>
#include <linux/sched.h>
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <linux/mutex.h>
#include <asm/uaccess.h>
@@ -647,7 +646,6 @@ static int qcam_querycap(struct file *file, void *priv,
strlcpy(vcap->driver, qcam->v4l2_dev.name, sizeof(vcap->driver));
strlcpy(vcap->card, "B&W Quickcam", sizeof(vcap->card));
strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
- vcap->version = KERNEL_VERSION(0, 0, 2);
vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
return 0;
}
@@ -1092,3 +1090,4 @@ module_init(init_bw_qcams);
module_exit(exit_bw_qcams);
MODULE_LICENSE("GPL");
+MODULE_VERSION("0.0.3");
diff --git a/drivers/media/video/c-qcam.c b/drivers/media/video/c-qcam.c
index 24fc009..b8d800e 100644
--- a/drivers/media/video/c-qcam.c
+++ b/drivers/media/video/c-qcam.c
@@ -35,7 +35,6 @@
#include <linux/sched.h>
#include <linux/mutex.h>
#include <linux/jiffies.h>
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <asm/uaccess.h>
#include <media/v4l2-device.h>
@@ -517,7 +516,6 @@ static int qcam_querycap(struct file *file, void *priv,
strlcpy(vcap->driver, qcam->v4l2_dev.name, sizeof(vcap->driver));
strlcpy(vcap->card, "Color Quickcam", sizeof(vcap->card));
strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
- vcap->version = KERNEL_VERSION(0, 0, 3);
vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
return 0;
}
@@ -886,6 +884,7 @@ static void __exit cqcam_cleanup(void)
MODULE_AUTHOR("Philip Blundell <philb@gnu.org>");
MODULE_DESCRIPTION(BANNER);
MODULE_LICENSE("GPL");
+MODULE_VERSION("0.0.4");
module_init(cqcam_init);
module_exit(cqcam_cleanup);
diff --git a/drivers/media/video/cpia2/cpia2.h b/drivers/media/video/cpia2/cpia2.h
index 6d6d184..ab25218 100644
--- a/drivers/media/video/cpia2/cpia2.h
+++ b/drivers/media/video/cpia2/cpia2.h
@@ -31,7 +31,6 @@
#ifndef __CPIA2_H__
#define __CPIA2_H__
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <media/v4l2-common.h>
#include <linux/usb.h>
@@ -43,10 +42,6 @@
/* define for verbose debug output */
//#define _CPIA2_DEBUG_
-#define CPIA2_MAJ_VER 3
-#define CPIA2_MIN_VER 0
-#define CPIA2_PATCH_VER 0
-
/***
* Image defines
***/
diff --git a/drivers/media/video/cpia2/cpia2_v4l.c b/drivers/media/video/cpia2/cpia2_v4l.c
index 40eb632..077eb1d 100644
--- a/drivers/media/video/cpia2/cpia2_v4l.c
+++ b/drivers/media/video/cpia2/cpia2_v4l.c
@@ -29,8 +29,7 @@
* Alan Cox <alan@lxorguk.ukuu.org.uk>
****************************************************************************/
-#include <linux/version.h>
-
+#define CPIA_VERSION "3.0.1"
#include <linux/module.h>
#include <linux/time.h>
@@ -80,6 +79,7 @@ MODULE_AUTHOR("Steve Miller (STMicroelectronics) <steve.miller@st.com>");
MODULE_DESCRIPTION("V4L-driver for STMicroelectronics CPiA2 based cameras");
MODULE_SUPPORTED_DEVICE("video");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CPIA_VERSION);
#define ABOUT "V4L-Driver for Vision CPiA2 based cameras"
@@ -465,9 +465,6 @@ static int cpia2_querycap(struct file *file, void *fh, struct v4l2_capability *v
if (usb_make_path(cam->dev, vc->bus_info, sizeof(vc->bus_info)) <0)
memset(vc->bus_info,0, sizeof(vc->bus_info));
- vc->version = KERNEL_VERSION(CPIA2_MAJ_VER, CPIA2_MIN_VER,
- CPIA2_PATCH_VER);
-
vc->capabilities = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING;
@@ -1558,8 +1555,8 @@ static void __init check_parameters(void)
*****************************************************************************/
static int __init cpia2_init(void)
{
- LOG("%s v%d.%d.%d\n",
- ABOUT, CPIA2_MAJ_VER, CPIA2_MIN_VER, CPIA2_PATCH_VER);
+ LOG("%s v%s\n",
+ ABOUT, CPIA_VERSION);
check_parameters();
cpia2_usb_init();
return 0;
@@ -1579,4 +1576,3 @@ static void __exit cpia2_exit(void)
module_init(cpia2_init);
module_exit(cpia2_exit);
-
diff --git a/drivers/media/video/cx231xx/cx231xx-video.c b/drivers/media/video/cx231xx/cx231xx-video.c
index a69c24d..21fa547 100644
--- a/drivers/media/video/cx231xx/cx231xx-video.c
+++ b/drivers/media/video/cx231xx/cx231xx-video.c
@@ -29,7 +29,6 @@
#include <linux/bitmap.h>
#include <linux/usb.h>
#include <linux/i2c.h>
-#include <linux/version.h>
#include <linux/mm.h>
#include <linux/mutex.h>
#include <linux/slab.h>
@@ -45,7 +44,7 @@
#include "cx231xx.h"
#include "cx231xx-vbi.h"
-#define CX231XX_VERSION_CODE KERNEL_VERSION(0, 0, 1)
+#define CX231XX_VERSION "0.0.2"
#define DRIVER_AUTHOR "Srinivasa Deevi <srinivasa.deevi@conexant.com>"
#define DRIVER_DESC "Conexant cx231xx based USB video device driver"
@@ -70,6 +69,7 @@ do {\
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX231XX_VERSION);
static unsigned int card[] = {[0 ... (CX231XX_MAXBOARDS - 1)] = UNSET };
static unsigned int video_nr[] = {[0 ... (CX231XX_MAXBOARDS - 1)] = UNSET };
@@ -1869,8 +1869,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
- cap->version = CX231XX_VERSION_CODE;
-
cap->capabilities = V4L2_CAP_VBI_CAPTURE |
#if 0
V4L2_CAP_SLICED_VBI_CAPTURE |
@@ -2057,7 +2055,6 @@ static int radio_querycap(struct file *file, void *priv,
strlcpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
- cap->version = CX231XX_VERSION_CODE;
cap->capabilities = V4L2_CAP_TUNER;
return 0;
}
@@ -2570,11 +2567,8 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
{
int ret;
- cx231xx_info("%s: v4l2 driver version %d.%d.%d\n",
- dev->name,
- (CX231XX_VERSION_CODE >> 16) & 0xff,
- (CX231XX_VERSION_CODE >> 8) & 0xff,
- CX231XX_VERSION_CODE & 0xff);
+ cx231xx_info("%s: v4l2 driver version %s\n",
+ dev->name, CX231XX_VERSION);
/* set default norm */
/*dev->norm = cx231xx_video_template.current_norm; */
diff --git a/drivers/media/video/cx231xx/cx231xx.h b/drivers/media/video/cx231xx/cx231xx.h
index b39b85e..c8d0d3d 100644
--- a/drivers/media/video/cx231xx/cx231xx.h
+++ b/drivers/media/video/cx231xx/cx231xx.h
@@ -114,7 +114,6 @@
V4L2_STD_PAL_BG | V4L2_STD_PAL_DK | V4L2_STD_PAL_I | \
V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | \
V4L2_STD_PAL_60 | V4L2_STD_SECAM_L | V4L2_STD_SECAM_DK)
-#define CX231xx_VERSION_CODE KERNEL_VERSION(0, 0, 2)
#define SLEEP_S5H1432 30
#define CX23417_OSC_EN 8
diff --git a/drivers/media/video/cx23885/altera-ci.c b/drivers/media/video/cx23885/altera-ci.c
index 678539b..1fa8927 100644
--- a/drivers/media/video/cx23885/altera-ci.c
+++ b/drivers/media/video/cx23885/altera-ci.c
@@ -52,7 +52,6 @@
* | DATA7| DATA6| DATA5| DATA4| DATA3| DATA2| DATA1| DATA0|
* +-------+-------+-------+-------+-------+-------+-------+-------+
*/
-#include <linux/version.h>
#include <media/videobuf-dma-sg.h>
#include <media/videobuf-dvb.h>
#include "altera-ci.h"
diff --git a/drivers/media/video/cx23885/cx23885-417.c b/drivers/media/video/cx23885/cx23885-417.c
index 9a98dc5..67c4a59 100644
--- a/drivers/media/video/cx23885/cx23885-417.c
+++ b/drivers/media/video/cx23885/cx23885-417.c
@@ -1359,7 +1359,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, cx23885_boards[tsport->dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
- cap->version = CX23885_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
index 64d9b21..0b44255 100644
--- a/drivers/media/video/cx23885/cx23885-core.c
+++ b/drivers/media/video/cx23885/cx23885-core.c
@@ -42,6 +42,7 @@
MODULE_DESCRIPTION("Driver for cx23885 based TV cards");
MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX23885_VERSION);
static unsigned int debug;
module_param(debug, int, 0644);
@@ -2152,14 +2153,8 @@ static struct pci_driver cx23885_pci_driver = {
static int __init cx23885_init(void)
{
- printk(KERN_INFO "cx23885 driver version %d.%d.%d loaded\n",
- (CX23885_VERSION_CODE >> 16) & 0xff,
- (CX23885_VERSION_CODE >> 8) & 0xff,
- CX23885_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx23885: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx23885 driver version %s loaded\n",
+ CX23885_VERSION);
return pci_register_driver(&cx23885_pci_driver);
}
@@ -2170,5 +2165,3 @@ static void __exit cx23885_fini(void)
module_init(cx23885_init);
module_exit(cx23885_fini);
-
-/* ----------------------------------------------------------- */
diff --git a/drivers/media/video/cx23885/cx23885-video.c b/drivers/media/video/cx23885/cx23885-video.c
index ee57f6b..896bb32 100644
--- a/drivers/media/video/cx23885/cx23885-video.c
+++ b/drivers/media/video/cx23885/cx23885-video.c
@@ -1000,7 +1000,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, cx23885_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
- cap->version = CX23885_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
index c186473..01c3b7b 100644
--- a/drivers/media/video/cx23885/cx23885.h
+++ b/drivers/media/video/cx23885/cx23885.h
@@ -36,10 +36,9 @@
#include "cx23885-reg.h"
#include "media/cx2341x.h"
-#include <linux/version.h>
#include <linux/mutex.h>
-#define CX23885_VERSION_CODE KERNEL_VERSION(0, 0, 2)
+#define CX23885_VERSION "0.0.3"
#define UNSET (-1U)
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
index 423c1af..68d1240 100644
--- a/drivers/media/video/cx88/cx88-alsa.c
+++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -113,6 +113,8 @@ MODULE_DESCRIPTION("ALSA driver module for cx2388x based TV cards");
MODULE_AUTHOR("Ricardo Cerqueira");
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX88_VERSION);
+
MODULE_SUPPORTED_DEVICE("{{Conexant,23881},"
"{{Conexant,23882},"
"{{Conexant,23883}");
@@ -973,14 +975,8 @@ static struct pci_driver cx88_audio_pci_driver = {
*/
static int __init cx88_audio_init(void)
{
- printk(KERN_INFO "cx2388x alsa driver version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx2388x alsa driver version %s loaded\n",
+ CX88_VERSION);
return pci_register_driver(&cx88_audio_pci_driver);
}
@@ -994,10 +990,3 @@ static void __exit cx88_audio_fini(void)
module_init(cx88_audio_init);
module_exit(cx88_audio_fini);
-
-/* ----------------------------------------------------------- */
-/*
- * Local variables:
- * c-basic-offset: 8
- * End:
- */
diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c
index 11e49bb..e46446a 100644
--- a/drivers/media/video/cx88/cx88-blackbird.c
+++ b/drivers/media/video/cx88/cx88-blackbird.c
@@ -42,6 +42,7 @@
MODULE_DESCRIPTION("driver for cx2388x/cx23416 based mpeg encoder cards");
MODULE_AUTHOR("Jelle Foks <jelle@foks.us>, Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX88_VERSION);
static unsigned int mpegbufs = 32;
module_param(mpegbufs,int,0644);
@@ -730,7 +731,6 @@ static int vidioc_querycap (struct file *file, void *priv,
strcpy(cap->driver, "cx88_blackbird");
strlcpy(cap->card, core->board.name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",pci_name(dev->pci));
- cap->version = CX88_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
@@ -1368,14 +1368,8 @@ static struct cx8802_driver cx8802_blackbird_driver = {
static int __init blackbird_init(void)
{
- printk(KERN_INFO "cx2388x blackbird driver version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx2388x blackbird driver version %s loaded\n",
+ CX88_VERSION);
return cx8802_register_driver(&cx8802_blackbird_driver);
}
@@ -1389,11 +1383,3 @@ module_exit(blackbird_fini);
module_param_named(video_debug,cx8802_mpeg_template.debug, int, 0644);
MODULE_PARM_DESC(debug,"enable debug messages [video]");
-
-/* ----------------------------------------------------------- */
-/*
- * Local variables:
- * c-basic-offset: 8
- * End:
- * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
- */
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
index 1ed72ce..cf3d33a 100644
--- a/drivers/media/video/cx88/cx88-dvb.c
+++ b/drivers/media/video/cx88/cx88-dvb.c
@@ -64,6 +64,7 @@ MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX88_VERSION);
static unsigned int debug;
module_param(debug, int, 0644);
@@ -1749,14 +1750,8 @@ static struct cx8802_driver cx8802_dvb_driver = {
static int __init dvb_init(void)
{
- printk(KERN_INFO "cx88/2: cx2388x dvb driver version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx88/2: cx2388x dvb driver version %s loaded\n",
+ CX88_VERSION);
return cx8802_register_driver(&cx8802_dvb_driver);
}
@@ -1767,10 +1762,3 @@ static void __exit dvb_fini(void)
module_init(dvb_init);
module_exit(dvb_fini);
-
-/*
- * Local variables:
- * c-basic-offset: 8
- * compile-command: "make DVB=1"
- * End:
- */
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index 1a7b983..ccd8797 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -39,6 +39,7 @@ MODULE_AUTHOR("Jelle Foks <jelle@foks.us>");
MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX88_VERSION);
static unsigned int debug;
module_param(debug,int,0644);
@@ -890,14 +891,8 @@ static struct pci_driver cx8802_pci_driver = {
static int __init cx8802_init(void)
{
- printk(KERN_INFO "cx88/2: cx2388x MPEG-TS Driver Manager version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx88/2: cx2388x MPEG-TS Driver Manager version %s loaded\n",
+ CX88_VERSION);
return pci_register_driver(&cx8802_pci_driver);
}
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
index cef4f28..1db97f3 100644
--- a/drivers/media/video/cx88/cx88-video.c
+++ b/drivers/media/video/cx88/cx88-video.c
@@ -45,6 +45,7 @@
MODULE_DESCRIPTION("v4l2 driver module for cx2388x based TV cards");
MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");
+MODULE_VERSION(CX88_VERSION);
/* ------------------------------------------------------------------ */
@@ -1161,7 +1162,6 @@ static int vidioc_querycap (struct file *file, void *priv,
strcpy(cap->driver, "cx8800");
strlcpy(cap->card, core->board.name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",pci_name(dev->pci));
- cap->version = CX88_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
@@ -1480,7 +1480,6 @@ static int radio_querycap (struct file *file, void *priv,
strcpy(cap->driver, "cx8800");
strlcpy(cap->card, core->board.name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci));
- cap->version = CX88_VERSION_CODE;
cap->capabilities = V4L2_CAP_TUNER;
return 0;
}
@@ -2139,14 +2138,8 @@ static struct pci_driver cx8800_pci_driver = {
static int __init cx8800_init(void)
{
- printk(KERN_INFO "cx88/0: cx2388x v4l2 driver version %d.%d.%d loaded\n",
- (CX88_VERSION_CODE >> 16) & 0xff,
- (CX88_VERSION_CODE >> 8) & 0xff,
- CX88_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "cx88/0: cx2388x v4l2 driver version %s loaded\n",
+ CX88_VERSION);
return pci_register_driver(&cx8800_pci_driver);
}
@@ -2157,11 +2150,3 @@ static void __exit cx8800_fini(void)
module_init(cx8800_init);
module_exit(cx8800_fini);
-
-/* ----------------------------------------------------------- */
-/*
- * Local variables:
- * c-basic-offset: 8
- * End:
- * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
- */
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 5719063..425c9fb 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -39,9 +39,9 @@
#include "cx88-reg.h"
#include "tuner-xc2028.h"
-#include <linux/version.h>
#include <linux/mutex.h>
-#define CX88_VERSION_CODE KERNEL_VERSION(0, 0, 8)
+
+#define CX88_VERSION "0.0.9"
#define UNSET (-1U)
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
index 7b6461d..d176dc0 100644
--- a/drivers/media/video/em28xx/em28xx-video.c
+++ b/drivers/media/video/em28xx/em28xx-video.c
@@ -32,7 +32,6 @@
#include <linux/bitmap.h>
#include <linux/usb.h>
#include <linux/i2c.h>
-#include <linux/version.h>
#include <linux/mm.h>
#include <linux/mutex.h>
#include <linux/slab.h>
@@ -50,7 +49,8 @@
"Sascha Sommer <saschasommer@freenet.de>"
#define DRIVER_DESC "Empia em28xx based USB video device driver"
-#define EM28XX_VERSION_CODE KERNEL_VERSION(0, 1, 2)
+
+#define EM28XX_VERSION "0.1.3"
#define em28xx_videodbg(fmt, arg...) do {\
if (video_debug) \
@@ -72,6 +72,7 @@ do {\
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
+MODULE_VERSION(EM28XX_VERSION);
static unsigned int video_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
static unsigned int vbi_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
@@ -1757,8 +1758,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
- cap->version = EM28XX_VERSION_CODE;
-
cap->capabilities =
V4L2_CAP_SLICED_VBI_CAPTURE |
V4L2_CAP_VIDEO_CAPTURE |
@@ -1976,7 +1975,6 @@ static int radio_querycap(struct file *file, void *priv,
strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
- cap->version = EM28XX_VERSION_CODE;
cap->capabilities = V4L2_CAP_TUNER;
return 0;
}
@@ -2450,10 +2448,8 @@ int em28xx_register_analog_devices(struct em28xx *dev)
u8 val;
int ret;
- printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",
- dev->name,
- (EM28XX_VERSION_CODE >> 16) & 0xff,
- (EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);
+ printk(KERN_INFO "%s: v4l2 driver version %s\n",
+ dev->name, EM28XX_VERSION);
/* set default norm */
dev->norm = em28xx_video_template.current_norm;
diff --git a/drivers/media/video/gspca/gl860/gl860.h b/drivers/media/video/gspca/gl860/gl860.h
index 49ad4ac..0330a02 100644
--- a/drivers/media/video/gspca/gl860/gl860.h
+++ b/drivers/media/video/gspca/gl860/gl860.h
@@ -18,7 +18,6 @@
*/
#ifndef GL860_DEV_H
#define GL860_DEV_H
-#include <linux/version.h>
#include "gspca.h"
diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
index a27d93b..5442a17 100644
--- a/drivers/media/video/hdpvr/hdpvr-core.c
+++ b/drivers/media/video/hdpvr/hdpvr-core.c
@@ -474,5 +474,6 @@ module_init(hdpvr_init);
module_exit(hdpvr_exit);
MODULE_LICENSE("GPL");
+MODULE_VERSION("0.2.1");
MODULE_AUTHOR("Janne Grunau");
MODULE_DESCRIPTION("Hauppauge HD PVR driver");
diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
index 514aea7..087f7c0 100644
--- a/drivers/media/video/hdpvr/hdpvr-video.c
+++ b/drivers/media/video/hdpvr/hdpvr-video.c
@@ -17,7 +17,6 @@
#include <linux/uaccess.h>
#include <linux/usb.h>
#include <linux/mutex.h>
-#include <linux/version.h>
#include <linux/workqueue.h>
#include <linux/videodev2.h>
@@ -574,7 +573,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strcpy(cap->driver, "hdpvr");
strcpy(cap->card, "Hauppauge HD PVR");
usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
- cap->version = HDPVR_VERSION;
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_AUDIO |
V4L2_CAP_READWRITE;
diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
index 072f23c..d6439db 100644
--- a/drivers/media/video/hdpvr/hdpvr.h
+++ b/drivers/media/video/hdpvr/hdpvr.h
@@ -18,12 +18,6 @@
#include <media/v4l2-device.h>
#include <media/ir-kbd-i2c.h>
-#define HDPVR_MAJOR_VERSION 0
-#define HDPVR_MINOR_VERSION 2
-#define HDPVR_RELEASE 0
-#define HDPVR_VERSION \
- KERNEL_VERSION(HDPVR_MAJOR_VERSION, HDPVR_MINOR_VERSION, HDPVR_RELEASE)
-
#define HDPVR_MAX 8
#define HDPVR_I2C_MAX_SIZE 128
diff --git a/drivers/media/video/mem2mem_testdev.c b/drivers/media/video/mem2mem_testdev.c
index b03d74e..166bf93 100644
--- a/drivers/media/video/mem2mem_testdev.c
+++ b/drivers/media/video/mem2mem_testdev.c
@@ -19,7 +19,6 @@
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/fs.h>
-#include <linux/version.h>
#include <linux/timer.h>
#include <linux/sched.h>
#include <linux/slab.h>
@@ -35,7 +34,7 @@
MODULE_DESCRIPTION("Virtual device for mem2mem framework testing");
MODULE_AUTHOR("Pawel Osciak, <pawel@osciak.com>");
MODULE_LICENSE("GPL");
-
+MODULE_VERSION("0.1.1");
#define MIN_W 32
#define MIN_H 32
@@ -380,7 +379,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strncpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver) - 1);
strncpy(cap->card, MEM2MEM_NAME, sizeof(cap->card) - 1);
cap->bus_info[0] = 0;
- cap->version = KERNEL_VERSION(0, 1, 0);
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
| V4L2_CAP_STREAMING;
diff --git a/drivers/media/video/pms.c b/drivers/media/video/pms.c
index 7551907..e753b5e 100644
--- a/drivers/media/video/pms.c
+++ b/drivers/media/video/pms.c
@@ -28,7 +28,6 @@
#include <linux/mm.h>
#include <linux/ioport.h>
#include <linux/init.h>
-#include <linux/version.h>
#include <linux/mutex.h>
#include <linux/uaccess.h>
#include <asm/io.h>
@@ -39,7 +38,7 @@
#include <media/v4l2-device.h>
MODULE_LICENSE("GPL");
-
+MODULE_VERSION("0.0.4");
#define MOTOROLA 1
#define PHILIPS2 2 /* SAA7191 */
@@ -678,7 +677,6 @@ static int pms_querycap(struct file *file, void *priv,
strlcpy(vcap->driver, dev->v4l2_dev.name, sizeof(vcap->driver));
strlcpy(vcap->card, "Mediavision PMS", sizeof(vcap->card));
strlcpy(vcap->bus_info, "ISA", sizeof(vcap->bus_info));
- vcap->version = KERNEL_VERSION(0, 0, 3);
vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
return 0;
}
diff --git a/drivers/media/video/pwc/pwc-ioctl.h b/drivers/media/video/pwc/pwc-ioctl.h
index 8c0cae7..b74fea0 100644
--- a/drivers/media/video/pwc/pwc-ioctl.h
+++ b/drivers/media/video/pwc/pwc-ioctl.h
@@ -52,7 +52,6 @@
*/
#include <linux/types.h>
-#include <linux/version.h>
/* Enumeration of image sizes */
#define PSZ_SQCIF 0x00
diff --git a/drivers/media/video/pwc/pwc.h b/drivers/media/video/pwc/pwc.h
index e947766..78185c6 100644
--- a/drivers/media/video/pwc/pwc.h
+++ b/drivers/media/video/pwc/pwc.h
@@ -29,7 +29,6 @@
#include <linux/usb.h>
#include <linux/spinlock.h>
#include <linux/wait.h>
-#include <linux/version.h>
#include <linux/mutex.h>
#include <linux/mm.h>
#include <linux/slab.h>
@@ -47,9 +46,10 @@
/* Version block */
#define PWC_MAJOR 10
#define PWC_MINOR 0
-#define PWC_EXTRAMINOR 12
-#define PWC_VERSION_CODE KERNEL_VERSION(PWC_MAJOR,PWC_MINOR,PWC_EXTRAMINOR)
-#define PWC_VERSION "10.0.14"
+#define PWC_EXTRAMINOR 15
+
+#define PWC_VERSION_CODE KERNEL_VERSION(PWC_MAJOR, PWC_MINOR, PWC_EXTRAMINOR)
+#define PWC_VERSION __stringify(PWC_MAJOR) "." __stringify(PWC_MINOR) "." __stringify(PWC_EXTRAMINOR)
#define PWC_NAME "pwc"
#define PFX PWC_NAME ": "
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
index f9be737..acf83f4 100644
--- a/drivers/media/video/saa7134/saa7134-core.c
+++ b/drivers/media/video/saa7134/saa7134-core.c
@@ -39,6 +39,8 @@
MODULE_DESCRIPTION("v4l2 driver module for saa7130/34 based TV cards");
MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");
+MODULE_LICENSE(SAA7134_VERSION);
+
/* ------------------------------------------------------------------ */
@@ -1332,14 +1334,8 @@ static struct pci_driver saa7134_pci_driver = {
static int __init saa7134_init(void)
{
INIT_LIST_HEAD(&saa7134_devlist);
- printk(KERN_INFO "saa7130/34: v4l2 driver version %d.%d.%d loaded\n",
- (SAA7134_VERSION_CODE >> 16) & 0xff,
- (SAA7134_VERSION_CODE >> 8) & 0xff,
- SAA7134_VERSION_CODE & 0xff);
-#ifdef SNAPSHOT
- printk(KERN_INFO "saa7130/34: snapshot date %04d-%02d-%02d\n",
- SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
-#endif
+ printk(KERN_INFO "saa7130/34: v4l2 driver version %s loaded\n",
+ SAA7134_VERSION);
return pci_register_driver(&saa7134_pci_driver);
}
diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
index 18294db..dde361a 100644
--- a/drivers/media/video/saa7134/saa7134-empress.c
+++ b/drivers/media/video/saa7134/saa7134-empress.c
@@ -172,7 +172,6 @@ static int empress_querycap(struct file *file, void *priv,
strlcpy(cap->card, saa7134_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
- cap->version = SAA7134_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c
index 776ba2d..9cf7914 100644
--- a/drivers/media/video/saa7134/saa7134-video.c
+++ b/drivers/media/video/saa7134/saa7134-video.c
@@ -1810,7 +1810,6 @@ static int saa7134_querycap(struct file *file, void *priv,
strlcpy(cap->card, saa7134_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
- cap->version = SAA7134_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_VBI_CAPTURE |
@@ -2307,7 +2306,6 @@ static int radio_querycap(struct file *file, void *priv,
strcpy(cap->driver, "saa7134");
strlcpy(cap->card, saa7134_boards[dev->board].name, sizeof(cap->card));
sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
- cap->version = SAA7134_VERSION_CODE;
cap->capabilities = V4L2_CAP_TUNER;
return 0;
}
diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h
index 28eb103..bc8d6bb 100644
--- a/drivers/media/video/saa7134/saa7134.h
+++ b/drivers/media/video/saa7134/saa7134.h
@@ -19,8 +19,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <linux/version.h>
-#define SAA7134_VERSION_CODE KERNEL_VERSION(0, 2, 16)
+#define SAA7134_VERSION "0, 2, 17"
#include <linux/pci.h>
#include <linux/i2c.h>
diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h
index 16745d2..6678bf1 100644
--- a/drivers/media/video/saa7164/saa7164.h
+++ b/drivers/media/video/saa7164/saa7164.h
@@ -48,7 +48,6 @@
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/kdev_t.h>
-#include <linux/version.h>
#include <linux/mutex.h>
#include <linux/crc32.h>
#include <linux/kthread.h>
diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
index fc611eb..84cd1b6 100644
--- a/drivers/media/video/timblogiw.c
+++ b/drivers/media/video/timblogiw.c
@@ -20,7 +20,6 @@
* Timberdale FPGA LogiWin Video In
*/
-#include <linux/version.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/dmaengine.h>
diff --git a/drivers/media/video/tlg2300/pd-common.h b/drivers/media/video/tlg2300/pd-common.h
index 46066bd..56564e6 100644
--- a/drivers/media/video/tlg2300/pd-common.h
+++ b/drivers/media/video/tlg2300/pd-common.h
@@ -1,7 +1,6 @@
#ifndef PD_COMMON_H
#define PD_COMMON_H
-#include <linux/version.h>
#include <linux/fs.h>
#include <linux/wait.h>
#include <linux/list.h>
diff --git a/drivers/media/video/tlg2300/pd-main.c b/drivers/media/video/tlg2300/pd-main.c
index 99c81a9..129f135 100644
--- a/drivers/media/video/tlg2300/pd-main.c
+++ b/drivers/media/video/tlg2300/pd-main.c
@@ -531,3 +531,4 @@ module_exit(poseidon_exit);
MODULE_AUTHOR("Telegent Systems");
MODULE_DESCRIPTION("For tlg2300-based USB device ");
MODULE_LICENSE("GPL");
+MODULE_VERSION("0.0.2");
diff --git a/drivers/media/video/tlg2300/pd-radio.c b/drivers/media/video/tlg2300/pd-radio.c
index fae84c2..4fad1df 100644
--- a/drivers/media/video/tlg2300/pd-radio.c
+++ b/drivers/media/video/tlg2300/pd-radio.c
@@ -6,7 +6,6 @@
#include <linux/usb.h>
#include <linux/i2c.h>
#include <media/v4l2-dev.h>
-#include <linux/version.h>
#include <linux/mm.h>
#include <linux/mutex.h>
#include <media/v4l2-ioctl.h>
@@ -149,7 +148,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strlcpy(v->driver, "tele-radio", sizeof(v->driver));
strlcpy(v->card, "Telegent Poseidon", sizeof(v->card));
usb_make_path(p->udev, v->bus_info, sizeof(v->bus_info));
- v->version = KERNEL_VERSION(0, 0, 1);
v->capabilities = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
return 0;
}
diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
index ea8ea8a..5a74f5e 100644
--- a/drivers/media/video/usbvision/usbvision-video.c
+++ b/drivers/media/video/usbvision/usbvision-video.c
@@ -45,7 +45,6 @@
*
*/
-#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/timer.h>
@@ -77,15 +76,7 @@
#define DRIVER_ALIAS "USBVision"
#define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
#define DRIVER_LICENSE "GPL"
-#define USBVISION_DRIVER_VERSION_MAJOR 0
-#define USBVISION_DRIVER_VERSION_MINOR 9
-#define USBVISION_DRIVER_VERSION_PATCHLEVEL 10
-#define USBVISION_DRIVER_VERSION KERNEL_VERSION(USBVISION_DRIVER_VERSION_MAJOR,\
-USBVISION_DRIVER_VERSION_MINOR,\
-USBVISION_DRIVER_VERSION_PATCHLEVEL)
-#define USBVISION_VERSION_STRING __stringify(USBVISION_DRIVER_VERSION_MAJOR) \
-"." __stringify(USBVISION_DRIVER_VERSION_MINOR) \
-"." __stringify(USBVISION_DRIVER_VERSION_PATCHLEVEL)
+#define USBVISION_VERSION_STRING "0.9.11"
#define ENABLE_HEXDUMP 0 /* Enable if you need it */
@@ -516,7 +507,6 @@ static int vidioc_querycap(struct file *file, void *priv,
usbvision_device_data[usbvision->dev_model].model_string,
sizeof(vc->card));
usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
- vc->version = USBVISION_DRIVER_VERSION;
vc->capabilities = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_AUDIO |
V4L2_CAP_READWRITE |
diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
index d63e9d9..52a0a37 100644
--- a/drivers/media/video/vino.c
+++ b/drivers/media/video/vino.c
@@ -36,7 +36,6 @@
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/time.h>
-#include <linux/version.h>
#include <linux/kmod.h>
#include <linux/i2c.h>
@@ -61,8 +60,7 @@
// #define VINO_DEBUG
// #define VINO_DEBUG_INT
-#define VINO_MODULE_VERSION "0.0.6"
-#define VINO_VERSION_CODE KERNEL_VERSION(0, 0, 6)
+#define VINO_MODULE_VERSION "0.0.7"
MODULE_DESCRIPTION("SGI VINO Video4Linux2 driver");
MODULE_VERSION(VINO_MODULE_VERSION);
@@ -2934,7 +2932,6 @@ static int vino_querycap(struct file *file, void *__fh,
strcpy(cap->driver, vino_driver_name);
strcpy(cap->card, vino_driver_description);
strcpy(cap->bus_info, vino_bus_name);
- cap->version = VINO_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_STREAMING;
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index 2238a61..3b9db8c 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -22,7 +22,6 @@
#include <linux/sched.h>
#include <linux/slab.h>
#include <linux/font.h>
-#include <linux/version.h>
#include <linux/mutex.h>
#include <linux/videodev2.h>
#include <linux/kthread.h>
@@ -44,15 +43,12 @@
#define MAX_WIDTH 1920
#define MAX_HEIGHT 1200
-#define VIVI_MAJOR_VERSION 0
-#define VIVI_MINOR_VERSION 8
-#define VIVI_RELEASE 0
-#define VIVI_VERSION \
- KERNEL_VERSION(VIVI_MAJOR_VERSION, VIVI_MINOR_VERSION, VIVI_RELEASE)
+#define VIVI_VERSION "0.8.1"
MODULE_DESCRIPTION("Video Technology Magazine Virtual Video Capture Board");
MODULE_AUTHOR("Mauro Carvalho Chehab, Ted Walther and John Sokol");
MODULE_LICENSE("Dual BSD/GPL");
+MODULE_VERSION(VIVI_VERSION);
static unsigned video_nr = -1;
module_param(video_nr, uint, 0644);
@@ -812,7 +808,6 @@ static int vidioc_querycap(struct file *file, void *priv,
strcpy(cap->driver, "vivi");
strcpy(cap->card, "vivi");
strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
- cap->version = VIVI_VERSION;
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING | \
V4L2_CAP_READWRITE;
return 0;
@@ -1325,9 +1320,8 @@ static int __init vivi_init(void)
}
printk(KERN_INFO "Video Technology Magazine Virtual Video "
- "Capture Board ver %u.%u.%u successfully loaded.\n",
- (VIVI_VERSION >> 16) & 0xFF, (VIVI_VERSION >> 8) & 0xFF,
- VIVI_VERSION & 0xFF);
+ "Capture Board ver %s successfully loaded.\n",
+ VIVI_VERSION);
/* n_devs will reflect the actual number of allocated devices */
n_devs = i;
diff --git a/drivers/media/video/w9966.c b/drivers/media/video/w9966.c
index fa35639..453dbbd 100644
--- a/drivers/media/video/w9966.c
+++ b/drivers/media/video/w9966.c
@@ -57,7 +57,6 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/delay.h>
-#include <linux/version.h>
#include <linux/videodev2.h>
#include <linux/slab.h>
#include <media/v4l2-common.h>
@@ -127,7 +126,7 @@ struct w9966 {
MODULE_AUTHOR("Jakob Kemi <jakob.kemi@post.utfors.se>");
MODULE_DESCRIPTION("Winbond w9966cf WebCam driver (0.32)");
MODULE_LICENSE("GPL");
-
+MODULE_VERSION("0.33.1");
#ifdef MODULE
static const char *pardev[] = {[0 ... W9966_MAXCAMS] = ""};
@@ -568,7 +567,6 @@ static int cam_querycap(struct file *file, void *priv,
strlcpy(vcap->driver, cam->v4l2_dev.name, sizeof(vcap->driver));
strlcpy(vcap->card, W9966_DRIVERNAME, sizeof(vcap->card));
strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
- vcap->version = KERNEL_VERSION(0, 33, 0);
vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
return 0;
}
diff --git a/drivers/media/video/zoran/zoran.h b/drivers/media/video/zoran/zoran.h
index f3f6400..d7166af 100644
--- a/drivers/media/video/zoran/zoran.h
+++ b/drivers/media/video/zoran/zoran.h
@@ -41,10 +41,6 @@ struct zoran_sync {
};
-#define MAJOR_VERSION 0 /* driver major version */
-#define MINOR_VERSION 10 /* driver minor version */
-#define RELEASE_VERSION 0 /* release version */
-
#define ZORAN_NAME "ZORAN" /* name of the device */
#define ZR_DEVNAME(zr) ((zr)->name)
diff --git a/drivers/media/video/zoran/zoran_card.c b/drivers/media/video/zoran/zoran_card.c
index 79b04ac..c3602d6 100644
--- a/drivers/media/video/zoran/zoran_card.c
+++ b/drivers/media/video/zoran/zoran_card.c
@@ -123,9 +123,12 @@ int zr36067_debug = 1;
module_param_named(debug, zr36067_debug, int, 0644);
MODULE_PARM_DESC(debug, "Debug level (0-5)");
+#define ZORAN_VERSION "0.10.1"
+
MODULE_DESCRIPTION("Zoran-36057/36067 JPEG codec driver");
MODULE_AUTHOR("Serguei Miridonov");
MODULE_LICENSE("GPL");
+MODULE_VERSION(ZORAN_VERSION);
#define ZR_DEVICE(subven, subdev, data) { \
.vendor = PCI_VENDOR_ID_ZORAN, .device = PCI_DEVICE_ID_ZORAN_36057, \
@@ -1459,8 +1462,8 @@ static int __init zoran_init(void)
{
int res;
- printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",
- MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);
+ printk(KERN_INFO "Zoran MJPEG board driver version %s\n",
+ ZORAN_VERSION);
/* check the parameters we have been given, adjust if necessary */
if (v4l_nbufs < 2)
diff --git a/drivers/media/video/zoran/zoran_driver.c b/drivers/media/video/zoran/zoran_driver.c
index 2771d81..d4d05d2 100644
--- a/drivers/media/video/zoran/zoran_driver.c
+++ b/drivers/media/video/zoran/zoran_driver.c
@@ -44,7 +44,6 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#include <linux/version.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/delay.h>
@@ -1538,8 +1537,6 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability
strncpy(cap->driver, "zoran", sizeof(cap->driver)-1);
snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
pci_name(zr->pci_dev));
- cap->version = KERNEL_VERSION(MAJOR_VERSION, MINOR_VERSION,
- RELEASE_VERSION);
cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY;
return 0;
diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
index 7dfb01e..c492846 100644
--- a/drivers/media/video/zr364xx.c
+++ b/drivers/media/video/zr364xx.c
@@ -29,7 +29,6 @@
#include <linux/module.h>
-#include <linux/version.h>
#include <linux/init.h>
#include <linux/usb.h>
#include <linux/vmalloc.h>
@@ -42,8 +41,7 @@
/* Version Information */
-#define DRIVER_VERSION "v0.73"
-#define ZR364XX_VERSION_CODE KERNEL_VERSION(0, 7, 3)
+#define DRIVER_VERSION "0.7.4"
#define DRIVER_AUTHOR "Antoine Jacquet, http://royale.zerezo.com/"
#define DRIVER_DESC "Zoran 364xx"
@@ -744,7 +742,6 @@ static int zr364xx_vidioc_querycap(struct file *file, void *priv,
strlcpy(cap->card, cam->udev->product, sizeof(cap->card));
strlcpy(cap->bus_info, dev_name(&cam->udev->dev),
sizeof(cap->bus_info));
- cap->version = ZR364XX_VERSION_CODE;
cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING;
@@ -1721,3 +1718,4 @@ module_exit(zr364xx_exit);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
+MODULE_VERSION(DRIVER_VERSION);
^ permalink raw reply related [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 14:37 ` Mauro Carvalho Chehab
2011-06-24 18:25 ` [PATCH] [media] Stop using linux/version.h on most drivers Mauro Carvalho Chehab
@ 2011-06-24 18:34 ` Stefan Richter
2011-06-24 18:48 ` Devin Heitmueller
2011-06-24 21:44 ` Mauro Carvalho Chehab
1 sibling, 2 replies; 31+ messages in thread
From: Stefan Richter @ 2011-06-24 18:34 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Hans Verkuil, Devin Heitmueller, Jesper Juhl, LKML, trivial,
linux-media, ceph-devel, Sage Weil
On Jun 24 Mauro Carvalho Chehab wrote:
> Em 24-06-2011 10:54, Hans Verkuil escreveu:
> > On Friday, June 24, 2011 15:45:59 Devin Heitmueller wrote:
> >> The versions are increased at the discretion of the driver maintainer,
> >> usually when there is some userland visible change in driver behavior.
> >> I assure you the application developers don't *want* to rely on such
> >> a mechanism, but there have definitely been cases in the past where
> >> there was no easy way to detect the behavior of the driver from
> >> userland.
> >>
> >> It lets application developers work around things like violations of
> >> the V4L2 standard which get fixed in newer revisions of the driver.
> >> It provides them the ability to put a hack in their code that says "if
> >> (version < X) then this driver feature is broken and I shouldn't use
> >> it."
> >
> > Indeed. Ideally we shouldn't need it. But reality is different.
> >
> > What we have right now works and I see no compelling reason to change the
> > behavior.
>
> A per-driver version only works if the user is running a vanilla kernel without
> any stable patches applied.
>
> I doubt that this covers the large amount of the users: they'll either use an
> stable patched kernel or a distribution-specific one. On both cases, the driver
> version is not associated with a bug fix, as the driver maintainers just take
> care of increasing the driver version once per each new kernel version (when
> they care enough).
>
> Also, a git blame for the V4L2 drivers shows that only a few drivers have their
> version increased as changes are applied there. So, relying on cap->version
> has a minimal chance of working only with a few drivers, with vanilla *.0 kernels.
If the "driver version" is in fact an ABI version, then the driver author
should really increase it only when ABI behavior is changed (and only if
the behavior change can only be communicated by version number --- e.g.
addition of an ioctl is not among such reasons). And the author should
commit behavior changing implementation and version number change in a
single changeset.
And anybody who backmerges such an ABI behavior change into another kernel
branch (stable, longterm, distro...) must backmerge the associated version
number change too.
Of course sometimes people realize this only after the fact. Or driver
authors don't have a clear understanding of ABI versioning to begin with.
I am saying so because I had to learn it too; I certainly wasn't born
with an instinct knowledge how to do it properly.
(Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
the userspace libraries that use this ABI.)
--
Stefan Richter
-=====-==-== -==- ==---
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 18:34 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/ Stefan Richter
@ 2011-06-24 18:48 ` Devin Heitmueller
2011-06-24 21:04 ` Andy Walls
2011-06-24 21:10 ` Stefan Richter
2011-06-24 21:44 ` Mauro Carvalho Chehab
1 sibling, 2 replies; 31+ messages in thread
From: Devin Heitmueller @ 2011-06-24 18:48 UTC (permalink / raw)
To: Stefan Richter
Cc: Mauro Carvalho Chehab, Hans Verkuil, Jesper Juhl, LKML, trivial,
linux-media, ceph-devel, Sage Weil
On Fri, Jun 24, 2011 at 2:34 PM, Stefan Richter
<stefanr@s5r6.in-berlin.de> wrote:
> If the "driver version" is in fact an ABI version, then the driver author
> should really increase it only when ABI behavior is changed (and only if
> the behavior change can only be communicated by version number --- e.g.
> addition of an ioctl is not among such reasons). And the author should
> commit behavior changing implementation and version number change in a
> single changeset.
>
> And anybody who backmerges such an ABI behavior change into another kernel
> branch (stable, longterm, distro...) must backmerge the associated version
> number change too.
>
> Of course sometimes people realize this only after the fact. Or driver
> authors don't have a clear understanding of ABI versioning to begin with.
> I am saying so because I had to learn it too; I certainly wasn't born
> with an instinct knowledge how to do it properly.
>
> (Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
> in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
> the userspace libraries that use this ABI.)
Hi Stefan,
To be clear, I don't think anyone is actually proposing that the
driver version number really be used as any form of formal "ABI
versioning" scheme. In almost all cases, it's so the application can
know to *not* do something is the driver is older than X.
Given all the cases I've seen, it doesn't really hurt anything if the
driver contains a fix from newer than X, aside from the fact that the
application won't take advantage of whatever feature/functionality the
fix made work. In other words, I think from a backport standpoint, it
usually doesn't *hurt* anything if a fix is backported without the
version being incremented, aside from applications not knowing that
the feature/fix is present.
Really, this is all about applications being able to jam a hack into
their code that translates to "don't call this ioctl() with some
particular argument if it's driver W less than version X, because the
driver had a bug that is likely to panic the guy's PC". Sure, it's a
crummy solution, but at this point it's the best that we have got.
Devin
--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 18:48 ` Devin Heitmueller
@ 2011-06-24 21:04 ` Andy Walls
2011-06-24 21:20 ` Stefan Richter
2011-06-24 22:16 ` Mauro Carvalho Chehab
2011-06-24 21:10 ` Stefan Richter
1 sibling, 2 replies; 31+ messages in thread
From: Andy Walls @ 2011-06-24 21:04 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Stefan Richter, Mauro Carvalho Chehab, Hans Verkuil, Jesper Juhl,
LKML, trivial, linux-media, ceph-devel, Sage Weil
On Fri, 2011-06-24 at 14:48 -0400, Devin Heitmueller wrote:
> On Fri, Jun 24, 2011 at 2:34 PM, Stefan Richter
> <stefanr@s5r6.in-berlin.de> wrote:
> > If the "driver version" is in fact an ABI version, then the driver author
> > should really increase it only when ABI behavior is changed (and only if
> > the behavior change can only be communicated by version number --- e.g.
> > addition of an ioctl is not among such reasons). And the author should
> > commit behavior changing implementation and version number change in a
> > single changeset.
> >
> > And anybody who backmerges such an ABI behavior change into another kernel
> > branch (stable, longterm, distro...) must backmerge the associated version
> > number change too.
> >
> > Of course sometimes people realize this only after the fact. Or driver
> > authors don't have a clear understanding of ABI versioning to begin with.
> > I am saying so because I had to learn it too; I certainly wasn't born
> > with an instinct knowledge how to do it properly.
> >
> > (Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
> > in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
> > the userspace libraries that use this ABI.)
>
> Hi Stefan,
>
> To be clear, I don't think anyone is actually proposing that the
> driver version number really be used as any form of formal "ABI
> versioning" scheme. In almost all cases, it's so the application can
> know to *not* do something is the driver is older than X.
MythTV, for example, used to use the driver version to work around old
VBI bugs and MPEG encoder quirks that the older version of the driver
may not have known how to handle:
https://github.com/MythTV/mythtv/blob/b98d3a98e3187000ae652df5ffebe2beb5221ba7/mythtv/libs/libmythtv/mpegrecorder.cpp#L335
But for newer versions, MythTV could avoid using its own odd hacks.
The bleeding edge MythTV now has most of these removed.
> Given all the cases I've seen, it doesn't really hurt anything if the
> driver contains a fix from newer than X, aside from the fact that the
> application won't take advantage of whatever feature/functionality the
> fix made work. In other words, I think from a backport standpoint, it
> usually doesn't *hurt* anything if a fix is backported without the
> version being incremented, aside from applications not knowing that
> the feature/fix is present.
That seems to be the case to me.
> Really, this is all about applications being able to jam a hack into
> their code that translates to "don't call this ioctl() with some
> particular argument if it's driver W less than version X, because the
> driver had a bug that is likely to panic the guy's PC".
Well, not even panics per se, but some thing like the VBI is broken, or
the volume control doesn't work, IR blaster is works for this version,
or something else stupid that is very visible to the end user.
I also use the driver version for troubleshooting problem with users. I
roughly know what wasn't working in what version of the cx18 and ivtv
drivers. If the end user can tell me the driver version (using v4l2-ctl
--log-status) along with his symptoms, it makes my life easier. Being
able to efficiently help the end user is a win for both me and the end
user.
> Sure, it's a
> crummy solution, but at this point it's the best that we have got
Yup. We do have crummier solutions:
Telling the end user to read their kernel source code to figure out what
bugs their driver release has, and to then adjust their application
command line arguments accordingly. ;)
Regards,
Andy
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 18:48 ` Devin Heitmueller
2011-06-24 21:04 ` Andy Walls
@ 2011-06-24 21:10 ` Stefan Richter
2011-06-24 21:52 ` Mauro Carvalho Chehab
1 sibling, 1 reply; 31+ messages in thread
From: Stefan Richter @ 2011-06-24 21:10 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Mauro Carvalho Chehab, Hans Verkuil, Jesper Juhl, LKML, trivial,
linux-media, ceph-devel, Sage Weil
On Jun 24 Devin Heitmueller wrote:
> Really, this is all about applications being able to jam a hack into
> their code that translates to "don't call this ioctl() with some
> particular argument if it's driver W less than version X, because the
> driver had a bug that is likely to panic the guy's PC". Sure, it's a
> crummy solution, but at this point it's the best that we have got.
The second best. The best that we have got is that the user runs a fixed
kernel.
Anyway; if this is the only purpose that this interface version¹ serves,
then Mauro's subsystem-centralized solution has the benefit that it
eliminates mistakes due to oversight by individual driver authors.
Especially because the kind of implementation behavior changes that are
tracked by this type of version datum are sometimes just discovered or
documented in hindsight. On the other hand, Mauro's solution is redundant
to the uname(2) syscall.
¹) Yes, it is still an ABI version, nothing less. With all its backwards
and forwards compatibility ramifications.
--
Stefan Richter
-=====-==-== -==- ==---
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:04 ` Andy Walls
@ 2011-06-24 21:20 ` Stefan Richter
2011-06-24 21:22 ` Devin Heitmueller
2011-06-24 22:16 ` Mauro Carvalho Chehab
1 sibling, 1 reply; 31+ messages in thread
From: Stefan Richter @ 2011-06-24 21:20 UTC (permalink / raw)
To: Andy Walls
Cc: Devin Heitmueller, Mauro Carvalho Chehab, Hans Verkuil,
Jesper Juhl, LKML, trivial, linux-media, ceph-devel, Sage Weil
On Jun 24 Andy Walls wrote:
> I also use the driver version for troubleshooting problem with users. I
> roughly know what wasn't working in what version of the cx18 and ivtv
> drivers. If the end user can tell me the driver version (using v4l2-ctl
> --log-status) along with his symptoms, it makes my life easier.
Easier:
"I run Ubuntu 10.4".
"I run kernel 2.6.32."
One of these is usually already included in the first post or IRC message
from the user.
Separate driver versions are only needed on platforms where drivers are
not distributed by the operating system distributor, or driver source code
is not released within kernel source code.
--
Stefan Richter
-=====-==-== -==- ==---
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:20 ` Stefan Richter
@ 2011-06-24 21:22 ` Devin Heitmueller
2011-06-24 21:49 ` Mauro Carvalho Chehab
2011-06-24 22:39 ` Stefan Richter
0 siblings, 2 replies; 31+ messages in thread
From: Devin Heitmueller @ 2011-06-24 21:22 UTC (permalink / raw)
To: Stefan Richter
Cc: Andy Walls, Mauro Carvalho Chehab, Hans Verkuil, Jesper Juhl,
LKML, trivial, linux-media, ceph-devel, Sage Weil
On Fri, Jun 24, 2011 at 5:20 PM, Stefan Richter
<stefanr@s5r6.in-berlin.de> wrote:
> Easier:
> "I run Ubuntu 10.4".
> "I run kernel 2.6.32."
> One of these is usually already included in the first post or IRC message
> from the user.
>
> Separate driver versions are only needed on platforms where drivers are
> not distributed by the operating system distributor, or driver source code
> is not released within kernel source code.
Unfortunately, this doesn't work as all too often the user has "Ubuntu
10.1 but I installed the latest media_build tree a few months ago".
Hence they are not necessarily on a particular binary release from a
distro but rather have a mix of a distro's binary release and a
v4l-dvb tree compiled from source.
Devin
--
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 18:34 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/ Stefan Richter
2011-06-24 18:48 ` Devin Heitmueller
@ 2011-06-24 21:44 ` Mauro Carvalho Chehab
1 sibling, 0 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 21:44 UTC (permalink / raw)
To: Stefan Richter
Cc: Hans Verkuil, Devin Heitmueller, Jesper Juhl, LKML, trivial,
linux-media, ceph-devel, Sage Weil
Em 24-06-2011 15:34, Stefan Richter escreveu:
> On Jun 24 Mauro Carvalho Chehab wrote:
>> Em 24-06-2011 10:54, Hans Verkuil escreveu:
>>> On Friday, June 24, 2011 15:45:59 Devin Heitmueller wrote:
>>>> The versions are increased at the discretion of the driver maintainer,
>>>> usually when there is some userland visible change in driver behavior.
>>>> I assure you the application developers don't *want* to rely on such
>>>> a mechanism, but there have definitely been cases in the past where
>>>> there was no easy way to detect the behavior of the driver from
>>>> userland.
>>>>
>>>> It lets application developers work around things like violations of
>>>> the V4L2 standard which get fixed in newer revisions of the driver.
>>>> It provides them the ability to put a hack in their code that says "if
>>>> (version < X) then this driver feature is broken and I shouldn't use
>>>> it."
>>>
>>> Indeed. Ideally we shouldn't need it. But reality is different.
>>>
>>> What we have right now works and I see no compelling reason to change the
>>> behavior.
>>
>> A per-driver version only works if the user is running a vanilla kernel without
>> any stable patches applied.
>>
>> I doubt that this covers the large amount of the users: they'll either use an
>> stable patched kernel or a distribution-specific one. On both cases, the driver
>> version is not associated with a bug fix, as the driver maintainers just take
>> care of increasing the driver version once per each new kernel version (when
>> they care enough).
>>
>> Also, a git blame for the V4L2 drivers shows that only a few drivers have their
>> version increased as changes are applied there. So, relying on cap->version
>> has a minimal chance of working only with a few drivers, with vanilla *.0 kernels.
>
> If the "driver version" is in fact an ABI version, then the driver author
> should really increase it only when ABI behavior is changed (and only if
> the behavior change can only be communicated by version number --- e.g.
> addition of an ioctl is not among such reasons). And the author should
> commit behavior changing implementation and version number change in a
> single changeset.
Yes, but "driver version" were never used as such. Several drivers got lots of
updates, ABI change behavior (like the removal of V4L1 API), etc without having
a single "driver version" increment. Other drivers increase it even on minor
changes.
IMO, it makes no sense on keeping it, but removing this field would break
userspace, as a few programs seem to use it.
> And anybody who backmerges such an ABI behavior change into another kernel
> branch (stable, longterm, distro...) must backmerge the associated version
> number change too.
Yes, but, again, this doesn't happen. In general, the drivers that use it either
increment the version number on a separate patch, or integrate it with one of
the patches.
It is easy to take a look at ivtv, as it has a separate file with the version
number:
$ git log --oneline drivers/media/video/ivtv/ivtv-version.h
4359e5b V4L/DVB: ivtv: Increment driver version due to firmware loading changes
c019f90 V4L/DVB (10965): ivtv: bump version
c58dc0b V4L/DVB (8633): ivtv: update ivtv version number
be303e1 V4L/DVB (7930): ivtv: bump version to 1.3.0.
fcbbf6f V4L/DVB (7759): ivtv: increase version number to 1.2.1
0170a48 V4L/DVB (6762): ivtv: update version number to 1.2
612570f V4L/DVB (6091): ivtv: header cleanup
f38a798 V4L/DVB (5909): ivtv: update version to 1.1 to mark ivtv-fb support
1a0adaf V4L/DVB (5345): ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder
Looking at the details of the above commits, on several cases there's no explanation
why the version was incremented, or why an userspace application should bother to have
any special treatment for that version or for the previous one.
The date of the commits also don't help much:
Date: Sat Jun 12 13:55:33 2010 -0300
Date: Wed Mar 11 18:50:04 2009 -0300
Date: Wed Sep 3 16:46:58 2008 -0300
Date: Sat May 24 12:43:43 2008 -0300
Date: Sat Apr 26 09:43:22 2008 -0300
Date: Fri Dec 7 20:31:17 2007 -0300
Date: Thu Aug 23 05:42:59 2007 -0300
Date: Sun Jul 22 08:39:43 2007 -0300
Date: Fri Apr 27 12:31:25 2007 -0300
Even when there seems to have a good reason for version bump, like on this example
(from cx18 driver):
commit 9982be8
Author: Andy Walls <awalls@radix.net>
Date: Wed Apr 15 20:49:19 2009 -0300
V4L/DVB (11620): cx18: Increment version due to significant buffer handling changes
Version bump from 1.1.0 to 1.2.0
Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
The commit message doesn't help to tell the application developer how version 1.1.0 is
different than version 1.2.0.
Also, as this is on a separate commit, if the buffer changes were backported into a
stable or distro kernel, the application will have no way to detect the differences.
On several cases, the version upgrade is simply due to the addition of a new type of
support, like this one:
commit 437b775
Author: Andy Walls <awalls@md.metrocast.net>
Date: Sun Mar 27 00:43:30 2011 -0300
[media] cx18: Bump driver version, since a new class of HVR-1600 is properly supported
Make a user visible driver version change, for the inevitable user support
questions about why newer model HVR-1600's do not work with (older
versions of) the cx18 driver.
For things like that, it would be enough to simply increment MODULE_VERSION().
> Of course sometimes people realize this only after the fact. Or driver
> authors don't have a clear understanding of ABI versioning to begin with.
> I am saying so because I had to learn it too; I certainly wasn't born
> with an instinct knowledge how to do it properly.
>
> (Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
> in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
> the userspace libraries that use this ABI.)
Em 24-06-2011 15:48, Devin Heitmueller escreveu:
> To be clear, I don't think anyone is actually proposing that the
> driver version number really be used as any form of formal "ABI
> versioning" scheme. In almost all cases, it's so the application can
> know to *not* do something is the driver is older than X.
As I've explained before, even that is wrong, as the version increment
patch may not have been backported.
> Given all the cases I've seen, it doesn't really hurt anything if the
> driver contains a fix from newer than X, aside from the fact that the
> application won't take advantage of whatever feature/functionality the
> fix made work. In other words, I think from a backport standpoint, it
> usually doesn't *hurt* anything if a fix is backported without the
> version being incremented, aside from applications not knowing that
> the feature/fix is present.
New features could also be backported without version increment. This happens
from time to time at the enterprise distros, and on long duration stable
releases.
> Really, this is all about applications being able to jam a hack into
> their code that translates to "don't call this ioctl() with some
> particular argument if it's driver W less than version X, because the
> driver had a bug that is likely to panic the guy's PC". Sure, it's a
> crummy solution, but at this point it's the best that we have got.
Version number is not enough for that. When there are such panic/OOPS bugs,
they are backported to -stable and to the distro kernels.
An application doing that will be removing a feature that is probably already
fixed.
Mauro.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:22 ` Devin Heitmueller
@ 2011-06-24 21:49 ` Mauro Carvalho Chehab
2011-06-24 22:39 ` Stefan Richter
1 sibling, 0 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 21:49 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Stefan Richter, Andy Walls, Hans Verkuil, Jesper Juhl, LKML,
trivial, linux-media, ceph-devel, Sage Weil
Em 24-06-2011 18:22, Devin Heitmueller escreveu:
> On Fri, Jun 24, 2011 at 5:20 PM, Stefan Richter
> <stefanr@s5r6.in-berlin.de> wrote:
>> Easier:
>> "I run Ubuntu 10.4".
>> "I run kernel 2.6.32."
>> One of these is usually already included in the first post or IRC message
>> from the user.
>>
>> Separate driver versions are only needed on platforms where drivers are
>> not distributed by the operating system distributor, or driver source code
>> is not released within kernel source code.
>
> Unfortunately, this doesn't work as all too often the user has "Ubuntu
> 10.1 but I installed the latest media_build tree a few months ago".
> Hence they are not necessarily on a particular binary release from a
> distro but rather have a mix of a distro's binary release and a
> v4l-dvb tree compiled from source.
# modprobe vivi
# dmesg
WARNING: You are using an experimental version of the media stack.
As the driver is backported to an older kernel, it doesn't offer
enough quality for its usage in production.
Use it with care.
Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
d3302689d697a99d565ea37c8fb9a19a1a5d0f06 [media] rc-core: fix winbond-cir issues
6337ae50f81c99efbf9fa924c9d1b8b51efbcef2 [media] rc/redrat3: dereferencing null pointer
ad0fc4c9ac8bf871b7bf874b2cd34b6b65f099c7 [media] rc: double unlock in rc_register_device()
vivi-000: V4L2 device registered as video0
Video Technology Magazine Virtual Video Capture Board ver 0.8.0 successfully loaded.
The git changeset is a way better than a version number.
Mauro.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:10 ` Stefan Richter
@ 2011-06-24 21:52 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 21:52 UTC (permalink / raw)
To: Stefan Richter
Cc: Devin Heitmueller, Hans Verkuil, Jesper Juhl, LKML, trivial,
linux-media, ceph-devel, Sage Weil
Em 24-06-2011 18:10, Stefan Richter escreveu:
> On Jun 24 Devin Heitmueller wrote:
>> Really, this is all about applications being able to jam a hack into
>> their code that translates to "don't call this ioctl() with some
>> particular argument if it's driver W less than version X, because the
>> driver had a bug that is likely to panic the guy's PC". Sure, it's a
>> crummy solution, but at this point it's the best that we have got.
>
> The second best. The best that we have got is that the user runs a fixed
> kernel.
>
> Anyway; if this is the only purpose that this interface version¹ serves,
> then Mauro's subsystem-centralized solution has the benefit that it
> eliminates mistakes due to oversight by individual driver authors.
> Especially because the kind of implementation behavior changes that are
> tracked by this type of version datum are sometimes just discovered or
> documented in hindsight. On the other hand, Mauro's solution is redundant
> to the uname(2) syscall.
Yes. That's why my initial proposal were to add some value to it by not associating
it with the kernel version, but with a number that will be incremented only if
the V4L2 API changes.
>
> ¹) Yes, it is still an ABI version, nothing less. With all its backwards
> and forwards compatibility ramifications.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:04 ` Andy Walls
2011-06-24 21:20 ` Stefan Richter
@ 2011-06-24 22:16 ` Mauro Carvalho Chehab
2011-06-24 22:57 ` Andy Walls
1 sibling, 1 reply; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 22:16 UTC (permalink / raw)
To: Andy Walls
Cc: Devin Heitmueller, Stefan Richter, Hans Verkuil, Jesper Juhl,
LKML, trivial, linux-media, ceph-devel, Sage Weil
Em 24-06-2011 18:04, Andy Walls escreveu:
> On Fri, 2011-06-24 at 14:48 -0400, Devin Heitmueller wrote:
>> On Fri, Jun 24, 2011 at 2:34 PM, Stefan Richter
>> <stefanr@s5r6.in-berlin.de> wrote:
>>> If the "driver version" is in fact an ABI version, then the driver author
>>> should really increase it only when ABI behavior is changed (and only if
>>> the behavior change can only be communicated by version number --- e.g.
>>> addition of an ioctl is not among such reasons). And the author should
>>> commit behavior changing implementation and version number change in a
>>> single changeset.
>>>
>>> And anybody who backmerges such an ABI behavior change into another kernel
>>> branch (stable, longterm, distro...) must backmerge the associated version
>>> number change too.
>>>
>>> Of course sometimes people realize this only after the fact. Or driver
>>> authors don't have a clear understanding of ABI versioning to begin with.
>>> I am saying so because I had to learn it too; I certainly wasn't born
>>> with an instinct knowledge how to do it properly.
>>>
>>> (Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
>>> in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
>>> the userspace libraries that use this ABI.)
>>
>> Hi Stefan,
>>
>> To be clear, I don't think anyone is actually proposing that the
>> driver version number really be used as any form of formal "ABI
>> versioning" scheme. In almost all cases, it's so the application can
>> know to *not* do something is the driver is older than X.
>
> MythTV, for example, used to use the driver version to work around old
> VBI bugs and MPEG encoder quirks that the older version of the driver
> may not have known how to handle:
>
> https://github.com/MythTV/mythtv/blob/b98d3a98e3187000ae652df5ffebe2beb5221ba7/mythtv/libs/libmythtv/mpegrecorder.cpp#L335
>
> But for newer versions, MythTV could avoid using its own odd hacks.
> The bleeding edge MythTV now has most of these removed.
Removing it is a good thing.
>> Really, this is all about applications being able to jam a hack into
>> their code that translates to "don't call this ioctl() with some
>> particular argument if it's driver W less than version X, because the
>> driver had a bug that is likely to panic the guy's PC".
>
> Well, not even panics per se, but some thing like the VBI is broken, or
> the volume control doesn't work, IR blaster is works for this version,
> or something else stupid that is very visible to the end user.
>
> I also use the driver version for troubleshooting problem with users. I
> roughly know what wasn't working in what version of the cx18 and ivtv
> drivers. If the end user can tell me the driver version (using v4l2-ctl
> --log-status) along with his symptoms, it makes my life easier. Being
> able to efficiently help the end user is a win for both me and the end
> user.
If you add it to MODULE_VERSION, you can get the version with:
$ modinfo -F version vivi
0.8.1
Mauro.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 21:22 ` Devin Heitmueller
2011-06-24 21:49 ` Mauro Carvalho Chehab
@ 2011-06-24 22:39 ` Stefan Richter
2011-06-24 23:02 ` Mauro Carvalho Chehab
1 sibling, 1 reply; 31+ messages in thread
From: Stefan Richter @ 2011-06-24 22:39 UTC (permalink / raw)
To: Devin Heitmueller
Cc: Andy Walls, Mauro Carvalho Chehab, Hans Verkuil, Jesper Juhl,
LKML, trivial, linux-media, ceph-devel, Sage Weil
On Jun 24 Devin Heitmueller wrote:
> On Fri, Jun 24, 2011 at 5:20 PM, Stefan Richter
> <stefanr@s5r6.in-berlin.de> wrote:
> > Easier:
> > "I run Ubuntu 10.4".
> > "I run kernel 2.6.32."
> > One of these is usually already included in the first post or IRC message
> > from the user.
> >
> > Separate driver versions are only needed on platforms where drivers are
> > not distributed by the operating system distributor, or driver source code
> > is not released within kernel source code.
>
> Unfortunately, this doesn't work as all too often the user has "Ubuntu
> 10.1 but I installed the latest media_build tree a few months ago".
> Hence they are not necessarily on a particular binary release from a
> distro but rather have a mix of a distro's binary release and a
> v4l-dvb tree compiled from source.
If you release out-of-kernel-source driver sources for compilation against
binary kernels, and you have got users who go through this procedure, then
the user can for sure tell you the SCM version of the driver.
Besides, isn't this outdated practice in times where Joe Enduser can get
the very latest -rc kernel prepackaged on many distributions, including
ones like Ubuntu?
[Sorry, I'm getting perhaps a bit off-topic.]
--
Stefan Richter
-=====-==-== -==- ==--=
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 22:16 ` Mauro Carvalho Chehab
@ 2011-06-24 22:57 ` Andy Walls
0 siblings, 0 replies; 31+ messages in thread
From: Andy Walls @ 2011-06-24 22:57 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Devin Heitmueller, Stefan Richter, Hans Verkuil, Jesper Juhl,
LKML, trivial, linux-media, ceph-devel, Sage Weil
On Fri, 2011-06-24 at 19:16 -0300, Mauro Carvalho Chehab wrote:
> Em 24-06-2011 18:04, Andy Walls escreveu:
> > On Fri, 2011-06-24 at 14:48 -0400, Devin Heitmueller wrote:
> >> On Fri, Jun 24, 2011 at 2:34 PM, Stefan Richter
> >> <stefanr@s5r6.in-berlin.de> wrote:
> >>> If the "driver version" is in fact an ABI version, then the driver author
> >>> should really increase it only when ABI behavior is changed (and only if
> >>> the behavior change can only be communicated by version number --- e.g.
> >>> addition of an ioctl is not among such reasons). And the author should
> >>> commit behavior changing implementation and version number change in a
> >>> single changeset.
> >>>
> >>> And anybody who backmerges such an ABI behavior change into another kernel
> >>> branch (stable, longterm, distro...) must backmerge the associated version
> >>> number change too.
> >>>
> >>> Of course sometimes people realize this only after the fact. Or driver
> >>> authors don't have a clear understanding of ABI versioning to begin with.
> >>> I am saying so because I had to learn it too; I certainly wasn't born
> >>> with an instinct knowledge how to do it properly.
> >>>
> >>> (Disclaimer: I have no stake in drivers/media/ ABIs. But I am involved
> >>> in maintaining a userspace ABI elsewhere in drivers/firewire/, and one of
> >>> the userspace libraries that use this ABI.)
> >>
> >> Hi Stefan,
> >>
> >> To be clear, I don't think anyone is actually proposing that the
> >> driver version number really be used as any form of formal "ABI
> >> versioning" scheme. In almost all cases, it's so the application can
> >> know to *not* do something is the driver is older than X.
> >
> > MythTV, for example, used to use the driver version to work around old
> > VBI bugs and MPEG encoder quirks that the older version of the driver
> > may not have known how to handle:
> >
> > https://github.com/MythTV/mythtv/blob/b98d3a98e3187000ae652df5ffebe2beb5221ba7/mythtv/libs/libmythtv/mpegrecorder.cpp#L335
> >
> > But for newer versions, MythTV could avoid using its own odd hacks.
> > The bleeding edge MythTV now has most of these removed.
>
> Removing it is a good thing.
>
> >> Really, this is all about applications being able to jam a hack into
> >> their code that translates to "don't call this ioctl() with some
> >> particular argument if it's driver W less than version X, because the
> >> driver had a bug that is likely to panic the guy's PC".
> >
> > Well, not even panics per se, but some thing like the VBI is broken, or
> > the volume control doesn't work, IR blaster is works for this version,
> > or something else stupid that is very visible to the end user.
> >
> > I also use the driver version for troubleshooting problem with users. I
> > roughly know what wasn't working in what version of the cx18 and ivtv
> > drivers. If the end user can tell me the driver version (using v4l2-ctl
> > --log-status) along with his symptoms, it makes my life easier. Being
> > able to efficiently help the end user is a win for both me and the end
> > user.
>
> If you add it to MODULE_VERSION, you can get the version with:
>
> $ modinfo -F version vivi
> 0.8.1
Well, since you mention it....
http://git.linuxtv.org/media_tree.git?a=blob;f=drivers/media/video/cx18/cx18-driver.c;h=9e2f870f4258665ae6093c762f752d45147a8c98;hb=staging/for_v3.1#l252
http://git.linuxtv.org/media_tree.git?a=blob;f=drivers/media/video/ivtv/ivtv-driver.c;h=0fb75524484d909af4925c3c33c9f12cf6d6519e;hb=staging/for_v3.1#l280
However, since I often must ask for the output of v4l2-ctl --log-status,
which already has the version number, I never need to ask the user to
run /sbin/modinfo for the version.
Regards,
Andy
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 22:39 ` Stefan Richter
@ 2011-06-24 23:02 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-24 23:02 UTC (permalink / raw)
To: Stefan Richter
Cc: Devin Heitmueller, Andy Walls, Hans Verkuil, Jesper Juhl, LKML,
trivial, linux-media, ceph-devel, Sage Weil
Em 24-06-2011 19:39, Stefan Richter escreveu:
> On Jun 24 Devin Heitmueller wrote:
>> On Fri, Jun 24, 2011 at 5:20 PM, Stefan Richter
>> <stefanr@s5r6.in-berlin.de> wrote:
>>> Easier:
>>> "I run Ubuntu 10.4".
>>> "I run kernel 2.6.32."
>>> One of these is usually already included in the first post or IRC message
>>> from the user.
>>>
>>> Separate driver versions are only needed on platforms where drivers are
>>> not distributed by the operating system distributor, or driver source code
>>> is not released within kernel source code.
>>
>> Unfortunately, this doesn't work as all too often the user has "Ubuntu
>> 10.1 but I installed the latest media_build tree a few months ago".
>> Hence they are not necessarily on a particular binary release from a
>> distro but rather have a mix of a distro's binary release and a
>> v4l-dvb tree compiled from source.
>
> If you release out-of-kernel-source driver sources for compilation against
> binary kernels, and you have got users who go through this procedure, then
> the user can for sure tell you the SCM version of the driver.
Yes, and this is currently provided. The dmesg will show the last 3 git commits.
A developer can just use git diff or git log to discover what changed since those
commits.
> Besides, isn't this outdated practice in times where Joe Enduser can get
> the very latest -rc kernel prepackaged on many distributions, including
> ones like Ubuntu?
Perhaps, but the cost to maintain the out-of-tree driver git tree is cheap. We provide
just a small building system, with a script that downloads a daily tarball
with just drivers/media and the corresponding includes (and a few drivers/staging).
The building system has a couple patches to allow backport compilation since 2.6.32.
Mauro.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH] [media] Stop using linux/version.h on most drivers
2011-06-24 18:25 ` [PATCH] [media] Stop using linux/version.h on most drivers Mauro Carvalho Chehab
@ 2011-06-25 10:09 ` Hans Verkuil
2011-06-25 12:14 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 31+ messages in thread
From: Hans Verkuil @ 2011-06-25 10:09 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: LKML, Devin Heitmueller, Jesper Juhl, trivial, linux-media,
ceph-devel, Sage Weil
On Friday, June 24, 2011 20:25:26 Mauro Carvalho Chehab wrote:
> All the modified drivers didn't have any version increment since
> Jan, 1 2011. Several of them didn't have any version increment
> for a long time, even having new features and important bug fixes
> happening.
>
> As we're now filling the QUERYCAP version with the current Kernel
> Release, we don't need to maintain a per-driver version control
> anymore. So, let's just use the default.
>
> In order to preserve the Kernel module version history, a
> KERNEL_VERSION() macro were added to all modified drivers, and
> the extraver number were incremented.
>
> I opted to preserve the per-driver version control to a few
> drivers: cx18, davinci, fsl-viu, gspca, ivtv, m5mols, soc_camera,
> pwc, s2255, s5p-fimc and sh_vou. The rationale is that the
> per-driver version control seems to be actively maintained on
> those.
>
> A few drivers are still using the legacy way to handle ioctl's.
> So, we can't do such change on them, otherwise, they'll break.
> Those are: uvc, pvrusb2, et61x251 and sn9c102.
>
> Yet, I think that the better for them would be to just use the
> default version numbering, instead of doing that by themselves.
>
> While here, removed a few not needed include linux/version.h.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Sorry, but I have to say NACK to this.
If we do this, then we should do this consistently.
I thought it over and filling it with the current kernel version would work
well with one exception: the pwc driver has a major number of 10 which is
larger than the kernel's major number. (cpia2 has a version of 3.0.0, so that
just works).
I am inclined to sort of close my eyes for that one and just replace it as
well, but that's just me :-)
The only thing that needs to be done is that media_build needs some hack to
set the version field to the source git tree kernel version instead of the
target's kernel version.
To simplify that and to accomodate the four ioctl-legacy drivers we can
make a simple include/media/version.h header that defines a V4L2_API_VERSION
define.
An alternative is to just add an api_version field to v4l2_querycap.
That would work fine too.
One reason for doing that may be to help out-of-tree drivers: for those a
driver version *does* make sense. I know, we shouldn't have to care about
out-of-tree drivers, but on the other hand why make life hard for them without
a good reason?
The more I think about it, the more I like the idea of an api_version field.
It would keep pwc happy, it wouldn't require many changes to drivers, and it
will not affect out-of-tree drivers.
Regards,
Hans
>
> ---
>
> Note: This patch assumes that cap->version = LINUX_VERSION_CODE is
> filled inside v4l2-ioctl [1]
>
> [1] http://www.mail-archive.com/linux-media@vger.kernel.org/msg33547.html
>
> drivers/media/video/arv.c | 5 ++---
> drivers/media/video/au0828/au0828-core.c | 1 +
> drivers/media/video/au0828/au0828-video.c | 5 -----
> drivers/media/video/bt8xx/bttv-driver.c | 14 ++++----------
> drivers/media/video/bt8xx/bttvp.h | 3 ---
> drivers/media/video/bw-qcam.c | 3 +--
> drivers/media/video/c-qcam.c | 3 +--
> drivers/media/video/cpia2/cpia2.h | 5 -----
> drivers/media/video/cpia2/cpia2_v4l.c | 12 ++++--------
> drivers/media/video/cx231xx/cx231xx-video.c | 14 ++++----------
> drivers/media/video/cx231xx/cx231xx.h | 1 -
> drivers/media/video/cx23885/altera-ci.c | 1 -
> drivers/media/video/cx23885/cx23885-417.c | 1 -
> drivers/media/video/cx23885/cx23885-core.c | 13 +++----------
> drivers/media/video/cx23885/cx23885-video.c | 1 -
> drivers/media/video/cx23885/cx23885.h | 3 +--
> drivers/media/video/cx88/cx88-alsa.c | 19 ++++---------------
> drivers/media/video/cx88/cx88-blackbird.c | 20 +++-----------------
> drivers/media/video/cx88/cx88-dvb.c | 18 +++---------------
> drivers/media/video/cx88/cx88-mpeg.c | 11 +++--------
> drivers/media/video/cx88/cx88-video.c | 21 +++------------------
> drivers/media/video/cx88/cx88.h | 4 ++--
> drivers/media/video/em28xx/em28xx-video.c | 14 +++++---------
> drivers/media/video/gspca/gl860/gl860.h | 1 -
> drivers/media/video/hdpvr/hdpvr-core.c | 1 +
> drivers/media/video/hdpvr/hdpvr-video.c | 2 --
> drivers/media/video/hdpvr/hdpvr.h | 6 ------
> drivers/media/video/mem2mem_testdev.c | 4 +---
> drivers/media/video/pms.c | 4 +---
> drivers/media/video/pwc/pwc-ioctl.h | 1 -
> drivers/media/video/pwc/pwc.h | 8 ++++----
> drivers/media/video/saa7134/saa7134-core.c | 12 ++++--------
> drivers/media/video/saa7134/saa7134-empress.c | 1 -
> drivers/media/video/saa7134/saa7134-video.c | 2 --
> drivers/media/video/saa7134/saa7134.h | 3 +--
> drivers/media/video/saa7164/saa7164.h | 1 -
> drivers/media/video/timblogiw.c | 1 -
> drivers/media/video/tlg2300/pd-common.h | 1 -
> drivers/media/video/tlg2300/pd-main.c | 1 +
> drivers/media/video/tlg2300/pd-radio.c | 2 --
> drivers/media/video/usbvision/usbvision-video.c | 12 +-----------
> drivers/media/video/vino.c | 5 +----
> drivers/media/video/vivi.c | 14 ++++----------
> drivers/media/video/w9966.c | 4 +---
> drivers/media/video/zoran/zoran.h | 4 ----
> drivers/media/video/zoran/zoran_card.c | 7 +++++--
> drivers/media/video/zoran/zoran_driver.c | 3 ---
> drivers/media/video/zr364xx.c | 6 ++----
> 48 files changed, 71 insertions(+), 227 deletions(-)
>
> diff --git a/drivers/media/video/arv.c b/drivers/media/video/arv.c
> index f989f28..b6ed44a 100644
> --- a/drivers/media/video/arv.c
> +++ b/drivers/media/video/arv.c
> @@ -27,7 +27,6 @@
> #include <linux/slab.h>
> #include <linux/mm.h>
> #include <linux/sched.h>
> -#include <linux/version.h>
> #include <linux/videodev2.h>
> #include <media/v4l2-common.h>
> #include <media/v4l2-device.h>
> @@ -54,7 +53,7 @@
> */
> #define USE_INT 0 /* Don't modify */
>
> -#define VERSION "0.04"
> +#define VERSION "0.0.5"
>
> #define ar_inl(addr) inl((unsigned long)(addr))
> #define ar_outl(val, addr) outl((unsigned long)(val), (unsigned long)(addr))
> @@ -404,7 +403,6 @@ static int ar_querycap(struct file *file, void *priv,
> strlcpy(vcap->driver, ar->vdev.name, sizeof(vcap->driver));
> strlcpy(vcap->card, "Colour AR VGA", sizeof(vcap->card));
> strlcpy(vcap->bus_info, "Platform", sizeof(vcap->bus_info));
> - vcap->version = KERNEL_VERSION(0, 0, 4);
> vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
> return 0;
> }
> @@ -879,3 +877,4 @@ module_exit(ar_cleanup_module);
> MODULE_AUTHOR("Takeo Takahashi <takahashi.takeo@renesas.com>");
> MODULE_DESCRIPTION("Colour AR M64278(VGA) for Video4Linux");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(VERSION);
> diff --git a/drivers/media/video/au0828/au0828-core.c b/drivers/media/video/au0828/au0828-core.c
> index ca342e4..1e4ce50 100644
> --- a/drivers/media/video/au0828/au0828-core.c
> +++ b/drivers/media/video/au0828/au0828-core.c
> @@ -292,3 +292,4 @@ module_exit(au0828_exit);
> MODULE_DESCRIPTION("Driver for Auvitek AU0828 based products");
> MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION("0.0.2");
> diff --git a/drivers/media/video/au0828/au0828-video.c b/drivers/media/video/au0828/au0828-video.c
> index c03eb29..0b3e481 100644
> --- a/drivers/media/video/au0828/au0828-video.c
> +++ b/drivers/media/video/au0828/au0828-video.c
> @@ -33,7 +33,6 @@
> #include <linux/init.h>
> #include <linux/device.h>
> #include <linux/suspend.h>
> -#include <linux/version.h>
> #include <media/v4l2-common.h>
> #include <media/v4l2-ioctl.h>
> #include <media/v4l2-chip-ident.h>
> @@ -43,8 +42,6 @@
>
> static DEFINE_MUTEX(au0828_sysfs_lock);
>
> -#define AU0828_VERSION_CODE KERNEL_VERSION(0, 0, 1)
> -
> /* ------------------------------------------------------------------
> Videobuf operations
> ------------------------------------------------------------------*/
> @@ -1254,8 +1251,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, dev->board.name, sizeof(cap->card));
> strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
>
> - cap->version = AU0828_VERSION_CODE;
> -
> /*set the device capabilities */
> cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_VBI_CAPTURE |
> diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
> index a97cf27..696e978 100644
> --- a/drivers/media/video/bt8xx/bttv-driver.c
> +++ b/drivers/media/video/bt8xx/bttv-driver.c
> @@ -57,6 +57,7 @@
>
> #include <media/saa6588.h>
>
> +#define BTTV_VERSION "0.9.19"
>
> unsigned int bttv_num; /* number of Bt848s in use */
> struct bttv *bttvs[BTTV_MAX];
> @@ -163,6 +164,7 @@ MODULE_PARM_DESC(radio_nr, "radio device numbers");
> MODULE_DESCRIPTION("bttv - v4l/v4l2 driver module for bt848/878 based cards");
> MODULE_AUTHOR("Ralph Metzler & Marcus Metzler & Gerd Knorr");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(BTTV_VERSION);
>
> /* ----------------------------------------------------------------------- */
> /* sysfs */
> @@ -2616,7 +2618,6 @@ static int bttv_querycap(struct file *file, void *priv,
> strlcpy(cap->card, btv->video_dev->name, sizeof(cap->card));
> snprintf(cap->bus_info, sizeof(cap->bus_info),
> "PCI:%s", pci_name(btv->c.pci));
> - cap->version = BTTV_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_VBI_CAPTURE |
> @@ -3416,7 +3417,6 @@ static int radio_querycap(struct file *file, void *priv,
> strcpy(cap->driver, "bttv");
> strlcpy(cap->card, btv->radio_dev->name, sizeof(cap->card));
> sprintf(cap->bus_info, "PCI:%s", pci_name(btv->c.pci));
> - cap->version = BTTV_VERSION_CODE;
> cap->capabilities = V4L2_CAP_TUNER;
>
> return 0;
> @@ -4585,14 +4585,8 @@ static int __init bttv_init_module(void)
>
> bttv_num = 0;
>
> - printk(KERN_INFO "bttv: driver version %d.%d.%d loaded\n",
> - (BTTV_VERSION_CODE >> 16) & 0xff,
> - (BTTV_VERSION_CODE >> 8) & 0xff,
> - BTTV_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "bttv: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "bttv: driver version %s loaded\n",
> + BTTV_VERSION);
> if (gbuffers < 2 || gbuffers > VIDEO_MAX_FRAME)
> gbuffers = 2;
> if (gbufsize > BTTV_MAX_FBUF)
> diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
> index 9b776fa..318edf2 100644
> --- a/drivers/media/video/bt8xx/bttvp.h
> +++ b/drivers/media/video/bt8xx/bttvp.h
> @@ -25,9 +25,6 @@
> #ifndef _BTTVP_H_
> #define _BTTVP_H_
>
> -#include <linux/version.h>
> -#define BTTV_VERSION_CODE KERNEL_VERSION(0,9,18)
> -
> #include <linux/types.h>
> #include <linux/wait.h>
> #include <linux/i2c.h>
> diff --git a/drivers/media/video/bw-qcam.c b/drivers/media/video/bw-qcam.c
> index c119350..2fc998e 100644
> --- a/drivers/media/video/bw-qcam.c
> +++ b/drivers/media/video/bw-qcam.c
> @@ -71,7 +71,6 @@ OTHER DEALINGS IN THE SOFTWARE.
> #include <linux/mm.h>
> #include <linux/parport.h>
> #include <linux/sched.h>
> -#include <linux/version.h>
> #include <linux/videodev2.h>
> #include <linux/mutex.h>
> #include <asm/uaccess.h>
> @@ -647,7 +646,6 @@ static int qcam_querycap(struct file *file, void *priv,
> strlcpy(vcap->driver, qcam->v4l2_dev.name, sizeof(vcap->driver));
> strlcpy(vcap->card, "B&W Quickcam", sizeof(vcap->card));
> strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
> - vcap->version = KERNEL_VERSION(0, 0, 2);
> vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
> return 0;
> }
> @@ -1092,3 +1090,4 @@ module_init(init_bw_qcams);
> module_exit(exit_bw_qcams);
>
> MODULE_LICENSE("GPL");
> +MODULE_VERSION("0.0.3");
> diff --git a/drivers/media/video/c-qcam.c b/drivers/media/video/c-qcam.c
> index 24fc009..b8d800e 100644
> --- a/drivers/media/video/c-qcam.c
> +++ b/drivers/media/video/c-qcam.c
> @@ -35,7 +35,6 @@
> #include <linux/sched.h>
> #include <linux/mutex.h>
> #include <linux/jiffies.h>
> -#include <linux/version.h>
> #include <linux/videodev2.h>
> #include <asm/uaccess.h>
> #include <media/v4l2-device.h>
> @@ -517,7 +516,6 @@ static int qcam_querycap(struct file *file, void *priv,
> strlcpy(vcap->driver, qcam->v4l2_dev.name, sizeof(vcap->driver));
> strlcpy(vcap->card, "Color Quickcam", sizeof(vcap->card));
> strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
> - vcap->version = KERNEL_VERSION(0, 0, 3);
> vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
> return 0;
> }
> @@ -886,6 +884,7 @@ static void __exit cqcam_cleanup(void)
> MODULE_AUTHOR("Philip Blundell <philb@gnu.org>");
> MODULE_DESCRIPTION(BANNER);
> MODULE_LICENSE("GPL");
> +MODULE_VERSION("0.0.4");
>
> module_init(cqcam_init);
> module_exit(cqcam_cleanup);
> diff --git a/drivers/media/video/cpia2/cpia2.h b/drivers/media/video/cpia2/cpia2.h
> index 6d6d184..ab25218 100644
> --- a/drivers/media/video/cpia2/cpia2.h
> +++ b/drivers/media/video/cpia2/cpia2.h
> @@ -31,7 +31,6 @@
> #ifndef __CPIA2_H__
> #define __CPIA2_H__
>
> -#include <linux/version.h>
> #include <linux/videodev2.h>
> #include <media/v4l2-common.h>
> #include <linux/usb.h>
> @@ -43,10 +42,6 @@
> /* define for verbose debug output */
> //#define _CPIA2_DEBUG_
>
> -#define CPIA2_MAJ_VER 3
> -#define CPIA2_MIN_VER 0
> -#define CPIA2_PATCH_VER 0
> -
> /***
> * Image defines
> ***/
> diff --git a/drivers/media/video/cpia2/cpia2_v4l.c b/drivers/media/video/cpia2/cpia2_v4l.c
> index 40eb632..077eb1d 100644
> --- a/drivers/media/video/cpia2/cpia2_v4l.c
> +++ b/drivers/media/video/cpia2/cpia2_v4l.c
> @@ -29,8 +29,7 @@
> * Alan Cox <alan@lxorguk.ukuu.org.uk>
> ****************************************************************************/
>
> -#include <linux/version.h>
> -
> +#define CPIA_VERSION "3.0.1"
>
> #include <linux/module.h>
> #include <linux/time.h>
> @@ -80,6 +79,7 @@ MODULE_AUTHOR("Steve Miller (STMicroelectronics) <steve.miller@st.com>");
> MODULE_DESCRIPTION("V4L-driver for STMicroelectronics CPiA2 based cameras");
> MODULE_SUPPORTED_DEVICE("video");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CPIA_VERSION);
>
> #define ABOUT "V4L-Driver for Vision CPiA2 based cameras"
>
> @@ -465,9 +465,6 @@ static int cpia2_querycap(struct file *file, void *fh, struct v4l2_capability *v
> if (usb_make_path(cam->dev, vc->bus_info, sizeof(vc->bus_info)) <0)
> memset(vc->bus_info,0, sizeof(vc->bus_info));
>
> - vc->version = KERNEL_VERSION(CPIA2_MAJ_VER, CPIA2_MIN_VER,
> - CPIA2_PATCH_VER);
> -
> vc->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> V4L2_CAP_STREAMING;
> @@ -1558,8 +1555,8 @@ static void __init check_parameters(void)
> *****************************************************************************/
> static int __init cpia2_init(void)
> {
> - LOG("%s v%d.%d.%d\n",
> - ABOUT, CPIA2_MAJ_VER, CPIA2_MIN_VER, CPIA2_PATCH_VER);
> + LOG("%s v%s\n",
> + ABOUT, CPIA_VERSION);
> check_parameters();
> cpia2_usb_init();
> return 0;
> @@ -1579,4 +1576,3 @@ static void __exit cpia2_exit(void)
>
> module_init(cpia2_init);
> module_exit(cpia2_exit);
> -
> diff --git a/drivers/media/video/cx231xx/cx231xx-video.c b/drivers/media/video/cx231xx/cx231xx-video.c
> index a69c24d..21fa547 100644
> --- a/drivers/media/video/cx231xx/cx231xx-video.c
> +++ b/drivers/media/video/cx231xx/cx231xx-video.c
> @@ -29,7 +29,6 @@
> #include <linux/bitmap.h>
> #include <linux/usb.h>
> #include <linux/i2c.h>
> -#include <linux/version.h>
> #include <linux/mm.h>
> #include <linux/mutex.h>
> #include <linux/slab.h>
> @@ -45,7 +44,7 @@
> #include "cx231xx.h"
> #include "cx231xx-vbi.h"
>
> -#define CX231XX_VERSION_CODE KERNEL_VERSION(0, 0, 1)
> +#define CX231XX_VERSION "0.0.2"
>
> #define DRIVER_AUTHOR "Srinivasa Deevi <srinivasa.deevi@conexant.com>"
> #define DRIVER_DESC "Conexant cx231xx based USB video device driver"
> @@ -70,6 +69,7 @@ do {\
> MODULE_AUTHOR(DRIVER_AUTHOR);
> MODULE_DESCRIPTION(DRIVER_DESC);
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX231XX_VERSION);
>
> static unsigned int card[] = {[0 ... (CX231XX_MAXBOARDS - 1)] = UNSET };
> static unsigned int video_nr[] = {[0 ... (CX231XX_MAXBOARDS - 1)] = UNSET };
> @@ -1869,8 +1869,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
> usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
>
> - cap->version = CX231XX_VERSION_CODE;
> -
> cap->capabilities = V4L2_CAP_VBI_CAPTURE |
> #if 0
> V4L2_CAP_SLICED_VBI_CAPTURE |
> @@ -2057,7 +2055,6 @@ static int radio_querycap(struct file *file, void *priv,
> strlcpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
> usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
>
> - cap->version = CX231XX_VERSION_CODE;
> cap->capabilities = V4L2_CAP_TUNER;
> return 0;
> }
> @@ -2570,11 +2567,8 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
> {
> int ret;
>
> - cx231xx_info("%s: v4l2 driver version %d.%d.%d\n",
> - dev->name,
> - (CX231XX_VERSION_CODE >> 16) & 0xff,
> - (CX231XX_VERSION_CODE >> 8) & 0xff,
> - CX231XX_VERSION_CODE & 0xff);
> + cx231xx_info("%s: v4l2 driver version %s\n",
> + dev->name, CX231XX_VERSION);
>
> /* set default norm */
> /*dev->norm = cx231xx_video_template.current_norm; */
> diff --git a/drivers/media/video/cx231xx/cx231xx.h b/drivers/media/video/cx231xx/cx231xx.h
> index b39b85e..c8d0d3d 100644
> --- a/drivers/media/video/cx231xx/cx231xx.h
> +++ b/drivers/media/video/cx231xx/cx231xx.h
> @@ -114,7 +114,6 @@
> V4L2_STD_PAL_BG | V4L2_STD_PAL_DK | V4L2_STD_PAL_I | \
> V4L2_STD_PAL_M | V4L2_STD_PAL_N | V4L2_STD_PAL_Nc | \
> V4L2_STD_PAL_60 | V4L2_STD_SECAM_L | V4L2_STD_SECAM_DK)
> -#define CX231xx_VERSION_CODE KERNEL_VERSION(0, 0, 2)
>
> #define SLEEP_S5H1432 30
> #define CX23417_OSC_EN 8
> diff --git a/drivers/media/video/cx23885/altera-ci.c b/drivers/media/video/cx23885/altera-ci.c
> index 678539b..1fa8927 100644
> --- a/drivers/media/video/cx23885/altera-ci.c
> +++ b/drivers/media/video/cx23885/altera-ci.c
> @@ -52,7 +52,6 @@
> * | DATA7| DATA6| DATA5| DATA4| DATA3| DATA2| DATA1| DATA0|
> * +-------+-------+-------+-------+-------+-------+-------+-------+
> */
> -#include <linux/version.h>
> #include <media/videobuf-dma-sg.h>
> #include <media/videobuf-dvb.h>
> #include "altera-ci.h"
> diff --git a/drivers/media/video/cx23885/cx23885-417.c b/drivers/media/video/cx23885/cx23885-417.c
> index 9a98dc5..67c4a59 100644
> --- a/drivers/media/video/cx23885/cx23885-417.c
> +++ b/drivers/media/video/cx23885/cx23885-417.c
> @@ -1359,7 +1359,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, cx23885_boards[tsport->dev->board].name,
> sizeof(cap->card));
> sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
> - cap->version = CX23885_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c
> index 64d9b21..0b44255 100644
> --- a/drivers/media/video/cx23885/cx23885-core.c
> +++ b/drivers/media/video/cx23885/cx23885-core.c
> @@ -42,6 +42,7 @@
> MODULE_DESCRIPTION("Driver for cx23885 based TV cards");
> MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX23885_VERSION);
>
> static unsigned int debug;
> module_param(debug, int, 0644);
> @@ -2152,14 +2153,8 @@ static struct pci_driver cx23885_pci_driver = {
>
> static int __init cx23885_init(void)
> {
> - printk(KERN_INFO "cx23885 driver version %d.%d.%d loaded\n",
> - (CX23885_VERSION_CODE >> 16) & 0xff,
> - (CX23885_VERSION_CODE >> 8) & 0xff,
> - CX23885_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx23885: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx23885 driver version %s loaded\n",
> + CX23885_VERSION);
> return pci_register_driver(&cx23885_pci_driver);
> }
>
> @@ -2170,5 +2165,3 @@ static void __exit cx23885_fini(void)
>
> module_init(cx23885_init);
> module_exit(cx23885_fini);
> -
> -/* ----------------------------------------------------------- */
> diff --git a/drivers/media/video/cx23885/cx23885-video.c b/drivers/media/video/cx23885/cx23885-video.c
> index ee57f6b..896bb32 100644
> --- a/drivers/media/video/cx23885/cx23885-video.c
> +++ b/drivers/media/video/cx23885/cx23885-video.c
> @@ -1000,7 +1000,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, cx23885_boards[dev->board].name,
> sizeof(cap->card));
> sprintf(cap->bus_info, "PCIe:%s", pci_name(dev->pci));
> - cap->version = CX23885_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h
> index c186473..01c3b7b 100644
> --- a/drivers/media/video/cx23885/cx23885.h
> +++ b/drivers/media/video/cx23885/cx23885.h
> @@ -36,10 +36,9 @@
> #include "cx23885-reg.h"
> #include "media/cx2341x.h"
>
> -#include <linux/version.h>
> #include <linux/mutex.h>
>
> -#define CX23885_VERSION_CODE KERNEL_VERSION(0, 0, 2)
> +#define CX23885_VERSION "0.0.3"
>
> #define UNSET (-1U)
>
> diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c
> index 423c1af..68d1240 100644
> --- a/drivers/media/video/cx88/cx88-alsa.c
> +++ b/drivers/media/video/cx88/cx88-alsa.c
> @@ -113,6 +113,8 @@ MODULE_DESCRIPTION("ALSA driver module for cx2388x based TV cards");
> MODULE_AUTHOR("Ricardo Cerqueira");
> MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX88_VERSION);
> +
> MODULE_SUPPORTED_DEVICE("{{Conexant,23881},"
> "{{Conexant,23882},"
> "{{Conexant,23883}");
> @@ -973,14 +975,8 @@ static struct pci_driver cx88_audio_pci_driver = {
> */
> static int __init cx88_audio_init(void)
> {
> - printk(KERN_INFO "cx2388x alsa driver version %d.%d.%d loaded\n",
> - (CX88_VERSION_CODE >> 16) & 0xff,
> - (CX88_VERSION_CODE >> 8) & 0xff,
> - CX88_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx2388x alsa driver version %s loaded\n",
> + CX88_VERSION);
> return pci_register_driver(&cx88_audio_pci_driver);
> }
>
> @@ -994,10 +990,3 @@ static void __exit cx88_audio_fini(void)
>
> module_init(cx88_audio_init);
> module_exit(cx88_audio_fini);
> -
> -/* ----------------------------------------------------------- */
> -/*
> - * Local variables:
> - * c-basic-offset: 8
> - * End:
> - */
> diff --git a/drivers/media/video/cx88/cx88-blackbird.c b/drivers/media/video/cx88/cx88-blackbird.c
> index 11e49bb..e46446a 100644
> --- a/drivers/media/video/cx88/cx88-blackbird.c
> +++ b/drivers/media/video/cx88/cx88-blackbird.c
> @@ -42,6 +42,7 @@
> MODULE_DESCRIPTION("driver for cx2388x/cx23416 based mpeg encoder cards");
> MODULE_AUTHOR("Jelle Foks <jelle@foks.us>, Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX88_VERSION);
>
> static unsigned int mpegbufs = 32;
> module_param(mpegbufs,int,0644);
> @@ -730,7 +731,6 @@ static int vidioc_querycap (struct file *file, void *priv,
> strcpy(cap->driver, "cx88_blackbird");
> strlcpy(cap->card, core->board.name, sizeof(cap->card));
> sprintf(cap->bus_info,"PCI:%s",pci_name(dev->pci));
> - cap->version = CX88_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> @@ -1368,14 +1368,8 @@ static struct cx8802_driver cx8802_blackbird_driver = {
>
> static int __init blackbird_init(void)
> {
> - printk(KERN_INFO "cx2388x blackbird driver version %d.%d.%d loaded\n",
> - (CX88_VERSION_CODE >> 16) & 0xff,
> - (CX88_VERSION_CODE >> 8) & 0xff,
> - CX88_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx2388x blackbird driver version %s loaded\n",
> + CX88_VERSION);
> return cx8802_register_driver(&cx8802_blackbird_driver);
> }
>
> @@ -1389,11 +1383,3 @@ module_exit(blackbird_fini);
>
> module_param_named(video_debug,cx8802_mpeg_template.debug, int, 0644);
> MODULE_PARM_DESC(debug,"enable debug messages [video]");
> -
> -/* ----------------------------------------------------------- */
> -/*
> - * Local variables:
> - * c-basic-offset: 8
> - * End:
> - * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
> - */
> diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
> index 1ed72ce..cf3d33a 100644
> --- a/drivers/media/video/cx88/cx88-dvb.c
> +++ b/drivers/media/video/cx88/cx88-dvb.c
> @@ -64,6 +64,7 @@ MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
> MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
> MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX88_VERSION);
>
> static unsigned int debug;
> module_param(debug, int, 0644);
> @@ -1749,14 +1750,8 @@ static struct cx8802_driver cx8802_dvb_driver = {
>
> static int __init dvb_init(void)
> {
> - printk(KERN_INFO "cx88/2: cx2388x dvb driver version %d.%d.%d loaded\n",
> - (CX88_VERSION_CODE >> 16) & 0xff,
> - (CX88_VERSION_CODE >> 8) & 0xff,
> - CX88_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx88/2: cx2388x dvb driver version %s loaded\n",
> + CX88_VERSION);
> return cx8802_register_driver(&cx8802_dvb_driver);
> }
>
> @@ -1767,10 +1762,3 @@ static void __exit dvb_fini(void)
>
> module_init(dvb_init);
> module_exit(dvb_fini);
> -
> -/*
> - * Local variables:
> - * c-basic-offset: 8
> - * compile-command: "make DVB=1"
> - * End:
> - */
> diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
> index 1a7b983..ccd8797 100644
> --- a/drivers/media/video/cx88/cx88-mpeg.c
> +++ b/drivers/media/video/cx88/cx88-mpeg.c
> @@ -39,6 +39,7 @@ MODULE_AUTHOR("Jelle Foks <jelle@foks.us>");
> MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
> MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX88_VERSION);
>
> static unsigned int debug;
> module_param(debug,int,0644);
> @@ -890,14 +891,8 @@ static struct pci_driver cx8802_pci_driver = {
>
> static int __init cx8802_init(void)
> {
> - printk(KERN_INFO "cx88/2: cx2388x MPEG-TS Driver Manager version %d.%d.%d loaded\n",
> - (CX88_VERSION_CODE >> 16) & 0xff,
> - (CX88_VERSION_CODE >> 8) & 0xff,
> - CX88_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx88/2: cx2388x MPEG-TS Driver Manager version %s loaded\n",
> + CX88_VERSION);
> return pci_register_driver(&cx8802_pci_driver);
> }
>
> diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c
> index cef4f28..1db97f3 100644
> --- a/drivers/media/video/cx88/cx88-video.c
> +++ b/drivers/media/video/cx88/cx88-video.c
> @@ -45,6 +45,7 @@
> MODULE_DESCRIPTION("v4l2 driver module for cx2388x based TV cards");
> MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(CX88_VERSION);
>
> /* ------------------------------------------------------------------ */
>
> @@ -1161,7 +1162,6 @@ static int vidioc_querycap (struct file *file, void *priv,
> strcpy(cap->driver, "cx8800");
> strlcpy(cap->card, core->board.name, sizeof(cap->card));
> sprintf(cap->bus_info,"PCI:%s",pci_name(dev->pci));
> - cap->version = CX88_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> @@ -1480,7 +1480,6 @@ static int radio_querycap (struct file *file, void *priv,
> strcpy(cap->driver, "cx8800");
> strlcpy(cap->card, core->board.name, sizeof(cap->card));
> sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci));
> - cap->version = CX88_VERSION_CODE;
> cap->capabilities = V4L2_CAP_TUNER;
> return 0;
> }
> @@ -2139,14 +2138,8 @@ static struct pci_driver cx8800_pci_driver = {
>
> static int __init cx8800_init(void)
> {
> - printk(KERN_INFO "cx88/0: cx2388x v4l2 driver version %d.%d.%d loaded\n",
> - (CX88_VERSION_CODE >> 16) & 0xff,
> - (CX88_VERSION_CODE >> 8) & 0xff,
> - CX88_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "cx2388x: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "cx88/0: cx2388x v4l2 driver version %s loaded\n",
> + CX88_VERSION);
> return pci_register_driver(&cx8800_pci_driver);
> }
>
> @@ -2157,11 +2150,3 @@ static void __exit cx8800_fini(void)
>
> module_init(cx8800_init);
> module_exit(cx8800_fini);
> -
> -/* ----------------------------------------------------------- */
> -/*
> - * Local variables:
> - * c-basic-offset: 8
> - * End:
> - * kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
> - */
> diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
> index 5719063..425c9fb 100644
> --- a/drivers/media/video/cx88/cx88.h
> +++ b/drivers/media/video/cx88/cx88.h
> @@ -39,9 +39,9 @@
> #include "cx88-reg.h"
> #include "tuner-xc2028.h"
>
> -#include <linux/version.h>
> #include <linux/mutex.h>
> -#define CX88_VERSION_CODE KERNEL_VERSION(0, 0, 8)
> +
> +#define CX88_VERSION "0.0.9"
>
> #define UNSET (-1U)
>
> diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c
> index 7b6461d..d176dc0 100644
> --- a/drivers/media/video/em28xx/em28xx-video.c
> +++ b/drivers/media/video/em28xx/em28xx-video.c
> @@ -32,7 +32,6 @@
> #include <linux/bitmap.h>
> #include <linux/usb.h>
> #include <linux/i2c.h>
> -#include <linux/version.h>
> #include <linux/mm.h>
> #include <linux/mutex.h>
> #include <linux/slab.h>
> @@ -50,7 +49,8 @@
> "Sascha Sommer <saschasommer@freenet.de>"
>
> #define DRIVER_DESC "Empia em28xx based USB video device driver"
> -#define EM28XX_VERSION_CODE KERNEL_VERSION(0, 1, 2)
> +
> +#define EM28XX_VERSION "0.1.3"
>
> #define em28xx_videodbg(fmt, arg...) do {\
> if (video_debug) \
> @@ -72,6 +72,7 @@ do {\
> MODULE_AUTHOR(DRIVER_AUTHOR);
> MODULE_DESCRIPTION(DRIVER_DESC);
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(EM28XX_VERSION);
>
> static unsigned int video_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
> static unsigned int vbi_nr[] = {[0 ... (EM28XX_MAXBOARDS - 1)] = UNSET };
> @@ -1757,8 +1758,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
> usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
>
> - cap->version = EM28XX_VERSION_CODE;
> -
> cap->capabilities =
> V4L2_CAP_SLICED_VBI_CAPTURE |
> V4L2_CAP_VIDEO_CAPTURE |
> @@ -1976,7 +1975,6 @@ static int radio_querycap(struct file *file, void *priv,
> strlcpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
> usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
>
> - cap->version = EM28XX_VERSION_CODE;
> cap->capabilities = V4L2_CAP_TUNER;
> return 0;
> }
> @@ -2450,10 +2448,8 @@ int em28xx_register_analog_devices(struct em28xx *dev)
> u8 val;
> int ret;
>
> - printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",
> - dev->name,
> - (EM28XX_VERSION_CODE >> 16) & 0xff,
> - (EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);
> + printk(KERN_INFO "%s: v4l2 driver version %s\n",
> + dev->name, EM28XX_VERSION);
>
> /* set default norm */
> dev->norm = em28xx_video_template.current_norm;
> diff --git a/drivers/media/video/gspca/gl860/gl860.h b/drivers/media/video/gspca/gl860/gl860.h
> index 49ad4ac..0330a02 100644
> --- a/drivers/media/video/gspca/gl860/gl860.h
> +++ b/drivers/media/video/gspca/gl860/gl860.h
> @@ -18,7 +18,6 @@
> */
> #ifndef GL860_DEV_H
> #define GL860_DEV_H
> -#include <linux/version.h>
>
> #include "gspca.h"
>
> diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c
> index a27d93b..5442a17 100644
> --- a/drivers/media/video/hdpvr/hdpvr-core.c
> +++ b/drivers/media/video/hdpvr/hdpvr-core.c
> @@ -474,5 +474,6 @@ module_init(hdpvr_init);
> module_exit(hdpvr_exit);
>
> MODULE_LICENSE("GPL");
> +MODULE_VERSION("0.2.1");
> MODULE_AUTHOR("Janne Grunau");
> MODULE_DESCRIPTION("Hauppauge HD PVR driver");
> diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c
> index 514aea7..087f7c0 100644
> --- a/drivers/media/video/hdpvr/hdpvr-video.c
> +++ b/drivers/media/video/hdpvr/hdpvr-video.c
> @@ -17,7 +17,6 @@
> #include <linux/uaccess.h>
> #include <linux/usb.h>
> #include <linux/mutex.h>
> -#include <linux/version.h>
> #include <linux/workqueue.h>
>
> #include <linux/videodev2.h>
> @@ -574,7 +573,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strcpy(cap->driver, "hdpvr");
> strcpy(cap->card, "Hauppauge HD PVR");
> usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
> - cap->version = HDPVR_VERSION;
> cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_AUDIO |
> V4L2_CAP_READWRITE;
> diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h
> index 072f23c..d6439db 100644
> --- a/drivers/media/video/hdpvr/hdpvr.h
> +++ b/drivers/media/video/hdpvr/hdpvr.h
> @@ -18,12 +18,6 @@
> #include <media/v4l2-device.h>
> #include <media/ir-kbd-i2c.h>
>
> -#define HDPVR_MAJOR_VERSION 0
> -#define HDPVR_MINOR_VERSION 2
> -#define HDPVR_RELEASE 0
> -#define HDPVR_VERSION \
> - KERNEL_VERSION(HDPVR_MAJOR_VERSION, HDPVR_MINOR_VERSION, HDPVR_RELEASE)
> -
> #define HDPVR_MAX 8
> #define HDPVR_I2C_MAX_SIZE 128
>
> diff --git a/drivers/media/video/mem2mem_testdev.c b/drivers/media/video/mem2mem_testdev.c
> index b03d74e..166bf93 100644
> --- a/drivers/media/video/mem2mem_testdev.c
> +++ b/drivers/media/video/mem2mem_testdev.c
> @@ -19,7 +19,6 @@
> #include <linux/module.h>
> #include <linux/delay.h>
> #include <linux/fs.h>
> -#include <linux/version.h>
> #include <linux/timer.h>
> #include <linux/sched.h>
> #include <linux/slab.h>
> @@ -35,7 +34,7 @@
> MODULE_DESCRIPTION("Virtual device for mem2mem framework testing");
> MODULE_AUTHOR("Pawel Osciak, <pawel@osciak.com>");
> MODULE_LICENSE("GPL");
> -
> +MODULE_VERSION("0.1.1");
>
> #define MIN_W 32
> #define MIN_H 32
> @@ -380,7 +379,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strncpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver) - 1);
> strncpy(cap->card, MEM2MEM_NAME, sizeof(cap->card) - 1);
> cap->bus_info[0] = 0;
> - cap->version = KERNEL_VERSION(0, 1, 0);
> cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
> | V4L2_CAP_STREAMING;
>
> diff --git a/drivers/media/video/pms.c b/drivers/media/video/pms.c
> index 7551907..e753b5e 100644
> --- a/drivers/media/video/pms.c
> +++ b/drivers/media/video/pms.c
> @@ -28,7 +28,6 @@
> #include <linux/mm.h>
> #include <linux/ioport.h>
> #include <linux/init.h>
> -#include <linux/version.h>
> #include <linux/mutex.h>
> #include <linux/uaccess.h>
> #include <asm/io.h>
> @@ -39,7 +38,7 @@
> #include <media/v4l2-device.h>
>
> MODULE_LICENSE("GPL");
> -
> +MODULE_VERSION("0.0.4");
>
> #define MOTOROLA 1
> #define PHILIPS2 2 /* SAA7191 */
> @@ -678,7 +677,6 @@ static int pms_querycap(struct file *file, void *priv,
> strlcpy(vcap->driver, dev->v4l2_dev.name, sizeof(vcap->driver));
> strlcpy(vcap->card, "Mediavision PMS", sizeof(vcap->card));
> strlcpy(vcap->bus_info, "ISA", sizeof(vcap->bus_info));
> - vcap->version = KERNEL_VERSION(0, 0, 3);
> vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
> return 0;
> }
> diff --git a/drivers/media/video/pwc/pwc-ioctl.h b/drivers/media/video/pwc/pwc-ioctl.h
> index 8c0cae7..b74fea0 100644
> --- a/drivers/media/video/pwc/pwc-ioctl.h
> +++ b/drivers/media/video/pwc/pwc-ioctl.h
> @@ -52,7 +52,6 @@
> */
>
> #include <linux/types.h>
> -#include <linux/version.h>
>
> /* Enumeration of image sizes */
> #define PSZ_SQCIF 0x00
> diff --git a/drivers/media/video/pwc/pwc.h b/drivers/media/video/pwc/pwc.h
> index e947766..78185c6 100644
> --- a/drivers/media/video/pwc/pwc.h
> +++ b/drivers/media/video/pwc/pwc.h
> @@ -29,7 +29,6 @@
> #include <linux/usb.h>
> #include <linux/spinlock.h>
> #include <linux/wait.h>
> -#include <linux/version.h>
> #include <linux/mutex.h>
> #include <linux/mm.h>
> #include <linux/slab.h>
> @@ -47,9 +46,10 @@
> /* Version block */
> #define PWC_MAJOR 10
> #define PWC_MINOR 0
> -#define PWC_EXTRAMINOR 12
> -#define PWC_VERSION_CODE KERNEL_VERSION(PWC_MAJOR,PWC_MINOR,PWC_EXTRAMINOR)
> -#define PWC_VERSION "10.0.14"
> +#define PWC_EXTRAMINOR 15
> +
> +#define PWC_VERSION_CODE KERNEL_VERSION(PWC_MAJOR, PWC_MINOR, PWC_EXTRAMINOR)
> +#define PWC_VERSION __stringify(PWC_MAJOR) "." __stringify(PWC_MINOR) "." __stringify(PWC_EXTRAMINOR)
> #define PWC_NAME "pwc"
> #define PFX PWC_NAME ": "
>
> diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c
> index f9be737..acf83f4 100644
> --- a/drivers/media/video/saa7134/saa7134-core.c
> +++ b/drivers/media/video/saa7134/saa7134-core.c
> @@ -39,6 +39,8 @@
> MODULE_DESCRIPTION("v4l2 driver module for saa7130/34 based TV cards");
> MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
> MODULE_LICENSE("GPL");
> +MODULE_LICENSE(SAA7134_VERSION);
> +
>
> /* ------------------------------------------------------------------ */
>
> @@ -1332,14 +1334,8 @@ static struct pci_driver saa7134_pci_driver = {
> static int __init saa7134_init(void)
> {
> INIT_LIST_HEAD(&saa7134_devlist);
> - printk(KERN_INFO "saa7130/34: v4l2 driver version %d.%d.%d loaded\n",
> - (SAA7134_VERSION_CODE >> 16) & 0xff,
> - (SAA7134_VERSION_CODE >> 8) & 0xff,
> - SAA7134_VERSION_CODE & 0xff);
> -#ifdef SNAPSHOT
> - printk(KERN_INFO "saa7130/34: snapshot date %04d-%02d-%02d\n",
> - SNAPSHOT/10000, (SNAPSHOT/100)%100, SNAPSHOT%100);
> -#endif
> + printk(KERN_INFO "saa7130/34: v4l2 driver version %s loaded\n",
> + SAA7134_VERSION);
> return pci_register_driver(&saa7134_pci_driver);
> }
>
> diff --git a/drivers/media/video/saa7134/saa7134-empress.c b/drivers/media/video/saa7134/saa7134-empress.c
> index 18294db..dde361a 100644
> --- a/drivers/media/video/saa7134/saa7134-empress.c
> +++ b/drivers/media/video/saa7134/saa7134-empress.c
> @@ -172,7 +172,6 @@ static int empress_querycap(struct file *file, void *priv,
> strlcpy(cap->card, saa7134_boards[dev->board].name,
> sizeof(cap->card));
> sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
> - cap->version = SAA7134_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> diff --git a/drivers/media/video/saa7134/saa7134-video.c b/drivers/media/video/saa7134/saa7134-video.c
> index 776ba2d..9cf7914 100644
> --- a/drivers/media/video/saa7134/saa7134-video.c
> +++ b/drivers/media/video/saa7134/saa7134-video.c
> @@ -1810,7 +1810,6 @@ static int saa7134_querycap(struct file *file, void *priv,
> strlcpy(cap->card, saa7134_boards[dev->board].name,
> sizeof(cap->card));
> sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
> - cap->version = SAA7134_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_VBI_CAPTURE |
> @@ -2307,7 +2306,6 @@ static int radio_querycap(struct file *file, void *priv,
> strcpy(cap->driver, "saa7134");
> strlcpy(cap->card, saa7134_boards[dev->board].name, sizeof(cap->card));
> sprintf(cap->bus_info, "PCI:%s", pci_name(dev->pci));
> - cap->version = SAA7134_VERSION_CODE;
> cap->capabilities = V4L2_CAP_TUNER;
> return 0;
> }
> diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h
> index 28eb103..bc8d6bb 100644
> --- a/drivers/media/video/saa7134/saa7134.h
> +++ b/drivers/media/video/saa7134/saa7134.h
> @@ -19,8 +19,7 @@
> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> */
>
> -#include <linux/version.h>
> -#define SAA7134_VERSION_CODE KERNEL_VERSION(0, 2, 16)
> +#define SAA7134_VERSION "0, 2, 17"
>
> #include <linux/pci.h>
> #include <linux/i2c.h>
> diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h
> index 16745d2..6678bf1 100644
> --- a/drivers/media/video/saa7164/saa7164.h
> +++ b/drivers/media/video/saa7164/saa7164.h
> @@ -48,7 +48,6 @@
> #include <linux/i2c.h>
> #include <linux/i2c-algo-bit.h>
> #include <linux/kdev_t.h>
> -#include <linux/version.h>
> #include <linux/mutex.h>
> #include <linux/crc32.h>
> #include <linux/kthread.h>
> diff --git a/drivers/media/video/timblogiw.c b/drivers/media/video/timblogiw.c
> index fc611eb..84cd1b6 100644
> --- a/drivers/media/video/timblogiw.c
> +++ b/drivers/media/video/timblogiw.c
> @@ -20,7 +20,6 @@
> * Timberdale FPGA LogiWin Video In
> */
>
> -#include <linux/version.h>
> #include <linux/platform_device.h>
> #include <linux/slab.h>
> #include <linux/dmaengine.h>
> diff --git a/drivers/media/video/tlg2300/pd-common.h b/drivers/media/video/tlg2300/pd-common.h
> index 46066bd..56564e6 100644
> --- a/drivers/media/video/tlg2300/pd-common.h
> +++ b/drivers/media/video/tlg2300/pd-common.h
> @@ -1,7 +1,6 @@
> #ifndef PD_COMMON_H
> #define PD_COMMON_H
>
> -#include <linux/version.h>
> #include <linux/fs.h>
> #include <linux/wait.h>
> #include <linux/list.h>
> diff --git a/drivers/media/video/tlg2300/pd-main.c b/drivers/media/video/tlg2300/pd-main.c
> index 99c81a9..129f135 100644
> --- a/drivers/media/video/tlg2300/pd-main.c
> +++ b/drivers/media/video/tlg2300/pd-main.c
> @@ -531,3 +531,4 @@ module_exit(poseidon_exit);
> MODULE_AUTHOR("Telegent Systems");
> MODULE_DESCRIPTION("For tlg2300-based USB device ");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION("0.0.2");
> diff --git a/drivers/media/video/tlg2300/pd-radio.c b/drivers/media/video/tlg2300/pd-radio.c
> index fae84c2..4fad1df 100644
> --- a/drivers/media/video/tlg2300/pd-radio.c
> +++ b/drivers/media/video/tlg2300/pd-radio.c
> @@ -6,7 +6,6 @@
> #include <linux/usb.h>
> #include <linux/i2c.h>
> #include <media/v4l2-dev.h>
> -#include <linux/version.h>
> #include <linux/mm.h>
> #include <linux/mutex.h>
> #include <media/v4l2-ioctl.h>
> @@ -149,7 +148,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strlcpy(v->driver, "tele-radio", sizeof(v->driver));
> strlcpy(v->card, "Telegent Poseidon", sizeof(v->card));
> usb_make_path(p->udev, v->bus_info, sizeof(v->bus_info));
> - v->version = KERNEL_VERSION(0, 0, 1);
> v->capabilities = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
> return 0;
> }
> diff --git a/drivers/media/video/usbvision/usbvision-video.c b/drivers/media/video/usbvision/usbvision-video.c
> index ea8ea8a..5a74f5e 100644
> --- a/drivers/media/video/usbvision/usbvision-video.c
> +++ b/drivers/media/video/usbvision/usbvision-video.c
> @@ -45,7 +45,6 @@
> *
> */
>
> -#include <linux/version.h>
> #include <linux/kernel.h>
> #include <linux/list.h>
> #include <linux/timer.h>
> @@ -77,15 +76,7 @@
> #define DRIVER_ALIAS "USBVision"
> #define DRIVER_DESC "USBVision USB Video Device Driver for Linux"
> #define DRIVER_LICENSE "GPL"
> -#define USBVISION_DRIVER_VERSION_MAJOR 0
> -#define USBVISION_DRIVER_VERSION_MINOR 9
> -#define USBVISION_DRIVER_VERSION_PATCHLEVEL 10
> -#define USBVISION_DRIVER_VERSION KERNEL_VERSION(USBVISION_DRIVER_VERSION_MAJOR,\
> -USBVISION_DRIVER_VERSION_MINOR,\
> -USBVISION_DRIVER_VERSION_PATCHLEVEL)
> -#define USBVISION_VERSION_STRING __stringify(USBVISION_DRIVER_VERSION_MAJOR) \
> -"." __stringify(USBVISION_DRIVER_VERSION_MINOR) \
> -"." __stringify(USBVISION_DRIVER_VERSION_PATCHLEVEL)
> +#define USBVISION_VERSION_STRING "0.9.11"
>
> #define ENABLE_HEXDUMP 0 /* Enable if you need it */
>
> @@ -516,7 +507,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> usbvision_device_data[usbvision->dev_model].model_string,
> sizeof(vc->card));
> usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
> - vc->version = USBVISION_DRIVER_VERSION;
> vc->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_AUDIO |
> V4L2_CAP_READWRITE |
> diff --git a/drivers/media/video/vino.c b/drivers/media/video/vino.c
> index d63e9d9..52a0a37 100644
> --- a/drivers/media/video/vino.c
> +++ b/drivers/media/video/vino.c
> @@ -36,7 +36,6 @@
> #include <linux/slab.h>
> #include <linux/mm.h>
> #include <linux/time.h>
> -#include <linux/version.h>
> #include <linux/kmod.h>
>
> #include <linux/i2c.h>
> @@ -61,8 +60,7 @@
> // #define VINO_DEBUG
> // #define VINO_DEBUG_INT
>
> -#define VINO_MODULE_VERSION "0.0.6"
> -#define VINO_VERSION_CODE KERNEL_VERSION(0, 0, 6)
> +#define VINO_MODULE_VERSION "0.0.7"
>
> MODULE_DESCRIPTION("SGI VINO Video4Linux2 driver");
> MODULE_VERSION(VINO_MODULE_VERSION);
> @@ -2934,7 +2932,6 @@ static int vino_querycap(struct file *file, void *__fh,
> strcpy(cap->driver, vino_driver_name);
> strcpy(cap->card, vino_driver_description);
> strcpy(cap->bus_info, vino_bus_name);
> - cap->version = VINO_VERSION_CODE;
> cap->capabilities =
> V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_STREAMING;
> diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
> index 2238a61..3b9db8c 100644
> --- a/drivers/media/video/vivi.c
> +++ b/drivers/media/video/vivi.c
> @@ -22,7 +22,6 @@
> #include <linux/sched.h>
> #include <linux/slab.h>
> #include <linux/font.h>
> -#include <linux/version.h>
> #include <linux/mutex.h>
> #include <linux/videodev2.h>
> #include <linux/kthread.h>
> @@ -44,15 +43,12 @@
> #define MAX_WIDTH 1920
> #define MAX_HEIGHT 1200
>
> -#define VIVI_MAJOR_VERSION 0
> -#define VIVI_MINOR_VERSION 8
> -#define VIVI_RELEASE 0
> -#define VIVI_VERSION \
> - KERNEL_VERSION(VIVI_MAJOR_VERSION, VIVI_MINOR_VERSION, VIVI_RELEASE)
> +#define VIVI_VERSION "0.8.1"
>
> MODULE_DESCRIPTION("Video Technology Magazine Virtual Video Capture Board");
> MODULE_AUTHOR("Mauro Carvalho Chehab, Ted Walther and John Sokol");
> MODULE_LICENSE("Dual BSD/GPL");
> +MODULE_VERSION(VIVI_VERSION);
>
> static unsigned video_nr = -1;
> module_param(video_nr, uint, 0644);
> @@ -812,7 +808,6 @@ static int vidioc_querycap(struct file *file, void *priv,
> strcpy(cap->driver, "vivi");
> strcpy(cap->card, "vivi");
> strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
> - cap->version = VIVI_VERSION;
> cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING | \
> V4L2_CAP_READWRITE;
> return 0;
> @@ -1325,9 +1320,8 @@ static int __init vivi_init(void)
> }
>
> printk(KERN_INFO "Video Technology Magazine Virtual Video "
> - "Capture Board ver %u.%u.%u successfully loaded.\n",
> - (VIVI_VERSION >> 16) & 0xFF, (VIVI_VERSION >> 8) & 0xFF,
> - VIVI_VERSION & 0xFF);
> + "Capture Board ver %s successfully loaded.\n",
> + VIVI_VERSION);
>
> /* n_devs will reflect the actual number of allocated devices */
> n_devs = i;
> diff --git a/drivers/media/video/w9966.c b/drivers/media/video/w9966.c
> index fa35639..453dbbd 100644
> --- a/drivers/media/video/w9966.c
> +++ b/drivers/media/video/w9966.c
> @@ -57,7 +57,6 @@
> #include <linux/module.h>
> #include <linux/init.h>
> #include <linux/delay.h>
> -#include <linux/version.h>
> #include <linux/videodev2.h>
> #include <linux/slab.h>
> #include <media/v4l2-common.h>
> @@ -127,7 +126,7 @@ struct w9966 {
> MODULE_AUTHOR("Jakob Kemi <jakob.kemi@post.utfors.se>");
> MODULE_DESCRIPTION("Winbond w9966cf WebCam driver (0.32)");
> MODULE_LICENSE("GPL");
> -
> +MODULE_VERSION("0.33.1");
>
> #ifdef MODULE
> static const char *pardev[] = {[0 ... W9966_MAXCAMS] = ""};
> @@ -568,7 +567,6 @@ static int cam_querycap(struct file *file, void *priv,
> strlcpy(vcap->driver, cam->v4l2_dev.name, sizeof(vcap->driver));
> strlcpy(vcap->card, W9966_DRIVERNAME, sizeof(vcap->card));
> strlcpy(vcap->bus_info, "parport", sizeof(vcap->bus_info));
> - vcap->version = KERNEL_VERSION(0, 33, 0);
> vcap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
> return 0;
> }
> diff --git a/drivers/media/video/zoran/zoran.h b/drivers/media/video/zoran/zoran.h
> index f3f6400..d7166af 100644
> --- a/drivers/media/video/zoran/zoran.h
> +++ b/drivers/media/video/zoran/zoran.h
> @@ -41,10 +41,6 @@ struct zoran_sync {
> };
>
>
> -#define MAJOR_VERSION 0 /* driver major version */
> -#define MINOR_VERSION 10 /* driver minor version */
> -#define RELEASE_VERSION 0 /* release version */
> -
> #define ZORAN_NAME "ZORAN" /* name of the device */
>
> #define ZR_DEVNAME(zr) ((zr)->name)
> diff --git a/drivers/media/video/zoran/zoran_card.c b/drivers/media/video/zoran/zoran_card.c
> index 79b04ac..c3602d6 100644
> --- a/drivers/media/video/zoran/zoran_card.c
> +++ b/drivers/media/video/zoran/zoran_card.c
> @@ -123,9 +123,12 @@ int zr36067_debug = 1;
> module_param_named(debug, zr36067_debug, int, 0644);
> MODULE_PARM_DESC(debug, "Debug level (0-5)");
>
> +#define ZORAN_VERSION "0.10.1"
> +
> MODULE_DESCRIPTION("Zoran-36057/36067 JPEG codec driver");
> MODULE_AUTHOR("Serguei Miridonov");
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(ZORAN_VERSION);
>
> #define ZR_DEVICE(subven, subdev, data) { \
> .vendor = PCI_VENDOR_ID_ZORAN, .device = PCI_DEVICE_ID_ZORAN_36057, \
> @@ -1459,8 +1462,8 @@ static int __init zoran_init(void)
> {
> int res;
>
> - printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",
> - MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);
> + printk(KERN_INFO "Zoran MJPEG board driver version %s\n",
> + ZORAN_VERSION);
>
> /* check the parameters we have been given, adjust if necessary */
> if (v4l_nbufs < 2)
> diff --git a/drivers/media/video/zoran/zoran_driver.c b/drivers/media/video/zoran/zoran_driver.c
> index 2771d81..d4d05d2 100644
> --- a/drivers/media/video/zoran/zoran_driver.c
> +++ b/drivers/media/video/zoran/zoran_driver.c
> @@ -44,7 +44,6 @@
> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
> */
>
> -#include <linux/version.h>
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/delay.h>
> @@ -1538,8 +1537,6 @@ static int zoran_querycap(struct file *file, void *__fh, struct v4l2_capability
> strncpy(cap->driver, "zoran", sizeof(cap->driver)-1);
> snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s",
> pci_name(zr->pci_dev));
> - cap->version = KERNEL_VERSION(MAJOR_VERSION, MINOR_VERSION,
> - RELEASE_VERSION);
> cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_VIDEO_OVERLAY;
> return 0;
> diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c
> index 7dfb01e..c492846 100644
> --- a/drivers/media/video/zr364xx.c
> +++ b/drivers/media/video/zr364xx.c
> @@ -29,7 +29,6 @@
>
>
> #include <linux/module.h>
> -#include <linux/version.h>
> #include <linux/init.h>
> #include <linux/usb.h>
> #include <linux/vmalloc.h>
> @@ -42,8 +41,7 @@
>
>
> /* Version Information */
> -#define DRIVER_VERSION "v0.73"
> -#define ZR364XX_VERSION_CODE KERNEL_VERSION(0, 7, 3)
> +#define DRIVER_VERSION "0.7.4"
> #define DRIVER_AUTHOR "Antoine Jacquet, http://royale.zerezo.com/"
> #define DRIVER_DESC "Zoran 364xx"
>
> @@ -744,7 +742,6 @@ static int zr364xx_vidioc_querycap(struct file *file, void *priv,
> strlcpy(cap->card, cam->udev->product, sizeof(cap->card));
> strlcpy(cap->bus_info, dev_name(&cam->udev->dev),
> sizeof(cap->bus_info));
> - cap->version = ZR364XX_VERSION_CODE;
> cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
> V4L2_CAP_READWRITE |
> V4L2_CAP_STREAMING;
> @@ -1721,3 +1718,4 @@ module_exit(zr364xx_exit);
> MODULE_AUTHOR(DRIVER_AUTHOR);
> MODULE_DESCRIPTION(DRIVER_DESC);
> MODULE_LICENSE("GPL");
> +MODULE_VERSION(DRIVER_VERSION);
>
>
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH] [media] Stop using linux/version.h on most drivers
2011-06-25 10:09 ` Hans Verkuil
@ 2011-06-25 12:14 ` Mauro Carvalho Chehab
2011-06-27 0:59 ` Laurent Pinchart
0 siblings, 1 reply; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-25 12:14 UTC (permalink / raw)
To: Hans Verkuil
Cc: LKML, Devin Heitmueller, Jesper Juhl, trivial, linux-media,
ceph-devel, Sage Weil, Mike Isely, Laurent Pinchart,
Hans De Goede, Jean-Francois Moine
Em 25-06-2011 07:09, Hans Verkuil escreveu:
> On Friday, June 24, 2011 20:25:26 Mauro Carvalho Chehab wrote:
>> All the modified drivers didn't have any version increment since
>> Jan, 1 2011. Several of them didn't have any version increment
>> for a long time, even having new features and important bug fixes
>> happening.
>>
>> As we're now filling the QUERYCAP version with the current Kernel
>> Release, we don't need to maintain a per-driver version control
>> anymore. So, let's just use the default.
>>
>> In order to preserve the Kernel module version history, a
>> KERNEL_VERSION() macro were added to all modified drivers, and
>> the extraver number were incremented.
>>
>> I opted to preserve the per-driver version control to a few
>> drivers: cx18, davinci, fsl-viu, gspca, ivtv, m5mols, soc_camera,
>> pwc, s2255, s5p-fimc and sh_vou. The rationale is that the
>> per-driver version control seems to be actively maintained on
>> those.
>>
>> A few drivers are still using the legacy way to handle ioctl's.
>> So, we can't do such change on them, otherwise, they'll break.
>> Those are: uvc, pvrusb2, et61x251 and sn9c102.
>>
>> Yet, I think that the better for them would be to just use the
>> default version numbering, instead of doing that by themselves.
>>
>> While here, removed a few not needed include linux/version.h.
>>
>> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
>
> Sorry, but I have to say NACK to this.
>
> If we do this, then we should do this consistently.
IMO, all drivers should stop reporting its own version via V4L2 API:
people forget to maintain it on a consistent way. That was my original
proposal, and it can still be implemented later.
This patch does it on a consistent way: on places were version is not updated
for more than 6 months (2 kernel releases) and use video_ioctl2, the version
string were replaced by a number that it is greater than the previous value.
My original proposal were to replace it on every place, but you and Devin
argued against. So, this approach is a mid-term: let's do it initially
where it makes more sense, and discuss what will be done with the remaining
drivers that implement their own version control.
With the mid-term approach taken by this patch, we warrant that, when newer
V4L2 core API changes are applied, the version number will also be incremented,
reflecting that changes could have affected the driver.
> I thought it over and filling it with the current kernel version would work
> well with one exception: the pwc driver has a major number of 10 which is
> larger than the kernel's major number. (cpia2 has a version of 3.0.0, so that
> just works).
That's what I've explained on my first email about this subject: the only driver that has
a numbering > 3.0.0 is the pwc driver, and it does that on a not consistent way:
when you've removed the V4L1 API, you've incremented the version string, but you forgot
to upgrade the caps->version. So, if any application is relying on it for pwc, the
check is currently broken.
> I am inclined to sort of close my eyes for that one and just replace it as
> well, but that's just me :-)
I like the idea of replacing pwc version to 3.0.0. We moved it into drivers/media
at 2006-03-25. On that time, the version was: 9.0.2-unofficial, and only the V4L1 API
was implemented.
In other words, the pwc driver never returned version 3.0.0 to VIDIOC_QUERYCAP.
So, it is safe to just use 3.x.y. Assuming that we'll be incrementing Kernel major
versions on every 10 years, the namespace conflicts will happen 70 years from now ;)
Seriously, I don't think we need to be concerned with a conflict with 10.0.x. numbering
that will happen on lots of years in the future (also, because we probably won't use
the extraver numbering).
> The only thing that needs to be done is that media_build needs some hack to
> set the version field to the source git tree kernel version instead of the
> target's kernel version.
Yes. After applying those patches, we'll need to fix the out-of-tree media_build.
It shouldn't be hard: a patch can just add a logic that uses a V4L2_VERSION
version defined on v4l/v4l2-version.h, for example.
> To simplify that and to accomodate the four ioctl-legacy drivers we can
> make a simple include/media/version.h header that defines a V4L2_API_VERSION
> define.
I would not care much about those. The current situation is:
- et61x251: only one USB ID is currently supported there: 102c:6251, using
the TAS5130D1B sensor. The gspca etoms driver supports the same USB ID with the
same sensor. IMO, we can just move this driver to staging and remove it.
- sn9c102: I think that there are still a few USB ID's there that aren't yet
at the gspca/sonix* drivers, but Jean-François/Hans could give us a better status.
Anyway, no new features or bug fixes are added there for a long time, and core changes
should likely not affect this driver, as it doesn't use the subdev layer nor
video_ioctl2. So, we can just keep its version there until its removal;
- pvrusb2: Mike Isely said on a reply to one of your patches that he's finally
migrating it to use video_ioctl2.
- uvcvideo: not sure about its current status about its migration to video_ioctl2.
If Laurent is not doing a migration to video_ioctl2 any time soon, a simple patch for it
could make it act consistently. In any case, I don't think we should create a
include/media/version.h just due to uvcvideo.
> An alternative is to just add an api_version field to v4l2_querycap.
> That would work fine too.
>
> One reason for doing that may be to help out-of-tree drivers: for those a
> driver version *does* make sense. I know, we shouldn't have to care about
> out-of-tree drivers, but on the other hand why make life hard for them without
> a good reason?
Adding anything at the V4L2 API in order to accommodate a need for an out-of-tree
driver is out of the question. While we have some reserved space there, we should not
waste it due to out-of-tree drivers.
> The more I think about it, the more I like the idea of an api_version field.
> It would keep pwc happy, it wouldn't require many changes to drivers, and it
> will not affect out-of-tree drivers.
As I've explained before, pwc will work with 3.0.0, because there are no namespace
conflicts in any predictable future. The _only_ version that it ever reported with
V4L2 since April, 2006 is 10.0.12 (see commit 2b455db6d456ef2d44808a8377fd3bc832e08317).
For sure, no application is currently checking for its version, as it reports the
same version. So, even on the remote far-away case where we might have a conflict,
it will be on just one specific stable Kernel release (Kernel 10.0.12).
Removing the driver-specific version reported via V4L2 API is a good thing, due to a
series of reasons:
1) every time include/linux/version.h changes, all media drivers need to be
recompiled;
2) eventually, this macro will be changed at 3.0 times;
3) developers are lazy on updating it at a per-driver basis; The information
there is not consistent;
4) a check for LINUX_VERSION_CODE (and its equivalent media_build replacement)
will be changed on a consistent way, being incremented when new features are
added at the Kernel;
5) An userspace application could use it in order to check if unsupported ioctl's
will return -ENOIOCTLCMD (see my patch adding this change to V4L2 API);
6) From time to time, people do the wrong thing, including version.h where it is
not needed, and spending Kernel Janitor's time to cleanup the mess.
Anyway, the approach I'm taking is to:
1) apply a patch making optional for the drivers to fill it;
2) removing it were it is clearly an improvement. The drivers that
still keeps its own version control are basically:
- the 4 drivers that don't use video-ioctl2;
- the SoC drivers;
- 4 drivers that are currently using it at regular basis: gspca, s2255, cx18 and ivtv;
- pwc;
- radio drivers;
3) If you agree, I would also do the same for pwc, as it makes sense to me;
4) double-check with the SoC driver developers and with the other maintainers that use the
version control, if using LINUX_VERSION_CODE (and its equivalent media_build replacement)
would fit for them;
5) Do the same change for the radio drivers;
6) If a per-API version control fits to everybody, change v4l2-ioctl to enforce it via
video_ioctl2, updating the V4L2 API accordingly.
Cheers,
Mauro.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [PATCH] [media] Stop using linux/version.h on most drivers
2011-06-25 12:14 ` Mauro Carvalho Chehab
@ 2011-06-27 0:59 ` Laurent Pinchart
0 siblings, 0 replies; 31+ messages in thread
From: Laurent Pinchart @ 2011-06-27 0:59 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Hans Verkuil, LKML, Devin Heitmueller, Jesper Juhl, trivial,
linux-media, ceph-devel, Sage Weil, Mike Isely, Hans De Goede,
Jean-Francois Moine
Hi Mauro,
On Saturday 25 June 2011 14:14:50 Mauro Carvalho Chehab wrote:
> Em 25-06-2011 07:09, Hans Verkuil escreveu:
> > On Friday, June 24, 2011 20:25:26 Mauro Carvalho Chehab wrote:
[snip]
> - uvcvideo: not sure about its current status about its migration to
> video_ioctl2. If Laurent is not doing a migration to video_ioctl2 any time
> soon, a simple patch for it could make it act consistently. In any case, I
> don't think we should create a include/media/version.h just due to
> uvcvideo.
That's not on my todo-list for now, -EBUSY :-)
I bump the uvcvideo driver version whenever the userspace API changes. Using
the kernel version number applications could find out whether the API they
need is implemented, but detecting API changes would become more difficult.
That might not be a real issue though, as applications usually don't care.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/
2011-06-24 12:20 ` Devin Heitmueller
2011-06-24 13:29 ` Mauro Carvalho Chehab
@ 2011-06-29 21:54 ` Mauro Carvalho Chehab
1 sibling, 0 replies; 31+ messages in thread
From: Mauro Carvalho Chehab @ 2011-06-29 21:54 UTC (permalink / raw)
To: Devin Heitmueller; +Cc: Linux Media Mailing List, trivial
Em 24-06-2011 09:20, Devin Heitmueller escreveu:
> Also, it screws up the ability for users to get fixes through the
> media_build tree (unless you are increasing the revision constantly
> with every merge you do).
Patches merged, and media_build modified in order to use the V4L2 stack
version, instead of the kernel one.
So, while I'm using a 2.6.32 kernel:
$ uname -a
Linux pedra 2.6.32-131.0.15.el6.x86_64 #1 SMP Tue May 10 15:42:40 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Driver reports version 3.0.0:
$ v4l2-ctl -D
Driver Info (not using libv4l2):
Driver name : vivi
Card type : vivi
Bus info : vivi-000
Driver version: 3.0.0
Capabilities : 0x05000001
Video Capture
Read/Write
Streaming
It may be a good idea to increment the extraver number to be, for example, 3.0.99 (or to just
decrement 1 number), in order to reflect that this driver is not the vanilla 3.0.0, but,
instead, a backported one, otherwise, it will report the version from the last git backport
we merge at media_tree.git.
If we just subtract 1, we'll have (right now):
$ v4l2-ctl -D
Driver Info (not using libv4l2):
Driver name : vivi
Card type : vivi
Bus info : vivi-000
Driver version: 2.255.255
Capabilities : 0x05000001
Video Capture
Read/Write
Streaming
Which looks somewhat weird, but, after the 3.1 merge window, it will be
3.0.255, with would be nice. So, if we go this way, the better is to wait
until 3.1-rc1 before applying it.
Comments?
PS.: The media_build is not optimized in the sense that a version increment
will make it recompile everything. I'll likely fix it if it bothers me enough ;)
Thanks,
Mauro
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2011-06-29 21:54 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <alpine.LNX.2.00.1106232344480.17688@swampdragon.chaosbits.net>
2011-06-23 21:58 ` [PATCH 03/37] Remove unneeded version.h includes from include/ Jesper Juhl
2011-06-23 22:15 ` Sage Weil
2011-06-24 11:21 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: " Mauro Carvalho Chehab
2011-06-24 11:26 ` Hans Verkuil
2011-06-24 12:20 ` Devin Heitmueller
2011-06-24 13:29 ` Mauro Carvalho Chehab
2011-06-24 13:45 ` Devin Heitmueller
2011-06-24 13:54 ` Hans Verkuil
2011-06-24 14:37 ` Mauro Carvalho Chehab
2011-06-24 18:25 ` [PATCH] [media] Stop using linux/version.h on most drivers Mauro Carvalho Chehab
2011-06-25 10:09 ` Hans Verkuil
2011-06-25 12:14 ` Mauro Carvalho Chehab
2011-06-27 0:59 ` Laurent Pinchart
2011-06-24 18:34 ` [RFC] Don't use linux/version.h anymore to indicate a per-driver version - Was: Re: [PATCH 03/37] Remove unneeded version.h includes from include/ Stefan Richter
2011-06-24 18:48 ` Devin Heitmueller
2011-06-24 21:04 ` Andy Walls
2011-06-24 21:20 ` Stefan Richter
2011-06-24 21:22 ` Devin Heitmueller
2011-06-24 21:49 ` Mauro Carvalho Chehab
2011-06-24 22:39 ` Stefan Richter
2011-06-24 23:02 ` Mauro Carvalho Chehab
2011-06-24 22:16 ` Mauro Carvalho Chehab
2011-06-24 22:57 ` Andy Walls
2011-06-24 21:10 ` Stefan Richter
2011-06-24 21:52 ` Mauro Carvalho Chehab
2011-06-24 21:44 ` Mauro Carvalho Chehab
2011-06-29 21:54 ` Mauro Carvalho Chehab
2011-06-23 22:11 ` [PATCH 10/37] Remove unneeded version.h includes from drivers/media/dvb/ Jesper Juhl
2011-06-23 22:14 ` [PATCH 11/37] Remove unneeded version.h includes (and add where needed) for drivers/media/radio/ Jesper Juhl
2011-06-23 22:17 ` [PATCH 12/37] Remove unneeded version.h includes (and add where needed) for drivers/media/video/ Jesper Juhl
2011-06-24 8:52 ` Laurent Pinchart
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox