clk: ti: fix flag space conflict with clkctrl clocks

Message ID 1522172824-14094-1-git-send-email-t-kristo@ti.com
State New
Headers show
Series
  • clk: ti: fix flag space conflict with clkctrl clocks
Related show

Commit Message

Tero Kristo March 27, 2018, 5:47 p.m.
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>
---
 drivers/clk/ti/clock.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

-- 
1.9.1

--
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

Comments

Tony Lindgren March 27, 2018, 8:55 p.m. | #1
* Tero Kristo <t-kristo@ti.com> [180327 17:48]:
> 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>


I boot tested this on am437x-idk and bbb with multi_v7_defconfig, so:

Tested-by: Tony Lindgren <tony@atomide.com>

--
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 March 29, 2018, 6:25 p.m. | #2
On 27/03/18 20:47, Tero Kristo wrote:
> 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>


Stephen, can you pick this up as a late fix?

-Tero

> ---

>   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,

> 


--
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
Stephen Boyd April 5, 2018, 8:05 p.m. | #3
Quoting Tero Kristo (2018-03-29 11:25:07)
> On 27/03/18 20:47, Tero Kristo wrote:

> > 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>

> 

> Stephen, can you pick this up as a late fix?

> 


Sorry I was traveling for a week. I'll pick this up for this merge
window and then stable can get it.
--
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

Patch

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,