HID: amd_sfh: Fix SRA sensor when it's the only sensor
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 21 Apr 2025 21:32:09 +0000 (16:32 -0500)
committerJiri Kosina <jkosina@suse.com>
Thu, 24 Apr 2025 10:17:55 +0000 (12:17 +0200)
On systems that only have an SRA sensor connected to SFH the sensor
doesn't get enabled due to a bad optimization condition of breaking
the sensor walk loop.

This optimization is unnecessary in the first place because if there
is only one device then the loop only runs once. Drop the condition
and explicitly mark sensor as enabled.

Reported-by: Yijun Shen <Yijun.Shen@dell.com>
Tested-By: Yijun Shen <Yijun_Shen@Dell.com>
Fixes: d1c444b47100d ("HID: amd_sfh: Add support to export device operating states")
Cc: stable@vger.kernel.org
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Acked-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c

index 25f0ebf..c1bdf1e 100644 (file)
@@ -134,9 +134,6 @@ static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata)
        for (i = 0; i < cl_data->num_hid_devices; i++) {
                cl_data->sensor_sts[i] = SENSOR_DISABLED;
 
-               if (cl_data->num_hid_devices == 1 && cl_data->sensor_idx[0] == SRA_IDX)
-                       break;
-
                if (cl_data->sensor_idx[i] == SRA_IDX) {
                        info.sensor_idx = cl_data->sensor_idx[i];
                        writel(0, privdata->mmio + amd_get_p2c_val(privdata, 0));
@@ -145,8 +142,10 @@ static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata)
                                (privdata, cl_data->sensor_idx[i], ENABLE_SENSOR);
 
                        cl_data->sensor_sts[i] = (status == 0) ? SENSOR_ENABLED : SENSOR_DISABLED;
-                       if (cl_data->sensor_sts[i] == SENSOR_ENABLED)
+                       if (cl_data->sensor_sts[i] == SENSOR_ENABLED) {
+                               cl_data->is_any_sensor_enabled = true;
                                privdata->dev_en.is_sra_present = true;
+                       }
                        continue;
                }