Module Name:    src
Committed By:   jmcneill
Date:           Fri Dec 24 20:54:29 UTC 2010

Modified Files:
        src/sys/dev: video.c video_if.h
        src/sys/dev/usb: pseye.c uvideo.c

Log Message:
VIDIOC_QUERYCAP changes:
 - use driver name instead of device instance name in 'driver' field
 - add 'get_businfo' callback to fill in 'bus_info' field instead of
   hard-coding "USB"
 - use the kernel version for the 'version' field instead of 1
 - adapt pseye and uvideo drivers to changes in struct video_hw_if


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/dev/video.c
cvs rdiff -u -r1.6 -r1.7 src/sys/dev/video_if.h
cvs rdiff -u -r1.18 -r1.19 src/sys/dev/usb/pseye.c
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/usb/uvideo.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/video.c
diff -u src/sys/dev/video.c:1.24 src/sys/dev/video.c:1.25
--- src/sys/dev/video.c:1.24	Tue Dec 14 03:25:16 2010
+++ src/sys/dev/video.c	Fri Dec 24 20:54:28 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: video.c,v 1.24 2010/12/14 03:25:16 jmcneill Exp $ */
+/* $NetBSD: video.c,v 1.25 2010/12/24 20:54:28 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2008 Patrick Mahoney <p...@polycrystal.org>
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: video.c,v 1.24 2010/12/14 03:25:16 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: video.c,v 1.25 2010/12/24 20:54:28 jmcneill Exp $");
 
 #include "video.h"
 #if NVIDEO > 0
@@ -71,7 +71,10 @@
 
 #define PAGE_ALIGN(a)		(((a) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
 
-#define VIDEO_DRIVER_VERSION 1
+#define VIDEO_DRIVER_VERSION				\
+	(((__NetBSD_Version__ / 100000000) << 16) |	\
+	 ((__NetBSD_Version__ / 1000000 % 100) << 8) |	\
+	 (__NetBSD_Version__ / 100 % 100))
 
 /* TODO: move to sys/intr.h */
 #define IPL_VIDEO	IPL_VM
@@ -1844,12 +1847,13 @@
 	case VIDIOC_QUERYCAP:
 		cap = data;
 		memset(cap, 0, sizeof(*cap));
