Skip to content
  • Peter Maydell's avatar
    5c6e1a1c
    hw/timer/armv7m_systick: Add input clocks · 5c6e1a1c
    Peter Maydell authored
    
    
    The v7M systick timer can be programmed to run from either of
    two clocks:
     * an "external reference clock" (when SYST_CSR.CLKSOURCE == 0)
     * the main CPU clock (when SYST_CSR.CLKSOURCE == 1)
    
    Our implementation currently hardwires the external reference clock
    to be 1MHz, and allows boards to set the main CPU clock frequency via
    the global 'system_clock_scale'.  (Most boards set that to a constant
    value; the Stellaris boards allow the guest to reprogram it via the
    board-specific RCC registers).
    
    As the first step in converting this to use the Clock infrastructure,
    add input clocks to the systick device for the reference clock and
    the CPU clock.  The device implementation ignores them; once we have
    made all the users of the device correctly wire up the new Clocks we
    will switch the implementation to use them and ignore the old
    system_clock_scale.
    
    This is a migration compat break for all M-profile boards, because of
    the addition of the new clock objects to the vmstate struct.
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
    Reviewed-by: default avatarLuc Michel <luc@lmichel.fr>
    Message-id: 20210812093356.1946-6-peter.maydell@linaro.org
    5c6e1a1c
    hw/timer/armv7m_systick: Add input clocks
    Peter Maydell authored
    
    
    The v7M systick timer can be programmed to run from either of
    two clocks:
     * an "external reference clock" (when SYST_CSR.CLKSOURCE == 0)
     * the main CPU clock (when SYST_CSR.CLKSOURCE == 1)
    
    Our implementation currently hardwires the external reference clock
    to be 1MHz, and allows boards to set the main CPU clock frequency via
    the global 'system_clock_scale'.  (Most boards set that to a constant
    value; the Stellaris boards allow the guest to reprogram it via the
    board-specific RCC registers).
    
    As the first step in converting this to use the Clock infrastructure,
    add input clocks to the systick device for the reference clock and
    the CPU clock.  The device implementation ignores them; once we have
    made all the users of the device correctly wire up the new Clocks we
    will switch the implementation to use them and ignore the old
    system_clock_scale.
    
    This is a migration compat break for all M-profile boards, because of
    the addition of the new clock objects to the vmstate struct.
    
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: default avatarAlistair Francis <alistair.francis@wdc.com>
    Reviewed-by: default avatarLuc Michel <luc@lmichel.fr>
    Message-id: 20210812093356.1946-6-peter.maydell@linaro.org
Loading