> -----Original Message-----
> From: Tomi Valkeinen [mailto:[email protected]] 
> Sent: Thursday, June 24, 2010 4:21 PM
> To: Nagarajan, Rajkumar
> Cc: [email protected]
> Subject: Re: [PATCH] OMAP: DSS: Fix for dsi_pll to dpll4 clk switch
> 
> On Thu, 2010-06-17 at 07:12 +0200, ext Nagarajan, Rajkumar wrote:
> > When switching between clocks, The new functional clock is
> > effective when the next vertical blanking interval occurs.
> > GOLCD bit has to be set for the new clock to take effect.
> 
> Where did you encounter this problem?
> 
Raj: The below experiments will make you to understand the significance of the 
patch:

1. Select "dsi_pll" as default clock.
2. After the zoom3 display comes up,switch the default screen on LCD to TV 
using below commands.
        echo "0" > /sys/devices/platform/omapdss/overlay0/enabled
        echo "720,574" > /sys/devices/platform/omapdss/overlay0/input_size
        echo "720,574" > /sys/devices/platform/omapdss/overlay0/output_size
        echo "tv" >  /sys/devices/platform/omapdss/overlay0/manager
        echo "1" > /sys/devices/platform/omapdss/display1/enabled
        echo "1" > /sys/devices/platform/omapdss/overlay0/enabled
3. Now the display is appearing on TV.So, Now switch the display back to LCD 
using the below commands.
        echo "0" > /sys/devices/platform/omapdss/overlay0/enabled
        echo "800,480" > /sys/devices/platform/omapdss/overlay0/input_size
        echo "800,480" > /sys/devices/platform/omapdss/overlay0/output_size
        echo "lcd" >  /sys/devices/platform/omapdss/overlay0/manager
        echo "1" > /sys/devices/platform/omapdss/display1/enabled
        echo "1" > /sys/devices/platform/omapdss/overlay0/enabled
4. Now the display will not appear on LCD,if the patch is not included.
    But,the display will appear on LCD, if the patch is included.

> > Signed-off-by: Kishore Y <[email protected]>
> > Signed-off-by: Mukund Mittal <[email protected]>
> > Signed-off-by: Rajkumar N <[email protected]>
> > ---
> >  drivers/video/omap2/dss/dpi.c |    5 +++++
> >  1 files changed, 5 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/video/omap2/dss/dpi.c 
> b/drivers/video/omap2/dss/dpi.c
> > index 960e977..5d778d6 100644
> > --- a/drivers/video/omap2/dss/dpi.c
> > +++ b/drivers/video/omap2/dss/dpi.c
> > @@ -214,10 +214,15 @@ void 
> omapdss_dpi_display_disable(struct omap_dss_device *dssdev)
> >  
> >  #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL
> >     dss_select_dispc_clk_source(DSS_SRC_DSS1_ALWON_FCLK);
> > +   dispc_go(OMAP_DSS_CHANNEL_LCD);
> 
> I don't think GO does anything here, as the channel has already been
> disabled.
Raj:This is the actual fix.So, the above experiment that I explained will be 
the usecase to understand the need of this statement.
> 
> > +   while   (dispc_go_busy(OMAP_DSS_CHANNEL_LCD))
> > +           ;
> 
> Busy looping is not good.
Raj: will replace with non blocking call in the next version of this patch.
> 
> >     dsi_pll_uninit();
> >     dss_clk_disable(DSS_CLK_FCK2);
> >  #endif
> >  
> > +   dispc_enable_channel(OMAP_DSS_CHANNEL_LCD, 0);
> > +
> 
> The channel has already been disabled above, in
> dssdev->manager->disable(dssdev->manager);
Raj: will remove this statement in the next version of this patch.
> 
>  Tomi
> 
> 
> 

Reply via email to