Message ID | 20230331000756.1712787-6-titusr@google.com |
---|---|
State | New |
Headers | show |
Series | PMBus fixes and new functions | expand |
On Fri, Mar 31, 2023 at 12:07:54AM +0000, Titus Rwantare wrote: > VCAP is a register for devices with energy storage capacitors. > > Reviewed-by: Benjamin Streb <bstreb@google.com> > Signed-off-by: Titus Rwantare <titusr@google.com> Acked-by: Corey Minyard <cminyard@mvista.com> > --- > hw/i2c/pmbus_device.c | 8 ++++++++ > include/hw/i2c/pmbus_device.h | 1 + > 2 files changed, 9 insertions(+) > > diff --git a/hw/i2c/pmbus_device.c b/hw/i2c/pmbus_device.c > index 18e629eaac..ef0314a913 100644 > --- a/hw/i2c/pmbus_device.c > +++ b/hw/i2c/pmbus_device.c > @@ -903,6 +903,14 @@ static uint8_t pmbus_receive_byte(SMBusDevice *smd) > } > break; > > + case PMBUS_READ_VCAP: /* Read-Only word */ > + if (pmdev->pages[index].page_flags & PB_HAS_VCAP) { > + pmbus_send16(pmdev, pmdev->pages[index].read_vcap); > + } else { > + goto passthough; > + } > + break; > + > case PMBUS_READ_VOUT: /* Read-Only word */ > if (pmdev->pages[index].page_flags & PB_HAS_VOUT) { > pmbus_send16(pmdev, pmdev->pages[index].read_vout); > diff --git a/include/hw/i2c/pmbus_device.h b/include/hw/i2c/pmbus_device.h > index ad431bdc7c..f195c11384 100644 > --- a/include/hw/i2c/pmbus_device.h > +++ b/include/hw/i2c/pmbus_device.h > @@ -243,6 +243,7 @@ OBJECT_DECLARE_TYPE(PMBusDevice, PMBusDeviceClass, > #define PB_HAS_VIN_RATING BIT_ULL(13) > #define PB_HAS_VOUT_RATING BIT_ULL(14) > #define PB_HAS_VOUT_MODE BIT_ULL(15) > +#define PB_HAS_VCAP BIT_ULL(16) > #define PB_HAS_IOUT BIT_ULL(21) > #define PB_HAS_IIN BIT_ULL(22) > #define PB_HAS_IOUT_RATING BIT_ULL(23) > -- > 2.40.0.423.gd6c402a77b-goog >
diff --git a/hw/i2c/pmbus_device.c b/hw/i2c/pmbus_device.c index 18e629eaac..ef0314a913 100644 --- a/hw/i2c/pmbus_device.c +++ b/hw/i2c/pmbus_device.c @@ -903,6 +903,14 @@ static uint8_t pmbus_receive_byte(SMBusDevice *smd) } break; + case PMBUS_READ_VCAP: /* Read-Only word */ + if (pmdev->pages[index].page_flags & PB_HAS_VCAP) { + pmbus_send16(pmdev, pmdev->pages[index].read_vcap); + } else { + goto passthough; + } + break; + case PMBUS_READ_VOUT: /* Read-Only word */ if (pmdev->pages[index].page_flags & PB_HAS_VOUT) { pmbus_send16(pmdev, pmdev->pages[index].read_vout); diff --git a/include/hw/i2c/pmbus_device.h b/include/hw/i2c/pmbus_device.h index ad431bdc7c..f195c11384 100644 --- a/include/hw/i2c/pmbus_device.h +++ b/include/hw/i2c/pmbus_device.h @@ -243,6 +243,7 @@ OBJECT_DECLARE_TYPE(PMBusDevice, PMBusDeviceClass, #define PB_HAS_VIN_RATING BIT_ULL(13) #define PB_HAS_VOUT_RATING BIT_ULL(14) #define PB_HAS_VOUT_MODE BIT_ULL(15) +#define PB_HAS_VCAP BIT_ULL(16) #define PB_HAS_IOUT BIT_ULL(21) #define PB_HAS_IIN BIT_ULL(22) #define PB_HAS_IOUT_RATING BIT_ULL(23)