Message ID | 20240507185854.34572-1-ines.varhol@telecom-paris.fr (mailing list archive) |
---|---|
Headers | show |
Series | Check clock connection between STM32L4x5 RCC and peripherals | expand |
On Tue, 7 May 2024 at 19:59, Inès Varhol <ines.varhol@telecom-paris.fr> wrote: > > Among implemented STM32L4x5 devices, USART, GPIO and SYSCFG > have a clock source, but none has a corresponding test in QEMU. > > This patch makes sure that all 3 devices create a clock, > have a QOM property to access the clock frequency, > and adds QTests checking that clock enable in RCC has the > expected results. > > Philippe Mathieu-Daudé suggested the following : > ".. We could add the clock properties > directly in qdev_init_clock_in(). Seems useful for the QTest > framework." > > However Peter Maydell pointed out the following : > "...Mostly "frequency" properties on devices are for the case > where they *don't* have a Clock input and instead have > ad-hoc legacy handling where the board/SoC that creates the > device sets an integer property to define the input frequency > because it doesn't model the clock tree with Clock objects." > > You both agree on the fact that replicating the code in the > different devices is a bad idea, what should be the > alternative? I think we should use the approach discussed in the review comments on Philippe's patch https://patchew.org/QEMU/20240508141333.44610-1-philmd@linaro.org/ where if we're running a qtest then the core clock code creates a QOM property which is the clock period; the test code can then use that. thanks -- PMM
Among implemented STM32L4x5 devices, USART, GPIO and SYSCFG have a clock source, but none has a corresponding test in QEMU. This patch makes sure that all 3 devices create a clock, have a QOM property to access the clock frequency, and adds QTests checking that clock enable in RCC has the expected results. Philippe Mathieu-Daudé suggested the following : ".. We could add the clock properties directly in qdev_init_clock_in(). Seems useful for the QTest framework." However Peter Maydell pointed out the following : "...Mostly "frequency" properties on devices are for the case where they *don't* have a Clock input and instead have ad-hoc legacy handling where the board/SoC that creates the device sets an integer property to define the input frequency because it doesn't model the clock tree with Clock objects." You both agree on the fact that replicating the code in the different devices is a bad idea, what should be the alternative? Thank you for the reviews. Changes from v1: - upgrading `VMStateDescription` to version 2 to account for `VMSTATE_CLOCK()` - QTests : consolidating `get_clock_freq_hz()` in a header and making appropriate changes in stm32l4x5q_*-test.c Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr> Inès Varhol (4): hw/misc: Create STM32L4x5 SYSCFG clock hw/gpio: Handle clock migration in STM32L4x5 gpios hw/char: Add QOM property for STM32L4x5 USART clock frequency tests/qtest: Check STM32L4x5 clock connections include/hw/misc/stm32l4x5_syscfg.h | 1 + tests/qtest/stm32l4x5.h | 40 +++++++++++++++++++++++++++++ hw/arm/stm32l4x5_soc.c | 2 ++ hw/char/stm32l4x5_usart.c | 16 ++++++++++-- hw/gpio/stm32l4x5_gpio.c | 6 +++-- hw/misc/stm32l4x5_syscfg.c | 30 ++++++++++++++++++++-- tests/qtest/stm32l4x5_gpio-test.c | 23 +++++++++++++++++ tests/qtest/stm32l4x5_syscfg-test.c | 19 ++++++++++++-- tests/qtest/stm32l4x5_usart-test.c | 26 +++++++++++++++++++ 9 files changed, 155 insertions(+), 8 deletions(-) create mode 100644 tests/qtest/stm32l4x5.h