scratch += length;
}
- envp [i++] = 0;
+ envp[i++] = NULL;
return 0;
}
)
{
if (!dev || !dev->bus || !dev->bus->op || !dev->bus->op->buffer_alloc)
- return 0;
+ return NULL;
return dev->bus->op->buffer_alloc (dev->bus, size, mem_flags, dma);
}
|| !urb->dev
|| !(bus = urb->dev->bus)
|| !(controller = bus->controller))
- return 0;
+ return NULL;
if (controller->dma_mask) {
urb->transfer_dma = dma_map_single (controller,
usb_pipein (pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
}
-static int usb_device_suspend(struct device *dev, u32 state)
+static int usb_generic_suspend(struct device *dev, u32 state)
{
struct usb_interface *intf;
struct usb_driver *driver;
+ if (dev->driver == &usb_generic_driver)
+ return usb_suspend_device (to_usb_device(dev), state);
+
if ((dev->driver == NULL) ||
- (dev->driver == &usb_generic_driver) ||
(dev->driver_data == &usb_generic_driver_data))
return 0;
return 0;
}
-static int usb_device_resume(struct device *dev)
+static int usb_generic_resume(struct device *dev)
{
struct usb_interface *intf;
struct usb_driver *driver;
+ /* devices resume through their hub */
+ if (dev->driver == &usb_generic_driver)
+ return usb_resume_device (to_usb_device(dev));
+
if ((dev->driver == NULL) ||
- (dev->driver == &usb_generic_driver) ||
(dev->driver_data == &usb_generic_driver_data))
return 0;
.name = "usb",
.match = usb_device_match,
.hotplug = usb_hotplug,
- .suspend = usb_device_suspend,
- .resume = usb_device_resume,
+ .suspend = usb_generic_suspend,
+ .resume = usb_generic_resume,
};
#ifndef MODULE
retval = bus_register(&usb_bus_type);
if (retval)
goto out;
- usb_host_init();
+ retval = usb_host_init();
+ if (retval)
+ goto host_init_failed;
retval = usb_major_init();
if (retval)
goto major_init_failed;
usb_major_cleanup();
major_init_failed:
usb_host_cleanup();
+host_init_failed:
bus_unregister(&usb_bus_type);
out:
return retval;