222-v6.3-clk-mediatek-clk-mtk-Propagate-struct-device-for-com.patch 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. From f23375db001ec0fe9f565be75eff43adde15407e Mon Sep 17 00:00:00 2001
  2. From: AngeloGioacchino Del Regno <[email protected]>
  3. Date: Fri, 20 Jan 2023 10:20:35 +0100
  4. Subject: [PATCH 03/15] clk: mediatek: clk-mtk: Propagate struct device for
  5. composites
  6. Like done for cpumux clocks, propagate struct device for composite
  7. clocks registered through clk-mtk helpers to be able to get runtime
  8. pm support for MTK clocks.
  9. Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
  10. Tested-by: Miles Chen <[email protected]>
  11. Link: https://lore.kernel.org/r/[email protected]
  12. Tested-by: Mingming Su <[email protected]>
  13. Signed-off-by: Stephen Boyd <[email protected]>
  14. [[email protected]: remove parts not relevant for OpenWrt]
  15. ---
  16. drivers/clk/mediatek/clk-mt2701.c | 10 ++++++----
  17. drivers/clk/mediatek/clk-mt2712.c | 12 ++++++++----
  18. drivers/clk/mediatek/clk-mt7622.c | 8 +++++---
  19. drivers/clk/mediatek/clk-mt7629.c | 8 +++++---
  20. drivers/clk/mediatek/clk-mtk.c | 11 ++++++-----
  21. drivers/clk/mediatek/clk-mtk.h | 3 ++-
  22. 6 files changed, 32 insertions(+), 20 deletions(-)
  23. --- a/drivers/clk/mediatek/clk-mt2701.c
  24. +++ b/drivers/clk/mediatek/clk-mt2701.c
  25. @@ -677,8 +677,9 @@ static int mtk_topckgen_init(struct plat
  26. mtk_clk_register_factors(top_fixed_divs, ARRAY_SIZE(top_fixed_divs),
  27. clk_data);
  28. - mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
  29. - base, &mt2701_clk_lock, clk_data);
  30. + mtk_clk_register_composites(&pdev->dev, top_muxes,
  31. + ARRAY_SIZE(top_muxes), base,
  32. + &mt2701_clk_lock, clk_data);
  33. mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
  34. base, &mt2701_clk_lock, clk_data);
  35. @@ -897,8 +898,9 @@ static int mtk_pericfg_init(struct platf
  36. mtk_clk_register_gates(&pdev->dev, node, peri_clks,
  37. ARRAY_SIZE(peri_clks), clk_data);
  38. - mtk_clk_register_composites(peri_muxs, ARRAY_SIZE(peri_muxs), base,
  39. - &mt2701_clk_lock, clk_data);
  40. + mtk_clk_register_composites(&pdev->dev, peri_muxs,
  41. + ARRAY_SIZE(peri_muxs), base,
  42. + &mt2701_clk_lock, clk_data);
  43. r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
  44. if (r)
  45. --- a/drivers/clk/mediatek/clk-mt2712.c
  46. +++ b/drivers/clk/mediatek/clk-mt2712.c
  47. @@ -1320,8 +1320,9 @@ static int clk_mt2712_top_probe(struct p
  48. mtk_clk_register_factors(top_early_divs, ARRAY_SIZE(top_early_divs),
  49. top_clk_data);
  50. mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), top_clk_data);
  51. - mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes), base,
  52. - &mt2712_clk_lock, top_clk_data);
  53. + mtk_clk_register_composites(&pdev->dev, top_muxes,
  54. + ARRAY_SIZE(top_muxes), base,
  55. + &mt2712_clk_lock, top_clk_data);
  56. mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs), base,
  57. &mt2712_clk_lock, top_clk_data);
  58. mtk_clk_register_gates(&pdev->dev, node, top_clks,
  59. @@ -1395,8 +1396,11 @@ static int clk_mt2712_mcu_probe(struct p
  60. clk_data = mtk_alloc_clk_data(CLK_MCU_NR_CLK);
  61. - mtk_clk_register_composites(mcu_muxes, ARRAY_SIZE(mcu_muxes), base,
  62. - &mt2712_clk_lock, clk_data);
  63. + r = mtk_clk_register_composites(&pdev->dev, mcu_muxes,
  64. + ARRAY_SIZE(mcu_muxes), base,
  65. + &mt2712_clk_lock, clk_data);
  66. + if (r)
  67. + dev_err(&pdev->dev, "Could not register composites: %d\n", r);
  68. r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
  69. --- a/drivers/clk/mediatek/clk-mt7622.c
  70. +++ b/drivers/clk/mediatek/clk-mt7622.c
  71. @@ -615,8 +615,9 @@ static int mtk_topckgen_init(struct plat
  72. mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
  73. clk_data);
  74. - mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
  75. - base, &mt7622_clk_lock, clk_data);
  76. + mtk_clk_register_composites(&pdev->dev, top_muxes,
  77. + ARRAY_SIZE(top_muxes), base,
  78. + &mt7622_clk_lock, clk_data);
  79. mtk_clk_register_dividers(top_adj_divs, ARRAY_SIZE(top_adj_divs),
  80. base, &mt7622_clk_lock, clk_data);
  81. @@ -685,7 +686,8 @@ static int mtk_pericfg_init(struct platf
  82. mtk_clk_register_gates(&pdev->dev, node, peri_clks,
  83. ARRAY_SIZE(peri_clks), clk_data);
  84. - mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
  85. + mtk_clk_register_composites(&pdev->dev, peri_muxes,
  86. + ARRAY_SIZE(peri_muxes), base,
  87. &mt7622_clk_lock, clk_data);
  88. r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
  89. --- a/drivers/clk/mediatek/clk-mt7629.c
  90. +++ b/drivers/clk/mediatek/clk-mt7629.c
  91. @@ -564,8 +564,9 @@ static int mtk_topckgen_init(struct plat
  92. mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs),
  93. clk_data);
  94. - mtk_clk_register_composites(top_muxes, ARRAY_SIZE(top_muxes),
  95. - base, &mt7629_clk_lock, clk_data);
  96. + mtk_clk_register_composites(&pdev->dev, top_muxes,
  97. + ARRAY_SIZE(top_muxes), base,
  98. + &mt7629_clk_lock, clk_data);
  99. clk_prepare_enable(clk_data->hws[CLK_TOP_AXI_SEL]->clk);
  100. clk_prepare_enable(clk_data->hws[CLK_TOP_MEM_SEL]->clk);
  101. @@ -607,7 +608,8 @@ static int mtk_pericfg_init(struct platf
  102. mtk_clk_register_gates(&pdev->dev, node, peri_clks,
  103. ARRAY_SIZE(peri_clks), clk_data);
  104. - mtk_clk_register_composites(peri_muxes, ARRAY_SIZE(peri_muxes), base,
  105. + mtk_clk_register_composites(&pdev->dev, peri_muxes,
  106. + ARRAY_SIZE(peri_muxes), base,
  107. &mt7629_clk_lock, clk_data);
  108. r = of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data);
  109. --- a/drivers/clk/mediatek/clk-mtk.c
  110. +++ b/drivers/clk/mediatek/clk-mtk.c
  111. @@ -197,8 +197,8 @@ void mtk_clk_unregister_factors(const st
  112. }
  113. EXPORT_SYMBOL_GPL(mtk_clk_unregister_factors);
  114. -static struct clk_hw *mtk_clk_register_composite(const struct mtk_composite *mc,
  115. - void __iomem *base, spinlock_t *lock)
  116. +static struct clk_hw *mtk_clk_register_composite(struct device *dev,
  117. + const struct mtk_composite *mc, void __iomem *base, spinlock_t *lock)
  118. {
  119. struct clk_hw *hw;
  120. struct clk_mux *mux = NULL;
  121. @@ -264,7 +264,7 @@ static struct clk_hw *mtk_clk_register_c
  122. div_ops = &clk_divider_ops;
  123. }
  124. - hw = clk_hw_register_composite(NULL, mc->name, parent_names, num_parents,
  125. + hw = clk_hw_register_composite(dev, mc->name, parent_names, num_parents,
  126. mux_hw, mux_ops,
  127. div_hw, div_ops,
  128. gate_hw, gate_ops,
  129. @@ -308,7 +308,8 @@ static void mtk_clk_unregister_composite
  130. kfree(mux);
  131. }
  132. -int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
  133. +int mtk_clk_register_composites(struct device *dev,
  134. + const struct mtk_composite *mcs, int num,
  135. void __iomem *base, spinlock_t *lock,
  136. struct clk_hw_onecell_data *clk_data)
  137. {
  138. @@ -327,7 +328,7 @@ int mtk_clk_register_composites(const st
  139. continue;
  140. }
  141. - hw = mtk_clk_register_composite(mc, base, lock);
  142. + hw = mtk_clk_register_composite(dev, mc, base, lock);
  143. if (IS_ERR(hw)) {
  144. pr_err("Failed to register clk %s: %pe\n", mc->name,
  145. --- a/drivers/clk/mediatek/clk-mtk.h
  146. +++ b/drivers/clk/mediatek/clk-mtk.h
  147. @@ -149,7 +149,8 @@ struct mtk_composite {
  148. .flags = 0, \
  149. }
  150. -int mtk_clk_register_composites(const struct mtk_composite *mcs, int num,
  151. +int mtk_clk_register_composites(struct device *dev,
  152. + const struct mtk_composite *mcs, int num,
  153. void __iomem *base, spinlock_t *lock,
  154. struct clk_hw_onecell_data *clk_data);
  155. void mtk_clk_unregister_composites(const struct mtk_composite *mcs, int num,