hwmon: (pmbus/core) Report content of CAPABILITY register in debugfs
authorGuenter Roeck <linux@roeck-us.net>
Sat, 1 Feb 2025 14:42:29 +0000 (06:42 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 2 Mar 2025 16:49:10 +0000 (08:49 -0800)
Report the value of the CAPABILITY register in debugfs if supported.
Only check if the register is supported if PMBUS_NO_CAPABILITY
is not set.

Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/pmbus_core.c

index f8965829fe17691e65bc412251e089fcd968c12d..cfeba2e4c5c3f2d53f8af8ad71b83f399778d567 100644 (file)
@@ -3568,12 +3568,12 @@ static void pmbus_init_debugfs(struct i2c_client *client,
        /*
         * Allocate the max possible entries we need.
         * device specific:
-        *      ARRAY_SIZE(pmbus_debugfs_block_data) + 1
+        *      ARRAY_SIZE(pmbus_debugfs_block_data) + 2
         * page specific:
         *      ARRAY_SIZE(pmbus_debugfs_status_data) + 1
         */
        entries = devm_kcalloc(data->dev,
-                              ARRAY_SIZE(pmbus_debugfs_block_data) + 1 +
+                              ARRAY_SIZE(pmbus_debugfs_block_data) + 2 +
                               data->info->pages * (ARRAY_SIZE(pmbus_debugfs_status_data) + 1),
                               sizeof(*entries), GFP_KERNEL);
        if (!entries)
@@ -3587,6 +3587,15 @@ static void pmbus_init_debugfs(struct i2c_client *client,
         * assume that values of the following registers are the same for all
         * pages and report values only for page 0.
         */
+       if (!(data->flags & PMBUS_NO_CAPABILITY) &&
+           pmbus_check_byte_register(client, 0, PMBUS_CAPABILITY)) {
+               entries[idx].client = client;
+               entries[idx].page = 0;
+               entries[idx].reg = PMBUS_CAPABILITY;
+               debugfs_create_file("capability", 0444, debugfs,
+                                   &entries[idx++],
+                                   &pmbus_debugfs_ops);
+       }
        if (pmbus_check_byte_register(client, 0, PMBUS_REVISION)) {
                entries[idx].client = client;
                entries[idx].page = 0;