git: 5ec1777c7597 - main - multimedia/pwcbsd: Remove devclass from DRIVER_MODULE on recent main.

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Mon, 22 Aug 2022 18:15:25 UTC
The branch main has been updated by jhb (doc, src committer):

URL: https://cgit.FreeBSD.org/ports/commit/?id=5ec1777c7597496c62f0b09b8b0670380c894f10

commit 5ec1777c7597496c62f0b09b8b0670380c894f10
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-08-22 18:13:26 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-08-22 18:13:26 +0000

    multimedia/pwcbsd: Remove devclass from DRIVER_MODULE on recent main.
    
    While here fix a couple of unused but set warnings by removing an
    unused variable and commenting out another variable only used in
    commented-out code.
    
    Differential Revision:  https://reviews.freebsd.org/D35948
---
 multimedia/pwcbsd/files/extra-patch-pwc.c | 104 ++++++++++++++++--------------
 multimedia/pwcbsd/files/patch-pwc-dec23.c |  46 ++++++++++++-
 2 files changed, 100 insertions(+), 50 deletions(-)

diff --git a/multimedia/pwcbsd/files/extra-patch-pwc.c b/multimedia/pwcbsd/files/extra-patch-pwc.c
index 528a40db0068..ab3761be333e 100644
--- a/multimedia/pwcbsd/files/extra-patch-pwc.c
+++ b/multimedia/pwcbsd/files/extra-patch-pwc.c
@@ -1,5 +1,5 @@
---- ./pwc.c.orig	2007-10-09 09:14:01.000000000 +0200
-+++ ./pwc.c	2010-10-01 23:03:54.190935331 +0200
+--- ./pwc.c.orig	2007-10-09 00:14:01.000000000 -0700
++++ ./pwc.c	2022-07-26 09:44:50.872775000 -0700
 @@ -28,7 +28,8 @@
  #include "pwc-dec1.h"
  #include "pwc-dec23.h"
@@ -10,7 +10,7 @@
  static void pwc_reset_buffers(struct pwc_softc *sc);
  static void pwc_free_buffers(struct pwc_softc *sc, int detach);
  
-@@ -57,55 +58,70 @@
+@@ -57,55 +58,68 @@
  	.d_mmap		= pwc_mmap,
  	.d_name		= "pwc",
  };
@@ -113,15 +113,15 @@
  static device_attach_t pwc_attach;
  static device_detach_t pwc_detach;
  
- static devclass_t pwc_devclass;
- 
+-static devclass_t pwc_devclass;
+-
  static device_method_t pwc_methods[] = {
 -	DEVMETHOD(device_probe, pwc_match),
 +	DEVMETHOD(device_probe, pwc_probe),
  	DEVMETHOD(device_attach, pwc_attach),
  	DEVMETHOD(device_detach, pwc_detach),
  	{0,0},
-@@ -120,41 +136,25 @@
+@@ -120,41 +134,25 @@
  MODULE_DEPEND(pwc, usb, 1, 1, 1);
  
  static int
@@ -137,9 +137,6 @@
 -	if(pwc_lookup(uaa->vendor, uaa->product) == NULL)
 -		return UMATCH_NONE;
 +	Trace(TRACE_PROBE,"pwc_probe:\n");
-+
-+	if (uaa->usb_mode != USB_MODE_HOST)
-+		return (ENXIO);
  
 -	/* Driver loaded when device was already plugged in, we have to claim all interfaces or get none... */
 -	if(uaa->usegeneric)
@@ -157,6 +154,9 @@
 -	
 -        Trace(TRACE_PROBE,"pwc_match: iface=%d\n",id->bInterfaceNumber);
 -	
++	if (uaa->usb_mode != USB_MODE_HOST)
++		return (ENXIO);
++
  	/* Interface 0 is the video interface
  	 * Interface 1 is supposed to be audiocontrol
  	 * Interface 2 is supposed to be audio
@@ -175,7 +175,7 @@
  }
  
  static int
-@@ -162,43 +162,26 @@
+@@ -162,43 +160,26 @@
  {
  	struct pwc_softc *sc = device_get_softc(self);
  	struct usb_attach_arg *uaa = device_get_ivars(self);
@@ -199,13 +199,13 @@
  	sc->sc_dev = self;
 -	device_set_desc_copy(self, devinfo);
 -	device_printf(self, "%s\n", devinfo);
--
+ 
 -	err = usbd_device2interface_handle(uaa->device,0,&sc->sc_iface);
 -	if(err) {
 -		printf("%s: failed to get interface handle\n",device_get_nameunit(sc->sc_dev));
 -		return ENXIO;
 -	}
- 
+-
  	sc->udev = uaa->device;
 -	sc->type = info->type;
 -	sc->name = info->name;
@@ -228,7 +228,7 @@
  		
  			/* Logitech QuickCam Orbit */
  			sc->features |= FEATURE_MOTOR_PANTILT;
-@@ -215,6 +198,8 @@
+@@ -215,6 +196,8 @@
  	resource_string_value("pwc",device_get_unit(self),"devname",&tmpstr);
  	sc->sc_dev_t = make_dev(&pwc_cdevsw, device_get_unit(self),UID_ROOT, GID_OPERATOR,
  				0666, "%s%d",tmpstr,device_get_unit(self));
@@ -237,7 +237,7 @@
  	
  	resource_int_value("pwc",device_get_unit(self),"power_save",&sc->power_save);
  
-@@ -273,7 +258,6 @@
+@@ -273,7 +256,6 @@
  	resource_int_value("pwc",device_get_unit(self),"pad",&sc->pwc_pad);
  
  	pwc_construct(sc);
@@ -245,7 +245,7 @@
  
  	if(pwc_get_cmos_sensor(sc, &i) >= 0) {
  	
-@@ -299,7 +283,6 @@
+@@ -299,7 +281,6 @@
  	if(sc->power_save)
  		pwc_camera_power(sc, 0);
  
@@ -253,7 +253,7 @@
  	return 0;
  }
  
-@@ -309,12 +292,8 @@
+@@ -309,13 +290,9 @@
  	struct pwc_softc *sc = device_get_softc(self);
  
  	Trace(TRACE_PROBE,"pwc_detach: sc=%p\n",sc);
@@ -263,12 +263,13 @@
 -		usbd_close_pipe(sc->sc_videopipe);
 -		sc->sc_videopipe = NULL;
 -	}
