Am 5. Dezember 2025 05:38:06 UTC schrieb Gaurav Sharma 
<[email protected]>:
>Add configurable properties for register reset values that differ
>between i.MX 8M variants (Plus, Mini, etc.). This allows the same
>device implementation to be shared across multiple SoCs.
>
>Properties added:
>- arm-pll-fdiv-ctl0-reset: ARM PLL divider control reset value
>
>Default value is set to match i.MX 8MP reset value (0x000FA031).
>This can be overridden in the variant like iMX8MM with its own
>reset value.
>
>Signed-off-by: Gaurav Sharma <[email protected]>
>---
> hw/misc/imx8mp_analog.c         | 12 +++++++++++-
> include/hw/misc/imx8mp_analog.h |  3 +++
> 2 files changed, 14 insertions(+), 1 deletion(-)
>
>diff --git a/hw/misc/imx8mp_analog.c b/hw/misc/imx8mp_analog.c
>index 23ffae84f8..7c904d77f4 100644
>--- a/hw/misc/imx8mp_analog.c
>+++ b/hw/misc/imx8mp_analog.c
>@@ -12,6 +12,7 @@
> #include "qemu/log.h"
> 
> #include "hw/misc/imx8mp_analog.h"
>+#include "hw/qdev-properties.h"
> #include "migration/vmstate.h"
> 
> #define ANALOG_PLL_LOCK BIT(31)
>@@ -51,7 +52,10 @@ static void imx8mp_analog_reset(DeviceState *dev)
>     s->analog[ANALOG_VPU_PLL_LOCKD_CTRL] = 0x0010003f;
>     s->analog[ANALOG_VPU_PLL_MNIT_CTRL] = 0x00280081;
>     s->analog[ANALOG_ARM_PLL_GEN_CTRL] = 0x00000810;
>-    s->analog[ANALOG_ARM_PLL_FDIV_CTL0] = 0x000fa031;
>+
>+    /* Use property value instead of hardcoded */
>+    s->analog[ANALOG_ARM_PLL_FDIV_CTL0] = s->arm_pll_fdiv_ctl0_reset;
>+
>     s->analog[ANALOG_ARM_PLL_LOCKD_CTRL] = 0x0010003f;
>     s->analog[ANALOG_ARM_PLL_MNIT_CTRL] = 0x00280081;
>     s->analog[ANALOG_SYS_PLL1_GEN_CTRL] = 0x0aaaa810;
>@@ -138,11 +142,17 @@ static const VMStateDescription imx8mp_analog_vmstate = {
>     },
> };
> 
>+static const Property imx8mp_analog_properties[] = {
>+    DEFINE_PROP_UINT32("arm-pll-fdiv-ctl0-reset", IMX8MPAnalogState,
>+                       arm_pll_fdiv_ctl0_reset, 0x000fa031), /* imx8mp 
>default */

IMO the new comments in the code except this one merily state the obvious, so 
I'd drop those.

With this fixed:
Reviewed-by: Bernhard Beschow <[email protected]>

>+};
>+
> static void imx8mp_analog_class_init(ObjectClass *klass, const void *data)
> {
>     DeviceClass *dc = DEVICE_CLASS(klass);
> 
>     device_class_set_legacy_reset(dc, imx8mp_analog_reset);
>+    device_class_set_props(dc, imx8mp_analog_properties);
>     dc->vmsd  = &imx8mp_analog_vmstate;
>     dc->desc  = "i.MX 8M Plus Analog Module";
> }
>diff --git a/include/hw/misc/imx8mp_analog.h b/include/hw/misc/imx8mp_analog.h
>index 955f03215a..b313820392 100644
>--- a/include/hw/misc/imx8mp_analog.h
>+++ b/include/hw/misc/imx8mp_analog.h
>@@ -76,6 +76,9 @@ struct IMX8MPAnalogState {
>     } mmio;
> 
>     uint32_t analog[ANALOG_MAX];
>+
>+    /* Property for variant-specific reset values */
>+    uint32_t arm_pll_fdiv_ctl0_reset;
> };
> 
> #endif /* IMX8MP_ANALOG_H */

Reply via email to