All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: Peter Maydell <peter.maydell@linaro.org>,
	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: Re: [PATCH for-6.2 09/25] clock: Provide builtin multiplier/divider
Date: Sun, 15 Aug 2021 18:32:36 +0200	[thread overview]
Message-ID: <86d7a767-f53e-dfa2-3641-9e39512c0512@amsat.org> (raw)
In-Reply-To: <20210812093356.1946-10-peter.maydell@linaro.org>

On 8/12/21 11:33 AM, Peter Maydell wrote:
> It is quite common for a clock tree to involve possibly programmable
> clock multipliers or dividers, where the frequency of a clock is for
> instance divided by 8 to produce a slower clock to feed to a
> particular device.
> 
> Currently we provide no convenient mechanism for modelling this.  You
> can implement it by having an input Clock and an output Clock, and
> manually setting the period of the output clock in the period-changed
> callback of the input clock, but that's quite clunky.
> 
> This patch adds support in the Clock objects themselves for setting a
> multiplier or divider.  The effect of setting this on a clock is that
> when the clock's period is changed, all the children of the clock are
> set to period * multiplier / divider, rather than being set to the
> same period as the parent clock.

This is super nice!

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  docs/devel/clocks.rst   | 23 +++++++++++++++++++++++
>  include/hw/clock.h      | 29 +++++++++++++++++++++++++++++
>  hw/core/clock-vmstate.c | 24 +++++++++++++++++++++++-
>  hw/core/clock.c         | 29 +++++++++++++++++++++++++----
>  4 files changed, 100 insertions(+), 5 deletions(-)

> +void clock_set_mul_div(Clock *clk, uint32_t multiplier, uint32_t divider)
> +{
> +    assert(divider != 0);

I only wonder if we shouldn't check clock_is_enabled() here.
Maybe not assert, but at least report a GUEST_ERROR?

Also a trace-event "mul: %u -> %u, div: %u -> %u" would be useful IMHO.

> +    clk->multiplier = multiplier;
> +    clk->divider = divider;
> +}


  parent reply	other threads:[~2021-08-15 16:33 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é [this message]
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 ` [PATCH for-6.2 20/25] hw/arm/msf2-soc: Wire up refclk Peter Maydell
2021-08-17 15:05   ` 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=86d7a767-f53e-dfa2-3641-9e39512c0512@amsat.org \
    --to=f4bug@amsat.org \
    --cc=alistair@alistair23.me \
    --cc=damien.hedde@greensocs.com \
    --cc=erdnaxe@crans.org \
    --cc=joel@jms.id.au \
    --cc=luc@lmichel.fr \
    --cc=peter.maydell@linaro.org \
    --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 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.