-+
-+	usbd_transfer_unsetup(sc->sc_xfer, MAX_ISO_BUFS);
  
++	usbd_transfer_unsetup(sc->sc_xfer, MAX_ISO_BUFS);
++
  	sc->error_status = EPIPE;
  
-@@ -334,21 +313,17 @@
+ 	if(sc->vopen) {
+@@ -334,21 +311,17 @@
  	
  	mtx_destroy(&sc->ptrlock);
  	pwc_free_buffers(sc,1);
@@ -294,7 +295,7 @@
  	Trace(TRACE_OPEN,"pwc_open: flag=%d, mode=%d, unit=%d\n",flag, mode, unit);
  
  	if(sc->error_status == EPIPE)
-@@ -419,23 +394,6 @@
+@@ -419,23 +392,6 @@
  	for (i = 0; i < sc->pwc_mbufs; i++)
  		sc->image_used[i] = 0;
  
@@ -318,7 +319,7 @@
  	sc->state = 0;
  	sc->vframe_count = 0;
  	sc->vframes_dumped = 0;
-@@ -476,10 +434,10 @@
+@@ -476,10 +432,10 @@
  int
  pwc_close(struct cdev *dev, int flag, int mode, struct thread *p)
  {
@@ -333,7 +334,7 @@
  	Trace(TRACE_OPEN,"pwc_close: flag=%d, mode=%d, unit=%d\n", flag, mode, unit);
  
  	/* Dump statistics, but only if a reasonable amount of frames were
-@@ -495,19 +453,14 @@
+@@ -495,19 +451,14 @@
  		pwc_dec1_exit();
  	else
  		pwc_dec23_exit();	/* Timon & Kiara */
@@ -356,7 +357,7 @@
  		pwc_set_leds(sc,0,0);
  		
  		if(sc->power_save) {
-@@ -523,15 +476,16 @@
+@@ -523,15 +474,16 @@
  int
  pwc_read(struct cdev *dev, struct uio *uio, int flag)
  {
@@ -376,7 +377,7 @@
  	if (sc->error_status)
  		return sc->error_status;
  
-@@ -565,7 +519,7 @@
+@@ -565,7 +517,7 @@
  	if(count + sc->image_read_pos > bytes_to_read)
  		count = bytes_to_read - sc->image_read_pos;
  	
@@ -385,7 +386,7 @@
  
  	err = uiomove(sc->images[sc->fill_image].bufmem + sc->image_read_pos,count,uio);
  	if(err)
-@@ -583,10 +537,9 @@
+@@ -583,10 +535,9 @@
  int
  pwc_ioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *p)
  {
@@ -398,7 +399,7 @@
  	if (sc->error_status)
  		return sc->error_status;
  	
-@@ -596,11 +549,9 @@
+@@ -596,11 +547,9 @@
  int
  pwc_poll(struct cdev *dev, int events, struct thread *p)
  {
@@ -411,7 +412,7 @@
  	if(sc->error_status)
  		return sc->error_status;
  
-@@ -625,16 +576,17 @@
+@@ -625,16 +574,17 @@
  }
  
  int
@@ -435,7 +436,7 @@
  	if (sc->error_status)
  		return sc->error_status;
  
-@@ -652,16 +604,10 @@
+@@ -652,16 +602,10 @@
  int
  pwc_try_video_mode(struct pwc_softc *sc, int width, int height, int new_fps, int new_compression, int new_snapshot)
  {
@@ -443,8 +444,6 @@
 -	u_int8_t nendpt;
 -	int i, j, err, ret;
 +	int i, err, ret;
-+
-+	usbd_transfer_unsetup(sc->sc_xfer, MAX_ISO_BUFS);
  
 -	if(sc->sc_videopipe != NULL) {
 -		usbd_abort_pipe(sc->sc_videopipe);
@@ -452,10 +451,12 @@
 -		sc->sc_videopipe = NULL;
 -	}
 -	
++	usbd_transfer_unsetup(sc->sc_xfer, MAX_ISO_BUFS);
++
  	pwc_reset_buffers(sc);
  	
  	/* Try to set video mode... if that fails fallback to previous mode  */
-@@ -678,52 +624,21 @@
+@@ -678,52 +622,21 @@
  	sc->drop_frames++; /* try to avoid garbage during switch */
  	sc->vsync = 0;
  
@@ -470,8 +471,12 @@
 -	err = usbd_endpoint_count(sc->sc_iface, &nendpt);
 -        if(err != USBD_NORMAL_COMPLETION) {
 -		printf("%s: Failed to get endpoint count (%d)\n",device_get_nameunit(sc->sc_dev),err);
--		return -err;
--	}
++	/* Allocate iso transfers */
++	if (usbd_transfer_setup(sc->udev, &sc->sc_iface_index, sc->sc_xfer,
++	    pwc_config, MAX_ISO_BUFS, sc, &Giant)) {
++		printf("%s: Failed to setup USB transfers\n", device_get_nameunit(sc->sc_dev));
+ 		return -err;
+ 	}
 -	for (i = 0; i < nendpt; i++) {
 -		edesc = usbd_interface2endpoint_descriptor(sc->sc_iface, i);
 -		if(edesc != NULL && UE_GET_ADDR(edesc->bEndpointAddress) == sc->vendpoint)
@@ -492,12 +497,8 @@
 -	err = usbd_open_pipe(sc->sc_iface,edesc->bEndpointAddress, 0, &sc->sc_videopipe);
 -	if(err != USBD_NORMAL_COMPLETION) {
 -		printf("%s: Failed to open videopipe (%d)\n",device_get_nameunit(sc->sc_dev),err);
-+	/* Allocate iso transfers */
-+	if (usbd_transfer_setup(sc->udev, &sc->sc_iface_index, sc->sc_xfer,
-+	    pwc_config, MAX_ISO_BUFS, sc, &Giant)) {
-+		printf("%s: Failed to setup USB transfers\n", device_get_nameunit(sc->sc_dev));
- 		return -err;
- 	}
+-		return -err;
+-	}
  
  	for (i = 0; i < MAX_ISO_BUFS; i++) {
 -		
@@ -515,7 +516,7 @@
  	}
  	
  	if(sc->state & PWC_INIT)
-@@ -767,37 +682,41 @@
+@@ -767,38 +680,42 @@
  }
  
  static void
@@ -568,7 +569,7 @@
 +		break;
  	}
 +}
-+
+ 
 +static void
 +pwc_isoc_handler(struct usb_xfer *xfer, void *addr)
 +{
@@ -579,10 +580,11 @@
 +	int i;
 +
 +	Trace(TRACE_ISOC_VERBOSE, "pwc_isoc_handler: count=%u\n", xfer->actlen);
- 
++
  	/* Reset ISOC error counter. We did get here, after all. */
  	sc->visoc_errors = 0;
-@@ -816,8 +735,8 @@
+ 
+@@ -816,8 +733,8 @@
  		/* XXX there is no individual framestatus in FreeBSD usbstack
  		 * so just assume all frames are good
  		 */
@@ -593,7 +595,7 @@
  
  		if (flen > 0) { /* if valid data... */
  			if(sc->vsync > NOCOPY) { /* ...and we are not sync-hunting... */
-@@ -830,7 +749,7 @@
+@@ -830,7 +747,7 @@
  					sc->vframes_error++;
  				}
  				else {
@@ -602,7 +604,7 @@
  					fillptr += flen;
  				}
  			}
-@@ -943,7 +862,6 @@
+@@ -943,7 +860,6 @@
  		sc->vlast_packet_size = flen;
  
  	}
@@ -610,7 +612,7 @@
  	if(awake) {
  		if(sc->state & PWC_ASLEEP) {
  			wakeup(sc);
-@@ -953,16 +871,6 @@
+@@ -953,16 +869,6 @@
  			selwakeuppri(&sc->rsel, PZERO);
  		}
  	}
@@ -627,7 +629,7 @@
  }
  
  int
-@@ -1050,6 +958,9 @@
+@@ -1050,6 +956,9 @@
  {
  	int i;
  	Trace(TRACE_MEMORY, "Entering free_buffers(%p).\n", sc);
@@ -637,7 +639,7 @@
  	if (sc->fbuf != NULL) {
  		for (i = 0; i < sc->pwc_fbufs; i++) {
  			if (sc->fbuf[i].data != NULL) {
-@@ -1074,13 +985,6 @@
+@@ -1074,13 +983,12 @@
  		free(sc->image_data,M_USBDEV);
  		sc->image_data = NULL;
  	}
@@ -651,4 +653,10 @@
  }
  
 -DRIVER_MODULE(pwc, uhub, pwc_driver, pwc_devclass, usbd_driver_load, 0);
++#if __FreeBSD_version >= 1400058
++DRIVER_MODULE(pwc, uhub, pwc_driver, NULL, NULL);
++#else
++static devclass_t pwc_devclass;
++
 +DRIVER_MODULE(pwc, uhub, pwc_driver, pwc_devclass, NULL, 0);
++#endif
diff --git a/multimedia/pwcbsd/files/patch-pwc-dec23.c b/multimedia/pwcbsd/files/patch-pwc-dec23.c
index c173dafaa5a6..08796d35696f 100644
--- a/multimedia/pwcbsd/files/patch-pwc-dec23.c
+++ b/multimedia/pwcbsd/files/patch-pwc-dec23.c
@@ -1,5 +1,5 @@
---- pwc-dec23.c.orig	2006-06-04 05:39:14.000000000 +0400
-+++ pwc-dec23.c	2015-02-16 22:09:58.000000000 +0300
+--- pwc-dec23.c.orig	2006-06-03 18:39:14.000000000 -0700
++++ pwc-dec23.c	2022-07-26 09:51:27.868178000 -0700
 @@ -261,7 +261,7 @@
  {
  	int flags;
@@ -27,3 +27,45 @@
  				 pdev->table_0004, pdev->table_8004);
  		break;
  
+@@ -347,7 +347,6 @@
+ 	unsigned int reservoir, nbits_in_reservoir;
+ 	int first_4_bits;
+ 	unsigned int bytes_per_channel;
+-	int line_size;		/* size of the line (4Y+U+V) */
+ 	int passes;
+ 	const unsigned char *ptable0004, *ptable8004;
+ 
+@@ -368,8 +367,6 @@
+ 
+ 	get_nbits(reservoir, nbits_in_reservoir, stream, 4, first_4_bits);
+ 
+-	line_size = pixels_per_line * 3;
+-
+ 	for (passes = 0; passes < 2; passes++) {
+ 		if (passes == 0) {
+ 			bytes_per_channel = pixels_per_line;
+@@ -605,12 +602,13 @@
+ 			  int flags, const void *data, int bandlength)
+ {
+ 	const struct pwc_dec23_private *pdev = data;
+-	unsigned char *pout, *pout_planar_y = NULL, *pout_planar_u =
++	//unsigned char *pout;
++	unsigned char *pout_planar_y = NULL, *pout_planar_u =
+ 	    NULL, *pout_planar_v = NULL;
+ 	int i, n, stride, pixel_size;
+ 
+ 	if (flags & PWCX_FLAG_BAYER) {
+-		pout = dst + (view->x * offset->y) + offset->x;
++		//pout = dst + (view->x * offset->y) + offset->x;
+ 		pixel_size = view->x * 4;
+ 	} else {
+ 		n = view->x * view->y;
+@@ -632,7 +630,7 @@
+ 			//TODO:
+ 			//DecompressBandBayer(pdev,src,pout,image.x,view->x,flags);
+ 			src += bandlength;
+-			pout += pixel_size;
++			//pout += pixel_size;
+ 		} else {
+ 			DecompressBand23(pdev, src, pout_planar_y,
+ 					 pout_planar_u, pout_planar_v, image->x,