Re: [PATCH v2] Input: bcm5974 - check endpoint type before starting traffic

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

 



Hi Javier,

On Thu, Oct 12, 2023 at 06:51:49PM +0200, Javier Carrasco wrote:
>  
> +static bool bcm5974_ep_is_int_in(struct usb_host_interface *iface, int addr)
> +{
> +	struct usb_endpoint_descriptor *endpoint;
> +	int i;
> +
> +	for (i = 0; i < iface->desc.bNumEndpoints; i++) {
> +		endpoint = &iface->endpoint[i].desc;
> +		if (endpoint->bEndpointAddress == addr) {
> +			if (usb_endpoint_is_int_in(endpoint))
> +				return true;
> +		}
> +	}
> +	return false;
> +}

This essentially reimplements usb_find_endpoint() in a sense, so can we
instead do:

	ep = usb_find_endpoint(iface, addr);
	if (!ep || !usb_endpoint_is_int_in(ep)) {
		dev_err(...);
		return ...;
	}


Also it looks like the handling of button endpoint is interleaved with
the trackpad endpoint, I wonder if it would not be better if we have a
separate "if (cfg->tp_type == TYPE1)" where we would do the check,
allocate URB, and did all the rest of set up for button transfers.

Thanks.

-- 
Dmitry



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux