This patch adds a new device STM32L4x5 RCC (Reset and Clock Control) device and 
is part
of a series implementing the STM32L4x5 with a few peripherals.

Due to the high number of lines, I tried to split the patch into several 
independent commits.
Each commit compiles on its own but I had to add temporary workarounds in 
intermediary commits to allow them to compile even if some functions are not 
used. However, they have been removed once the functions were used. Tell me if 
this is ok or if I should remove them.

Also, the tests are not very exhaustive for the moment. I have not found a way 
to test the clocks' frequency from the qtests, which limits severely the 
exhaustiveness of the tests.

Thanks to Philippe Mathieu-Daudé and Luc Michel for guiding me toward the 
hw/misc/bcm2835_cprman.c implementation and answering my questions about clock 
emulation in qemu !

Based-on: 20240109194438.70934-1-ines.var...@telecom-paris.fr
([PATCH v4 0/3] Add device STM32L4x5 SYSCFG)

Changes from v1 to v2:
- Removed a mention in the tests
- Added an early return to prevent a clang compilation error in 
rcc_update_pllsaixcfgr()

Changes from v2 to v3:
- Changed the timeout method used in the tests
- Added a real value for ICSR register
- Replaced some TODOs with correct error handling
- Added a commit that implements correct write protections for the CR register

Arnaud Minier (8):
  Implement STM32L4x5_RCC skeleton
  Add an internal clock multiplexer object
  Add an internal PLL Clock object
  Add initialization information for PLLs and clock multiplexers
  RCC: Handle Register Updates
  Add write protections to CR register
  STM32L4x5: Use the RCC Sysclk
  Add tests for the STM32L4x5_RCC

 MAINTAINERS                               |    5 +-
 docs/system/arm/b-l475e-iot01a.rst        |    2 +-
 hw/arm/Kconfig                            |    1 +
 hw/arm/b-l475e-iot01a.c                   |   10 +-
 hw/arm/stm32l4x5_soc.c                    |   45 +-
 hw/misc/Kconfig                           |    3 +
 hw/misc/meson.build                       |    1 +
 hw/misc/stm32l4x5_rcc.c                   | 1371 +++++++++++++++++++++
 hw/misc/trace-events                      |   14 +
 include/hw/arm/stm32l4x5_soc.h            |    5 +-
 include/hw/misc/stm32l4x5_rcc.h           |  239 ++++
 include/hw/misc/stm32l4x5_rcc_internals.h | 1044 ++++++++++++++++
 tests/qtest/meson.build                   |    3 +-
 tests/qtest/stm32l4x5_rcc-test.c          |  207 ++++
 14 files changed, 2905 insertions(+), 45 deletions(-)
 create mode 100644 hw/misc/stm32l4x5_rcc.c
 create mode 100644 include/hw/misc/stm32l4x5_rcc.h
 create mode 100644 include/hw/misc/stm32l4x5_rcc_internals.h
 create mode 100644 tests/qtest/stm32l4x5_rcc-test.c

-- 
2.34.1


Reply via email to