hwmon: (pmbus) Initialise page count in pmbus_identify()
PATCH 1/1 hwmon: (pmbus) Initialise page count in pmbus_identify()
The pmbus_identify() function fails to correctly determine the number of supported pages on PMBus devices. This occurs because info->pages is implicitly zero-initialised, and pmbus_set_page() does not perform writes to the page register if info->pages is not yet initialised. Without this patch, info->pages is always set to the maximum after scanning.
This patch initialises info->pages to PMBUS_PAGES before the probing loop, enabling pmbus_set_page() writes to make it out onto the bus correctly identifying the number of pages. PMBUS_PAGES seemed like a reasonable non-zero number because that's the current result of the identification process.
Testing was done with a PMBus device in QEMU.
--- drivers/hwmon/pmbus/pmbus.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/hwmon/pmbus/pmbus.c +2 -0
@@ -103,6 +103,8 @@ static int pmbus_identify(struct i2c_client *client,if (pmbus_check_byte_register (client,0 ,PMBUS_PAGE )) {int page; + info->pages =PMBUS_PAGES ; +for (page =1 ; page <PMBUS_PAGES ; page++) {if (pmbus_set_page (client, page,0xff ) <0 )break ;
Signature · 1 line
2.48.1.711.g2feabab25a-goog
Quoted 13 lines · Titus Rwantare
The
pmbus_identify()function fails to correctly determine the number of supported pages on PMBus devices. This occurs becauseinfo->pagesis implicitly zero-initialised, andpmbus_set_page()does not perform writes to the page register ifinfo->pagesis not yet initialised. Without this patch,info->pagesis always set to the maximum after scanning.This patch initialises
info->pagestoPMBUS_PAGESbefore the probing loop, enablingpmbus_set_page()writes to make it out onto the bus correctly identifying the number of pages.PMBUS_PAGESseemed like a reasonable non-zero number because that's the current result of the identification process.
Quoted 3 lines
Testing was done with a PMBus device in QEMU.
Signed-off-by Titus Rwantare <[email protected]>
Applied.
Thanks,
Guenter