support for multiple USB cables by Mondrian Nuessle <nuessle@uni-mannheim.de>
This commit is contained in:
parent
4c7a69cb77
commit
d377df04c9
15
usb-driver.c
15
usb-driver.c
@ -466,6 +466,9 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
|
|||||||
{
|
{
|
||||||
struct event *e = (struct event*)(wdheader->data);
|
struct event *e = (struct event*)(wdheader->data);
|
||||||
struct usb_bus *bus;
|
struct usb_bus *bus;
|
||||||
|
char* device_num;
|
||||||
|
char* remainder;
|
||||||
|
int devnum = -1;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
DPRINTF("handle: %lu, action: %lu, status: %lu, eventid: %lu, cardtype: %lu, kplug: %lu, options: %lu, dev: %lx:%lx, unique: %lu, ver: %lu, nummatch: %lu\n",
|
DPRINTF("handle: %lu, action: %lu, status: %lu, eventid: %lu, cardtype: %lu, kplug: %lu, options: %lu, dev: %lx:%lx, unique: %lu, ver: %lu, nummatch: %lu\n",
|
||||||
@ -477,6 +480,15 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
|
|||||||
e->u.Usb.dwUniqueID, e->dwEventVer,
|
e->u.Usb.dwUniqueID, e->dwEventVer,
|
||||||
e->dwNumMatchTables);
|
e->dwNumMatchTables);
|
||||||
|
|
||||||
|
device_num=getenv("XILINX_USB_DEVNUM");
|
||||||
|
if (device_num!=NULL) {
|
||||||
|
DPRINTF("XILINX_USB_BUS=%s\n",device_num);
|
||||||
|
devnum=strtol(device_num,&remainder,10);
|
||||||
|
if (device_num==remainder) /* no integer in env variable */
|
||||||
|
devnum=-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < e->dwNumMatchTables; i++) {
|
for (i = 0; i < e->dwNumMatchTables; i++) {
|
||||||
|
|
||||||
DPRINTF("match: dev: %04x:%04x, class: %x, subclass: %x, intclass: %x, intsubclass: %x, intproto: %x\n",
|
DPRINTF("match: dev: %04x:%04x, class: %x, subclass: %x, intclass: %x, intsubclass: %x, intproto: %x\n",
|
||||||
@ -497,7 +509,8 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
|
|||||||
if((desc->idVendor == e->matchTables[i].VendorId) &&
|
if((desc->idVendor == e->matchTables[i].VendorId) &&
|
||||||
(desc->idProduct == e->matchTables[i].ProductId) &&
|
(desc->idProduct == e->matchTables[i].ProductId) &&
|
||||||
(desc->bDeviceClass == e->matchTables[i].bDeviceClass) &&
|
(desc->bDeviceClass == e->matchTables[i].bDeviceClass) &&
|
||||||
(desc->bDeviceSubClass == e->matchTables[i].bDeviceSubClass)) {
|
(desc->bDeviceSubClass == e->matchTables[i].bDeviceSubClass) &&
|
||||||
|
((devnum == -1) || (dev->devnum == devnum)) ) {
|
||||||
int ac;
|
int ac;
|
||||||
for (ac = 0; ac < desc->bNumConfigurations; ac++) {
|
for (ac = 0; ac < desc->bNumConfigurations; ac++) {
|
||||||
struct usb_interface *interface = dev->config[ac].interface;
|
struct usb_interface *interface = dev->config[ac].interface;
|
||||||
|
Reference in New Issue
Block a user