sysfs之usb设备命名

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);

}

猜你喜欢

转载自blog.csdn.net/velanjun/article/details/82469366
今日推荐