All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Kemnade <andreas@kemnade.info>
To: t-kristo@ti.com, mturquette@baylibre.com, sboyd@kernel.org,
	linux-omap@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org, bcousson@baylibre.com,
	paul@pwsan.com, tony@atomide.com, letux-kernel@openphoenux.org
Cc: Andreas Kemnade <andreas@kemnade.info>
Subject: [PATCH v2 3/3] arm: omap_hwmod disable ick autoidling when a hwmod requires that
Date: Sat, 10 Nov 2018 21:31:15 +0100	[thread overview]
Message-ID: <20181110203115.13335-4-andreas@kemnade.info> (raw)
In-Reply-To: <20181110203115.13335-1-andreas@kemnade.info>

Deny autoidle for hwmods with the OCPIF_SWSUP_IDLE flag,
that makes hwmods working properly which cannot handle
autoidle properly in lower power states.
Affected is e. g. the omap_hdq.
Since an ick might have mulitple users, autoidle is disabled
when an individual user requires that rather than in
_setup_iclk_autoidle. dss_ick is an example for that.

Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
---
 Comments to v1 to this patch were worked into a new 2/3
---
 arch/arm/mach-omap2/omap_hwmod.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 083dcd9942ce..3a86ba414973 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1002,8 +1002,10 @@ static int _enable_clocks(struct omap_hwmod *oh)
 		clk_enable(oh->_clk);
 
 	list_for_each_entry(os, &oh->slave_ports, node) {
-		if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE))
+		if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) {
+			omap2_clk_deny_idle(os->_clk);
 			clk_enable(os->_clk);
+		}
 	}
 
 	/* The opt clocks are controlled by the device driver. */
@@ -1055,8 +1057,10 @@ static int _disable_clocks(struct omap_hwmod *oh)
 		clk_disable(oh->_clk);
 
 	list_for_each_entry(os, &oh->slave_ports, node) {
-		if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE))
+		if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) {
 			clk_disable(os->_clk);
+			omap2_clk_allow_idle(os->_clk);
+		}
 	}
 
 	if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
@@ -2425,9 +2429,13 @@ static void __init _setup_iclk_autoidle(struct omap_hwmod *oh)
 			continue;
 
 		if (os->flags & OCPIF_SWSUP_IDLE) {
-			/* XXX omap_iclk_deny_idle(c); */
+			/*
+			 * we might have multiple users of one iclk with
+			 * different requirements, disable autoidle when
+			 * the module is enabled, e.g. dss iclk
+			 */
 		} else {
-			/* XXX omap_iclk_allow_idle(c); */
+			/* we are enabling autoidle afterwards anyways */
 			clk_enable(os->_clk);
 		}
 	}
-- 
2.11.0


  parent reply	other threads:[~2018-11-10 20:31 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-10 20:31 [PATCH v2 0/3] mach-omap2: handle autoidle denial Andreas Kemnade
2018-11-10 20:31 ` [PATCH v2 1/3] clk: ti: add a usecount for autoidle Andreas Kemnade
2018-11-10 20:31 ` [PATCH v2 2/3] clk: ti: check clock type before doing autoidle ops Andreas Kemnade
2018-11-30  0:25   ` Stephen Boyd
2018-11-30  0:25     ` Stephen Boyd
2018-11-30  6:15     ` Andreas Kemnade
2018-11-30  7:20       ` Stephen Boyd
2018-11-30  7:35         ` Tero Kristo
2018-11-30  7:35           ` Tero Kristo
2018-11-30  7:57           ` Stephen Boyd
2018-11-30  9:20             ` Tero Kristo
2018-11-30  9:20               ` Tero Kristo
2018-11-30 12:17               ` Andreas Kemnade
2018-11-30 12:17                 ` Andreas Kemnade
2018-11-30 15:37               ` Tony Lindgren
2018-11-30 15:37                 ` Tony Lindgren
2018-11-30 23:51                 ` Stephen Boyd
2018-12-03 15:39                   ` Tony Lindgren
2018-12-03 16:22                     ` Andreas Kemnade
2018-12-04 16:45                       ` Tony Lindgren
2018-12-27 20:12                         ` Andreas Kemnade
2018-12-28 20:02                           ` Tony Lindgren
2018-12-31  7:23                             ` Tero Kristo
2018-12-31  7:23                               ` Tero Kristo
2018-12-31  8:30                               ` Andreas Kemnade
2018-12-31  8:30                                 ` Andreas Kemnade
2019-01-03 23:39                                 ` Stephen Boyd
2019-01-04  7:28                                   ` Tero Kristo
2019-01-04  7:28                                     ` Tero Kristo
2019-01-11 22:49                                     ` Stephen Boyd
2019-01-14  8:25                                       ` Tero Kristo
2019-01-14  8:25                                         ` Tero Kristo
2018-12-03 17:06                     ` Stephen Boyd
2018-11-10 20:31 ` Andreas Kemnade [this message]
2018-11-30  0:26 ` [PATCH v2 0/3] mach-omap2: handle autoidle denial Stephen Boyd
2018-11-30  0:26   ` Stephen Boyd
2018-11-30  7:37   ` Tero Kristo
2018-11-30  7:37     ` Tero Kristo
2018-11-30  7:57     ` Stephen Boyd
2018-11-30  9:21       ` Tero Kristo
2018-11-30  9:21         ` Tero Kristo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181110203115.13335-4-andreas@kemnade.info \
    --to=andreas@kemnade.info \
    --cc=bcousson@baylibre.com \
    --cc=letux-kernel@openphoenux.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=paul@pwsan.com \
    --cc=sboyd@kernel.org \
    --cc=t-kristo@ti.com \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.