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) {