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 <[email protected]>
@@ -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 <[email protected]>
@@ -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 <[email protected]>
@@ -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)
{