[PATCH v4 0/5] Add device DM163 (led driver, matrix colors shield & display)

Inès Varhol posted 5 patches 2 weeks, 1 day ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240414130604.182059-1-ines.varhol@telecom-paris.fr
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Arnaud Minier <arnaud.minier@telecom-paris.fr>, "Inès Varhol" <ines.varhol@telecom-paris.fr>, Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>
There is a newer version of this series
docs/system/arm/b-l475e-iot01a.rst  |   3 +-
include/hw/display/dm163.h          |  58 +++++
hw/arm/b-l475e-iot01a.c             | 103 +++++++--
hw/arm/stm32l4x5_soc.c              |   6 +-
hw/display/dm163.c                  | 333 ++++++++++++++++++++++++++++
tests/qtest/dm163-test.c            | 192 ++++++++++++++++
tests/qtest/stm32l4x5_gpio-test.c   |  12 +-
tests/qtest/stm32l4x5_syscfg-test.c |  16 +-
hw/arm/Kconfig                      |   1 +
hw/display/Kconfig                  |   3 +
hw/display/meson.build              |   1 +
hw/display/trace-events             |  14 ++
tests/qtest/meson.build             |   5 +
13 files changed, 717 insertions(+), 30 deletions(-)
create mode 100644 include/hw/display/dm163.h
create mode 100644 hw/display/dm163.c
create mode 100644 tests/qtest/dm163-test.c
[PATCH v4 0/5] Add device DM163 (led driver, matrix colors shield & display)
Posted by Inès Varhol 2 weeks, 1 day ago
This device implements the IM120417002 colors shield v1.1 for Arduino
(which relies on the DM163 8x3-channel led driving logic) and features
a simple display of an 8x8 RGB matrix. This color shield can be plugged
on the Arduino board (or the B-L475E-IOT01A board) to drive an 8x8
RGB led matrix. This RGB led matrix takes advantage of retinal persistance
to seemingly display different colors in each row.

Hello,

I have been very busy this last month, sorry for the delay.
In a later version, I will add a more thorough test like suggested by
Thomas Huth (thank you for the examples, I will look into it).

Following the response of Peter Maydell about the SYSCFG export at
STM32L4x5 level, I'm thinking of moving the STM32L4x5 GPIO output
splitters from the Bl475e machine to the STM32L4x5 SOC code.

In the current code, the GPIO output splitters are created in the
Bl475e machine and the machine has to wire some of these splitted
outputs to SYSCFG inputs. SYSCFG inputs are exported at SOC level
to facilitate this.

By moving the splitters inside the STM32L4x5 SOC, the SOC could
export GPIO I/O instead of SYSCFG I/O which would be closer to
the hardware, and the Bl475e machine would directly connect the
DM163 to GPIO outputs.

Changes from v3 (review of the 1st commit by Peter Maydell) :
- dm163.c : instead of redrawing the entire console each frame,
only redraw the rows that changed using a new variable `redraw`
- reset all the fields in `dm163_reset_hold`
- correcting typos : persistance -> persistence
- b-l475e-iot01a.rst : correcting typo

Changes from v2 : Corrected typo in the Based-on message id

Changes from v1 :
- moving the DM163 from the SoC to the B-L475E-IOT01A machine
(changing config files and tests accordingly)
- restricting DM163 test to ARM & DM163 availability
- using `object_class_by_name()` to check for DM163 presence at run-time
- exporting SYSCFG inputs to the SoC (and adapting tests accordingly)

Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr>
Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr>

Inès Varhol (5):
  hw/display : Add device DM163
  hw/arm : Pass STM32L4x5 SYSCFG gpios to STM32L4x5 SoC
  hw/arm : Create Bl475eMachineState
  hw/arm : Connect DM163 to B-L475E-IOT01A
  tests/qtest : Add testcase for DM163

 docs/system/arm/b-l475e-iot01a.rst  |   3 +-
 include/hw/display/dm163.h          |  58 +++++
 hw/arm/b-l475e-iot01a.c             | 103 +++++++--
 hw/arm/stm32l4x5_soc.c              |   6 +-
 hw/display/dm163.c                  | 333 ++++++++++++++++++++++++++++
 tests/qtest/dm163-test.c            | 192 ++++++++++++++++
 tests/qtest/stm32l4x5_gpio-test.c   |  12 +-
 tests/qtest/stm32l4x5_syscfg-test.c |  16 +-
 hw/arm/Kconfig                      |   1 +
 hw/display/Kconfig                  |   3 +
 hw/display/meson.build              |   1 +
 hw/display/trace-events             |  14 ++
 tests/qtest/meson.build             |   5 +
 13 files changed, 717 insertions(+), 30 deletions(-)
 create mode 100644 include/hw/display/dm163.h
 create mode 100644 hw/display/dm163.c
 create mode 100644 tests/qtest/dm163-test.c

-- 
2.43.2