roothub号-设备(或者hub)插入的端口号
roothub号-设备(或者hub)插入的端口号:USB设备配置号.接口号
roothub号-设备(或者hub)插入的端口号.设备(或者hub)插入的端口号:USB设备配置号.接口号
roothub号-设备(或者hub)插入的端口号[.设备(或者hub)插入的端口号]:USB设备配置号.接口号
例如:
1)usb1
代表bus1
1) 1-1 设备的上级是roothub
bus1-port1设备
2)1-0:1.0
bus1-port0设备:配置1.port0设备
代码:
usb_alloc_dev @drivers/usb/core/usb.c
usb_alloc_dev
{
if (unlikely(!parent)) { /*没有父节点则为root hub*/
dev->devpath[0] = '0';
dev->route = 0;
dev->dev.parent = bus->controller;
dev_set_name(&dev->dev, "usb%d", bus->busnum); root hub: /sys/bus/usb/devices/usb%d
root_hub = 1;
} else {
/* match any labeling on the hubs; it's one-based */
if (parent->devpath[0] == '0') { /*父节点是root hub*/
snprintf(dev->devpath, sizeof dev->devpath, "%d", port1);
/* Root ports are not counted in route string */
dev->route = 0;
} else {/*父节点不是root hub*/
snprintf(dev->devpath, sizeof dev->devpath, "%s.%d", parent->devpath, port1);
/* Route string assumes hubs have less than 16 ports */
if (port1 < 15)
dev->route = parent->route + (port1 << ((parent->level - 1)*4));
else
dev->route = parent->route + (15 << ((parent->level - 1)*4));
}
dev->dev.parent = &parent->dev;
dev_set_name(&dev->dev, "%d-%s", bus->busnum, dev->devpath);
/* hub driver sets up TT records */
}
}
usb_set_configuration @drivers/usb/core/message.c
usb_set_configuration {
dev_set_name(&intf->dev, "%d-%s:%d.%d", dev->bus->busnum, dev->devpath, configuration, alt-desc.bInterfaceNumber);
}