]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hwmon: (occ) Add soft minimum power cap attribute
authorEddie James <eajames@linux.ibm.com>
Tue, 15 Feb 2022 15:10:22 +0000 (09:10 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:04:21 +0000 (11:04 +0100)
[ Upstream commit 84dc9e8a7eec2cdff00728baedf0fb35fc7c11e8 ]

Export the power caps data for the soft minimum power cap through hwmon.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Link: https://lore.kernel.org/r/20220215151022.7498-5-eajames@linux.ibm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Stable-dep-of: 744c2fe950e9 ("hwmon: (occ) Rework attribute registration for stack usage")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/hwmon/occ/common.c

index 580e63d7daa00403be6d7da8b36465acfbe9f02b..ce4a16b475fd1a1c6320d4e6e01176d25b944341 100644 (file)
@@ -685,6 +685,9 @@ static ssize_t occ_show_caps_3(struct device *dev,
        case 7:
                val = caps->user_source;
                break;
+       case 8:
+               val = get_unaligned_be16(&caps->soft_min) * 1000000ULL;
+               break;
        default:
                return -EINVAL;
        }
@@ -845,12 +848,13 @@ static int occ_setup_sensor_attrs(struct occ *occ)
        case 1:
                num_attrs += (sensors->caps.num_sensors * 7);
                break;
-       case 3:
-               show_caps = occ_show_caps_3;
-               fallthrough;
        case 2:
                num_attrs += (sensors->caps.num_sensors * 8);
                break;
+       case 3:
+               show_caps = occ_show_caps_3;
+               num_attrs += (sensors->caps.num_sensors * 9);
+               break;
        default:
                sensors->caps.num_sensors = 0;
        }
@@ -1057,6 +1061,15 @@ static int occ_setup_sensor_attrs(struct occ *occ)
                        attr->sensor = OCC_INIT_ATTR(attr->name, 0444,
                                                     show_caps, NULL, 7, 0);
                        attr++;
+
+                       if (sensors->caps.version > 2) {
+                               snprintf(attr->name, sizeof(attr->name),
+                                        "power%d_cap_min_soft", s);
+                               attr->sensor = OCC_INIT_ATTR(attr->name, 0444,
+                                                            show_caps, NULL,
+                                                            8, 0);
+                               attr++;
+                       }
                }
        }