From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benoit Cousson Subject: Re: [PATCHv2 02/12] ARM: OMAP2+: hwmod code/data: fix 32K sync timer Date: Wed, 4 Jul 2012 18:57:10 +0200 Message-ID: <4FF475E6.3060308@ti.com> References: <20120611004502.20034.8840.stgit@dusk> <20120611004555.20034.87035.stgit@dusk> <4FDA15AA.6090704@ti.com> <4FDA45F5.9090300@ti.com> <4FDB387C.7030003@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit Return-path: Received: from devils.ext.ti.com ([198.47.26.153]:49753 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751369Ab2GDQ5S (ORCPT ); Wed, 4 Jul 2012 12:57:18 -0400 In-Reply-To: Sender: linux-omap-owner@vger.kernel.org List-Id: linux-omap@vger.kernel.org To: Paul Walmsley Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Tony Lindgren , Tero Kristo , Kevin Hilman , Vaibhav Hiremath Hi Paul, On 07/04/2012 02:53 PM, Paul Walmsley wrote: > On Wed, 4 Jul 2012, Paul Walmsley wrote: > >> So the updated patch below uses a clockdomain data flag for this >> instead. > > Here's a version that's a little cleaner. No functional changes. [...] > @@ -1141,8 +1144,16 @@ static void _enable_sysc(struct omap_hwmod *oh) > sf = oh->class->sysc->sysc_flags; > > if (sf & SYSC_HAS_SIDLEMODE) { > - idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ? > - HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART; > + clkdm_act = ((oh->clkdm && > + oh->clkdm->flags & CLKDM_ACTIVE_WITH_MPU) || > + (oh->_clk->clkdm && This is crashing on OMAP4 due to a NULL oh->_clk that can happen on some hwmod. + (oh->_clk && oh->_clk->clkdm && Is fixing the issue. Regards, Benoit > + oh->_clk->clkdm->flags & CLKDM_ACTIVE_WITH_MPU)); > + if (clkdm_act && !(oh->class->sysc->idlemodes & > + (SIDLE_SMART | SIDLE_SMART_WKUP))) > + idlemode = HWMOD_IDLEMODE_FORCE; > + else > + idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ? > + HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART; > _set_slave_idlemode(oh, idlemode, &v); > } > From mboxrd@z Thu Jan 1 00:00:00 1970 From: b-cousson@ti.com (Benoit Cousson) Date: Wed, 4 Jul 2012 18:57:10 +0200 Subject: [PATCHv2 02/12] ARM: OMAP2+: hwmod code/data: fix 32K sync timer In-Reply-To: References: <20120611004502.20034.8840.stgit@dusk> <20120611004555.20034.87035.stgit@dusk> <4FDA15AA.6090704@ti.com> <4FDA45F5.9090300@ti.com> <4FDB387C.7030003@ti.com> Message-ID: <4FF475E6.3060308@ti.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Paul, On 07/04/2012 02:53 PM, Paul Walmsley wrote: > On Wed, 4 Jul 2012, Paul Walmsley wrote: > >> So the updated patch below uses a clockdomain data flag for this >> instead. > > Here's a version that's a little cleaner. No functional changes. [...] > @@ -1141,8 +1144,16 @@ static void _enable_sysc(struct omap_hwmod *oh) > sf = oh->class->sysc->sysc_flags; > > if (sf & SYSC_HAS_SIDLEMODE) { > - idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ? > - HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART; > + clkdm_act = ((oh->clkdm && > + oh->clkdm->flags & CLKDM_ACTIVE_WITH_MPU) || > + (oh->_clk->clkdm && This is crashing on OMAP4 due to a NULL oh->_clk that can happen on some hwmod. + (oh->_clk && oh->_clk->clkdm && Is fixing the issue. Regards, Benoit > + oh->_clk->clkdm->flags & CLKDM_ACTIVE_WITH_MPU)); > + if (clkdm_act && !(oh->class->sysc->idlemodes & > + (SIDLE_SMART | SIDLE_SMART_WKUP))) > + idlemode = HWMOD_IDLEMODE_FORCE; > + else > + idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ? > + HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART; > _set_slave_idlemode(oh, idlemode, &v); > } >