From: Peng Fan <[email protected]>

noc/axi/ahb are bus clk, not peripheral clk.
Since peripheral clk has a limitation that for peripheral clock slice,
IP clock slices must be stopped to change the clock source.
So we added CLK_SET_PARENT_GATE flag to avoid glitch.

However if noc is marked as critical clk peripheral, the
assigned clock parent operation will fail.

Fix to register as composite bus critical.

Signed-off-by: Peng Fan <[email protected]>
---
 drivers/clk/imx/clk-imx8mn.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8mn.c b/drivers/clk/imx/clk-imx8mn.c
index e984de543f0b..f3c5e6cf55dd 100644
--- a/drivers/clk/imx/clk-imx8mn.c
+++ b/drivers/clk/imx/clk-imx8mn.c
@@ -431,7 +431,7 @@ static int imx8mn_clocks_probe(struct platform_device *pdev)
        hws[IMX8MN_CLK_A53_CORE] = imx_clk_hw_mux2("arm_a53_core", base + 
0x9880, 24, 1, imx8mn_a53_core_sels, ARRAY_SIZE(imx8mn_a53_core_sels));
 
        /* BUS */
-       hws[IMX8MN_CLK_MAIN_AXI] = imx8m_clk_hw_composite_critical("main_axi", 
imx8mn_main_axi_sels, base + 0x8800);
+       hws[IMX8MN_CLK_MAIN_AXI] = 
imx8m_clk_hw_composite_bus_critical("main_axi", imx8mn_main_axi_sels, base + 
0x8800);
        hws[IMX8MN_CLK_ENET_AXI] = imx8m_clk_hw_composite_bus("enet_axi", 
imx8mn_enet_axi_sels, base + 0x8880);
        hws[IMX8MN_CLK_NAND_USDHC_BUS] = 
imx8m_clk_hw_composite_bus("nand_usdhc_bus", imx8mn_nand_usdhc_sels, base + 
0x8900);
        hws[IMX8MN_CLK_DISP_AXI] = imx8m_clk_hw_composite_bus("disp_axi", 
imx8mn_disp_axi_sels, base + 0x8a00);
@@ -439,9 +439,9 @@ static int imx8mn_clocks_probe(struct platform_device *pdev)
        hws[IMX8MN_CLK_USB_BUS] = imx8m_clk_hw_composite_bus("usb_bus", 
imx8mn_usb_bus_sels, base + 0x8b80);
        hws[IMX8MN_CLK_GPU_AXI] = imx8m_clk_hw_composite_bus("gpu_axi", 
imx8mn_gpu_axi_sels, base + 0x8c00);
        hws[IMX8MN_CLK_GPU_AHB] = imx8m_clk_hw_composite_bus("gpu_ahb", 
imx8mn_gpu_ahb_sels, base + 0x8c80);
-       hws[IMX8MN_CLK_NOC] = imx8m_clk_hw_composite_critical("noc", 
imx8mn_noc_sels, base + 0x8d00);
+       hws[IMX8MN_CLK_NOC] = imx8m_clk_hw_composite_bus_critical("noc", 
imx8mn_noc_sels, base + 0x8d00);
 
-       hws[IMX8MN_CLK_AHB] = imx8m_clk_hw_composite_critical("ahb", 
imx8mn_ahb_sels, base + 0x9000);
+       hws[IMX8MN_CLK_AHB] = imx8m_clk_hw_composite_bus_critical("ahb", 
imx8mn_ahb_sels, base + 0x9000);
        hws[IMX8MN_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", 
imx8mn_audio_ahb_sels, base + 0x9100);
        hws[IMX8MN_CLK_IPG_ROOT] = imx_clk_hw_divider2("ipg_root", "ahb", base 
+ 0x9080, 0, 1);
        hws[IMX8MN_CLK_IPG_AUDIO_ROOT] = imx_clk_hw_divider2("ipg_audio_root", 
"audio_ahb", base + 0x9180, 0, 1);
-- 
2.28.0

Reply via email to