]> git.dujemihanovic.xyz Git - linux.git/commitdiff
HID: amd_sfh: Split sensor and HID initialization for SFH1.1
authorBasavaraj Natikar <Basavaraj.Natikar@amd.com>
Tue, 9 May 2023 06:58:57 +0000 (12:28 +0530)
committerJiri Kosina <jkosina@suse.cz>
Tue, 23 May 2023 13:58:30 +0000 (15:58 +0200)
Sensors are enabled independently of HID device initialization. Sensor
initialization should be kept separate in this case, while HID devices
should be initialized according to the sensor state. Hence split sensor
initialization and HID initialization for SFH1.1 into separate blocks.

Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c

index 2102d53bd51f750637f682004993ec538178fc9e..e9c6413af24a079959f693db36f760fed1a77950 100644 (file)
@@ -168,16 +168,16 @@ static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata)
                status = amd_sfh_wait_for_response
                                (privdata, cl_data->sensor_idx[i], ENABLE_SENSOR);
 
-               status = (status == 0) ? SENSOR_ENABLED : SENSOR_DISABLED;
+               cl_data->sensor_sts[i] = (status == 0) ? SENSOR_ENABLED : SENSOR_DISABLED;
+       }
 
-               if (status == SENSOR_ENABLED) {
+       for (i = 0; i < cl_data->num_hid_devices; i++) {
+               cl_data->cur_hid_dev = i;
+               if (cl_data->sensor_sts[i] == SENSOR_ENABLED) {
                        cl_data->is_any_sensor_enabled = true;
-                       cl_data->sensor_sts[i] = SENSOR_ENABLED;
                        rc = amdtp_hid_probe(i, cl_data);
                        if (rc)
                                goto cleanup;
-               } else {
-                       cl_data->sensor_sts[i] = SENSOR_DISABLED;
                }
                dev_dbg(dev, "sid 0x%x (%s) status 0x%x\n",
                        cl_data->sensor_idx[i], get_sensor_name(cl_data->sensor_idx[i]),