All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Inès Varhol" <ines.varhol@telecom-paris.fr>,
	"Arnaud Minier" <arnaud.minier@telecom-paris.fr>,
	"Damien Hedde" <damien.hedde@dahe.fr>,
	qemu-arm@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
	"Alistair Francis" <alistair@alistair23.me>,
	"Luc Michel" <luc@lmichel.fr>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PATCH-for-9.0? v2 2/8] hw/clock: Pass optional &bool argument to clock_set()
Date: Mon, 25 Mar 2024 14:32:52 +0100	[thread overview]
Message-ID: <20240325133259.57235-3-philmd@linaro.org> (raw)
In-Reply-To: <20240325133259.57235-1-philmd@linaro.org>

Currently clock_set() returns whether the clock has
been changed or not. In order to combine this information
with other clock calls, pass an optional boolean and do
not return anything.  The single caller ignores the return
value, have it use NULL.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/hw/clock.h       | 22 ++++++++++++++++------
 hw/core/clock.c          |  8 +++++---
 hw/misc/bcm2835_cprman.c |  2 +-
 hw/misc/zynq_slcr.c      |  4 ++--
 4 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/include/hw/clock.h b/include/hw/clock.h
index bb12117f67..474bbc07fe 100644
--- a/include/hw/clock.h
+++ b/include/hw/clock.h
@@ -180,21 +180,28 @@ static inline bool clock_has_source(const Clock *clk)
  * clock_set:
  * @clk: the clock to initialize.
  * @value: the clock's value, 0 means unclocked
+ * @changed: set to true if the clock is changed, ignored if set to NULL.
  *
  * Set the local cached period value of @clk to @value.
- *
- * @return: true if the clock is changed.
  */
-bool clock_set(Clock *clk, uint64_t value);
+void clock_set(Clock *clk, uint64_t period, bool *changed);
 
 static inline bool clock_set_hz(Clock *clk, unsigned hz)
 {
-    return clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz));
+    bool changed = false;
+
+    clock_set(clk, CLOCK_PERIOD_FROM_HZ(hz), &changed);
+
+    return changed;
 }
 
 static inline bool clock_set_ns(Clock *clk, unsigned ns)
 {
-    return clock_set(clk, CLOCK_PERIOD_FROM_NS(ns));
+    bool changed = false;
+
+    clock_set(clk, CLOCK_PERIOD_FROM_NS(ns), &changed);
+
+    return changed;
 }
 
 /**
@@ -220,7 +227,10 @@ void clock_propagate(Clock *clk);
  */
 static inline void clock_update(Clock *clk, uint64_t value)
 {
-    if (clock_set(clk, value)) {
+    bool changed = false;
+
+    clock_set(clk, value, &changed);
+    if (changed) {
         clock_propagate(clk);
     }
 }
diff --git a/hw/core/clock.c b/hw/core/clock.c
index c73f0c2f98..e0f257b141 100644
--- a/hw/core/clock.c
+++ b/hw/core/clock.c
@@ -52,16 +52,18 @@ void clock_clear_callback(Clock *clk)
     clock_set_callback(clk, NULL, NULL, 0);
 }
 
-bool clock_set(Clock *clk, uint64_t period)
+void clock_set(Clock *clk, uint64_t period, bool *changed)
 {
     if (clk->period == period) {
-        return false;
+        return;
     }
     trace_clock_set(CLOCK_PATH(clk), CLOCK_PERIOD_TO_HZ(clk->period),
                     CLOCK_PERIOD_TO_HZ(period));
     clk->period = period;
 
-    return true;
+    if (changed) {
+        *changed = true;
+    }
 }
 
 static uint64_t clock_get_child_period(Clock *clk)
diff --git a/hw/misc/bcm2835_cprman.c b/hw/misc/bcm2835_cprman.c
index 91c8f7bd17..f16f7978ae 100644
--- a/hw/misc/bcm2835_cprman.c
+++ b/hw/misc/bcm2835_cprman.c
@@ -680,7 +680,7 @@ static void cprman_init(Object *obj)
     s->xosc = clock_new(obj, "xosc");
     s->gnd = clock_new(obj, "gnd");
 
-    clock_set(s->gnd, 0);
+    clock_set(s->gnd, 0, NULL);
 
     memory_region_init_io(&s->iomem, obj, &cprman_ops,
                           s, "bcm2835-cprman", 0x2000);
diff --git a/hw/misc/zynq_slcr.c b/hw/misc/zynq_slcr.c
index d2ac2e77f2..e637798507 100644
--- a/hw/misc/zynq_slcr.c
+++ b/hw/misc/zynq_slcr.c
@@ -279,9 +279,9 @@ static void zynq_slcr_compute_clocks_internal(ZynqSLCRState *s, uint64_t ps_clk)
 
     /* compute uartX reference clocks */
     clock_set(s->uart0_ref_clk,
-              ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT0));
+              ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT0), NULL);
     clock_set(s->uart1_ref_clk,
-              ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT1));
+              ZYNQ_COMPUTE_CLK(s, uart_mux, R_UART_CLK_CTRL, CLKACT1), NULL);
 }
 
 /**
-- 
2.41.0



  parent reply	other threads:[~2024-03-25 13:34 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-25 13:32 [PATCH-for-9.0? v2 0/8] hw/clock: Propagate clock changes when STM32L4X5 MUX is updated Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0 v2 1/8] hw/clock: Have clock_set_mul_div() return early when nothing to change Philippe Mathieu-Daudé
2024-03-26  3:13   ` Alistair Francis
2024-03-25 13:32 ` Philippe Mathieu-Daudé [this message]
2024-03-25 13:47   ` [PATCH-for-9.0? v2 2/8] hw/clock: Pass optional &bool argument to clock_set() Peter Maydell
2024-03-25 14:39     ` Philippe Mathieu-Daudé
2024-03-25 14:44       ` Peter Maydell
2024-03-25 15:01         ` Philippe Mathieu-Daudé
2024-03-25 15:03           ` Peter Maydell
2024-03-25 15:11             ` Philippe Mathieu-Daudé
2024-03-25 15:23               ` Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0? v2 3/8] hw/clock: Pass optional &bool argument to clock_set_ns() Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0? v2 4/8] hw/clock: Pass optional &bool argument to clock_set_hz() Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0? v2 5/8] hw/clock: Pass optional &bool argument to clock_set_mul_div() Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0 v2 6/8] hw/misc/stm32l4x5_rcc: Inline clock_update() in clock_mux_update() Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.0? v2 7/8] hw/misc/stm32l4x5_rcc: Propagate period when enabling a clock Philippe Mathieu-Daudé
2024-03-25 13:32 ` [PATCH-for-9.1 v2 8/8] hw/misc/zynq_slcr: Only propagate clock changes when necessary Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240325133259.57235-3-philmd@linaro.org \
    --to=philmd@linaro.org \
    --cc=alistair@alistair23.me \
    --cc=arnaud.minier@telecom-paris.fr \
    --cc=damien.hedde@dahe.fr \
    --cc=edgar.iglesias@gmail.com \
    --cc=ines.varhol@telecom-paris.fr \
    --cc=luc@lmichel.fr \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.