[PATCH 8/8] hw/sensor: adm1266: set default VOUT mode
Titus Rwantare <[email protected]> Wed, 29 Jul 2026 23:13:23 +0000
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
VOUT_MODE 0 represents linear mode, and the exponent is set to -10, to allow us to fit 3.3V in the register. Signed-off-by: Titus Rwantare <[email protected]> --- hw/sensor/adm1266.c | 17 ++++++++++++----- tests/qtest/adm1266-test.c | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c index 1464307971..c0c6341876 100644 --- a/hw/sensor/adm1266.c +++ b/hw/sensor/adm1266.c @@ -42,6 +42,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(ADM1266State, ADM1266) #define ADM1266_MFR_LOCATION_DEFAULT "0000" #define ADM1266_MFR_DATE_DEFAULT "0000" #define ADM1266_MFR_SERIAL_DEFAULT "0000" +#define ADM1266_VOUT_MODE_EXP_DEFAULT -10 + #define ADM1266_NUM_PAGES 17 #define ADM1266_READ_LENGTH_DEFAULT 48 @@ -85,6 +87,10 @@ static void adm1266_exit_reset(Object *obj, ResetType type) { ADM1266State *s = ADM1266(obj); PMBusDevice *pmdev = PMBUS_DEVICE(obj); + PMBusVoutMode m = { + .mode = 0, + .exp = ADM1266_VOUT_MODE_EXP_DEFAULT + }; pmdev->page = 0; pmdev->capability = ADM1266_CAPABILITY_NO_PEC; @@ -92,11 +98,12 @@ static void adm1266_exit_reset(Object *obj, ResetType type) for (int i = 0; i < ADM1266_NUM_PAGES; i++) { pmdev->pages[i].operation = ADM1266_OPERATION_DEFAULT; pmdev->pages[i].revision = ADM1266_PMBUS_REVISION_DEFAULT; - pmdev->pages[i].vout_mode = 0; - pmdev->pages[i].read_vout = pmbus_data2linear_mode(12, 0); - pmdev->pages[i].vout_margin_high = pmbus_data2linear_mode(15, 0); - pmdev->pages[i].vout_margin_low = pmbus_data2linear_mode(3, 0); - pmdev->pages[i].vout_ov_fault_limit = pmbus_data2linear_mode(16, 0); + + pmdev->pages[i].vout_mode = *(uint8_t *)&m; + pmdev->pages[i].read_vout = pmbus_data2linear_mode(12, m.exp); + pmdev->pages[i].vout_margin_high = pmbus_data2linear_mode(15, m.exp); + pmdev->pages[i].vout_margin_low = pmbus_data2linear_mode(3, m.exp); + pmdev->pages[i].vout_ov_fault_limit = pmbus_data2linear_mode(16, m.exp); pmdev->pages[i].revision = ADM1266_PMBUS_REVISION_DEFAULT; } diff --git a/tests/qtest/adm1266-test.c b/tests/qtest/adm1266-test.c index 9cdd206c3f..6fcf2505cf 100644 --- a/tests/qtest/adm1266-test.c +++ b/tests/qtest/adm1266-test.c @@ -47,7 +47,7 @@ #define TEST_STRING_C "rev c" #define ADM1266_NUM_PAGES 17 -#define ADM1266_MAX_VALUE 65535000 +#define ADM1266_MAX_VALUE 63999 /* UINT16_MAX * 2^-10 */ typedef union { uint8_t raw; -- 2.55.0.508.g3f0d502094-goog