Rainy saturday, time for some hobbyist contributions :) In this series we try to address the issue Zoltan reported and try to fix in [*], but using a more generic approach. The SDHCI code ends up better consolidated and ready to scale for more vendor implementations.
I expect (with few QOM knowledge) this to be trivial to review. - Remove SDHCIState::vendor field - Convert state fields to class ones - Simplify endianness handling - Add default reset values as class fields [*] https://lore.kernel.org/qemu-devel/20250210160329.dda7f4e6...@zero.eik.bme.hu/ Philippe Mathieu-Daudé (12): hw/sd/sdhci: Remove need for SDHCIState::vendor field hw/sd/sdhci: Introduce SDHCIClass stub hw/sd/sdhci: Make quirks a class property hw/sd/sdhci: Make I/O region size a class property hw/sd/sdhci: Enforce little endianness on PCI devices hw/sd/sdhci: Allow SDHCI classes to register their own MemoryRegionOps hw/sd/sdhci: Simplify MemoryRegionOps endianness check hw/sd/sdhci: Unify default MemoryRegionOps hw/sd/sdhci: Add SDHCIClass::ro::capareg field hw/sd/sdhci: Allow SDHCI classes to have different register reset values hw/sd/sdhci: Implement Freescale eSDHC as TYPE_FSL_ESDHC hw/ppc/e500: Replace generic SDHCI by Freescale eSDHC hw/sd/sdhci-internal.h | 25 +++---- include/hw/sd/sdhci.h | 43 ++++++++++- hw/arm/fsl-imx25.c | 2 - hw/arm/fsl-imx6.c | 2 - hw/arm/fsl-imx6ul.c | 2 - hw/arm/fsl-imx7.c | 2 - hw/arm/fsl-imx8mp.c | 2 - hw/ppc/e500.c | 10 +-- hw/sd/sdhci-pci.c | 1 + hw/sd/sdhci.c | 163 ++++++++++++++++++++++++++--------------- 10 files changed, 155 insertions(+), 97 deletions(-) -- 2.47.1