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) Arnaud Minier (7): 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 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 | 1298 +++++++++++++++++++++ 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 | 211 ++++ 14 files changed, 2836 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