Skip to content

Commit 0a22b3a

Browse files
Fabio Estevamabelvesa
authored andcommitted
clk: imx: imx6sx: Allow a different LCDIF1 clock parent
It is not a good idea to hardcode the LCDIF1 parent inside the clock driver because some users may want to use a different clock parent for LCDIF1. One of the reasons could be related to EMI tests. Remove the harcoded LCDIF1 parent when the LCDIF1 parent is described via devicetree. Old dtb's that do not describe the LCDIF1 parent via devicetree will use the same PLL5 clock as parent to keep the original behavior. Signed-off-by: Fabio Estevam <[email protected]> Reviewed-by: Abel Vesa <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Abel Vesa <[email protected]>
1 parent 577ad16 commit 0a22b3a

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

drivers/clk/imx/clk-imx6sx.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
121121
{
122122
struct device_node *np;
123123
void __iomem *base;
124+
bool lcdif1_assigned_clk;
124125

125126
clk_hw_data = kzalloc(struct_size(clk_hw_data, hws,
126127
IMX6SX_CLK_CLK_END), GFP_KERNEL);
@@ -498,9 +499,16 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
498499
clk_set_parent(hws[IMX6SX_CLK_EIM_SLOW_SEL]->clk, hws[IMX6SX_CLK_PLL2_PFD2]->clk);
499500
clk_set_rate(hws[IMX6SX_CLK_EIM_SLOW]->clk, 132000000);
500501

501-
/* set parent clock for LCDIF1 pixel clock */
502-
clk_set_parent(hws[IMX6SX_CLK_LCDIF1_PRE_SEL]->clk, hws[IMX6SX_CLK_PLL5_VIDEO_DIV]->clk);
503-
clk_set_parent(hws[IMX6SX_CLK_LCDIF1_SEL]->clk, hws[IMX6SX_CLK_LCDIF1_PODF]->clk);
502+
np = of_find_node_by_path("/soc/bus@2200000/spba-bus@2240000/lcdif@2220000");
503+
lcdif1_assigned_clk = of_find_property(np, "assigned-clock-parents", NULL);
504+
505+
/* Set parent clock for LCDIF1 pixel clock if not done via devicetree */
506+
if (!lcdif1_assigned_clk) {
507+
clk_set_parent(hws[IMX6SX_CLK_LCDIF1_PRE_SEL]->clk,
508+
hws[IMX6SX_CLK_PLL5_VIDEO_DIV]->clk);
509+
clk_set_parent(hws[IMX6SX_CLK_LCDIF1_SEL]->clk,
510+
hws[IMX6SX_CLK_LCDIF1_PODF]->clk);
511+
}
504512

505513
/* Set the parent clks of PCIe lvds1 and pcie_axi to be pcie ref, axi */
506514
if (clk_set_parent(hws[IMX6SX_CLK_LVDS1_SEL]->clk, hws[IMX6SX_CLK_PCIE_REF_125M]->clk))

0 commit comments

Comments
 (0)