clk: Ensure the parent clocks are enabled while reparenting
authorMiquel Raynal <miquel.raynal@bootlin.com>
Thu, 3 Apr 2025 07:39:06 +0000 (09:39 +0200)
committerFabio Estevam <festevam@gmail.com>
Fri, 11 Apr 2025 01:32:55 +0000 (22:32 -0300)
commitac30d90f33674e49b4428b66f7dd9949f054b6c4
treedefdb9f348b639761ac2607b14151a6a4f8eef6c
parent197376fbf300e92afa0a1583815d9c9eb52d613a
clk: Ensure the parent clocks are enabled while reparenting

Reparenting a clock C with a new parent P means that C will only
continue clocking if P is already clocking when the mux is updated. In
case the parent is currently disabled, failures (stalls) are likely to
happen.

This is exactly what happens on i.MX8 when enabling the video
pipeline. We tell LCDIF clocks to use the VIDEO PLL as input, while the
VIDEO PLL is currently off. This all happens as part of the
assigned-clocks handling procedure, where the reparenting happens before
the enable() calls. Enabling the parents as part of the reparenting
procedure seems sane and also matches the logic applied in other parts
of the CCM.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/clk/clk-uclass.c