diff mbox

ARM: OMAP2+: hwmod_core: enable optional clocks before main clock

Message ID 1513934763-23966-1-git-send-email-t-kristo@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Tero Kristo Dec. 22, 2017, 9:26 a.m. UTC
The optional clocks must be enabled before the main clock after the
transition to clkctrl controlled clocks is done. Otherwise the module
we attempt to enable might be stuck in transition.

Reported-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
Hi Tony,

This patch fixes a regression seen in linux-next, where certain peripherals
fail to enable after the clkctrl changes are in. The case seen has been
with mcasp3, where it fails to transition to enabled during the audio
driver probe. Not sure where you want to pick this up, maybe as early
rc fixes if its too late to push this to linux-next?

 arch/arm/mach-omap2/omap_hwmod.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

J, KEERTHY Dec. 22, 2017, 9:40 a.m. UTC | #1
On Friday 22 December 2017 02:56 PM, Tero Kristo wrote:
> The optional clocks must be enabled before the main clock after the
> transition to clkctrl controlled clocks is done. Otherwise the module
> we attempt to enable might be stuck in transition.
> 
> Reported-by: Keerthy <j-keerthy@ti.com>
> Signed-off-by: Tero Kristo <t-kristo@ti.com>

Tested the patch on both DRA7-EVM and DRA72-EVM. I no longer see the issue:

Tested-by: Keerthy <j-keerthy@ti.com>

> ---
> Hi Tony,
> 
> This patch fixes a regression seen in linux-next, where certain peripherals
> fail to enable after the clkctrl changes are in. The case seen has been
> with mcasp3, where it fails to transition to enabled during the audio
> driver probe. Not sure where you want to pick this up, maybe as early
> rc fixes if its too late to push this to linux-next?
> 
>  arch/arm/mach-omap2/omap_hwmod.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> index 7324048..340d05c 100644
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -976,6 +976,9 @@ static int _enable_clocks(struct omap_hwmod *oh)
>  
>  	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
>  
> +	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
> +		_enable_optional_clocks(oh);
> +
>  	if (oh->_clk)
>  		clk_enable(oh->_clk);
>  
> @@ -984,9 +987,6 @@ static int _enable_clocks(struct omap_hwmod *oh)
>  			clk_enable(os->_clk);
>  	}
>  
> -	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
> -		_enable_optional_clocks(oh);
> -
>  	/* The opt clocks are controlled by the device driver. */
>  
>  	return 0;
> 
--
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
Tony Lindgren Dec. 22, 2017, 6:51 p.m. UTC | #2
* Keerthy <j-keerthy@ti.com> [171222 09:43]:
> 
> 
> On Friday 22 December 2017 02:56 PM, Tero Kristo wrote:
> > The optional clocks must be enabled before the main clock after the
> > transition to clkctrl controlled clocks is done. Otherwise the module
> > we attempt to enable might be stuck in transition.
> > 
> > Reported-by: Keerthy <j-keerthy@ti.com>
> > Signed-off-by: Tero Kristo <t-kristo@ti.com>
> 
> Tested the patch on both DRA7-EVM and DRA72-EVM. I no longer see the issue:
> 
> Tested-by: Keerthy <j-keerthy@ti.com>
> 
> > ---
> > Hi Tony,
> > 
> > This patch fixes a regression seen in linux-next, where certain peripherals
> > fail to enable after the clkctrl changes are in. The case seen has been
> > with mcasp3, where it fails to transition to enabled during the audio
> > driver probe. Not sure where you want to pick this up, maybe as early
> > rc fixes if its too late to push this to linux-next?

Thanks applying into omap-for-v4.16/soc, yeah we should
get it merged during the merge window as a fix.

Regards,

Tony



