qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 10/14] hw/sensor: Add Renesas ISL69259 device model


From: Cédric Le Goater
Subject: Re: [PATCH v3 10/14] hw/sensor: Add Renesas ISL69259 device model
Date: Thu, 30 Jun 2022 08:30:25 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.0

On 6/30/22 06:51, Peter Delevoryas wrote:
From: Peter Delevoryas <pdel@fb.com>

This adds the ISL69259, using all the same functionality as the existing
ISL69260 but overriding the IC_DEVICE_ID.

Signed-off-by: Peter Delevoryas <pdel@fb.com>
---
  hw/sensor/isl_pmbus_vr.c | 28 ++++++++++++++++++++++++++++
  1 file changed, 28 insertions(+)

diff --git a/hw/sensor/isl_pmbus_vr.c b/hw/sensor/isl_pmbus_vr.c
index 799ea9d89e..853d70536f 100644
--- a/hw/sensor/isl_pmbus_vr.c
+++ b/hw/sensor/isl_pmbus_vr.c
@@ -119,6 +119,18 @@ static void raa228000_exit_reset(Object *obj)
      pmdev->pages[0].read_temperature_3 = 0;
  }
+static void isl69259_exit_reset(Object *obj)
+{
+    ISLState *s = ISL69260(obj);
+    static const uint8_t ic_device_id[] = {0x04, 0x00, 0x81, 0xD2, 0x49, 0x3c};

This looks like an ISLClass attribute to me. In which case, you wouldn't need 
the
reset handler nor the 'ic_device_id_len' field.

Thanks,

C.

+    g_assert_cmphex(sizeof(ic_device_id), <=, sizeof(s->ic_device_id));
+
+    isl_pmbus_vr_exit_reset(obj);
+
+    s->ic_device_id_len = sizeof(ic_device_id);
+    memcpy(s->ic_device_id, ic_device_id, sizeof(ic_device_id));
+}
+
  static void isl_pmbus_vr_add_props(Object *obj, uint64_t *flags, uint8_t 
pages)
  {
      PMBusDevice *pmdev = PMBUS_DEVICE(obj);
@@ -257,6 +269,21 @@ static void raa229004_class_init(ObjectClass *klass, void 
*data)
      isl_pmbus_vr_class_init(klass, data, 2);
  }
+static void isl69259_class_init(ObjectClass *klass, void *data)
+{
+    ResettableClass *rc = RESETTABLE_CLASS(klass);
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    dc->desc = "Renesas ISL69259 Digital Multiphase Voltage Regulator";
+    rc->phases.exit = isl69259_exit_reset;
+    isl_pmbus_vr_class_init(klass, data, 2);
+}
+
+static const TypeInfo isl69259_info = {
+    .name = TYPE_ISL69259,
+    .parent = TYPE_ISL69260,
+    .class_init = isl69259_class_init,
+};
+
  static const TypeInfo isl69260_info = {
      .name = TYPE_ISL69260,
      .parent = TYPE_PMBUS_DEVICE,
@@ -283,6 +310,7 @@ static const TypeInfo raa228000_info = {
static void isl_pmbus_vr_register_types(void)
  {
+    type_register_static(&isl69259_info);
      type_register_static(&isl69260_info);
      type_register_static(&raa228000_info);
      type_register_static(&raa229004_info);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]