Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b237289 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

staging: comedi: usbduxsigma: move firmware request/upload into (*auto_attach)



The last step the usb_driver (*probe) does before handing off to the
comedi_driver (*auto_attach) is requesting and uploading the firmware.

Move the request/upload into the (*auto_attach) so we can use the
comedi_load_firmware() helper.

Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1cf35b51
Loading
Loading
Loading
Loading
+12 −14
Original line number Original line Diff line number Diff line
@@ -2234,12 +2234,22 @@ static int usbduxsigma_auto_attach(struct comedi_device *dev,
				   unsigned long context_unused)
				   unsigned long context_unused)
{
{
	struct usb_interface *uinterf = comedi_to_usb_interface(dev);
	struct usb_interface *uinterf = comedi_to_usb_interface(dev);
	struct usbduxsub *uds = usb_get_intfdata(uinterf);
	struct usb_device *usb = uds->usbdev;
	const struct firmware *fw;
	int ret;
	int ret;
	struct usbduxsub *uds;

	ret = request_firmware(&fw, FIRMWARE, &usb->dev);
	if (ret == 0) {
		ret = firmwareUpload(uds, fw->data, fw->size);
		release_firmware(fw);
	}
	if (ret < 0)
		return ret;


	dev->private = NULL;
	dev->private = NULL;

	down(&start_stop_sem);
	down(&start_stop_sem);
	uds = usb_get_intfdata(uinterf);
	if (!uds || !uds->probed) {
	if (!uds || !uds->probed) {
		dev_err(dev->class_dev,
		dev_err(dev->class_dev,
			"usbduxsigma: error: auto_attach failed, not connected\n");
			"usbduxsigma: error: auto_attach failed, not connected\n");
@@ -2279,10 +2289,8 @@ static int usbduxsigma_usb_probe(struct usb_interface *uinterf,
{
{
	struct usb_device *udev = interface_to_usbdev(uinterf);
	struct usb_device *udev = interface_to_usbdev(uinterf);
	struct device *dev = &uinterf->dev;
	struct device *dev = &uinterf->dev;
	const struct firmware *fw;
	int i;
	int i;
	int index;
	int index;
	int ret;


	dev_dbg(dev, "comedi_: usbdux_: "
	dev_dbg(dev, "comedi_: usbdux_: "
		"finding a free structure for the usb-device\n");
		"finding a free structure for the usb-device\n");
@@ -2500,16 +2508,6 @@ static int usbduxsigma_usb_probe(struct usb_interface *uinterf,
	usbduxsub[index].probed = 1;
	usbduxsub[index].probed = 1;
	up(&start_stop_sem);
	up(&start_stop_sem);


	ret = request_firmware(&fw, FIRMWARE, &udev->dev);
	if (ret == 0) {
		ret = firmwareUpload(&usbduxsub[index], fw->data, fw->size);
		release_firmware(fw);
	}
	if (ret) {
		dev_err(dev, "Could not load firmware (err=%d)\n", ret);
		return ret;
	}

	return comedi_usb_auto_config(uinterf, &usbduxsigma_driver, 0);;
	return comedi_usb_auto_config(uinterf, &usbduxsigma_driver, 0);;
}
}