linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/1] HID: amd_sfh: Add support for tablet mode
@ 2025-03-09 19:49 Denis Benato
  2025-03-09 19:49 ` [PATCH 1/1] HID: amd_sfh: Add support for tablet mode switch sensors Denis Benato
  2025-04-24  9:27 ` [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Jiri Kosina
  0 siblings, 2 replies; 6+ messages in thread
From: Denis Benato @ 2025-03-09 19:49 UTC (permalink / raw)
  To: Basavaraj Natikar
  Cc: Jiri Kosina, Benjamin Tissoires, Luke D. Jones, Ivan Dovgal,
	Adrian Freund, linux-input, linux-kernel, Denis Benato

Recently there has been a renewed interest in this patch: ASUS has launched a new z13 model
and many more users requested tablet mode support for previous models.

I have made required adjustments to apply cleanly on top of linux-next:
nothing substantial, a macro has been changed from 5 to 6 upstream as
the previous patch also did and a few line changed their position.

Given there were no functional changes at all I took
the liberty to retain previous tags.

Denis Benato (1):
  HID: amd_sfh: Add support for tablet mode switch sensors

 drivers/hid/amd-sfh-hid/amd_sfh_client.c      |  2 ++
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +++
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.h        |  1 +
 .../hid_descriptor/amd_sfh_hid_desc.c         | 27 +++++++++++++++++++
 .../hid_descriptor/amd_sfh_hid_desc.h         |  8 ++++++
 .../hid_descriptor/amd_sfh_hid_report_desc.h  | 20 ++++++++++++++
 6 files changed, 62 insertions(+)

-- 
2.48.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/1] HID: amd_sfh: Add support for tablet mode switch sensors
  2025-03-09 19:49 [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Denis Benato
@ 2025-03-09 19:49 ` Denis Benato
  2025-04-24  9:27 ` [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Jiri Kosina
  1 sibling, 0 replies; 6+ messages in thread
From: Denis Benato @ 2025-03-09 19:49 UTC (permalink / raw)
  To: Basavaraj Natikar
  Cc: Jiri Kosina, Benjamin Tissoires, Luke D. Jones, Ivan Dovgal,
	Adrian Freund, linux-input, linux-kernel, Denis Benato,
	Paweł Kotiuk

This patch adds support for the tablet mode switch sensors on
convertible devices where that sensor is managed by AMD SFH, like the
Asus Flow X13 and the Lenovo ThinkPad L13 Yoga Gen2 (AMD).

Tested-by: Paweł Kotiuk <pawel@kotiuk.pl>
Co-developed-by: Ivan Dovgal <iv.dovg@gmail.com>
Signed-off-by: Ivan Dovgal <iv.dovg@gmail.com>
Co-developed-by: Luke D. Jones <luke@ljones.dev>
Signed-off-by: Luke D. Jones <luke@ljones.dev>
Signed-off-by: Adrian Freund <adrian@freund.io>
Signed-off-by: Denis Benato <benato.denis96@gmail.com>
---
 drivers/hid/amd-sfh-hid/amd_sfh_client.c      |  2 ++
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +++
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.h        |  1 +
 .../hid_descriptor/amd_sfh_hid_desc.c         | 27 +++++++++++++++++++
 .../hid_descriptor/amd_sfh_hid_desc.h         |  8 ++++++
 .../hid_descriptor/amd_sfh_hid_report_desc.h  | 20 ++++++++++++++
 6 files changed, 62 insertions(+)

diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_client.c b/drivers/hid/amd-sfh-hid/amd_sfh_client.c
index 3438d392920f..867019955b10 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_client.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_client.c
@@ -146,6 +146,8 @@ static const char *get_sensor_name(int idx)
 		return "gyroscope";
 	case mag_idx:
 		return "magnetometer";
+	case tms_idx:
+		return "tablet-mode-switch";
 	case als_idx:
 	case ACS_IDX: /* ambient color sensor */
 		return "ALS";
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index 48cfd0c58241..72a70f5e3cef 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -28,6 +28,7 @@
 #define ACEL_EN		BIT(0)
 #define GYRO_EN		BIT(1)
 #define MAGNO_EN	BIT(2)
+#define TMS_EN		BIT(15)
 #define HPD_EN		BIT(16)
 #define ALS_EN		BIT(19)
 #define ACS_EN		BIT(22)
@@ -231,6 +232,9 @@ int amd_mp2_get_sensor_num(struct amd_mp2_dev *privdata, u8 *sensor_id)
 	if (MAGNO_EN & activestatus)
 		sensor_id[num_of_sensors++] = mag_idx;
 
+	if (TMS_EN & activestatus)
+		sensor_id[num_of_sensors++] = tms_idx;
+
 	if (ALS_EN & activestatus)
 		sensor_id[num_of_sensors++] = als_idx;
 
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h
index 05e400a4a83e..617f0265b707 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.h
@@ -79,6 +79,7 @@ enum sensor_idx {
 	accel_idx = 0,
 	gyro_idx = 1,
 	mag_idx = 2,
+	tms_idx = 15,
 	als_idx = 19
 };
 
diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
index ef1f9be8b893..516a07bf3be6 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.c
@@ -47,6 +47,11 @@ static int get_report_descriptor(int sensor_idx, u8 *rep_desc)
 		memcpy(rep_desc, comp3_report_descriptor,
 		       sizeof(comp3_report_descriptor));
 		break;
+	case tms_idx: /* tablet mode switch */
+		memset(rep_desc, 0, sizeof(tms_report_descriptor));
+		memcpy(rep_desc, tms_report_descriptor,
+		       sizeof(tms_report_descriptor));
+		break;
 	case als_idx: /* ambient light sensor */
 	case ACS_IDX: /* ambient color sensor */
 		memset(rep_desc, 0, sizeof(als_report_descriptor));
@@ -97,6 +102,16 @@ static u32 get_descr_sz(int sensor_idx, int descriptor_name)
 			return sizeof(struct magno_feature_report);
 		}
 		break;
+	case tms_idx:
+		switch (descriptor_name) {
+		case descr_size:
+			return sizeof(tms_report_descriptor);
+		case input_size:
+			return sizeof(struct tms_input_report);
+		case feature_size:
+			return sizeof(struct tms_feature_report);
+		}
+		break;
 	case als_idx:
 	case ACS_IDX: /* ambient color sensor */
 		switch (descriptor_name) {
@@ -140,6 +155,7 @@ static u8 get_feature_report(int sensor_idx, int report_id, u8 *feature_report)
 	struct accel3_feature_report acc_feature;
 	struct gyro_feature_report gyro_feature;
 	struct magno_feature_report magno_feature;
+	struct tms_feature_report tms_feature;
 	struct hpd_feature_report hpd_feature;
 	struct als_feature_report als_feature;
 	u8 report_size = 0;
@@ -175,6 +191,11 @@ static u8 get_feature_report(int sensor_idx, int report_id, u8 *feature_report)
 		memcpy(feature_report, &magno_feature, sizeof(magno_feature));
 		report_size = sizeof(magno_feature);
 		break;
+	case tms_idx:  /* tablet mode switch */
+		get_common_features(&tms_feature.common_property, report_id);
+		memcpy(feature_report, &tms_feature, sizeof(tms_feature));
+		report_size = sizeof(tms_feature);
+		break;
 	case als_idx:  /* ambient light sensor */
 	case ACS_IDX: /* ambient color sensor */
 		get_common_features(&als_feature.common_property, report_id);
@@ -214,6 +235,7 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id,
 	struct accel3_input_report acc_input;
 	struct gyro_input_report gyro_input;
 	struct hpd_input_report hpd_input;
+	struct tms_input_report tms_input;
 	struct als_input_report als_input;
 	struct hpd_status hpdstatus;
 	u8 report_size = 0;
@@ -247,6 +269,11 @@ static u8 get_input_report(u8 current_index, int sensor_idx, int report_id,
 		memcpy(input_report, &magno_input, sizeof(magno_input));
 		report_size = sizeof(magno_input);
 		break;
+case tms_idx: /* tablet mode switch */
+		get_common_inputs(&tms_input.common_property, report_id);
+		report_size = sizeof(tms_input);
+		memcpy(input_report, &tms_input, sizeof(tms_input));
+		break;
 	case als_idx: /* Als */
 	case ACS_IDX: /* ambient color sensor */
 		get_common_inputs(&als_input.common_property, report_id);
diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
index 882434b1501f..afcdac989cb6 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_desc.h
@@ -114,4 +114,12 @@ struct hpd_input_report {
 	u8 human_presence;
 } __packed;
 
+struct tms_feature_report {
+	struct common_feature_property common_property;
+} __packed;
+
+struct tms_input_report {
+	struct common_input_property common_property;
+} __packed;
+
 #endif
diff --git a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
index 67ec2d6a417d..4dc87d684776 100644
--- a/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
+++ b/drivers/hid/amd-sfh-hid/hid_descriptor/amd_sfh_hid_report_desc.h
@@ -665,6 +665,26 @@ static const u8 als_report_descriptor[] = {
 0xC0			/* HID end collection */
 };
 
+/* TABLET MODE SWITCH */
+__maybe_unused // Used by sfh1.0, but not yet implemented in sfh1.1
+static const u8 tms_report_descriptor[] = {
+0x06, 0x43, 0xFF,  // Usage Page (Vendor Defined 0xFF43)
+0x0A, 0x02, 0x02,  // Usage (0x0202)
+0xA1, 0x01, // Collection (Application)
+0x85, 0x11, //   Report ID (17)
+0x15, 0x00, //   Logical Minimum (0)
+0x25, 0x01, //   Logical Maximum (1)
+0x35, 0x00, //   Physical Minimum (0)
+0x45, 0x01, //   Physical Maximum (1)
+0x65, 0x00, //   Unit (None)
+0x55, 0x00, //   Unit Exponent (0)
+0x75, 0x01, //   Report Size (1)
+0x95, 0x98, //   Report Count (-104)
+0x81, 0x03, //   Input (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
+0x91, 0x03, //   Output (Const,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
+0xC1, 0x00, // End Collection
+};
+
 /* BIOMETRIC PRESENCE*/
 static const u8 hpd_report_descriptor[] = {
 0x05, 0x20,          /* Usage page */
-- 
2.48.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/1] HID: amd_sfh: Add support for tablet mode
  2025-03-09 19:49 [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Denis Benato
  2025-03-09 19:49 ` [PATCH 1/1] HID: amd_sfh: Add support for tablet mode switch sensors Denis Benato
@ 2025-04-24  9:27 ` Jiri Kosina
  2025-04-24  9:51   ` Basavaraj Natikar
  1 sibling, 1 reply; 6+ messages in thread
From: Jiri Kosina @ 2025-04-24  9:27 UTC (permalink / raw)
  To: Denis Benato, Basavaraj Natikar
  Cc: Benjamin Tissoires, Luke D. Jones, Ivan Dovgal, Adrian Freund,
	linux-input, linux-kernel

On Sun, 9 Mar 2025, Denis Benato wrote:

> Recently there has been a renewed interest in this patch: ASUS has launched a new z13 model
> and many more users requested tablet mode support for previous models.
> 
> I have made required adjustments to apply cleanly on top of linux-next:
> nothing substantial, a macro has been changed from 5 to 6 upstream as
> the previous patch also did and a few line changed their position.
> 
> Given there were no functional changes at all I took
> the liberty to retain previous tags.
> 
> Denis Benato (1):
>   HID: amd_sfh: Add support for tablet mode switch sensors
> 
>  drivers/hid/amd-sfh-hid/amd_sfh_client.c      |  2 ++
>  drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +++
>  drivers/hid/amd-sfh-hid/amd_sfh_pcie.h        |  1 +
>  .../hid_descriptor/amd_sfh_hid_desc.c         | 27 +++++++++++++++++++
>  .../hid_descriptor/amd_sfh_hid_desc.h         |  8 ++++++
>  .../hid_descriptor/amd_sfh_hid_report_desc.h  | 20 ++++++++++++++
>  6 files changed, 62 insertions(+)

Basavaraj, could you please provide your Acked-by/Reviewed-by: for this 
(or any other sort of feedback)?

Thanks,

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/1] HID: amd_sfh: Add support for tablet mode
  2025-04-24  9:27 ` [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Jiri Kosina
@ 2025-04-24  9:51   ` Basavaraj Natikar
  2025-04-24 11:07     ` Jiri Kosina
  2025-08-15  9:12     ` Paweł Kotiuk
  0 siblings, 2 replies; 6+ messages in thread
From: Basavaraj Natikar @ 2025-04-24  9:51 UTC (permalink / raw)
  To: Jiri Kosina, Denis Benato, Basavaraj Natikar
  Cc: Benjamin Tissoires, Luke D. Jones, Ivan Dovgal, Adrian Freund,
	linux-input, linux-kernel


On 4/24/2025 2:57 PM, Jiri Kosina wrote:
> On Sun, 9 Mar 2025, Denis Benato wrote:
>
>> Recently there has been a renewed interest in this patch: ASUS has launched a new z13 model
>> and many more users requested tablet mode support for previous models.
>>
>> I have made required adjustments to apply cleanly on top of linux-next:
>> nothing substantial, a macro has been changed from 5 to 6 upstream as
>> the previous patch also did and a few line changed their position.
>>
>> Given there were no functional changes at all I took
>> the liberty to retain previous tags.
>>
>> Denis Benato (1):
>>    HID: amd_sfh: Add support for tablet mode switch sensors
>>
>>   drivers/hid/amd-sfh-hid/amd_sfh_client.c      |  2 ++
>>   drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +++
>>   drivers/hid/amd-sfh-hid/amd_sfh_pcie.h        |  1 +
>>   .../hid_descriptor/amd_sfh_hid_desc.c         | 27 +++++++++++++++++++
>>   .../hid_descriptor/amd_sfh_hid_desc.h         |  8 ++++++
>>   .../hid_descriptor/amd_sfh_hid_report_desc.h  | 20 ++++++++++++++
>>   6 files changed, 62 insertions(+)
> Basavaraj, could you please provide your Acked-by/Reviewed-by: for this
> (or any other sort of feedback)?

Sure, Jiri, I will get back to this patch soon.

We are reviewing similar features and related issues,
and we may need some more time to investigate them internally.

Therefore, I would like to hold off on this patch for a little longer
before providing feedback.

Thanks,
--
Basavaraj

>
> Thanks,
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/1] HID: amd_sfh: Add support for tablet mode
  2025-04-24  9:51   ` Basavaraj Natikar
@ 2025-04-24 11:07     ` Jiri Kosina
  2025-08-15  9:12     ` Paweł Kotiuk
  1 sibling, 0 replies; 6+ messages in thread
From: Jiri Kosina @ 2025-04-24 11:07 UTC (permalink / raw)
  To: Basavaraj Natikar
  Cc: Denis Benato, Basavaraj Natikar, Benjamin Tissoires,
	Luke D. Jones, Ivan Dovgal, Adrian Freund, linux-input,
	linux-kernel

On Thu, 24 Apr 2025, Basavaraj Natikar wrote:

> >> Recently there has been a renewed interest in this patch: ASUS has launched
> >> a new z13 model
> >> and many more users requested tablet mode support for previous models.
> >>
> >> I have made required adjustments to apply cleanly on top of linux-next:
> >> nothing substantial, a macro has been changed from 5 to 6 upstream as
> >> the previous patch also did and a few line changed their position.
> >>
> >> Given there were no functional changes at all I took
> >> the liberty to retain previous tags.
> >>
> >> Denis Benato (1):
> >>    HID: amd_sfh: Add support for tablet mode switch sensors
> >>
> >>   drivers/hid/amd-sfh-hid/amd_sfh_client.c      |  2 ++
> >>   drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +++
> >>   drivers/hid/amd-sfh-hid/amd_sfh_pcie.h        |  1 +
> >>   .../hid_descriptor/amd_sfh_hid_desc.c         | 27 +++++++++++++++++++
> >>   .../hid_descriptor/amd_sfh_hid_desc.h         |  8 ++++++
> >>   .../hid_descriptor/amd_sfh_hid_report_desc.h  | 20 ++++++++++++++
> >>   6 files changed, 62 insertions(+)
> > Basavaraj, could you please provide your Acked-by/Reviewed-by: for this
> > (or any other sort of feedback)?
> 
> Sure, Jiri, I will get back to this patch soon.
> 
> We are reviewing similar features and related issues,
> and we may need some more time to investigate them internally.
> 
> Therefore, I would like to hold off on this patch for a little longer
> before providing feedback.

Fair enough, thanks for the update.

-- 
Jiri Kosina
SUSE Labs


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/1] HID: amd_sfh: Add support for tablet mode
  2025-04-24  9:51   ` Basavaraj Natikar
  2025-04-24 11:07     ` Jiri Kosina
@ 2025-08-15  9:12     ` Paweł Kotiuk
  1 sibling, 0 replies; 6+ messages in thread
From: Paweł Kotiuk @ 2025-08-15  9:12 UTC (permalink / raw)
  To: bnatikar
  Cc: adrian, basavaraj.natikar, benato.denis96, bentiss, iv.dovg,
	jikos, linux-input, linux-kernel, luke

> Sure, Jiri, I will get back to this patch soon.

Hi Basavaraj,

Could yougive us at least a rough estimate when you will be able to check this patch?

Thanks in advance
Paweł

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-08-15  9:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-09 19:49 [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Denis Benato
2025-03-09 19:49 ` [PATCH 1/1] HID: amd_sfh: Add support for tablet mode switch sensors Denis Benato
2025-04-24  9:27 ` [PATCH 0/1] HID: amd_sfh: Add support for tablet mode Jiri Kosina
2025-04-24  9:51   ` Basavaraj Natikar
2025-04-24 11:07     ` Jiri Kosina
2025-08-15  9:12     ` Paweł Kotiuk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).