From: Roger Quadros <rogerq@ti.com> To: <paul@pwsan.com>, <tony@atomide.com> Cc: <bcousson@baylibre.com>, <t-kristo@ti.com>, <nsekhar@ti.com>, <linux-omap@vger.kernel.org>, <linux-kernel@vger.kernel.org>, Roger Quadros <rogerq@ti.com> Subject: [PATCH 2/4] ARM: OMAP2+ hwmod: Allow modules to disable HW_AUTO Date: Mon, 13 Mar 2017 13:53:14 +0200 [thread overview] Message-ID: <1489405996-10718-3-git-send-email-rogerq@ti.com> (raw) In-Reply-To: <1489405996-10718-1-git-send-email-rogerq@ti.com> Introduce HWMOD_CLKDM_NOAUTO flag that allows the hwmod's clockdomain to be prevented from HW_AUTO while the hwmod is active. This is needed to workaround some modules which don't function correctly with HW_AUTO. e.g. DCAN on DRA7. Signed-off-by: Roger Quadros <rogerq@ti.com> [nsekhar@ti.com: rebased to v4.9 kernel] Signed-off-by: Sekhar Nori <nsekhar@ti.com> --- arch/arm/mach-omap2/omap_hwmod.c | 4 ++-- arch/arm/mach-omap2/omap_hwmod.h | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index e8b9887..7a29f48 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -2092,7 +2092,7 @@ static int _enable(struct omap_hwmod *oh) r = (soc_ops.wait_target_ready) ? soc_ops.wait_target_ready(oh) : -EINVAL; - if (oh->clkdm) + if (oh->clkdm && !(oh->flags & HWMOD_CLKDM_NOAUTO)) clkdm_allow_idle(oh->clkdm); if (!r) { @@ -2149,7 +2149,7 @@ static int _idle(struct omap_hwmod *oh) _idle_sysc(oh); _del_initiator_dep(oh, mpu_oh); - if (oh->clkdm) + if (oh->clkdm && !(oh->flags & HWMOD_CLKDM_NOAUTO)) clkdm_deny_idle(oh->clkdm); if (oh->flags & HWMOD_BLOCK_WFI) diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h index 9e1c4ed..cda553a 100644 --- a/arch/arm/mach-omap2/omap_hwmod.h +++ b/arch/arm/mach-omap2/omap_hwmod.h @@ -531,6 +531,10 @@ struct omap_hwmod_omap4_prcm { * operate and they need to be handled at the same time as the main_clk. * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain * IPs like CPSW on DRA7, where clocks to this module cannot be disabled. + * HWMOD_CLKDM_NOAUTO: Allows the hwmod's clockdomain to be prevented from + * entering HW_AUTO while hwmod is active. This is needed to workaround + * some modules which don't function correctly with HW_AUTO. For example, + * DCAN on DRA7x SoC needs this to workaround errata i893. */ #define HWMOD_SWSUP_SIDLE (1 << 0) #define HWMOD_SWSUP_MSTANDBY (1 << 1) @@ -548,6 +552,7 @@ struct omap_hwmod_omap4_prcm { #define HWMOD_RECONFIG_IO_CHAIN (1 << 13) #define HWMOD_OPT_CLKS_NEEDED (1 << 14) #define HWMOD_NO_IDLE (1 << 15) +#define HWMOD_CLKDM_NOAUTO (1 << 16) /* * omap_hwmod._int_flags definitions -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@ti.com> To: paul@pwsan.com, tony@atomide.com Cc: bcousson@baylibre.com, t-kristo@ti.com, nsekhar@ti.com, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, Roger Quadros <rogerq@ti.com> Subject: [PATCH 2/4] ARM: OMAP2+ hwmod: Allow modules to disable HW_AUTO Date: Mon, 13 Mar 2017 13:53:14 +0200 [thread overview] Message-ID: <1489405996-10718-3-git-send-email-rogerq@ti.com> (raw) In-Reply-To: <1489405996-10718-1-git-send-email-rogerq@ti.com> Introduce HWMOD_CLKDM_NOAUTO flag that allows the hwmod's clockdomain to be prevented from HW_AUTO while the hwmod is active. This is needed to workaround some modules which don't function correctly with HW_AUTO. e.g. DCAN on DRA7. Signed-off-by: Roger Quadros <rogerq@ti.com> [nsekhar@ti.com: rebased to v4.9 kernel] Signed-off-by: Sekhar Nori <nsekhar@ti.com> --- arch/arm/mach-omap2/omap_hwmod.c | 4 ++-- arch/arm/mach-omap2/omap_hwmod.h | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index e8b9887..7a29f48 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -2092,7 +2092,7 @@ static int _enable(struct omap_hwmod *oh) r = (soc_ops.wait_target_ready) ? soc_ops.wait_target_ready(oh) : -EINVAL; - if (oh->clkdm) + if (oh->clkdm && !(oh->flags & HWMOD_CLKDM_NOAUTO)) clkdm_allow_idle(oh->clkdm); if (!r) { @@ -2149,7 +2149,7 @@ static int _idle(struct omap_hwmod *oh) _idle_sysc(oh); _del_initiator_dep(oh, mpu_oh); - if (oh->clkdm) + if (oh->clkdm && !(oh->flags & HWMOD_CLKDM_NOAUTO)) clkdm_deny_idle(oh->clkdm); if (oh->flags & HWMOD_BLOCK_WFI) diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h index 9e1c4ed..cda553a 100644 --- a/arch/arm/mach-omap2/omap_hwmod.h +++ b/arch/arm/mach-omap2/omap_hwmod.h @@ -531,6 +531,10 @@ struct omap_hwmod_omap4_prcm { * operate and they need to be handled at the same time as the main_clk. * HWMOD_NO_IDLE: Do not idle the hwmod at all. Useful to handle certain * IPs like CPSW on DRA7, where clocks to this module cannot be disabled. + * HWMOD_CLKDM_NOAUTO: Allows the hwmod's clockdomain to be prevented from + * entering HW_AUTO while hwmod is active. This is needed to workaround + * some modules which don't function correctly with HW_AUTO. For example, + * DCAN on DRA7x SoC needs this to workaround errata i893. */ #define HWMOD_SWSUP_SIDLE (1 << 0) #define HWMOD_SWSUP_MSTANDBY (1 << 1) @@ -548,6 +552,7 @@ struct omap_hwmod_omap4_prcm { #define HWMOD_RECONFIG_IO_CHAIN (1 << 13) #define HWMOD_OPT_CLKS_NEEDED (1 << 14) #define HWMOD_NO_IDLE (1 << 15) +#define HWMOD_CLKDM_NOAUTO (1 << 16) /* * omap_hwmod._int_flags definitions -- 2.7.4
next prev parent reply other threads:[~2017-03-13 11:54 UTC|newest] Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-13 11:53 [PATCH 0/4] ARM: DRA7: Fix DCAN1 stuck-in-transition Roger Quadros 2017-03-13 11:53 ` Roger Quadros 2017-03-13 11:53 ` [PATCH 1/4] ARM: OMAP2+: omap_hwmod: provide space for more hwmod flags Roger Quadros 2017-03-13 11:53 ` Roger Quadros 2017-03-13 13:35 ` Sekhar Nori 2017-03-13 13:35 ` Sekhar Nori 2017-03-14 10:49 ` Roger Quadros 2017-03-14 10:49 ` Roger Quadros 2017-03-14 12:07 ` [PATCH v2 " Roger Quadros 2017-03-14 12:07 ` Roger Quadros 2017-03-13 11:53 ` Roger Quadros [this message] 2017-03-13 11:53 ` [PATCH 2/4] ARM: OMAP2+ hwmod: Allow modules to disable HW_AUTO Roger Quadros 2017-03-14 15:48 ` Tony Lindgren 2017-03-16 7:59 ` Roger Quadros 2017-03-16 7:59 ` Roger Quadros 2017-03-16 8:04 ` Roger Quadros 2017-03-16 8:04 ` Roger Quadros 2017-03-16 15:24 ` Tony Lindgren 2017-03-17 8:39 ` Roger Quadros 2017-03-17 8:39 ` Roger Quadros 2017-03-17 8:58 ` [PATCH v2 " Roger Quadros 2017-03-17 8:58 ` Roger Quadros 2017-03-23 20:59 ` Tony Lindgren 2017-03-13 11:53 ` [PATCH 3/4] ARM: DRA7: hwmod: Fix DCAN1 stuck in transition Roger Quadros 2017-03-13 11:53 ` Roger Quadros 2017-03-13 11:53 ` [PATCH 4/4] ARM: DRA7: hwmod_data: Prevent wait_target_disable error for usb_otg_ss Roger Quadros 2017-03-13 11:53 ` Roger Quadros 2017-03-13 11:55 ` [PATCH 0/4] ARM: DRA7: Fix DCAN1 stuck-in-transition Roger Quadros 2017-03-13 11:55 ` Roger Quadros
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=1489405996-10718-3-git-send-email-rogerq@ti.com \ --to=rogerq@ti.com \ --cc=bcousson@baylibre.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=nsekhar@ti.com \ --cc=paul@pwsan.com \ --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: linkBe 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.