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-imx8mm.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8mm.c b/drivers/clk/imx/clk-imx8mm.c
index 0de0be0cf548..f358ad907299 100644
--- a/drivers/clk/imx/clk-imx8mm.c
+++ b/drivers/clk/imx/clk-imx8mm.c
@@ -443,9 +443,9 @@ static int imx8mm_clocks_probe(struct platform_device *pdev)
        hws[IMX8MM_CLK_A53_CORE] = imx_clk_hw_mux2("arm_a53_core", base + 
0x9880, 24, 1, imx8mm_a53_core_sels, ARRAY_SIZE(imx8mm_a53_core_sels));
 
        /* BUS */
-       hws[IMX8MM_CLK_MAIN_AXI] = imx8m_clk_hw_composite_critical("main_axi",  
imx8mm_main_axi_sels, base + 0x8800);
+       hws[IMX8MM_CLK_MAIN_AXI] = 
imx8m_clk_hw_composite_bus_critical("main_axi",  imx8mm_main_axi_sels, base + 
0x8800);
        hws[IMX8MM_CLK_ENET_AXI] = imx8m_clk_hw_composite_bus("enet_axi", 
imx8mm_enet_axi_sels, base + 0x8880);
-       hws[IMX8MM_CLK_NAND_USDHC_BUS] = 
imx8m_clk_hw_composite_critical("nand_usdhc_bus", imx8mm_nand_usdhc_sels, base 
+ 0x8900);
+       hws[IMX8MM_CLK_NAND_USDHC_BUS] = 
imx8m_clk_hw_composite_bus_critical("nand_usdhc_bus", imx8mm_nand_usdhc_sels, 
base + 0x8900);
        hws[IMX8MM_CLK_VPU_BUS] = imx8m_clk_hw_composite_bus("vpu_bus", 
imx8mm_vpu_bus_sels, base + 0x8980);
        hws[IMX8MM_CLK_DISP_AXI] = imx8m_clk_hw_composite_bus("disp_axi", 
imx8mm_disp_axi_sels, base + 0x8a00);
        hws[IMX8MM_CLK_DISP_APB] = imx8m_clk_hw_composite_bus("disp_apb", 
imx8mm_disp_apb_sels, base + 0x8a80);
@@ -453,11 +453,11 @@ static int imx8mm_clocks_probe(struct platform_device 
*pdev)
        hws[IMX8MM_CLK_USB_BUS] = imx8m_clk_hw_composite_bus("usb_bus", 
imx8mm_usb_bus_sels, base + 0x8b80);
        hws[IMX8MM_CLK_GPU_AXI] = imx8m_clk_hw_composite_bus("gpu_axi", 
imx8mm_gpu_axi_sels, base + 0x8c00);
        hws[IMX8MM_CLK_GPU_AHB] = imx8m_clk_hw_composite_bus("gpu_ahb", 
imx8mm_gpu_ahb_sels, base + 0x8c80);
-       hws[IMX8MM_CLK_NOC] = imx8m_clk_hw_composite_critical("noc", 
imx8mm_noc_sels, base + 0x8d00);
-       hws[IMX8MM_CLK_NOC_APB] = imx8m_clk_hw_composite_critical("noc_apb", 
imx8mm_noc_apb_sels, base + 0x8d80);
+       hws[IMX8MM_CLK_NOC] = imx8m_clk_hw_composite_bus_critical("noc", 
imx8mm_noc_sels, base + 0x8d00);
+       hws[IMX8MM_CLK_NOC_APB] = 
imx8m_clk_hw_composite_bus_critical("noc_apb", imx8mm_noc_apb_sels, base + 
0x8d80);
 
        /* AHB */
-       hws[IMX8MM_CLK_AHB] = imx8m_clk_hw_composite_critical("ahb", 
imx8mm_ahb_sels, base + 0x9000);
+       hws[IMX8MM_CLK_AHB] = imx8m_clk_hw_composite_bus_critical("ahb", 
imx8mm_ahb_sels, base + 0x9000);
        hws[IMX8MM_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", 
imx8mm_audio_ahb_sels, base + 0x9100);
 
        /* IPG */
-- 
2.28.0

Reply via email to