This patch allows to emulate the STM32L4x5 EXTI device.
It implements register access and software interruptions.
This is RFC since we still have troubles to make all tests pass.
More precisely, the line `g_assert_true(get_irq(GPIO_0_IRQ));` fails in
the software interrupts test. No irq seems to be fired.
(We also tested the stm32f4_exti (on which this implementation is based
upon) on but it also fails so don't really know if the test or the
implementation is incorrect).
Thank you Philippe for your reviews ! They are really useful !
The code is now more concise and clear.
Also, Inès and I were wondering what would be the next step for our
previous patchset that adds support for the B-L475E-IOT01A board and
STM32L4x5 SoC.
We used the RFC tag because we were unsure if this met Qemu quality
standard.
But now that this has been reviewed, is there anything we should to move
it forward and merge it ?
Sincerely,
Arnaud Minier
Changes from v1 to v2:
- use arrays to deduplicate code and logic
- move internal constant `EXTI_NUM_GPIO_EVENT_IN_LINES` from the header
to the .c file
- Improve copyright headers
- replace `static const` with `#define`
- use the DEFINE_TYPES macro
- fill the `impl` and `valid` field of the exti's `MemoryRegionOps`
- fix invalid test caused by a last minute change
Based-on: <170049810484.22920.612074576971878323-0@git.sr.ht>
([RFC v3 2/2] hw/arm: Add minimal support for the B-L475E-IOT01A board)
Arnaud Minier (1):
Implement STM32L4x5 EXTI
hw/arm/Kconfig | 1 +
hw/arm/stm32l4x5_soc.c | 65 ++++++-
hw/misc/Kconfig | 3 +
hw/misc/meson.build | 1 +
hw/misc/stm32l4x5_exti.c | 303 ++++++++++++++++++++++++++++++
hw/misc/trace-events | 5 +
include/hw/arm/stm32l4x5_soc.h | 3 +
include/hw/misc/stm32l4x5_exti.h | 58 ++++++
tests/qtest/meson.build | 5 +
tests/qtest/stm32l4x5_exti-test.c | 104 ++++++++++
10 files changed, 546 insertions(+), 2 deletions(-)
create mode 100644 hw/misc/stm32l4x5_exti.c
create mode 100644 include/hw/misc/stm32l4x5_exti.h
create mode 100644 tests/qtest/stm32l4x5_exti-test.c
--
2.38.5