hw/clock: Let clock_set() return boolean value

Let clock_set() return a boolean value whether the clock
has been updated or not.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20200806123858.30058-3-f4bug@amsat.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2020-08-28 10:02:44 +01:00 committed by Peter Maydell
parent bb80ae077e
commit 15aa2876d9
2 changed files with 13 additions and 6 deletions

View File

@ -34,11 +34,16 @@ void clock_clear_callback(Clock *clk)
clock_set_callback(clk, NULL, NULL); clock_set_callback(clk, NULL, NULL);
} }
void clock_set(Clock *clk, uint64_t period) bool clock_set(Clock *clk, uint64_t period)
{ {
if (clk->period == period) {
return false;
}
trace_clock_set(CLOCK_PATH(clk), CLOCK_PERIOD_TO_NS(clk->period), trace_clock_set(CLOCK_PATH(clk), CLOCK_PERIOD_TO_NS(clk->period),
CLOCK_PERIOD_TO_NS(period)); CLOCK_PERIOD_TO_NS(period));
clk->period = period; clk->period = period;
return true;
} }
static void clock_propagate_period(Clock *clk, bool call_callbacks) static void clock_propagate_period(Clock *clk, bool call_callbacks)

View File

@ -127,17 +127,19 @@ void clock_set_source(Clock *clk, Clock *src);
* @value: the clock's value, 0 means unclocked * @value: the clock's value, 0 means unclocked
* *
* Set the local cached period value of @clk to @value. * Set the local cached period value of @clk to @value.
*
* @return: true if the clock is changed.
*/ */
void clock_set(Clock *clk, uint64_t value); bool clock_set(Clock *clk, uint64_t value);
static inline void clock_set_hz(Clock *clk, unsigned hz) static inline bool clock_set_hz(Clock *clk, unsigned hz)
{ {
clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz)); return clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz));
} }
static inline void clock_set_ns(Clock *clk, unsigned ns) static inline bool clock_set_ns(Clock *clk, unsigned ns)
{ {
clock_set(clk, CLOCK_PERIOD_FROM_NS(ns)); return clock_set(clk, CLOCK_PERIOD_FROM_NS(ns));
} }
/** /**