Skip to content

Commit 8031b00

Browse files
basuamdBenjamin Tissoires
authored andcommitted
HID: amd_sfh: Move sensor discovery before HID device initialization
Sensors discovery is independent of HID device initialization. If sensor discovery fails after HID initialization, then the HID device needs to be deinitialized. Therefore, sensors discovery should be moved before HID device initialization. Fixes: 7bcfdab ("HID: amd_sfh: if no sensors are enabled, clean up") Tested-by: Aurinko <petrvelicka@tuta.io> Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com> Link: https://patch.msgid.link/20240718111616.3012155-1-Basavaraj.Natikar@amd.com Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
1 parent bacc15e commit 8031b00

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

drivers/hid/amd-sfh-hid/amd_sfh_client.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -288,12 +288,22 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
288288
mp2_ops->start(privdata, info);
289289
cl_data->sensor_sts[i] = amd_sfh_wait_for_response
290290
(privdata, cl_data->sensor_idx[i], SENSOR_ENABLED);
291+
292+
if (cl_data->sensor_sts[i] == SENSOR_ENABLED)
293+
cl_data->is_any_sensor_enabled = true;
294+
}
295+
296+
if (!cl_data->is_any_sensor_enabled ||
297+
(mp2_ops->discovery_status && mp2_ops->discovery_status(privdata) == 0)) {
298+
dev_warn(dev, "Failed to discover, sensors not enabled is %d\n",
299+
cl_data->is_any_sensor_enabled);
300+
rc = -EOPNOTSUPP;
301+
goto cleanup;
291302
}
292303

293304
for (i = 0; i < cl_data->num_hid_devices; i++) {
294305
cl_data->cur_hid_dev = i;
295306
if (cl_data->sensor_sts[i] == SENSOR_ENABLED) {
296-
cl_data->is_any_sensor_enabled = true;
297307
rc = amdtp_hid_probe(i, cl_data);
298308
if (rc)
299309
goto cleanup;
@@ -305,12 +315,6 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)
305315
cl_data->sensor_sts[i]);
306316
}
307317

308-
if (!cl_data->is_any_sensor_enabled ||
309-
(mp2_ops->discovery_status && mp2_ops->discovery_status(privdata) == 0)) {
310-
dev_warn(dev, "Failed to discover, sensors not enabled is %d\n", cl_data->is_any_sensor_enabled);
311-
rc = -EOPNOTSUPP;
312-
goto cleanup;
313-
}
314318
schedule_delayed_work(&cl_data->work_buffer, msecs_to_jiffies(AMD_SFH_IDLE_LOOP));
315319
return 0;
316320

0 commit comments

Comments
 (0)