static void p54u_load_firmware_cb(const struct firmware *firmware,
				  void *context)
{
	struct p54u_priv *priv = context;
	struct usb_device *udev = priv->udev;
	struct usb_interface *intf = priv->intf;
	int err;

	if (firmware) {
		priv->fw = firmware;
		err = p54u_start_ops(priv);
	} else {
		err = -ENOENT;
		dev_err(&udev->dev, "Firmware not found.\n");
	}

	complete(&priv->fw_wait_load);
	/*
	 * At this point p54u_disconnect may have already freed
	 * the "priv" context. Do not use it anymore!
	 */
	priv = NULL;

	if (err) {
		dev_err(&intf->dev, "failed to initialize device (%d)\n", err);

		usb_lock_device(udev);
		usb_driver_release_interface(&p54u_driver, intf);
		usb_unlock_device(udev);
	}

	usb_put_intf(intf);
}
static void p54u_load_firmware_cb(const struct firmware *firmware,
				  void *context)
{
	struct p54u_priv *priv = context;
	struct usb_device *udev = priv->udev;
	struct usb_interface *intf = priv->intf;
	int err;

	if (firmware) {
		priv->fw = firmware;
		err = p54u_start_ops(priv);
	} else {
		err = -ENOENT;
		dev_err(&udev->dev, "Firmware not found.\n");
	}

	complete(&priv->fw_wait_load);
	 
	priv = NULL;

	if (err) {
		dev_err(&intf->dev, "failed to initialize device (%d)\n", err);

		usb_lock_device(udev);
		usb_driver_release_interface(&p54u_driver, intf);
		usb_unlock_device(udev);
	}

	usb_put_intf(intf);
}