> >  arch/arm/mach-omap2/omap_hwmod.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> > index 7324048..340d05c 100644
> > --- a/arch/arm/mach-omap2/omap_hwmod.c
> > +++ b/arch/arm/mach-omap2/omap_hwmod.c
> > @@ -976,6 +976,9 @@ static int _enable_clocks(struct omap_hwmod *oh)
> >  
> >  	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
> >  
> > +	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
> > +		_enable_optional_clocks(oh);
> > +
> >  	if (oh->_clk)
> >  		clk_enable(oh->_clk);
> >  
> > @@ -984,9 +987,6 @@ static int _enable_clocks(struct omap_hwmod *oh)
> >  			clk_enable(os->_clk);
> >  	}
> >  
> > -	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
> > -		_enable_optional_clocks(oh);
> > -
> >  	/* The opt clocks are controlled by the device driver. */
> >  
> >  	return 0;
> > 
--
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
Tero Kristo Feb. 20, 2018, 12:20 p.m. UTC | #3
On 22/12/17 20:51, Tony Lindgren wrote:
> * Keerthy <j-keerthy@ti.com> [171222 09:43]:
>>
>>
>> On Friday 22 December 2017 02:56 PM, Tero Kristo wrote:
>>> The optional clocks must be enabled before the main clock after the
>>> transition to clkctrl controlled clocks is done. Otherwise the module
>>> we attempt to enable might be stuck in transition.
>>>
>>> Reported-by: Keerthy <j-keerthy@ti.com>
>>> Signed-off-by: Tero Kristo <t-kristo@ti.com>
>>
>> Tested the patch on both DRA7-EVM and DRA72-EVM. I no longer see the issue:
>>
>> Tested-by: Keerthy <j-keerthy@ti.com>
>>
>>> ---
>>> Hi Tony,
>>>
>>> This patch fixes a regression seen in linux-next, where certain peripherals
>>> fail to enable after the clkctrl changes are in. The case seen has been
>>> with mcasp3, where it fails to transition to enabled during the audio
>>> driver probe. Not sure where you want to pick this up, maybe as early
>>> rc fixes if its too late to push this to linux-next?
> 
> Thanks applying into omap-for-v4.16/soc, yeah we should
> get it merged during the merge window as a fix.

Tony,

I think this missed the merge for some reason? Can you queue this up as 
a fix as its still needed?

-Tero

> 
> Regards,
> 
> Tony
> 
> 
> 
>>>   arch/arm/mach-omap2/omap_hwmod.c | 6 +++---
>>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
>>> index 7324048..340d05c 100644
>>> --- a/arch/arm/mach-omap2/omap_hwmod.c
>>> +++ b/arch/arm/mach-omap2/omap_hwmod.c
>>> @@ -976,6 +976,9 @@ static int _enable_clocks(struct omap_hwmod *oh)
>>>   
>>>   	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
>>>   
>>> +	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
>>> +		_enable_optional_clocks(oh);
>>> +
>>>   	if (oh->_clk)
>>>   		clk_enable(oh->_clk);
>>>   
>>> @@ -984,9 +987,6 @@ static int _enable_clocks(struct omap_hwmod *oh)
>>>   			clk_enable(os->_clk);
>>>   	}
>>>   
>>> -	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
>>> -		_enable_optional_clocks(oh);
>>> -
>>>   	/* The opt clocks are controlled by the device driver. */
>>>   
>>>   	return 0;
>>>

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
--
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
Tony Lindgren Feb. 22, 2018, 5:20 p.m. UTC | #4
* Tero Kristo <t-kristo@ti.com> [180220 11:21]:
> I think this missed the merge for some reason? Can you queue this up as a
> fix as its still needed?

Yes sorry I noticed too it missed the merge window. I sent
a pull request for that last week in the fixes:

[GIT PULL] omap fixes for v4.16-rc cycle

So it should get there hopefully this week.

Regards,

Tony
--
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
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 7324048..340d05c 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -976,6 +976,9 @@  static int _enable_clocks(struct omap_hwmod *oh)
 
 	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
 
+	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
+		_enable_optional_clocks(oh);
+
 	if (oh->_clk)
 		clk_enable(oh->_clk);
 
@@ -984,9 +987,6 @@  static int _enable_clocks(struct omap_hwmod *oh)
 			clk_enable(os->_clk);
 	}
 
-	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
-		_enable_optional_clocks(oh);
-
 	/* The opt clocks are controlled by the device driver. */
 
 	return 0;