> -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx [mailto:linux-omap- > owner@xxxxxxxxxxxxxxx] On Behalf Of Tomi Valkeinen > Sent: Friday, March 12, 2010 4:22 PM > To: ext Steve Sakoman > Cc: linux-omap@xxxxxxxxxxxxxxx > Subject: Re: kernel panic with latest DSS > > Can you try this patch? > > I haven't run into this earlier as I always have DSI compiled in. It > possibly doesn't behave correctly in that case either, but doesn't > crash. > > Tomi > > > >From c065bb82e1358105d57d80974ce71d3e5aeabf35 Mon Sep 17 00:00:00 2001 > From: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxx> > Date: Fri, 12 Mar 2010 12:46:05 +0200 > Subject: [PATCH] OMAP: DSS2: initialize dss clk sources properly > > Clk sources were not initialized, leading to kernel crash, or possibly to > strange behaviour if DSI was compiled in. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxx> > --- > drivers/video/omap2/dss/dss.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c > index 8254a42..5434418 100644 > --- a/drivers/video/omap2/dss/dss.c > +++ b/drivers/video/omap2/dss/dss.c > @@ -590,6 +590,9 @@ int dss_init(bool skip_init) > } > } > > + dss.dsi_clk_source = DSS_SRC_DSS1_ALWON_FCLK; > + dss.dispc_clk_source = DSS_SRC_DSS1_ALWON_FCLK; > + > dss_save_context(); > > rev = dss_read_reg(DSS_REVISION); > -- > 1.6.5 > > [Hiremath, Vaibhav] Tomi, No this is not helping here, one thing I am not able to understand how does this related to reboot? The crash is happening because the disable is getting called multiple times. So I think the check (added by my patch) is necessary here. Also I am seeing this crash irrespective of DSI enabled or not. Thanks, Vaibhav > > > > > On Wed, 2010-03-10 at 20:48 +0100, ext Steve Sakoman wrote: > > On Wed, Mar 10, 2010 at 10:58 AM, <Tomi.Valkeinen@xxxxxxxxx> wrote: > > > > > I haven't had time to look at this, but I don't think your analysis is > correct. > > > > You are correct of course. My sleepy eyes neglected to notice that > > double = and that makes a big difference :-) > > > > > What first comes to my mind is that dss.dispc_clk_source is, for some > reason, uninitialized. Could you put prints to dss_select_dispc_clk_source > to see if it's called, and if so, what is assigned to dss.dispc_clk_source? > > > > I did a build with that change and it does seem that > > dss_select_dispc_clk_source is never called. > > > > Steve > > > > > Tomi > > > > > > ________________________________________ > > > From: ext Steve Sakoman [sakoman@xxxxxxxxx] > > > Sent: Wednesday, March 10, 2010 20:42 > > > To: linux-omap@xxxxxxxxxxxxxxx; Valkeinen Tomi (Nokia-D/Helsinki) > > > Subject: Re: kernel panic with latest DSS > > > > > > On Wed, Mar 10, 2010 at 10:16 AM, Steve Sakoman <sakoman@xxxxxxxxx> > wrote: > > > > > >> The issue occurs in the following section of code in > > >> drivers/video/omap2/dss/dispc.c: > > >> > > >> unsigned long dispc_fclk_rate(void) > > >> { > > >> unsigned long r = 0; > > >> > > >> if (dss_get_dispc_clk_source() == DSS_SRC_DSS1_ALWON_FCLK) > > >> r = dss_clk_get_rate(DSS_CLK_FCK1); > > >> else > > >> #ifdef CONFIG_OMAP2_DSS_DSI > > >> r = dsi_get_dsi1_pll_rate(); > > >> #else > > >> BUG(); > > >> #endif > > >> return r; > > >> } > > >> > > >> Since my machines don't have DSI displays CONFIG_OMAP2_DSS_DSI is not > > >> defined and the BUG() call is triggered. > > > > > > The issue seems to be the test for DSS_SRC_DSS1_ALWON_FCLK. > > > > > > Looking at drivers/video/omap2/dss/dispc.c I see that > > > DSS_SRC_DSS1_ALWON_FCLK will never be returned since clk_src is always > > > set to 0 or 1 based on a test of DSS_SRC_DSS1_ALWON_FCLK : > > > > > > void dss_select_dispc_clk_source(enum dss_clk_source clk_src) > > > { > > > int b; > > > > > > BUG_ON(clk_src != DSS_SRC_DSI1_PLL_FCLK && > > > clk_src != DSS_SRC_DSS1_ALWON_FCLK); > > > > > > b = clk_src == DSS_SRC_DSS1_ALWON_FCLK ? 0 : 1; > > > > > > REG_FLD_MOD(DSS_CONTROL, b, 0, 0); /* DISPC_CLK_SWITCH */ > > > > > > dss.dispc_clk_source = clk_src; > > > } > > > > > > It seems to me that the test should return to the way it was in the > > > previous DSS version, i.e. a test for 0: > > > > > > diff --git a/drivers/video/omap2/dss/dispc.c > b/drivers/video/omap2/dss/dispc.c > > > index e777e35..be9b3de 100644 > > > --- a/drivers/video/omap2/dss/dispc.c > > > +++ b/drivers/video/omap2/dss/dispc.c > > > @@ -2218,7 +2218,7 @@ unsigned long dispc_fclk_rate(void) > > > { > > > unsigned long r = 0; > > > > > > - if (dss_get_dispc_clk_source() == DSS_SRC_DSS1_ALWON_FCLK) > > > + if (dss_get_dispc_clk_source() == 0) > > > r = dss_clk_get_rate(DSS_CLK_FCK1); > > > else > > > #ifdef CONFIG_OMAP2_DSS_DSI > > > > > > A test build confirms that this change restores my ability to play > > > DVD's and display webcam streams. My understanding of this code is > > > superficial, so hopefully Tomi can comment on whether this is a good > > > fix or not. > > > > > > Steve > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html