• Guenter Roeck's avatar
    hwmon: (pmbus) Stop caching register values · a919ba06
    Guenter Roeck authored
    Caching register values can be very expensive for PMBus chips. Some
    modern chips may have 10 or more pages, with several sensors supported
    per page. For example, MAX16601 creates more than 90 sysfs attributes.
    Register caching for such chips is time consuming, especially if only a
    few attributes are read on a regular basis. For MAX16601, it was observed
    that it can take up to two seconds to read all attributes on a slow I2C
    bus. In this situation, register caching results in the opposite of its
    intention: It increases the number of I2C operations, in some cases
    substantially, and it results in large latency when trying to access
    individual sensor data.
    
    Drop all register caching to solve the problem. Since it is no longer
    necessary, drop status register mapping as part of the change, and specify
    status registers directly.
    
    Cc: Alex Qiu <xqiu@google.com>
    Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Reviewed-by: default avatarAlex Qiu <xqiu@google.com>
    Tested-by: default avatarAlex Qiu <xqiu@google.com>
    Link: https://lore.kernel.org/r/20200904163314.259087-1-linux@roeck-us.netSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    a919ba06
pmbus_core.c 63.1 KB