diff options
Diffstat (limited to 'clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch')
-rw-r--r-- | clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch b/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch new file mode 100644 index 000000000..c1ef68279 --- /dev/null +++ b/clk-ti-fix-flag-space-conflict-with-clkctrl-clocks.patch @@ -0,0 +1,58 @@ +From patchwork Tue Mar 27 17:47:04 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: clk: ti: fix flag space conflict with clkctrl clocks +From: Tero Kristo <t-kristo@ti.com> +X-Patchwork-Id: 10311335 +Message-Id: <1522172824-14094-1-git-send-email-t-kristo@ti.com> +To: <sboyd@kernel.org>, <mturquette@baylibre.com>, + <linux-omap@vger.kernel.org>, <linux-clk@vger.kernel.org>, + <tony@atomide.com> +Cc: <arnd@arndb.de>, <linux-arm-kernel@lists.infradead.org> +Date: Tue, 27 Mar 2018 20:47:04 +0300 + +The introduction of support for CLK_SET_RATE_PARENT flag for clkctrl +clocks used a generic clock flag, which causes a conflict with the +rest of the clkctrl flags, namely the NO_IDLEST flag. This can cause +boot failures on certain platforms where this flag is introduced, by +omitting the wait for the clockctrl module to be fully enabled before +proceeding with rest of the code. + +Fix this by moving all the clkctrl specific flags to their own bit-range. + +Signed-off-by: Tero Kristo <t-kristo@ti.com> +Fixes: 49159a9dc3da ("clk: ti: add support for CLK_SET_RATE_PARENT flag") +Reported-by: Christophe Lyon <christophe.lyon@linaro.org> +Tested-by: Tony Lindgren <tony@atomide.com> +--- + drivers/clk/ti/clock.h | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/drivers/clk/ti/clock.h b/drivers/clk/ti/clock.h +index 90b86aa..b582780 100644 +--- a/drivers/clk/ti/clock.h ++++ b/drivers/clk/ti/clock.h +@@ -76,6 +76,11 @@ enum { + #define CLKF_CORE (1 << 9) + #define CLKF_J_TYPE (1 << 10) + ++/* CLKCTRL flags */ ++#define CLKF_SW_SUP BIT(5) ++#define CLKF_HW_SUP BIT(6) ++#define CLKF_NO_IDLEST BIT(7) ++ + #define CLK(dev, con, ck) \ + { \ + .lk = { \ +@@ -185,10 +190,6 @@ struct omap_clkctrl_data { + extern const struct omap_clkctrl_data dm814_clkctrl_data[]; + extern const struct omap_clkctrl_data dm816_clkctrl_data[]; + +-#define CLKF_SW_SUP BIT(0) +-#define CLKF_HW_SUP BIT(1) +-#define CLKF_NO_IDLEST BIT(2) +- + typedef void (*ti_of_clk_init_cb_t)(void *, struct device_node *); + + struct clk *ti_clk_register(struct device *dev, struct clk_hw *hw, |