RE: [PATCH] OMAP: DSS: Fix for dsi_pll to dpll4 clk switch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: Tomi Valkeinen [mailto:tomi.valkeinen@xxxxxxxxx] 
> Sent: Thursday, June 24, 2010 4:21 PM
> To: Nagarajan, Rajkumar
> Cc: linux-omap@xxxxxxxxxxxxxxx
> 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 <kishore.y@xxxxxx>
> > Signed-off-by: Mukund Mittal <mmittal@xxxxxx>
> > Signed-off-by: Rajkumar N <rajkumar.nagarajan@xxxxxx>
> > ---
> >  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
> 
> 
> ��.n��������+%������w��{.n�����{�������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux