* [PATCH v4 1/2] HID: amd_sfh: Fix SRA sensor when it's the only sensor
2025-04-07 15:17 [PATCH v4 0/2] Fixes for SRA sensor handling Mario Limonciello
@ 2025-04-07 15:17 ` Mario Limonciello
2025-04-07 15:17 ` [PATCH v4 2/2] HID: amd_sfh: Avoid clearing reports for SRA sensor Mario Limonciello
2025-04-07 15:30 ` [PATCH v4 0/2] Fixes for SRA sensor handling Basavaraj Natikar
2 siblings, 0 replies; 4+ messages in thread
From: Mario Limonciello @ 2025-04-07 15:17 UTC (permalink / raw)
To: mario.limonciello, basavaraj.natikar, jikos, bentiss,
ilpo.jarvinen, Shyam-sundar.S-k, akshata.mukundshetty
Cc: Yijun Shen, Yijun Shen, stable, linux-input
From: Mario Limonciello <mario.limonciello@amd.com>
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>
---
v2:
* Add tag
---
drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
index 25f0ebfcbd5f5..c1bdf1e0d44af 100644
--- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
+++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
@@ -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;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v4 2/2] HID: amd_sfh: Avoid clearing reports for SRA sensor
2025-04-07 15:17 [PATCH v4 0/2] Fixes for SRA sensor handling Mario Limonciello
2025-04-07 15:17 ` [PATCH v4 1/2] HID: amd_sfh: Fix SRA sensor when it's the only sensor Mario Limonciello
@ 2025-04-07 15:17 ` Mario Limonciello
2025-04-07 15:30 ` [PATCH v4 0/2] Fixes for SRA sensor handling Basavaraj Natikar
2 siblings, 0 replies; 4+ messages in thread
From: Mario Limonciello @ 2025-04-07 15:17 UTC (permalink / raw)
To: mario.limonciello, basavaraj.natikar, jikos, bentiss
Cc: Basavaraj Natikar, linux-input
From: Mario Limonciello <mario.limonciello@amd.com>
SRA sensor doesn't allocate any memory for reports. Skip
trying to clear memory for that sensor in cleanup path.
Suggested-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
v4:
* One more case for amd_sfh_hid_client_deinit()
v3:
* Less changes as amd_sfh_hid_client_deinit() covers a lot
v2:
* New patch
---
drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
index c1bdf1e0d44af..0a9b44ce4904e 100644
--- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
+++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
@@ -83,6 +83,9 @@ static int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)
case ALS_IDX:
privdata->dev_en.is_als_present = false;
break;
+ case SRA_IDX:
+ privdata->dev_en.is_sra_present = false;
+ break;
}
if (cl_data->sensor_sts[i] == SENSOR_ENABLED) {
@@ -237,6 +240,8 @@ static int amd_sfh1_1_hid_client_init(struct amd_mp2_dev *privdata)
cleanup:
amd_sfh_hid_client_deinit(privdata);
for (i = 0; i < cl_data->num_hid_devices; i++) {
+ if (cl_data->sensor_idx[i] == SRA_IDX)
+ continue;
devm_kfree(dev, cl_data->feature_report[i]);
devm_kfree(dev, in_data->input_report[i]);
devm_kfree(dev, cl_data->report_descr[i]);
--
2.43.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v4 0/2] Fixes for SRA sensor handling
2025-04-07 15:17 [PATCH v4 0/2] Fixes for SRA sensor handling Mario Limonciello
2025-04-07 15:17 ` [PATCH v4 1/2] HID: amd_sfh: Fix SRA sensor when it's the only sensor Mario Limonciello
2025-04-07 15:17 ` [PATCH v4 2/2] HID: amd_sfh: Avoid clearing reports for SRA sensor Mario Limonciello
@ 2025-04-07 15:30 ` Basavaraj Natikar
2 siblings, 0 replies; 4+ messages in thread
From: Basavaraj Natikar @ 2025-04-07 15:30 UTC (permalink / raw)
To: Mario Limonciello, mario.limonciello, akshata.mukundshetty,
basavaraj.natikar, bentiss, ilpo.jarvinen, jikos,
Shyam-sundar.S-k
Cc: linux-input
On 4/7/2025 8:47 PM, Mario Limonciello wrote:
> From: Mario Limonciello <mario.limonciello@amd.com>
>
> On systems with an SRA sensor there are some problems with both init
> and failure paths. This series accounts for both.
>
> v3-v4:
> * I got pinged offline with a missing cleanup case. As the patches
> otherwise looked fine I added it to the second patch and sent it.
> Mario Limonciello (2):
> HID: amd_sfh: Fix SRA sensor when it's the only sensor
> HID: amd_sfh: Avoid clearing reports for SRA sensor
>
> drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 12 ++++++++----
> 1 file changed, 8 insertions(+), 4 deletions(-)
Looks good to me.
Acked-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Thanks,
--
Basavaraj
>
^ permalink raw reply [flat|nested] 4+ messages in thread