Hi, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> writes: > Hi Felipe, > > Thanks for the patch. > > On Wednesday 28 Sep 2016 16:05:23 Felipe Balbi wrote: >> We have introduced a helper to calculate multiplier >> value from wMaxPacketSize. Start using it. >> >> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> >> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> >> Cc: <linux-media@xxxxxxxxxxxxxxx> >> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> >> --- >> drivers/media/usb/uvc/uvc_video.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/media/usb/uvc/uvc_video.c >> b/drivers/media/usb/uvc/uvc_video.c index b5589d5f5da4..11e0e5f4e1c2 100644 >> --- a/drivers/media/usb/uvc/uvc_video.c >> +++ b/drivers/media/usb/uvc/uvc_video.c >> @@ -1467,6 +1467,7 @@ static unsigned int uvc_endpoint_max_bpi(struct >> usb_device *dev, struct usb_host_endpoint *ep) >> { >> u16 psize; >> + u16 mult; >> >> switch (dev->speed) { >> case USB_SPEED_SUPER: >> @@ -1474,7 +1475,8 @@ static unsigned int uvc_endpoint_max_bpi(struct >> usb_device *dev, return le16_to_cpu(ep->ss_ep_comp.wBytesPerInterval); >> case USB_SPEED_HIGH: >> psize = usb_endpoint_maxp(&ep->desc); >> - return (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); >> + mult = usb_endpoint_maxp_mult(&ep->desc); >> + return (psize & 0x07ff) * mult; > > I believe you can remove the & 0x07ff here after patch 28/45. > > This being said, wouldn't it be useful to introduce a helper function that > performs the full computation instead of requiring usage of two helpers that > both call __le16_to_cpu() on the same field ? Or possibly turn the whole > uvc_endpoint_max_bpi() function into a core helper ? I haven't checked whether > it can be useful to other drivers though. it's probably not useful for many other drivers. The multiplier is only valid for High-speed Isochronous and Interrupt endpoints. If it's not High speed, we don't care. If it's not Isoc or Int, we don't care. If we have a single helper, we are likely gonna be doing extra computation for no reason. Moreover, this is only called once during probe(), there's really nothing to optimize here. -- balbi
Attachment:
signature.asc
Description: PGP signature