shithub: riscv

Download patch

ref: 5bce05b759c695fdd5bc71fe04c00407406e644b
parent: 95ea8f77397d2e768cef319bea78fc15ad8496d1
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Jan 5 00:58:33 EST 2023

devusb: provide usb hub device number instead of address in /dev/usb/ctl

The hub address is only usefull for the host controller
driver, while userspace really cares about the device number.

--- a/sys/src/9/port/devusb.c
+++ b/sys/src/9/port/devusb.c
@@ -298,7 +298,7 @@
 	s = seprint(s, se, " samplesz %ld", ep->samplesz);
 	s = seprint(s, se, " hz %ld", ep->hz);
 	s = seprint(s, se, " uframes %d", ep->uframes);
-	s = seprint(s, se, " hub %d", ep->dev->hub);
+	s = seprint(s, se, " hub %d", ep->dev->hubnb);
 	s = seprint(s, se, " port %d", ep->dev->port);
 	s = seprint(s, se, " rootport %d", ep->dev->rootport);
 	s = seprint(s, se, " addr %d", ep->dev->addr);
@@ -1277,6 +1277,7 @@
 			nep->maxpkt = 512;
 		else if(l != Lowspeed)
 			nep->maxpkt = 64;	/* assume full speed */
+		nep->dev->hubnb = d->nb;
 		nep->dev->hub = d->addr;
 		nep->dev->port = atoi(cb->f[2]);
 		nep->dev->depth = d->depth+1;
--- a/sys/src/9/port/portmkfile
+++ b/sys/src/9/port/portmkfile
@@ -109,7 +109,7 @@
 devaoe.$O sdaoe.$O:	/sys/include/fis.h
 sysproc.$O:	/sys/include/a.out.h
 syscallfmt.$O:	/sys/src/libc/9syscall/sys.h
-devusb.$O usbxhci.$O:	../port/usb.h
+devusb.$O usbxhci.$O usbxhcipci.$O:	../port/usb.h
 usbxhci.$O usbxhcipci.$O:	../port/usbxhci.h
 devether.$O ethersink.$O:	../port/etherif.h ../port/netif.h
 wifi.$O:	../port/etherif.h ../port/netif.h ../port/wifi.h /sys/include/libsec.h
--- a/sys/src/9/port/usb.h
+++ b/sys/src/9/port/usb.h
@@ -187,6 +187,7 @@
 	int	ishub;		/* hubs can allocate devices */
 	int	isroot;		/* is a root hub */
 	int	speed;		/* Full/Low/High/Super/No -speed */
+	int	hubnb;		/* USB device number for the parent hub */
 	int	hub;		/* device address for the parent hub */
 	int	port;		/* port number in the parent hub */
 	int	addr;		/* device address */