-		strlcpy(cap->driver, device_xname(sc->hw_dev),
+		strlcpy(cap->driver,
+			device_cfdriver(sc->hw_dev)->cd_name,
 			sizeof(cap->driver));
 		strlcpy(cap->card, hw->get_devname(sc->hw_softc),
 			sizeof(cap->card));
-		/* FIXME: bus_info is wrongly hardcoded to USB */
-		strlcpy(cap->bus_info, "USB", sizeof(cap->bus_info));
+		strlcpy(cap->bus_info, hw->get_businfo(sc->hw_softc),
+			sizeof(cap->bus_info));
 		cap->version = VIDEO_DRIVER_VERSION;
 		cap->capabilities = 0;
 		if (hw->start_transfer != NULL && hw->stop_transfer != NULL)

Index: src/sys/dev/video_if.h
diff -u src/sys/dev/video_if.h:1.6 src/sys/dev/video_if.h:1.7
--- src/sys/dev/video_if.h:1.6	Tue Dec 14 03:25:16 2010
+++ src/sys/dev/video_if.h	Fri Dec 24 20:54:28 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: video_if.h,v 1.6 2010/12/14 03:25:16 jmcneill Exp $ */
+/* $NetBSD: video_if.h,v 1.7 2010/12/24 20:54:28 jmcneill Exp $ */
 
 /*
  * Copyright (c) 2008 Patrick Mahoney <p...@polycrystal.org>
@@ -454,6 +454,7 @@
 	void	(*close)(void *);     /* close hardware */
 
 	const char *	(*get_devname)(void *);
+	const char *	(*get_businfo)(void *);
 
 	int	(*enum_format)(void *, uint32_t, struct video_format *);
 	int	(*get_format)(void *, struct video_format *);

Index: src/sys/dev/usb/pseye.c
diff -u src/sys/dev/usb/pseye.c:1.18 src/sys/dev/usb/pseye.c:1.19
--- src/sys/dev/usb/pseye.c:1.18	Sat Nov 13 13:52:12 2010
+++ src/sys/dev/usb/pseye.c	Fri Dec 24 20:54:28 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: pseye.c,v 1.18 2010/11/13 13:52:12 uebayasi Exp $ */
+/* $NetBSD: pseye.c,v 1.19 2010/12/24 20:54:28 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2008 Jared D. McNeill <jmcne...@invisible.ca>
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pseye.c,v 1.18 2010/11/13 13:52:12 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pseye.c,v 1.19 2010/12/24 20:54:28 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -54,6 +54,7 @@
 
 #include <dev/usb/usb.h>
 #include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
 #include <dev/usb/usbdi_util.h>
 #include <dev/usb/usbdevs.h>
 #include <dev/usb/uvideoreg.h>
@@ -97,6 +98,8 @@
 	int			sc_bulkin_bufferlen;
 
 	char			sc_dying;
+
+	char			sc_businfo[32];
 };
 
 static int	pseye_match(device_t, cfdata_t, void *);
@@ -126,6 +129,7 @@
 static int		pseye_open(void *, int);
 static void		pseye_close(void *);
 static const char *	pseye_get_devname(void *);
+static const char *	pseye_get_businfo(void *);
 static int		pseye_enum_format(void *, uint32_t,
 					  struct video_format *);
 static int		pseye_get_format(void *, struct video_format *);
@@ -142,6 +146,7 @@
 	.open = pseye_open,
 	.close = pseye_close,
 	.get_devname = pseye_get_devname,
+	.get_businfo = pseye_get_businfo,
 	.enum_format = pseye_enum_format,
 	.get_format = pseye_get_format,
 	.set_format = pseye_set_format,
@@ -196,6 +201,8 @@
 	sc->sc_dev = self;
 	sc->sc_udev = dev;
 	sc->sc_iface = uaa->iface;
+	snprintf(sc->sc_businfo, sizeof(sc->sc_businfo), "usb:%08x",
+	    sc->sc_udev->cookie.cookie);
 	sc->sc_bulkin_bufferlen = PSEYE_BULKIN_BUFLEN;
 
 	sc->sc_dying = sc->sc_running = 0;
@@ -741,6 +748,14 @@
 	return "PlayStation Eye";
 }
 
+static const char *
+pseye_get_businfo(void *opaque)
+{
+	struct pseye_softc *sc = opaque;
+
+	return sc->sc_businfo;
+}
+
 static int
 pseye_enum_format(void *opaque, uint32_t index, struct video_format *format)
 {

Index: src/sys/dev/usb/uvideo.c
diff -u src/sys/dev/usb/uvideo.c:1.32 src/sys/dev/usb/uvideo.c:1.33
--- src/sys/dev/usb/uvideo.c:1.32	Wed Nov  3 22:34:24 2010
+++ src/sys/dev/usb/uvideo.c	Fri Dec 24 20:54:28 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvideo.c,v 1.32 2010/11/03 22:34:24 dyoung Exp $	*/
+/*	$NetBSD: uvideo.c,v 1.33 2010/12/24 20:54:28 jmcneill Exp $	*/
 
 /*
  * Copyright (c) 2008 Patrick Mahoney
@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvideo.c,v 1.32 2010/11/03 22:34:24 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvideo.c,v 1.33 2010/12/24 20:54:28 jmcneill Exp $");
 
 #ifdef _MODULE
 #include <sys/module.h>
@@ -64,12 +64,14 @@
 #include <sys/poll.h>
 #include <sys/queue.h>	/* SLIST */
 #include <sys/kthread.h>
+#include <sys/bus.h>
 
 #include <sys/videoio.h>
 #include <dev/video_if.h>
 
 #include <dev/usb/usb.h>
 #include <dev/usb/usbdi.h>
+#include <dev/usb/usbdivar.h>
 #include <dev/usb/usbdi_util.h>
 #include <dev/usb/usb_quirks.h>
 
@@ -255,6 +257,8 @@
 	struct uvideo_stream	*sc_stream_in;
 
 	struct uvideo_stream_list sc_stream_list;
+
+	char			sc_businfo[32];
 };
 
 int	uvideo_match(device_t, cfdata_t, void *);
@@ -266,6 +270,7 @@
 static int	uvideo_open(void *, int);
 static void	uvideo_close(void *);
 static const char * uvideo_get_devname(void *);
+static const char * uvideo_get_businfo(void *);
 
 static int	uvideo_enum_format(void *, uint32_t, struct video_format *);
 static int	uvideo_get_format(void *, struct video_format *);
@@ -377,6 +382,7 @@
 	.open = uvideo_open,
 	.close = uvideo_close,
 	.get_devname = uvideo_get_devname,
+	.get_businfo = uvideo_get_businfo,
 	.enum_format = uvideo_enum_format,
 	.get_format = uvideo_get_format,
 	.set_format = uvideo_set_format,
@@ -501,6 +507,8 @@
 	sc->sc_dying = 0;
 	sc->sc_state = UVIDEO_STATE_CLOSED;
 	SLIST_INIT(&sc->sc_stream_list);
+	snprintf(sc->sc_businfo, sizeof(sc->sc_businfo), "usb:%08x",
+	    sc->sc_udev->cookie.cookie);
 
 #ifdef UVIDEO_DEBUG
 	/* Debugging dump of descriptors. TODO: move this to userspace
@@ -1913,6 +1921,13 @@
 	return sc->sc_devname;
 }
 
+static const char *
+uvideo_get_businfo(void *addr)
+{
+	struct uvideo_softc *sc = addr;
+	return sc->sc_businfo;
+}
+
 static int
 uvideo_enum_format(void *addr, uint32_t index, struct video_format *format)
 {

Reply via email to