usb: gadget: cdev: Add single packet and dynamic buffer support for Rx path
Display tearing functionality on SXR devices makes use of both bulk-in and bulk-out endpoints of cdev driver to acquire real time audio/video data from usb host. Currently if the userspace application making use of cdev driver requests 50KB of data from host, the cdev_read function queues multiple usb requests to host till it gets 50KB of data. In Display Tearing, although the userspace application requests 50KB of data per frame, the actual amount sent by host for every frame is variable and can be less than the requested amount. If host is sending packets of size less that requested amount per frame, driver ends up appending multiple frames in a single cdev_read call and returns corrupt information to userspace causing low frame rate on display. To resolve this add a configfs property to specify the buffer size for every usb request on out ep and a flag to specify if we need single packet mode. If single packet mode is enabled, only one usb request is queued on out endpoint per cdev_read call and buffer corresponding to that request contains only one frame of data coming from host. The driver appends data from one usb request in read_queued pool to userspace buffer to avoid corrupting video frame information. Change-Id: I66dcc57513c1cf0ec87f16bde316e1230deabcbf Signed-off-by:Ligui Deng <ldeng@codeaurora.org> Signed-off-by:
Krishna Kurapati <quic_kriskura@quicinc.com>
Loading
Please sign in to comment