~mcf/plan9front

bea20cd152066c1deee6f1acbf68cf1fcc569927 — cinap_lenrek 2 years ago 9cd55a0
nusb/lib: provide a setalt() function to set the interface to its altsetting
2 files changed, 11 insertions(+), 0 deletions(-)

M sys/src/cmd/nusb/lib/dev.c
M sys/src/cmd/nusb/lib/usb.h
M sys/src/cmd/nusb/lib/dev.c => sys/src/cmd/nusb/lib/dev.c +10 -0
@@ 482,6 482,16 @@ unstall(Dev *dev, Dev *ep, int dir)
	return 0;
}

int
setalt(Dev *d, Iface *ifc)
{
	if(usbcmd(d, Rh2d|Rstd|Riface, Rsetiface, ifc->alt, ifc->id, nil, 0) < 0){
		werrstr("setalt: %s: %r", d->dir);
		return -1;
	}
	return 0;
}

/*
 * To be sure it uses a single write.
 */

M sys/src/cmd/nusb/lib/usb.h => sys/src/cmd/nusb/lib/usb.h +1 -0
@@ 353,5 353,6 @@ int	parsedev(Dev *xd, uchar *b, int n);
int	unstall(Dev *dev, Dev *ep, int dir);
int	usbcmd(Dev *d, int type, int req, int value, int index, uchar *data, int count);
Dev*	getdev(char *devid);
int	setalt(Dev *d, Iface *ifc);

extern int usbdebug;	/* more messages for bigger values */