On Wed, Mar 14, 2012 at 21:00:25, Laurent Pinchart wrote: > Hi Vaibhav, > > On Friday 09 March 2012 17:41:57 Vaibhav Hiremath wrote: > > When rotation is enabled and driver is configured in USERPTR > > buffer exchange mechanism, in specific use-case driver reports > > an error, > > "DMA transaction error with device 0". > > > > In driver _buffer_prepare funtion, we were using > > "vout->buf_phy_addr[vb->i]" for buffer physical address to > > configure SDMA channel, but this variable does get updated > > only during init. > > And the issue will occur when driver allocates less number > > of buffers during init and application requests more buffers > > through REQBUF ioctl; this variable will lead to invalid > > configuration of SDMA channel leading to DMA transaction error. > > > > Signed-off-by: Vaibhav Hiremath <hvaibhav@xxxxxx> > > --- > > Archit/Laurent, > > Can you help me to validate this patch on your platform/usecase? > > I've tested the patch by rotating the omap_vout overlay by 90 degrees and > starting a video stream with 4 buffers. There's no crash, but the kernel > prints > > [77.877807] omapdss DISPC error: FIFO UNDERFLOW on gfx, disabling the overlay > [77.928344] omapdss DISPC error: FIFO UNDERFLOW on vid1, disabling the overlay > > The same problem occurs with 3 buffers, which is what the omap_vout driver > allocates by default. > > Without your patch applied I get the same behaviour. Is my test procedure > wrong ? > Laurent, Thanks for testing, the procedure looks ok to me. I need to look into this issue (need to debug). Thanks, Vaibhav > > drivers/media/video/omap/omap_vout_vrfb.c | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/media/video/omap/omap_vout_vrfb.c > > b/drivers/media/video/omap/omap_vout_vrfb.c index 4be26ab..240d36d 100644 > > --- a/drivers/media/video/omap/omap_vout_vrfb.c > > +++ b/drivers/media/video/omap/omap_vout_vrfb.c > > @@ -225,7 +225,7 @@ int omap_vout_prepare_vrfb(struct omap_vout_device > > *vout, if (!is_rotation_enabled(vout)) > > return 0; > > > > - dmabuf = vout->buf_phy_addr[vb->i]; > > + dmabuf = (dma_addr_t) vout->queued_buf_addr[vb->i]; > > /* If rotation is enabled, copy input buffer into VRFB > > * memory space using DMA. We are copying input buffer > > * into VRFB memory space of desired angle and DSS will > > -- > Regards, > > Laurent Pinchart > > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html