Message ID | 4FDEF668.6050108@ti.com |
---|---|
State | New |
Headers | show |
Hi On Mon, 18 Jun 2012, Cousson, Benoit wrote: > I guess that patch need to be revisited based on discussion we had and > the patch you proposed in [1]. Assuming Tony is OK, it should be > probably part of the -rc, because this domain should not have been > introduced in 3.5-rc1 at all for OMAP4. Well as mentioned already on the lists, these clockdomains clearly exist; they are documented in the TRM and functional specification, and make sense from a chip perspective. For 3.6, I've already agreed to remove those clockdomains, even though it doesn't really match what's there on the chip. But I think 3.6 is the right time to do that. > So it will be better to revert the patch that introduced that first > before adding any new fix that will rely on a code that will disappear. > > In fact, I think the proper way to fix that while maintaining the > OMAP2&3 way of dealing with clkdm is to ensure that at least one clkdm > is there in either hwmod or the main_clk. That will fix these issues and > the one that will append when the fake main_clk will be removed. > > Here is a patch that is doing that. Please document what systems this has been tested on. > Thanks, > Benoit > > [1] http://www.mail-archive.com/linux-omap@vger.kernel.org/msg70177.html > > > --- > >From e5ffe6533236125c3c0b5eff883bfc1cf3cbe9f4 Mon Sep 17 00:00:00 2001 > From: Benoit Cousson <b-cousson@ti.com> > Date: Fri, 15 Jun 2012 11:26:49 +0200 > Subject: [PATCH] ARM: OMAP2+: hwmod: Do not check clkdm for main_clk if oh does have one > > When a clkdm is handled directly at the hwmod level, there is no need to handle > it with the main_clk as well. It is thus useless to complain about the missing clkdm for the main_clk in that case. > > Warn only if the clkdm is missing in both main_clk and hwmod. > > Init hwmod clkdm first to ensure it will be there when the main_clk > will be initialized. > > Signed-off-by: Benoit Cousson <b-cousson@ti.com> > Cc: Paul Walmsley <paul@pwsan.com> > --- > arch/arm/mach-omap2/omap_hwmod.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c > index 162f9c7..f33f4e2 100644 > --- a/arch/arm/mach-omap2/omap_hwmod.c > +++ b/arch/arm/mach-omap2/omap_hwmod.c > @@ -609,7 +609,7 @@ static int _init_main_clk(struct omap_hwmod *oh) > return -EINVAL; > } > > - if (!oh->_clk->clkdm) > + if (!oh->_clk->clkdm && !oh->clkdm) > pr_warning("omap_hwmod: %s: missing clockdomain for %s.\n", > oh->main_clk, oh->_clk->name); > > @@ -1339,10 +1339,10 @@ static int _init_clocks(struct omap_hwmod *oh, void *data) > > pr_debug("omap_hwmod: %s: looking up clocks\n", oh->name); > > + ret |= _init_clkdm(oh); > ret |= _init_main_clk(oh); > ret |= _init_interface_clks(oh); > ret |= _init_opt_clks(oh); > - ret |= _init_clkdm(oh); > > if (!ret) > oh->_state = _HWMOD_STATE_CLKS_INITED; > -- > 1.7.0.4 > > > - Paul
Hi Paul, On 6/18/2012 5:45 PM, Paul Walmsley wrote: > Hi > > On Mon, 18 Jun 2012, Cousson, Benoit wrote: > >> I guess that patch need to be revisited based on discussion we had and >> the patch you proposed in [1]. Assuming Tony is OK, it should be >> probably part of the -rc, because this domain should not have been >> introduced in 3.5-rc1 at all for OMAP4. > > Well as mentioned already on the lists, these clockdomains clearly exist; > they are documented in the TRM and functional specification, and make > sense from a chip perspective. OK, let's clarify: These are not clock domains for PRCM standpoint. These are the clock generators inside the PRCM, but they do not follow the functional clock domain mechanism at all. Because of that they do not have any regular clkdm registers and that's why it does not worth using the current clkdm infrastructure since there is no SW control for them. What is missing to make these domains valid is to extend the current definition to handle both the clock consumer domains and the clock generators. > For 3.6, I've already agreed to remove those clockdomains, even though it > doesn't really match what's there on the chip. But I think 3.6 is the > right time to do that. OK, fair enough. I'll base the further cleanup series on that one. >> So it will be better to revert the patch that introduced that first >> before adding any new fix that will rely on a code that will disappear. >> >> In fact, I think the proper way to fix that while maintaining the >> OMAP2&3 way of dealing with clkdm is to ensure that at least one clkdm >> is there in either hwmod or the main_clk. That will fix these issues and >> the one that will append when the fake main_clk will be removed. >> >> Here is a patch that is doing that. > > Please document what systems this has been tested on. For the moment, Thunderbird 13.0.1 only since I do not have any board accessible :-(. Regards, Benoit
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 162f9c7..f33f4e2 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -609,7 +609,7 @@ static int _init_main_clk(struct omap_hwmod *oh) return -EINVAL; } - if (!oh->_clk->clkdm) + if (!oh->_clk->clkdm && !oh->clkdm) pr_warning("omap_hwmod: %s: missing clockdomain for %s.\n", oh->main_clk, oh->_clk->name); @@ -1339,10 +1339,10 @@ static int _init_clocks(struct omap_hwmod *oh, void *data) pr_debug("omap_hwmod: %s: looking up clocks\n", oh->name); + ret |= _init_clkdm(oh); ret |= _init_main_clk(oh); ret |= _init_interface_clks(oh); ret |= _init_opt_clks(oh); - ret |= _init_clkdm(oh); if (!ret) oh->_state = _HWMOD_STATE_CLKS_INITED;