On Tue, Mar 1, 2011 at 12:07 PM, Tomi Valkeinen <tomi.valkeinen@xxxxxx> wrote: > On Tue, 2011-03-01 at 00:27 -0600, Semwal, Sumit wrote: >> On Tue, Mar 1, 2011 at 11:49 AM, Tomi Valkeinen <tomi.valkeinen@xxxxxx> wrote: >> > On Mon, 2011-02-28 at 23:42 -0600, Semwal, Sumit wrote: >> >> On Mon, Feb 28, 2011 at 9:33 PM, Tomi Valkeinen <tomi.valkeinen@xxxxxx> wrote: >> >> > On Mon, 2011-02-28 at 09:02 -0600, Semwal, Sumit wrote: >> >> >> Provide a function in pdata to allow dss submodules to check if a given >> >> >> clock is available on a platform as an optional clock. >> >> >> >> >> >> Signed-off-by: Senthilvadivu Guruswamy <svadivu@xxxxxx> >> >> >> (based on implementation from Senthil) >> >> >> >> >> >> Signed-off-by: Sumit Semwal <sumit.semwal@xxxxxx> >> >> >> --- >> >> >> arch/arm/mach-omap2/display.c | 20 ++++++++++++++++++++ >> >> >> arch/arm/plat-omap/include/plat/display.h | 2 ++ >> >> >> 2 files changed, 22 insertions(+), 0 deletions(-) >> >> >> >> >> >> diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c >> >> >> index 5ab6a74..9f4f862 100644 >> >> >> --- a/arch/arm/mach-omap2/display.c >> >> >> +++ b/arch/arm/mach-omap2/display.c >> >> >> @@ -42,6 +42,25 @@ static struct omap_device_pm_latency omap_dss_latency[] = { >> >> >> }, >> >> >> }; >> >> >> >> >> >> +static bool opt_clock_available(const char *clk_role) >> >> >> +{ >> >> >> + int i; >> >> >> + struct omap_hwmod *oh; >> >> >> + >> >> >> + /* opt_clks are always associated with dss hwmod */ >> >> >> + oh = omap_hwmod_lookup("dss_core"); >> >> >> + if (!oh) { >> >> >> + pr_err("Could not look up dss_core.\n"); >> >> >> + return -ENODEV; >> >> > >> >> > The function returns a bool. Perhaps the lookup would be better done in >> >> > omap_display_init(), and stored in a static variable. >> >> Yes; I guess I should go with your earlier suggestion - of keeping >> >> this 'oh' as part of pdata, and then use it here. >> > >> > I don't think it needs to be part of pdata. It's internal to this file, >> > and if I'm not mistaken, omap_display_init() is called just once from >> > the current board file. Thus the data could as well be stored in a >> > static variable. >> :) ok, that's correct; though we might need to make 'oh' part of pdata >> based on our adaptation to the reset functionality - but that will >> come later. >> > >> >> > Or if it's clear that this should never happen, BUG_ON(!oh); >> >> Well, multiple people have 'frowned' upon using BUG_ON in dss - >> >> especially because some people might still want their kernel to keep >> >> working despite a display failure? >> > >> > Yes, BUG is an easy, not good, way out =). >> :) hmmm... should I just return 'false' and print out a warning? > > From opt_clock_available() if the hwmod was not found? Well, preferably > opt_clock_available() will never be called, if the hwmod is not found in > omap_display_init(). So omap_display_init() should fail -> DSS driver > refuses to start -> opt_clock_available() is never called. :) Yes, that's true. will leave out the check then. > > Tomi > > > -- 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