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-imx8mq.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8mq.c b/drivers/clk/imx/clk-imx8mq.c
index a06cc21181b4..28290e717d9c 100644
--- a/drivers/clk/imx/clk-imx8mq.c
+++ b/drivers/clk/imx/clk-imx8mq.c
@@ -431,7 +431,7 @@ static int imx8mq_clocks_probe(struct platform_device *pdev)
        hws[IMX8MQ_CLK_A53_CORE] = imx_clk_hw_mux2("arm_a53_core", base + 
0x9880, 24, 1, imx8mq_a53_core_sels, ARRAY_SIZE(imx8mq_a53_core_sels));
 
        /* BUS */
-       hws[IMX8MQ_CLK_MAIN_AXI] = imx8m_clk_hw_composite_critical("main_axi", 
imx8mq_main_axi_sels, base + 0x8800);
+       hws[IMX8MQ_CLK_MAIN_AXI] = 
imx8m_clk_hw_composite_bus_critical("main_axi", imx8mq_main_axi_sels, base + 
0x8800);
        hws[IMX8MQ_CLK_ENET_AXI] = imx8m_clk_hw_composite_bus("enet_axi", 
imx8mq_enet_axi_sels, base + 0x8880);
        hws[IMX8MQ_CLK_NAND_USDHC_BUS] = 
imx8m_clk_hw_composite_bus("nand_usdhc_bus", imx8mq_nand_usdhc_sels, base + 
0x8900);
        hws[IMX8MQ_CLK_VPU_BUS] = imx8m_clk_hw_composite_bus("vpu_bus", 
imx8mq_vpu_bus_sels, base + 0x8980);
@@ -441,12 +441,12 @@ static int imx8mq_clocks_probe(struct platform_device 
*pdev)
        hws[IMX8MQ_CLK_USB_BUS] = imx8m_clk_hw_composite_bus("usb_bus", 
imx8mq_usb_bus_sels, base + 0x8b80);
        hws[IMX8MQ_CLK_GPU_AXI] = imx8m_clk_hw_composite_bus("gpu_axi", 
imx8mq_gpu_axi_sels, base + 0x8c00);
        hws[IMX8MQ_CLK_GPU_AHB] = imx8m_clk_hw_composite_bus("gpu_ahb", 
imx8mq_gpu_ahb_sels, base + 0x8c80);
-       hws[IMX8MQ_CLK_NOC] = imx8m_clk_hw_composite_critical("noc", 
imx8mq_noc_sels, base + 0x8d00);
-       hws[IMX8MQ_CLK_NOC_APB] = imx8m_clk_hw_composite_critical("noc_apb", 
imx8mq_noc_apb_sels, base + 0x8d80);
+       hws[IMX8MQ_CLK_NOC] = imx8m_clk_hw_composite_bus_critical("noc", 
imx8mq_noc_sels, base + 0x8d00);
+       hws[IMX8MQ_CLK_NOC_APB] = 
imx8m_clk_hw_composite_bus_critical("noc_apb", imx8mq_noc_apb_sels, base + 
0x8d80);
 
        /* AHB */
        /* AHB clock is used by the AHB bus therefore marked as critical */
-       hws[IMX8MQ_CLK_AHB] = imx8m_clk_hw_composite_critical("ahb", 
imx8mq_ahb_sels, base + 0x9000);
+       hws[IMX8MQ_CLK_AHB] = imx8m_clk_hw_composite_bus_critical("ahb", 
imx8mq_ahb_sels, base + 0x9000);
        hws[IMX8MQ_CLK_AUDIO_AHB] = imx8m_clk_hw_composite_bus("audio_ahb", 
imx8mq_audio_ahb_sels, base + 0x9100);
 
        /* IPG */
-- 
2.28.0

Reply via email to