NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: install/60883: Device debug messages make install impossible



The following reply was made to PR kern/60883; it has been noted by GNATS.

From: Nat Sloss <nathanialsloss%yahoo.com.au@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: 
Subject: Re: install/60883: Device debug messages make install impossible
Date: Fri, 30 Oct 2026 14:10:26 +1100

 --Boundary-00=_iqA5q7ftCGYAqjn
 Content-Type: text/plain;
   charset="iso-8859-15"
 Content-Transfer-Encoding: 7bit
 
 
 Forwarded to gnats-bugs as it was not appended to the PR.
 
 Hi,
 
 Heres a compete patch (I just realized that the quirk was only used with 
 ums(4)):
 
 
 Don't forget to run make -f Makefile.usbdevs in the sys/dev/usb directory first.
 
 
 Best regards,
 
 Nat
 
 PS: Disabling uts at boot probably wont work and instead flood the console with 
 ....not configured messages.
 
 
 --Boundary-00=_iqA5q7ftCGYAqjn
 Content-Type: text/x-patch;
   charset="iso-8859-1";
   name="elan.uts.alwayson.diff"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment;
 	filename="elan.uts.alwayson.diff"
 
 diff -r 92a8485b9ed3 sys/dev/usb/usb_quirks.c
 --- a/sys/dev/usb/usb_quirks.c	Sun Oct 04 18:35:03 2026 +0000
 +++ b/sys/dev/usb/usb_quirks.c	Fri Oct 16 14:27:50 2026 +1100
 @@ -397,6 +397,8 @@ Static const struct usbd_quirk_entry {
   */
   { USB_VENDOR_CHICONY,		USB_PRODUCT_CHICONY_OPTMOUSE0939,	ANY,
  	{ UQ_ALWAYS_ON, NULL }},
 + { USB_VENDOR_ELAN,		USB_PRODUCT_ELAN_TPANEL,		ANY,
 +	{ UQ_ALWAYS_ON, NULL }},
   { USB_VENDOR_PIXART,		USB_PRODUCT_PIXART_RPIMOUSE,		ANY,
  	{ UQ_ALWAYS_ON, NULL }},
   { USB_VENDOR_LOGITECH, 	USB_PRODUCT_LOGITECH_B100_1,		ANY,
 diff -r 92a8485b9ed3 sys/dev/usb/usbdevs
 --- a/sys/dev/usb/usbdevs	Sun Oct 04 18:35:03 2026 +0000
 +++ b/sys/dev/usb/usbdevs	Fri Oct 16 14:27:50 2026 +1100
 @@ -1558,6 +1558,7 @@ product EIZO MONITOR		0x0001	monitor
  
  /* ELAN Products */
  product ELAN ACTIVEJET		0x0103	ActiveJet K-2024 Multimedia Keyboard
 +product ELAN TPANEL		0x0125	Elan Touchscreen controller
  
  /* ELCON Systemtechnik products */
  product ELCON PLAN		0x0002	Goldpfeil P-LAN
 diff -r 92a8485b9ed3 sys/dev/usb/uts.c
 --- a/sys/dev/usb/uts.c	Sun Oct 04 18:35:03 2026 +0000
 +++ b/sys/dev/usb/uts.c	Fri Oct 16 14:27:50 2026 +1100
 @@ -74,10 +74,13 @@ int	utsdebug = 0;
  struct uts_softc {
  	device_t sc_dev;
  	struct uhidev *sc_hdev;
 +	struct usbd_device *sc_udev;
  
  	struct hid_location sc_loc_x, sc_loc_y, sc_loc_z;
  	struct hid_location sc_loc_btn;
  
 +	bool	sc_alwayson;
 +
  	int sc_enabled;
  
  	int flags;		/* device configuration */
 @@ -139,16 +142,22 @@ uts_attach(device_t parent, device_t sel
  	struct uts_softc *sc = device_private(self);
  	struct uhidev_attach_arg *uha = aux;
  	struct wsmousedev_attach_args a;
 -	int size;
 +	int error, size;
  	void *desc;
  	uint32_t flags;
  	struct hid_data * d;
  	struct hid_item item;
 +	uint32_t quirks;
  
  	aprint_normal("\n");
  
  	sc->sc_dev = self;
  	sc->sc_hdev = uha->parent;
 +	sc->sc_udev = uha->uiaa->uiaa_device;
 +
 +	quirks = usbd_get_quirks(sc->sc_udev)->uq_flags;
 +	if (quirks & UQ_ALWAYS_ON)
 +		sc->sc_alwayson = true;
  
  	uhidev_get_report_desc(uha->parent, &desc, &size);
  
 @@ -263,6 +272,14 @@ uts_attach(device_t parent, device_t sel
  	tpcalib_ioctl(&sc->sc_tpcalib, WSMOUSEIO_SCALIBCOORDS,
  	    (void *)&sc->sc_calibcoords, 0, 0);
  
 +	if (sc->sc_alwayson) {
 +		error = uhidev_open(sc->sc_hdev, &uts_intr, sc);
 +		if (error != 0) {
 +			aprint_error_dev(self,
 +			    "WARNING: couldn't open always-on device\n");
 +			sc->sc_alwayson = false;
 +		}
 +	}
  	return;
  }
  
 @@ -272,9 +289,11 @@ uts_detach(device_t self, int flags)
  	struct uts_softc *sc = device_private(self);
  	int error;
  
 -	__USE(sc);
  	DPRINTF(("uts_detach: sc=%p flags=%d\n", sc, flags));
  
 +	if (sc->sc_alwayson)
 +		uhidev_close(sc->sc_hdev);
 +
  	error = config_detach_children(self, flags);
  	if (error)
  		return error;
 @@ -320,7 +339,12 @@ uts_enable(void *v)
  	if (sc->sc_enabled)
  		return EBUSY;
  
 -	error = uhidev_open(sc->sc_hdev, &uts_intr, sc);
 +	error = 0;
 +	if (!sc->sc_alwayson) {
 +		error = uhidev_open(sc->sc_hdev, &uts_intr, sc);
 +		if (error)
 +			sc->sc_enabled = 0;
 +	}
  
  	if (error != 0)
  		return error;
 @@ -342,7 +366,8 @@ uts_disable(void *v)
  		return;
  
  	sc->sc_enabled = 0;
 -	uhidev_close(sc->sc_hdev);
 +	if (!sc->sc_alwayson)
 +		uhidev_close(sc->sc_hdev);
  }
  
  Static int
 
 --Boundary-00=_iqA5q7ftCGYAqjn--
 



Home | Main Index | Thread Index | Old Index