Re: [PATCH] Add support for JULABO PRESTO to cdc_acm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 27, 2024 at 03:44:04PM +0200, Fabio Luongo wrote:
> JULABO PRESTO chillers on Windows use the usbser.sys driver
> for communication, so the same functionality should be achievable
> on Linux using the cdc_acm driver.
> 
> However, cdc_acm does not accomodate the quirkness of these devices,
> as they fail normal probing ("Zero length descriptor references"),
> but they also feature a single USB interface instead of two.
> 
> This patch extends the effect of the `NO_UNION_NORMAL` quirk
> to cover the features of JULABO PRESTO devices.
> 
> Signed-off-by: Fabio Luongo <f.langufo.l@xxxxxxxxx>
> ---
>  drivers/usb/class/cdc-acm.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
> index 605fea461102..d77c84c6e878 100644
> --- a/drivers/usb/class/cdc-acm.c
> +++ b/drivers/usb/class/cdc-acm.c
> @@ -1210,6 +1210,8 @@ static int acm_probe(struct usb_interface *intf,
>  	if (quirks == NO_UNION_NORMAL) {
>  		data_interface = usb_ifnum_to_if(usb_dev, 1);
>  		control_interface = usb_ifnum_to_if(usb_dev, 0);
> +		if (!data_interface)
> +			data_interface = control_interface;

That feels wrong, how can we send data out both for different things?

>  		/* we would crash */
>  		if (!data_interface || !control_interface)
>  			return -ENODEV;
> @@ -1284,6 +1286,8 @@ static int acm_probe(struct usb_interface *intf,
>  	if (data_intf_num != call_intf_num)
>  		dev_dbg(&intf->dev, "Separate call control interface. That is not fully supported.\n");
>  
> +skip_normal_probe:
> +
>  	if (control_interface == data_interface) {
>  		/* some broken devices designed for windows work this way */
>  		dev_warn(&intf->dev,"Control and data interfaces are not separated!\n");
> @@ -1303,8 +1307,6 @@ static int acm_probe(struct usb_interface *intf,
>  		goto made_compressed_probe;
>  	}
>  
> -skip_normal_probe:

Why the movement of the goto tag?

thanks,

greg k-h




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux