From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-arm@nongnu.org, qemu-devel@nongnu.org
Cc: Damien Hedde <damien.hedde@greensocs.com>,
Luc Michel <luc@lmichel.fr>,
Alistair Francis <alistair@alistair23.me>,
Subbaraya Sundeep <sundeep.lkml@gmail.com>,
Joel Stanley <joel@jms.id.au>,
Alexandre Iooss <erdnaxe@crans.org>
Subject: [PATCH for-6.2 20/25] hw/arm/msf2-soc: Wire up refclk
Date: Thu, 12 Aug 2021 10:33:51 +0100 [thread overview]
Message-ID: <20210812093356.1946-21-peter.maydell@linaro.org> (raw)
In-Reply-To: <20210812093356.1946-1-peter.maydell@linaro.org>
Wire up the refclk for the msf2 SoC. This SoC runs the refclk at a
frequency which is programmably either /4, /8, /16 or /32 of the main
CPU clock. We don't currently model the register which allows the
guest to set the divisor, so implement the refclk as a fixed /32 of
the CPU clock (which is the value of the divisor at reset).
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
include/hw/arm/msf2-soc.h | 1 +
hw/arm/msf2-soc.c | 23 +++++++++++++++++++++++
2 files changed, 24 insertions(+)
diff --git a/include/hw/arm/msf2-soc.h b/include/hw/arm/msf2-soc.h
index 01f904cec47..ce417a6266a 100644
--- a/include/hw/arm/msf2-soc.h
+++ b/include/hw/arm/msf2-soc.h
@@ -59,6 +59,7 @@ struct MSF2State {
uint64_t esram_size;
Clock *m3clk;
+ Clock *refclk;
uint8_t apb0div;
uint8_t apb1div;
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index 0a1e594aee6..dbc6d936a76 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -76,6 +76,7 @@ static void m2sxxx_soc_initfn(Object *obj)
object_initialize_child(obj, "emac", &s->emac, TYPE_MSS_EMAC);
s->m3clk = qdev_init_clock_in(DEVICE(obj), "m3clk", NULL, NULL, 0);
+ s->refclk = qdev_init_clock_in(DEVICE(obj), "refclk", NULL, NULL, 0);
}
static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
@@ -92,6 +93,27 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
return;
}
+ /*
+ * We use s->refclk internally and only define it with qdev_init_clock_in()
+ * so it is correctly parented and not leaked on an init/deinit; it is not
+ * intended as an externally exposed clock.
+ */
+ if (clock_has_source(s->refclk)) {
+ error_setg(errp, "refclk must not be wired up by the board code");
+ return;
+ }
+
+ /*
+ * TODO: ideally we should model the SoC SYSTICK_CR register at 0xe0042038,
+ * which allows the guest to program the divisor between the m3clk and
+ * the systick refclk to either /4, /8, /16 or /32, as well as setting
+ * the value the guest can read in the STCALIB register. Currently we
+ * implement the divisor as a fixed /32, which matches the reset value
+ * of SYSTICK_CR.
+ */
+ clock_set_mul_div(s->refclk, 32, 1);
+ clock_set_source(s->refclk, s->m3clk);
+
memory_region_init_rom(&s->nvm, OBJECT(dev_soc), "MSF2.eNVM", s->envm_size,
&error_fatal);
/*
@@ -115,6 +137,7 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
qdev_prop_set_string(armv7m, "cpu-type", s->cpu_type);
qdev_prop_set_bit(armv7m, "enable-bitband", true);
qdev_connect_clock_in(armv7m, "cpuclk", s->m3clk);
+ qdev_connect_clock_in(armv7m, "refclk", s->refclk);
object_property_set_link(OBJECT(&s->armv7m), "memory",
OBJECT(get_system_memory()), &error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->armv7m), errp)) {
--
2.20.1
next prev parent reply other threads:[~2021-08-12 9:42 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-12 9:33 [PATCH for-6.2 00/25] arm: Get rid of system_clock_scale global Peter Maydell
2021-08-12 9:33 ` [PATCH for-6.2 01/25] arm: Move M-profile RAS register block into its own device Peter Maydell
2021-08-12 11:08 ` Alexandre IOOSS
2021-08-12 11:09 ` Peter Maydell
2021-08-13 0:59 ` Alistair Francis
2021-08-15 17:30 ` Philippe Mathieu-Daudé
2021-08-16 7:28 ` David Hildenbrand
2021-08-16 9:16 ` Peter Maydell
2021-08-17 8:25 ` Luc Michel
2021-08-17 10:10 ` Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 02/25] arm: Move systick device creation from NVIC to ARMv7M object Peter Maydell
2021-08-13 1:23 ` Alistair Francis
2021-08-17 9:24 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 03/25] arm: Move system PPB container handling to armv7m Peter Maydell
2021-08-12 11:56 ` Alexandre IOOSS
2021-08-17 9:25 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 04/25] hw/timer/armv7m_systick: Add usual QEMU interface comment Peter Maydell
2021-08-13 1:26 ` Alistair Francis
2021-08-17 9:29 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 05/25] hw/timer/armv7m_systick: Add input clocks Peter Maydell
2021-08-13 1:27 ` Alistair Francis
2021-08-17 9:32 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 06/25] hw/arm/armv7m: Create " Peter Maydell
2021-08-13 1:28 ` Alistair Francis
2021-08-17 9:34 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 07/25] armsse: Wire up systick cpuclk clock Peter Maydell
2021-08-13 1:29 ` Alistair Francis
2021-08-17 9:36 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 08/25] hw/arm/mps2.c: Connect up armv7m clocks Peter Maydell
2021-08-17 9:39 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 09/25] clock: Provide builtin multiplier/divider Peter Maydell
2021-08-12 12:08 ` Alexandre IOOSS
2021-08-12 12:22 ` Peter Maydell
2021-08-13 1:33 ` Alistair Francis
2021-08-15 16:32 ` Philippe Mathieu-Daudé
2021-08-16 9:05 ` Peter Maydell
2021-08-16 9:32 ` Philippe Mathieu-Daudé
2021-08-16 9:36 ` Peter Maydell
2021-08-16 9:58 ` Philippe Mathieu-Daudé
2021-08-15 21:27 ` Luc Michel
2021-08-17 9:59 ` Damien Hedde
2021-08-17 10:46 ` Peter Maydell
2021-08-17 14:58 ` Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 10/25] hw/arm: Don't allocate separate MemoryRegions in stm32 SoC realize Peter Maydell
2021-08-12 12:13 ` Alexandre IOOSS
2021-08-12 12:27 ` Peter Maydell
2021-08-15 16:37 ` Philippe Mathieu-Daudé
2021-08-13 1:34 ` Alistair Francis
2021-08-17 9:41 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 11/25] hw/arm/stm32f100: Wire up sysclk and refclk Peter Maydell
2021-08-13 1:36 ` Alistair Francis
2021-08-14 9:01 ` Alexandre IOOSS
2021-08-17 9:45 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 12/25] hw/arm/stm32f205: " Peter Maydell
2021-08-13 1:38 ` Alistair Francis
2021-08-14 9:02 ` Alexandre IOOSS
2021-08-17 9:47 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 13/25] hw/arm/stm32f405: " Peter Maydell
2021-08-13 1:37 ` Alistair Francis
2021-08-14 9:03 ` Alexandre IOOSS
2021-08-17 9:47 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 14/25] hw/arm/stm32vldiscovery: Delete trailing blank line Peter Maydell
2021-08-12 12:27 ` Alexandre IOOSS
2021-08-13 1:39 ` Alistair Francis
2021-08-17 9:48 ` Luc Michel
2021-08-12 9:33 ` [PATCH for-6.2 15/25] hw/arm/nrf51: Wire up sysclk Peter Maydell
2021-08-14 9:06 ` Alexandre IOOSS
2021-08-12 9:33 ` [PATCH for-6.2 16/25] hw/arm/stellaris: split stellaris_sys_init() Peter Maydell
2021-08-14 9:10 ` Alexandre IOOSS
2021-08-12 9:33 ` [PATCH for-6.2 17/25] hw/arm/stellaris: Wire sysclk up to armv7m Peter Maydell
2021-08-14 9:12 ` Alexandre IOOSS
2021-08-12 9:33 ` [PATCH for-6.2 18/25] hw/arm/msf2_soc: Don't allocate separate MemoryRegions Peter Maydell
2021-08-14 9:13 ` Alexandre IOOSS
2021-08-12 9:33 ` [PATCH for-6.2 19/25] hw/arm/msf2: Use Clock input to MSF2_SOC instead of m3clk property Peter Maydell
2021-08-14 9:20 ` Alexandre IOOSS
2021-08-14 10:11 ` Peter Maydell
2021-08-14 10:47 ` Alexandre IOOSS
2021-08-12 9:33 ` Peter Maydell [this message]
2021-08-17 15:05 ` [PATCH for-6.2 20/25] hw/arm/msf2-soc: Wire up refclk Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 21/25] hw/timer/armv7m_systick: Use clock inputs instead of system_clock_scale Peter Maydell
2021-08-17 15:55 ` Damien Hedde
2021-08-17 15:59 ` Peter Maydell
2021-08-17 16:14 ` Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 22/25] hw/arm/stellaris: Fix code style issues in GPTM code Peter Maydell
2021-08-14 9:26 ` Alexandre IOOSS
2021-08-12 9:33 ` [PATCH for-6.2 23/25] hw/arm/stellaris: Split stellaris-gptm into its own file Peter Maydell
2021-08-17 15:59 ` Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 24/25] hw/timer/stellaris-gptm: Use Clock input instead of system_clock_scale Peter Maydell
2021-08-18 12:03 ` Damien Hedde
2021-08-12 9:33 ` [PATCH for-6.2 25/25] arm: Remove system_clock_scale global Peter Maydell
2021-08-13 5:08 ` Alistair Francis
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=20210812093356.1946-21-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=alistair@alistair23.me \
--cc=damien.hedde@greensocs.com \
--cc=erdnaxe@crans.org \
--cc=joel@jms.id.au \
--cc=luc@lmichel.fr \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sundeep.lkml@gmail.com \
/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).