- strfieldcatmax(string, tail, maxsize);
- }
-}
-
-/*
- * Note, we can have multiple files for different busses in here due
- * to the mess that USB has for its device tree...
- */
-static struct bus_file {
- char *bus;
- char *file;
-} bus_files[] = {
- { .bus = "scsi", .file = "vendor" },
- { .bus = "usb", .file = "idVendor" },
- { .bus = "usb", .file = "iInterface" },
- { .bus = "usb-serial", .file = "detach_state" },
- { .bus = "ide", .file = "detach_state" },
- { .bus = "pci", .file = "vendor" },
- {}
-};
-
-#define SECONDS_TO_WAIT_FOR_FILE 10
-static void wait_for_device_to_initialize(struct sysfs_device *sysfs_device)
-{
- /* sleep until we see the file for this specific bus type show up this
- * is needed because we can easily out-run the kernel in looking for
- * these files before the paticular subsystem has created them in the
- * sysfs tree properly.
- *
- * And people thought that the /sbin/hotplug event system was going to
- * be slow, poo on you for arguing that before even testing it...
- */
- struct bus_file *b = &bus_files[0];
- struct sysfs_attribute *tmpattr;
- int found = 0;
- int loop = SECONDS_TO_WAIT_FOR_FILE;
-
- while (1) {
- if (b->bus == NULL) {
- if (!found)
- break;
- /* sleep to give the kernel a chance to create the file */
- sleep(1);
- --loop;
- if (loop == 0)
- break;
- b = &bus_files[0];
- }
- if (strcmp(sysfs_device->bus, b->bus) == 0) {
- found = 1;
- dbg("looking for file '%s' on bus '%s'", b->file, b->bus);
- tmpattr = sysfs_get_device_attr(sysfs_device, b->file);
- if (tmpattr) {
- /* found it! */
- goto exit;
- }
- dbg("can't find '%s' file", b->file);
- }
- ++b;
- }
- if (!found)
- dbg("did not find bus type '%s' on list of bus_id_files, "
- "contact greg@kroah.com", sysfs_device->bus);
-exit:
- return; /* here to prevent compiler warning... */
-}
-
-static void fix_kernel_name(struct udevice *udev)
-{
- char *temp = udev->kernel_name;
-
- while (*temp != 0x00) {
- /* Some block devices have a ! in their name,
- * we need to change that to / */
- if (*temp == '!')
- *temp = '/';
- ++temp;