-static int xr21v141x_write_start(struct xr21v141x *xr21v141x, int wbn)
-{
- unsigned long flags;
- struct xr21v141x_wb *wb = &xr21v141x->wb[wbn];
- int rc;
-
- spin_lock_irqsave(&xr21v141x->write_lock, flags);
- if (!xr21v141x->dev) {
- wb->use = 0;
- spin_unlock_irqrestore(&xr21v141x->write_lock, flags);
- return -ENODEV;
- }
-
- dev_vdbg(&xr21v141x->data->dev, "%s - susp_count %d\n", __func__,
- xr21v141x->susp_count);
- usb_autopm_get_interface_async(xr21v141x->control);
- if (xr21v141x->susp_count) {
- if (!xr21v141x->delayed_wb)
- xr21v141x->delayed_wb = wb;
- else
- usb_autopm_put_interface_async(xr21v141x->control);
- spin_unlock_irqrestore(&xr21v141x->write_lock, flags);
- return 0; /* A white lie */
- }
- usb_mark_last_busy(xr21v141x->dev);
-
- rc = xr21v141x_start_wb(xr21v141x, wb);
- spin_unlock_irqrestore(&xr21v141x->write_lock, flags);
-
- return rc;
-
-}