From: fred.konrad@greensocs.com
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, edgar.iglesias@xilinx.com,
alistair.francis@xilinx.com, mark.burton@greensocs.com,
fred.konrad@greensocs.com
Subject: [Qemu-devel] [PATCH V2 04/10] qemu-clk: introduce an init array to help the device construction
Date: Thu, 26 Jan 2017 10:47:34 +0100 [thread overview]
Message-ID: <1485424060-12217-5-git-send-email-fred.konrad@greensocs.com> (raw)
In-Reply-To: <1485424060-12217-1-git-send-email-fred.konrad@greensocs.com>
From: KONRAD Frederic <fred.konrad@greensocs.com>
This introduces a clock init array to ease the clock tree construction.
Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com>
---
include/qemu/qemu-clock.h | 23 +++++++++++++++++++++++
qemu-clock.c | 17 +++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/include/qemu/qemu-clock.h b/include/qemu/qemu-clock.h
index 6d30299..45f8766 100644
--- a/include/qemu/qemu-clock.h
+++ b/include/qemu/qemu-clock.h
@@ -49,6 +49,29 @@ struct ClkList {
QLIST_ENTRY(ClkList) node;
};
+typedef struct ClockInitElement {
+ const char *name; /* Name to give to the clock. */
+ size_t offset; /* Offset of the qemu_clk field in the object. */
+ QEMUClkRateUpdateCallback *cb;
+} ClockInitElement;
+
+#define DEVICE_CLOCK(_state, _field, _cb) { \
+ .name = #_field, \
+ .offset = offsetof(_state, _field), \
+ .cb = _cb \
+}
+
+#define DEVICE_CLOCK_END() { \
+ .name = NULL \
+}
+
+/**
+ * qemu_clk_init_device:
+ * @obj: the Object which need to be initialized.
+ * @array: the array of ClockInitElement to be used.
+ */
+void qemu_clk_init_device(Object *obj, ClockInitElement *array);
+
/**
* qemu_clk_device_add_clock:
* @dev: the device on which the clock needs to be added.
diff --git a/qemu-clock.c b/qemu-clock.c
index 8c12368..300e38f 100644
--- a/qemu-clock.c
+++ b/qemu-clock.c
@@ -26,6 +26,7 @@
#include "hw/hw.h"
#include "qemu/log.h"
#include "qapi/error.h"
+#include "hw/qdev-core.h"
#ifndef DEBUG_QEMU_CLOCK
#define DEBUG_QEMU_CLOCK 0
@@ -37,6 +38,22 @@
} \
} while (0);
+void qemu_clk_init_device(Object *obj, ClockInitElement *array)
+{
+ qemu_clk *cur = NULL;
+
+ while (array->name != NULL) {
+ DPRINTF("init clock named %s\n", array->name);
+ cur = (((void *)obj) + array->offset);
+ *cur = QEMU_CLOCK(object_new(TYPE_CLOCK));
+ qemu_clk_device_add_clock(DEVICE(obj), *cur, array->name);
+ if (array->cb) {
+ qemu_clk_set_callback(*cur, array->cb, obj);
+ }
+ array++;
+ }
+}
+
void qemu_clk_refresh(qemu_clk clk)
{
qemu_clk_update_rate(clk, clk->in_rate);
--
1.8.3.1
next prev parent reply other threads:[~2017-01-26 9:47 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-26 9:47 [Qemu-devel] [PATCH V2 00/10] Clock framework API fred.konrad
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 01/10] qemu-clk: introduce qemu-clk qom object fred.konrad
2017-02-05 15:25 ` Cédric Le Goater
2017-02-07 9:20 ` Frederic Konrad
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 02/10] qemu-clk: allow to add a clock to a device fred.konrad
2017-02-06 14:20 ` Cédric Le Goater
2017-02-07 9:22 ` Frederic Konrad
2017-02-07 9:31 ` Cédric Le Goater
2017-02-07 9:49 ` Frederic Konrad
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 03/10] qemu-clk: allow to bind two clocks together fred.konrad
2017-02-06 15:58 ` Cédric Le Goater
2017-02-07 9:45 ` Frederic Konrad
2017-01-26 9:47 ` fred.konrad [this message]
2017-02-06 16:02 ` [Qemu-devel] [PATCH V2 04/10] qemu-clk: introduce an init array to help the device construction Cédric Le Goater
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 05/10] qdev-monitor: print the device's clock with info qtree fred.konrad
2017-02-06 16:10 ` Cédric Le Goater
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 06/10] docs: add qemu-clock documentation fred.konrad
2017-02-07 16:13 ` Peter Maydell
2017-02-07 17:15 ` Frederic Konrad
2017-02-07 17:18 ` Peter Maydell
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 07/10] introduce fixed-clock fred.konrad
2017-02-06 16:13 ` Cédric Le Goater
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 08/10] introduce zynqmp_crf fred.konrad
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 09/10] zynqmp: add the zynqmp_crf to the platform fred.konrad
2017-01-26 9:47 ` [Qemu-devel] [PATCH V2 10/10] zynqmp: add reference clock fred.konrad
2017-02-06 16:38 ` Cédric Le Goater
2017-02-03 15:21 ` [Qemu-devel] [PATCH V2 00/10] Clock framework API Frederic Konrad
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=1485424060-12217-5-git-send-email-fred.konrad@greensocs.com \
--to=fred.konrad@greensocs.com \
--cc=alistair.francis@xilinx.com \
--cc=edgar.iglesias@xilinx.com \
--cc=mark.burton@greensocs.com \
--cc=peter.maydell@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).