* [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod.
@ 2011-02-28 15:02 Sumit Semwal
2011-02-28 15:02 ` [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata Sumit Semwal
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Sumit Semwal @ 2011-02-28 15:02 UTC (permalink / raw)
To: tomi.valkeinen, linux-omap; +Cc: Sumit Semwal
This series uses information about opt-clocks provided by omap_hwmod framework
to select which of the non-mandatory DSS clocks are available on a given
platform.
A function pointer opt_clock_available is exported via pdata, which checks the
clock roles returned by hwmod database.
In the driver, while doing clk-get, it is checked if as per hwmod a given clock
is an opt-clock or not, and is handled accordingly.
Tested on: OMAP3430sdp
Sumit Semwal (2):
OMAP2PLUS:DSS2: add opt_clock_available in pdata
OMAP2PLUS:DSS2: Use opt_clock_available from pdata
changes from v1:
- made opt_clock_available a function pointer in the omap_display_platform_data
to avoid having to copy the opt-clock role names.
Based on top of:
http://gitorious.org/linux-omap-dss2/linux/commits/master
commit: ad1c76c: OMAP: Overo Palo43 LCD support
arch/arm/mach-omap2/display.c | 20 ++++++++++++
arch/arm/plat-omap/include/plat/display.h | 2 +
drivers/video/omap2/dss/dss.c | 46 +++++++++++++++++++----------
3 files changed, 52 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 10+ messages in thread* [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-02-28 15:02 [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Sumit Semwal @ 2011-02-28 15:02 ` Sumit Semwal 2011-02-28 16:03 ` Tomi Valkeinen 2011-02-28 15:02 ` [Patch v2 2/2] OMAP2PLUS:DSS2: Use opt_clock_available from pdata Sumit Semwal 2011-02-28 15:09 ` [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Semwal, Sumit 2 siblings, 1 reply; 10+ messages in thread From: Sumit Semwal @ 2011-02-28 15:02 UTC (permalink / raw) To: tomi.valkeinen, linux-omap; +Cc: Sumit Semwal, Senthilvadivu Guruswamy 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@ti.com> (based on implementation from Senthil) Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> --- 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; + } + + for (i = 0; i < oh->opt_clks_cnt; i++) { + if (!strcmp(oh->opt_clks[i].role, clk_role)) + return true; + } + return false; +} + int __init omap_display_init(struct omap_dss_board_info *board_data) { int r = 0; @@ -76,6 +95,7 @@ int __init omap_display_init(struct omap_dss_board_info *board_data) pdata.board_data = board_data; pdata.board_data->get_last_off_on_transaction_id = NULL; + pdata.opt_clock_available = opt_clock_available; for (i = 0; i < oh_count; i++) { oh = omap_hwmod_lookup(oh_name[i]); diff --git a/arch/arm/plat-omap/include/plat/display.h b/arch/arm/plat-omap/include/plat/display.h index 2fb057e..4101bcd 100644 --- a/arch/arm/plat-omap/include/plat/display.h +++ b/arch/arm/plat-omap/include/plat/display.h @@ -240,6 +240,8 @@ static inline int omap_display_init(struct omap_dss_board_info *board_data) struct omap_display_platform_data { struct omap_dss_board_info *board_data; /* TODO: Additional members to be added when PM is considered */ + + bool (*opt_clock_available)(const char *clk_role); }; struct omap_video_timings { -- 1.7.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-02-28 15:02 ` [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata Sumit Semwal @ 2011-02-28 16:03 ` Tomi Valkeinen 2011-03-01 5:42 ` Semwal, Sumit 0 siblings, 1 reply; 10+ messages in thread From: Tomi Valkeinen @ 2011-02-28 16:03 UTC (permalink / raw) To: Semwal, Sumit; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu 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@ti.com> > (based on implementation from Senthil) > > Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> > --- > 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. Or if it's clear that this should never happen, BUG_ON(!oh); Tomi ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-02-28 16:03 ` Tomi Valkeinen @ 2011-03-01 5:42 ` Semwal, Sumit 2011-03-01 6:19 ` Tomi Valkeinen 0 siblings, 1 reply; 10+ messages in thread From: Semwal, Sumit @ 2011-03-01 5:42 UTC (permalink / raw) To: Tomi Valkeinen; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu On Mon, Feb 28, 2011 at 9:33 PM, Tomi Valkeinen <tomi.valkeinen@ti.com> 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@ti.com> >> (based on implementation from Senthil) >> >> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> >> --- >> 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. > > 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? ~Sumit. > > Tomi > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-03-01 5:42 ` Semwal, Sumit @ 2011-03-01 6:19 ` Tomi Valkeinen 2011-03-01 6:27 ` Semwal, Sumit 0 siblings, 1 reply; 10+ messages in thread From: Tomi Valkeinen @ 2011-03-01 6:19 UTC (permalink / raw) To: Semwal, Sumit; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu 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@ti.com> 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@ti.com> > >> (based on implementation from Senthil) > >> > >> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> > >> --- > >> 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. > > 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 =). Tomi ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-03-01 6:19 ` Tomi Valkeinen @ 2011-03-01 6:27 ` Semwal, Sumit 2011-03-01 6:37 ` Tomi Valkeinen 0 siblings, 1 reply; 10+ messages in thread From: Semwal, Sumit @ 2011-03-01 6:27 UTC (permalink / raw) To: Tomi Valkeinen; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu On Tue, Mar 1, 2011 at 11:49 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> 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@ti.com> 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@ti.com> >> >> (based on implementation from Senthil) >> >> >> >> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> >> >> --- >> >> 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? > > Tomi > > > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-03-01 6:27 ` Semwal, Sumit @ 2011-03-01 6:37 ` Tomi Valkeinen 2011-03-01 6:41 ` Semwal, Sumit 0 siblings, 1 reply; 10+ messages in thread From: Tomi Valkeinen @ 2011-03-01 6:37 UTC (permalink / raw) To: Semwal, Sumit; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu 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@ti.com> 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@ti.com> 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@ti.com> > >> >> (based on implementation from Senthil) > >> >> > >> >> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> > >> >> --- > >> >> 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. Tomi ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata 2011-03-01 6:37 ` Tomi Valkeinen @ 2011-03-01 6:41 ` Semwal, Sumit 0 siblings, 0 replies; 10+ messages in thread From: Semwal, Sumit @ 2011-03-01 6:41 UTC (permalink / raw) To: Tomi Valkeinen; +Cc: linux-omap@vger.kernel.org, Guruswamy, Senthilvadivu On Tue, Mar 1, 2011 at 12:07 PM, Tomi Valkeinen <tomi.valkeinen@ti.com> 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@ti.com> 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@ti.com> 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@ti.com> >> >> >> (based on implementation from Senthil) >> >> >> >> >> >> Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> >> >> >> --- >> >> >> 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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Patch v2 2/2] OMAP2PLUS:DSS2: Use opt_clock_available from pdata 2011-02-28 15:02 [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Sumit Semwal 2011-02-28 15:02 ` [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata Sumit Semwal @ 2011-02-28 15:02 ` Sumit Semwal 2011-02-28 15:09 ` [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Semwal, Sumit 2 siblings, 0 replies; 10+ messages in thread From: Sumit Semwal @ 2011-02-28 15:02 UTC (permalink / raw) To: tomi.valkeinen, linux-omap; +Cc: Sumit Semwal hwmod databases provide information about which optional clocks are available for a given platform. This is available via a function pointer opt_clock_enable in pdata. Use this information during get/enable/disable/put of clocks. Signed-off-by: Sumit Semwal <sumit.semwal@ti.com> --- drivers/video/omap2/dss/dss.c | 46 ++++++++++++++++++++++++++-------------- 1 files changed, 30 insertions(+), 16 deletions(-) diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c index 5a93e66..3d0277d 100644 --- a/drivers/video/omap2/dss/dss.c +++ b/drivers/video/omap2/dss/dss.c @@ -699,6 +699,7 @@ static int dss_get_clock(struct clk **clock, const char *clk_name) static int dss_get_clocks(void) { int r; + struct omap_display_platform_data *pdata = dss.pdev->dev.platform_data; dss.dss_ick = NULL; dss.dss_fck = NULL; @@ -714,17 +715,28 @@ static int dss_get_clocks(void) if (r) goto err; - r = dss_get_clock(&dss.dss_sys_clk, "sys_clk"); - if (r) + if (!pdata->opt_clock_available) { + r = -ENODEV; goto err; + } - r = dss_get_clock(&dss.dss_tv_fck, "tv_clk"); - if (r) - goto err; + if (pdata->opt_clock_available("sys_clk")) { + r = dss_get_clock(&dss.dss_sys_clk, "sys_clk"); + if (r) + goto err; + } - r = dss_get_clock(&dss.dss_video_fck, "video_clk"); - if (r) - goto err; + if (pdata->opt_clock_available("tv_clk")) { + r = dss_get_clock(&dss.dss_tv_fck, "tv_clk"); + if (r) + goto err; + } + + if (pdata->opt_clock_available("video_clk")) { + r = dss_get_clock(&dss.dss_video_fck, "video_clk"); + if (r) + goto err; + } return 0; @@ -747,9 +759,11 @@ static void dss_put_clocks(void) { if (dss.dss_video_fck) clk_put(dss.dss_video_fck); - clk_put(dss.dss_tv_fck); + if (dss.dss_tv_fck) + clk_put(dss.dss_tv_fck); + if (dss.dss_sys_clk) + clk_put(dss.dss_sys_clk); clk_put(dss.dss_fck); - clk_put(dss.dss_sys_clk); clk_put(dss.dss_ick); } @@ -798,11 +812,11 @@ static void dss_clk_enable_no_ctx(enum dss_clock clks) clk_enable(dss.dss_ick); if (clks & DSS_CLK_FCK) clk_enable(dss.dss_fck); - if (clks & DSS_CLK_SYSCK) + if ((clks & DSS_CLK_SYSCK) && dss.dss_sys_clk) clk_enable(dss.dss_sys_clk); - if (clks & DSS_CLK_TVFCK) + if ((clks & DSS_CLK_TVFCK) && dss.dss_tv_fck) clk_enable(dss.dss_tv_fck); - if (clks & DSS_CLK_VIDFCK) + if ((clks & DSS_CLK_VIDFCK) && dss.dss_video_fck) clk_enable(dss.dss_video_fck); dss.num_clks_enabled += num_clks; @@ -826,11 +840,11 @@ static void dss_clk_disable_no_ctx(enum dss_clock clks) clk_disable(dss.dss_ick); if (clks & DSS_CLK_FCK) clk_disable(dss.dss_fck); - if (clks & DSS_CLK_SYSCK) + if ((clks & DSS_CLK_SYSCK) && dss.dss_sys_clk) clk_disable(dss.dss_sys_clk); - if (clks & DSS_CLK_TVFCK) + if ((clks & DSS_CLK_TVFCK) && dss.dss_tv_fck) clk_disable(dss.dss_tv_fck); - if (clks & DSS_CLK_VIDFCK) + if ((clks & DSS_CLK_VIDFCK) && dss.dss_video_fck) clk_disable(dss.dss_video_fck); dss.num_clks_enabled -= num_clks; -- 1.7.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod. 2011-02-28 15:02 [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Sumit Semwal 2011-02-28 15:02 ` [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata Sumit Semwal 2011-02-28 15:02 ` [Patch v2 2/2] OMAP2PLUS:DSS2: Use opt_clock_available from pdata Sumit Semwal @ 2011-02-28 15:09 ` Semwal, Sumit 2 siblings, 0 replies; 10+ messages in thread From: Semwal, Sumit @ 2011-02-28 15:09 UTC (permalink / raw) To: tomi.valkeinen, linux-omap; +Cc: Sumit Semwal Minor correction: On Mon, Feb 28, 2011 at 8:32 PM, Sumit Semwal <sumit.semwal@ti.com> wrote: <snip> > Based on top of: > http://gitorious.org/linux-omap-dss2/linux/commits/master > commit: ad1c76c: OMAP: Overo Palo43 LCD support The correct base is: http://gitorious.org/linux-omap-dss2/linux/commits/for-next commit: 799a626: MAINTAINERS: Update OMAP DSS maintainer Please let me know if you want me to rebase on top of master. BR, ~S. <snip> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2011-03-01 6:42 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-02-28 15:02 [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Sumit Semwal 2011-02-28 15:02 ` [Patch v2 1/2] OMAP2PLUS:DSS2: add opt_clock_available in pdata Sumit Semwal 2011-02-28 16:03 ` Tomi Valkeinen 2011-03-01 5:42 ` Semwal, Sumit 2011-03-01 6:19 ` Tomi Valkeinen 2011-03-01 6:27 ` Semwal, Sumit 2011-03-01 6:37 ` Tomi Valkeinen 2011-03-01 6:41 ` Semwal, Sumit 2011-02-28 15:02 ` [Patch v2 2/2] OMAP2PLUS:DSS2: Use opt_clock_available from pdata Sumit Semwal 2011-02-28 15:09 ` [Patch v2 0/2] OMAP2PLUS:DSS2: use opt-clocks information from hwmod Semwal, Sumit
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox