hw/core/clock: allow clock_propagate on child clocks
authorRaphael Poggi <raphael.poggi@lynxleap.co.uk>
Fri, 19 Apr 2024 16:29:51 +0000 (17:29 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 30 Apr 2024 14:01:05 +0000 (15:01 +0100)
commit845dd0385eb738690ee19e60111952a363bbf257
treeb02eb50fa4b1c4afb7363f639ddb013c22c4a200
parent5fee33d97a7f2e95716417bd164f2f5264acd976
hw/core/clock: allow clock_propagate on child clocks

clock_propagate() has an assert that clk->source is NULL, i.e. that
you are calling it on a clock which has no source clock.  This made
sense in the original design where the only way for a clock's
frequency to change if it had a source clock was when that source
clock changed.  However, we subsequently added multiplier/divider
support, but didn't look at what that meant for propagation.

If a clock-management device changes the multiplier or divider value
on a clock, it needs to propagate that change down to child clocks,
even if the clock has a source clock set.  So the assertion is now
incorrect.

Remove the assertion.

Signed-off-by: Raphael Poggi <raphael.poggi@lynxleap.co.uk>
Message-id: 20240419162951.23558-1-raphael.poggi@lynxleap.co.uk
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
[PMM: Rewrote the commit message]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/core/clock.c