up(&dev->sem);
if (dev->parent)
up(&dev->parent->sem);
-
- if (err > 0) /* success */
- err = count;
- else if (err == 0) /* driver didn't accept device */
- err = -ENODEV;
}
put_device(dev);
put_bus(bus);
bus_for_each_dev(bus, NULL, NULL, bus_rescan_devices_helper);
}
-/**
- * device_reprobe - remove driver for a device and probe for a new driver
- * @dev: the device to reprobe
- *
- * This function detaches the attached driver (if any) for the given
- * device and restarts the driver probing process. It is intended
- * to use if probing criteria changed during a devices lifetime and
- * driver attachment should change accordingly.
- */
-void device_reprobe(struct device *dev)
-{
- if (dev->driver) {
- if (dev->parent) /* Needed for USB */
- down(&dev->parent->sem);
- device_release_driver(dev);
- if (dev->parent)
- up(&dev->parent->sem);
- }
-
- bus_rescan_devices_helper(dev, NULL);
-}
-EXPORT_SYMBOL_GPL(device_reprobe);
struct bus_type * get_bus(struct bus_type * bus)
{