> -----Original Message-----
> From: [email protected] [mailto:linux-omap-
> [email protected]] On Behalf Of Taneja, Archit
> Sent: Thursday, June 17, 2010 2:37 PM
> To: Tomi Valkeinen
> Cc: [email protected]
> Subject: RE: [PATCH] OMAP: DSS2: DSI: disable manager on framedone timeout
> 
> Hi,
> 
> > -----Original Message-----
> > From: Tomi Valkeinen [mailto:[email protected]]
> > Sent: Thursday, June 17, 2010 2:22 PM
> > To: Taneja, Archit
> > Cc: [email protected]
> > Subject: Re: [PATCH] OMAP: DSS2: DSI: disable manager on framedone
> timeout
> >
> > Hi,
> >
> > On Thu, 2010-06-17 at 10:29 +0200, ext Archit Taneja wrote:
> > > In the case of a dsi framedone timeout, we should set the LCD_EN
> > > bit to 0 and reset the dsi tx fifo so that the next panel update
> > > call goes through cleanly.
> > >
> > > With the new way of handling framedone interrupts, since everything
> > > is handled in irq context, the only reason a framedone timeout occurs
> > > is because of some hardware issue.
> > >
> > > The reset of LCD_EN and flush of TX_FIFO won't interfere with a frame
> > > in progress.
> >
> > Does this work? There is the errata: 1.29. DSI: Tx FIFO flush is not
> > supported. I've actually removed the dsi_reset_tx_fifo() function in my
> > work tree, as I though the only way to recover is to reset the whole DSI
> > block.
> >
> >  Tomi
> >
> The errata is there, but things still seem to be okay, the crucial thing
> is disabling LCD_EN, this will at least prepare DISPC for the next frame.
> 
> I think that if a framedone timeout occurs, it is DISPC which is at fault
> since it generates the framedone interrupt. It is quite likely that DSI is
> in a ok state.
> 
> I agree it is risky to flush DSI TX fifo since it is in the errata, but we
> should still disable LCD_EN here because no one else disables it.
> 
> Thanks,
> 
> Archit
> --

Hi,

Also, the TX FIFO wouldn't flush only by calling dsi_reset_tx_fifo(), the TRM 
says that after changing the FIFO size to zero, we still need to disable the VC 
by resetting VC_EN and then wait for VC_BUSY to become 0. This is probably why 
calling the function itself doesn't actually start the TX flush hardware logic.

But calling manager->disable is still essential. This is because after a 
framedone timeout, even if we reset the whole DSI engine block, LCD_EN could 
still be 1 (because of a DISPC failure); and in order to send another frame, 
LCD_EN should be 0 at the point of starting frame transfer.



--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to