All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/1] hw/adc: convert object props to class props
@ 2026-06-25 11:11 Mark Cave-Ayland
  2026-06-25 11:11 ` [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC " Mark Cave-Ayland
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Cave-Ayland @ 2026-06-25 11:11 UTC (permalink / raw)
  To: kfting, wuhaotsh, alistair, peter.maydell, berrange, qemu-arm,
	qemu-devel

Since the use of object props is effectively deprecated, here is an attempt
to convert all use of object props in hw/adc to class props. The eventual
aim is to continue working through the codebase, removing all remaining uses
of object props.

The series is lightly tested: it passes "make check", GitLab CI and some
simple local tests. I'm mostly interested for feedback on the conversion
strategy, and to get a feel for the best way to merge this series since once
the basic conversion patterns are in place, the same patterns can be applied
elsewhere and it would be good to minimise the merge window for such changes.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>


v2:
- Drop support for "foo[*]" notation, and generate the array property name
  directly as suggested by Daniel


Mark Cave-Ayland (1):
  hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC object props to class props

 hw/adc/npcm7xx_adc.c | 77 ++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 70 insertions(+), 7 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC object props to class props
  2026-06-25 11:11 [PATCH v2 0/1] hw/adc: convert object props to class props Mark Cave-Ayland
@ 2026-06-25 11:11 ` Mark Cave-Ayland
  2026-06-25 11:15   ` Daniel P. Berrangé
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Cave-Ayland @ 2026-06-25 11:11 UTC (permalink / raw)
  To: kfting, wuhaotsh, alistair, peter.maydell, berrange, qemu-arm,
	qemu-devel

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
---
 hw/adc/npcm7xx_adc.c | 77 ++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 70 insertions(+), 7 deletions(-)

diff --git a/hw/adc/npcm7xx_adc.c b/hw/adc/npcm7xx_adc.c
index 3584c27c75..833e01a913 100644
--- a/hw/adc/npcm7xx_adc.c
+++ b/hw/adc/npcm7xx_adc.c
@@ -20,6 +20,8 @@
 #include "hw/core/qdev-properties.h"
 #include "hw/core/registerfields.h"
 #include "migration/vmstate.h"
+#include "qapi/error.h"
+#include "qapi/visitor.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "qemu/timer.h"
@@ -229,7 +231,6 @@ static void npcm7xx_adc_init(Object *obj)
 {
     NPCM7xxADCState *s = NPCM7XX_ADC(obj);
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
-    int i;
 
     sysbus_init_irq(sbd, &s->irq);
 
@@ -240,15 +241,63 @@ static void npcm7xx_adc_init(Object *obj)
     sysbus_init_mmio(sbd, &s->iomem);
     s->clock = qdev_init_clock_in(DEVICE(s), "clock", NULL, NULL, 0);
 
-    for (i = 0; i < NPCM7XX_ADC_NUM_INPUTS; ++i) {
-        object_property_add_uint32_ptr(obj, "adci[*]",
-                &s->adci[i], OBJ_PROP_FLAG_READWRITE);
-    }
-    object_property_add_uint32_ptr(obj, "vref",
-            &s->vref, OBJ_PROP_FLAG_WRITE);
     npcm7xx_adc_calibrate(s);
 }
 
+static void npcm7xx_adc_get_input(Object *obj, Visitor *v,
+                                  const char *name, void *opaque,
+                                  Error **errp)
+{
+    NPCM7xxADCState *s = NPCM7XX_ADC(obj);
+    uint32_t idx, val;
+    int res;
+
+    res = sscanf(name, "adci[%u]", &idx);
+    if (res == EOF || res != 1) {
+        error_setg(errp, "unable to parse index from %s", name);
+        return;
+    }
+
+    val = s->adci[idx];
+    visit_type_uint32(v, name, &val, errp);
+}
+
+static void npcm7xx_adc_set_input(Object *obj, Visitor *v,
+                                  const char *name, void *opaque,
+                                  Error **errp)
+{
+    NPCM7xxADCState *s = NPCM7XX_ADC(obj);
+    uint32_t idx, val;
+    int res;
+
+    res = sscanf(name, "adci[%u]", &idx);
+    if (res == EOF || res != 1) {
+        error_setg(errp, "unable to parse index from %s", name);
+        return;
+    }
+
+    val = s->adci[idx];
+    if (!visit_type_uint32(v, name, &val, errp)) {
+        return;
+    }
+
+    s->adci[idx] = val;
+}
+
+static void npcm7xx_adc_set_vref(Object *obj, Visitor *v,
+                                 const char *name, void *opaque,
+                                 Error **errp)
+{
+    NPCM7xxADCState *s = NPCM7XX_ADC(obj);
+    uint32_t vref = s->vref;
+
+    if (!visit_type_uint32(v, name, &vref, errp)) {
+        return;
+    }
+
+    s->vref = vref;
+}
+
 static const VMStateDescription vmstate_npcm7xx_adc = {
     .name = "npcm7xx-adc",
     .version_id = 0,
@@ -275,6 +324,7 @@ static void npcm7xx_adc_class_init(ObjectClass *klass, const void *data)
 {
     ResettableClass *rc = RESETTABLE_CLASS(klass);
     DeviceClass *dc = DEVICE_CLASS(klass);
+    int i;
 
     dc->desc = "NPCM7xx ADC Module";
     dc->vmsd = &vmstate_npcm7xx_adc;
@@ -282,6 +332,19 @@ static void npcm7xx_adc_class_init(ObjectClass *klass, const void *data)
     rc->phases.hold = npcm7xx_adc_hold_reset;
 
     device_class_set_props(dc, npcm7xx_timer_properties);
+
+    for (i = 0; i < NPCM7XX_ADC_NUM_INPUTS; ++i) {
+        g_autofree char *adciprop = g_strdup_printf("adci[%u]", i);
+
+        object_class_property_add(klass, adciprop, "uint32",
+                                  npcm7xx_adc_get_input,
+                                  npcm7xx_adc_set_input,
+                                  NULL, NULL);
+    }
+    object_class_property_add(klass, "vref", "uint32",
+                              NULL,
+                              npcm7xx_adc_set_vref,
+                              NULL, NULL);
 }
 
 static const TypeInfo npcm7xx_adc_info = {
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC object props to class props
  2026-06-25 11:11 ` [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC " Mark Cave-Ayland
@ 2026-06-25 11:15   ` Daniel P. Berrangé
  2026-06-25 11:22     ` Mark Cave-Ayland
  0 siblings, 1 reply; 4+ messages in thread
From: Daniel P. Berrangé @ 2026-06-25 11:15 UTC (permalink / raw)
  To: Mark Cave-Ayland
  Cc: kfting, wuhaotsh, alistair, peter.maydell, qemu-arm, qemu-devel

On Thu, Jun 25, 2026 at 12:11:17PM +0100, Mark Cave-Ayland wrote:
> Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
> ---
>  hw/adc/npcm7xx_adc.c | 77 ++++++++++++++++++++++++++++++++++++++++----
>  1 file changed, 70 insertions(+), 7 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC object props to class props
  2026-06-25 11:15   ` Daniel P. Berrangé
@ 2026-06-25 11:22     ` Mark Cave-Ayland
  0 siblings, 0 replies; 4+ messages in thread
From: Mark Cave-Ayland @ 2026-06-25 11:22 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: kfting, wuhaotsh, alistair, peter.maydell, qemu-arm, qemu-devel

On 25/06/2026 12:15, Daniel P. Berrangé wrote:

> On Thu, Jun 25, 2026 at 12:11:17PM +0100, Mark Cave-Ayland wrote:
>> Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
>> ---
>>   hw/adc/npcm7xx_adc.c | 77 ++++++++++++++++++++++++++++++++++++++++----
>>   1 file changed, 70 insertions(+), 7 deletions(-)
> 
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Thanks Daniel.

This is actually the 2nd conversion series I've sent, the first is for 
hw/acpi which I posted at 
https://patchew.org/QEMU/20260622112403.928954-1-mark.caveayland@nutanix.com/.

Given that such changes will cover a large amount of the codebase, do 
you think it makes sense to send all the series through the QOM tree? 
And would that require an Ack from all the relevant maintainers too?

My worry is that the conversion process and dropping of standard object 
properties will get dragged out over many months for what is effectively 
a global mechanical-ish conversion.


ATB,

Mark.



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-25 11:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-25 11:11 [PATCH v2 0/1] hw/adc: convert object props to class props Mark Cave-Ayland
2026-06-25 11:11 ` [PATCH v2 1/1] hw/adc/npcm7xx_adc.c: convert NPCM7XX_ADC " Mark Cave-Ayland
2026-06-25 11:15   ` Daniel P. Berrangé
2026-06-25 11:22     ` Mark Cave-Ayland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.