* [RFC/PATCH 13/45] media: usbtv: core: make use of new usb_endpoint_maxp_mult() [not found] <20160928130554.29790-1-felipe.balbi@linux.intel.com> @ 2016-09-28 13:05 ` Felipe Balbi 2016-09-28 13:05 ` [RFC/PATCH 14/45] media: usb: uvc: " Felipe Balbi 2016-09-28 13:05 ` [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation Felipe Balbi 2 siblings, 0 replies; 6+ messages in thread From: Felipe Balbi @ 2016-09-28 13:05 UTC (permalink / raw) To: Linux USB; +Cc: Felipe Balbi, Mauro Carvalho Chehab, linux-media We have introduced a helper to calculate multiplier value from wMaxPacketSize. Start using it. Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: <linux-media@vger.kernel.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> --- drivers/media/usb/usbtv/usbtv-core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/media/usb/usbtv/usbtv-core.c b/drivers/media/usb/usbtv/usbtv-core.c index dc76fd41e00f..ceb953be0770 100644 --- a/drivers/media/usb/usbtv/usbtv-core.c +++ b/drivers/media/usb/usbtv/usbtv-core.c @@ -71,6 +71,7 @@ static int usbtv_probe(struct usb_interface *intf, int size; struct device *dev = &intf->dev; struct usbtv *usbtv; + struct usb_host_endpoint *ep; /* Checks that the device is what we think it is. */ if (intf->num_altsetting != 2) @@ -78,10 +79,12 @@ static int usbtv_probe(struct usb_interface *intf, if (intf->altsetting[1].desc.bNumEndpoints != 4) return -ENODEV; + ep = &intf->altsetting[1].endpoint[0]; + /* Packet size is split into 11 bits of base size and count of * extra multiplies of it.*/ - size = usb_endpoint_maxp(&intf->altsetting[1].endpoint[0].desc); - size = (size & 0x07ff) * (((size & 0x1800) >> 11) + 1); + size = usb_endpoint_maxp(&ep->desc); + size = (size & 0x07ff) * usb_endpoint_maxp_mult(&ep->desc); /* Device structure */ usbtv = kzalloc(sizeof(struct usbtv), GFP_KERNEL); -- 2.10.0.440.g21f862b ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [RFC/PATCH 14/45] media: usb: uvc: make use of new usb_endpoint_maxp_mult() [not found] <20160928130554.29790-1-felipe.balbi@linux.intel.com> 2016-09-28 13:05 ` [RFC/PATCH 13/45] media: usbtv: core: make use of new usb_endpoint_maxp_mult() Felipe Balbi @ 2016-09-28 13:05 ` Felipe Balbi 2016-09-29 9:18 ` Laurent Pinchart 2016-09-28 13:05 ` [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation Felipe Balbi 2 siblings, 1 reply; 6+ messages in thread From: Felipe Balbi @ 2016-09-28 13:05 UTC (permalink / raw) To: Linux USB Cc: Felipe Balbi, Laurent Pinchart, Mauro Carvalho Chehab, linux-media We have introduced a helper to calculate multiplier value from wMaxPacketSize. Start using it. Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: <linux-media@vger.kernel.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> --- 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; case USB_SPEED_WIRELESS: psize = usb_endpoint_maxp(&ep->desc); return psize; -- 2.10.0.440.g21f862b ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [RFC/PATCH 14/45] media: usb: uvc: make use of new usb_endpoint_maxp_mult() 2016-09-28 13:05 ` [RFC/PATCH 14/45] media: usb: uvc: " Felipe Balbi @ 2016-09-29 9:18 ` Laurent Pinchart 2016-09-29 9:44 ` Felipe Balbi 0 siblings, 1 reply; 6+ messages in thread From: Laurent Pinchart @ 2016-09-29 9:18 UTC (permalink / raw) To: Felipe Balbi; +Cc: Linux USB, Mauro Carvalho Chehab, linux-media 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@ideasonboard.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: <linux-media@vger.kernel.org> > Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> > --- > 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. > case USB_SPEED_WIRELESS: > psize = usb_endpoint_maxp(&ep->desc); > return psize; -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFC/PATCH 14/45] media: usb: uvc: make use of new usb_endpoint_maxp_mult() 2016-09-29 9:18 ` Laurent Pinchart @ 2016-09-29 9:44 ` Felipe Balbi 0 siblings, 0 replies; 6+ messages in thread From: Felipe Balbi @ 2016-09-29 9:44 UTC (permalink / raw) To: Laurent Pinchart; +Cc: Linux USB, Mauro Carvalho Chehab, linux-media [-- Attachment #1: Type: text/plain, Size: 2272 bytes --] Hi, Laurent Pinchart <laurent.pinchart@ideasonboard.com> 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@ideasonboard.com> >> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> >> Cc: <linux-media@vger.kernel.org> >> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> >> --- >> 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 #2: signature.asc --] [-- Type: application/pgp-signature, Size: 800 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation [not found] <20160928130554.29790-1-felipe.balbi@linux.intel.com> 2016-09-28 13:05 ` [RFC/PATCH 13/45] media: usbtv: core: make use of new usb_endpoint_maxp_mult() Felipe Balbi 2016-09-28 13:05 ` [RFC/PATCH 14/45] media: usb: uvc: " Felipe Balbi @ 2016-09-28 13:05 ` Felipe Balbi 2016-09-29 9:19 ` Laurent Pinchart 2 siblings, 1 reply; 6+ messages in thread From: Felipe Balbi @ 2016-09-28 13:05 UTC (permalink / raw) To: Linux USB Cc: Felipe Balbi, Laurent Pinchart, Mauro Carvalho Chehab, linux-media Now that usb_endpoint_maxp() only returns the lowest 11 bits from wMaxPacketSize, we can remove the & operation from this driver. Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: <linux-media@vger.kernel.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> --- drivers/media/usb/uvc/uvc_video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c index 11e0e5f4e1c2..f3c1c852e401 100644 --- a/drivers/media/usb/uvc/uvc_video.c +++ b/drivers/media/usb/uvc/uvc_video.c @@ -1553,7 +1553,7 @@ static int uvc_init_video_bulk(struct uvc_streaming *stream, u16 psize; u32 size; - psize = usb_endpoint_maxp(&ep->desc) & 0x7ff; + psize = usb_endpoint_maxp(&ep->desc); size = stream->ctrl.dwMaxPayloadTransferSize; stream->bulk.max_payload_size = size; -- 2.10.0.440.g21f862b ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation 2016-09-28 13:05 ` [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation Felipe Balbi @ 2016-09-29 9:19 ` Laurent Pinchart 0 siblings, 0 replies; 6+ messages in thread From: Laurent Pinchart @ 2016-09-29 9:19 UTC (permalink / raw) To: Felipe Balbi; +Cc: Linux USB, Mauro Carvalho Chehab, linux-media Hi Felipe, Thank you for the patch. On Wednesday 28 Sep 2016 16:05:39 Felipe Balbi wrote: > Now that usb_endpoint_maxp() only returns the lowest > 11 bits from wMaxPacketSize, we can remove the & > operation from this driver. > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org> > Cc: <linux-media@vger.kernel.org> > Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/media/usb/uvc/uvc_video.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/media/usb/uvc/uvc_video.c > b/drivers/media/usb/uvc/uvc_video.c index 11e0e5f4e1c2..f3c1c852e401 100644 > --- a/drivers/media/usb/uvc/uvc_video.c > +++ b/drivers/media/usb/uvc/uvc_video.c > @@ -1553,7 +1553,7 @@ static int uvc_init_video_bulk(struct uvc_streaming > *stream, u16 psize; > u32 size; > > - psize = usb_endpoint_maxp(&ep->desc) & 0x7ff; > + psize = usb_endpoint_maxp(&ep->desc); > size = stream->ctrl.dwMaxPayloadTransferSize; > stream->bulk.max_payload_size = size; -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-09-29 9:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20160928130554.29790-1-felipe.balbi@linux.intel.com>
2016-09-28 13:05 ` [RFC/PATCH 13/45] media: usbtv: core: make use of new usb_endpoint_maxp_mult() Felipe Balbi
2016-09-28 13:05 ` [RFC/PATCH 14/45] media: usb: uvc: " Felipe Balbi
2016-09-29 9:18 ` Laurent Pinchart
2016-09-29 9:44 ` Felipe Balbi
2016-09-28 13:05 ` [RFC/PATCH 30/45] media: usb: uvc: remove unnecessary & operation Felipe Balbi
2016-09-29 9:19 ` Laurent Pinchart
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).