|
@@ -1,4 +1,4 @@
|
|
-From 0e3664a9ba1b3ead91be2efaac925b2bdf690151 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 4aaf29ca81d5b2cbaf966e76767aaa7c90002131 Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:20 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:20 +0100
|
|
Subject: [PATCH] platform/surface: aggregator: Improve documentation and
|
|
Subject: [PATCH] platform/surface: aggregator: Improve documentation and
|
|
@@ -289,7 +289,7 @@ index 45501b6e54e8..5c4ae1a26183 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 34940c93f45df98a51fa9cfa9cf0591df754819c Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 8e9274be18670244df934c69f4646f76faf3dd06 Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:21 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:21 +0100
|
|
Subject: [PATCH] platform/surface: aggregator: Add target and source IDs to
|
|
Subject: [PATCH] platform/surface: aggregator: Add target and source IDs to
|
|
@@ -486,7 +486,7 @@ index 2a2c17771d01..55cc61bba1da 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From ca0942524cdfd7db9f9be3bcf2672e76093913a5 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 2d50e334a0151f48679e46e69529d700e1c84d54 Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:22 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:22 +0100
|
|
Subject: [PATCH] platform/surface: aggregator_hub: Use target-ID enum instead
|
|
Subject: [PATCH] platform/surface: aggregator_hub: Use target-ID enum instead
|
|
@@ -529,7 +529,7 @@ index 43061514be38..62f27cdb6ca8 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From a99128fe82accf55bd1d200fbc3f3feb2fd55801 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 6f68a237018106f28ce806331ff857122c21a91d Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:23 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:23 +0100
|
|
Subject: [PATCH] platform/surface: aggregator_tabletsw: Use target-ID enum
|
|
Subject: [PATCH] platform/surface: aggregator_tabletsw: Use target-ID enum
|
|
@@ -581,7 +581,7 @@ index 27d95a6a7851..bd8cd453c393 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 7555620eb1f6c89d1568274d5808e093cdc209ea Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 91db465f192db19eb6804f572b09f30af8025f8d Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:24 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:24 +0100
|
|
Subject: [PATCH] platform/surface: dtx: Use target-ID enum instead of
|
|
Subject: [PATCH] platform/surface: dtx: Use target-ID enum instead of
|
|
@@ -679,7 +679,7 @@ index ed36944467f9..0de76a784a35 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 82ef8b7ea80d3f3206241d89ca92b72eaf0e23fe Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 2a7c52d2a29084b0dc53e4ad6d36781ea1387a8e Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:26 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:26 +0100
|
|
Subject: [PATCH] platform/surface: aggregator: Enforce use of target-ID enum
|
|
Subject: [PATCH] platform/surface: aggregator: Enforce use of target-ID enum
|
|
@@ -915,7 +915,7 @@ index 46c45d1b6368..4da20b7a0ee5 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 9909e49d5c81636829920a86f175c1c5bae3a493 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From f48e449a88463a42ae0fd8604e82ad8705e1fac7 Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Fri, 2 Dec 2022 23:33:27 +0100
|
|
Date: Fri, 2 Dec 2022 23:33:27 +0100
|
|
Subject: [PATCH] platform/surface: aggregator_registry: Fix target-ID of
|
|
Subject: [PATCH] platform/surface: aggregator_registry: Fix target-ID of
|
|
@@ -970,7 +970,7 @@ index 023f126121d7..296f72d52e6a 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 9854fe03066a6a5d1d9672b4ef85162673ce60dc Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 8b1f4bf5e08f3bf82d9a85e37052f9a7b508f7f2 Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Tue, 20 Dec 2022 18:56:08 +0100
|
|
Date: Tue, 20 Dec 2022 18:56:08 +0100
|
|
Subject: [PATCH] platform/surface: aggregator: Rename top-level request
|
|
Subject: [PATCH] platform/surface: aggregator: Rename top-level request
|
|
@@ -1517,7 +1517,7 @@ index 4da20b7a0ee5..1545e5567b15 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From d56137459f3c4e14665720620b12a99494bd2fc9 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 34a117b799937a69868bdd716f7c44e6e2a6f17b Mon Sep 17 00:00:00 2001
|
|
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
|
|
Date: Wed, 18 Jan 2023 11:38:23 +0200
|
|
Date: Wed, 18 Jan 2023 11:38:23 +0200
|
|
Subject: [PATCH] platform/surface: Switch to use acpi_evaluate_dsm_typed()
|
|
Subject: [PATCH] platform/surface: Switch to use acpi_evaluate_dsm_typed()
|
|
@@ -1573,30 +1573,34 @@ index f004a2495201..7b6d887dccdb 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 0ec60b307909eb59a9c3e759364942547084dc23 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 61ce59f6decd7b649bb6f18c6f1badfbc6b4c59a Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
-Date: Sun, 19 Feb 2023 23:33:43 +0100
|
|
|
|
-Subject: [PATCH] platform/surface: aggregator_tabletsw: Add support for
|
|
|
|
- Type-Cover posture source
|
|
|
|
|
|
+Date: Sat, 4 Mar 2023 20:09:36 +0100
|
|
|
|
+Subject: [PATCH] platform/surface: aggregator_tabletsw: Properly handle
|
|
|
|
+ different posture source IDs
|
|
|
|
|
|
-The POS-subsystem can provide different sources for querying device
|
|
|
|
-posture states and receiving posture-change events. We use this
|
|
|
|
-subsystem to implement tablet-mode events on newer Surface devices.
|
|
|
|
|
|
+The device posture subsystem (POS) can provide different posture
|
|
|
|
+sources. Different sources can provide different posture states and
|
|
|
|
+sources can be identified by their ID.
|
|
|
|
|
|
-Currently, however, the driver only implements support for the Surface
|
|
|
|
-Laptop Studio, with source ID 0. This has been hard-coded. Therefore,
|
|
|
|
-make the driver more flexible to support more source types and also
|
|
|
|
-implement support for the Type-Cover source type found on the Surface
|
|
|
|
-Pro 9.
|
|
|
|
|
|
+For example, screen posture of the Surface Laptop Studio (SLS), which is
|
|
|
|
+currently the only supported source, uses a source ID of 0x03. The
|
|
|
|
+Surface Pro 9 uses the same subsystem for its Type-Cover, however,
|
|
|
|
+provides different states for that under the ID 0x00.
|
|
|
|
+
|
|
|
|
+To eventually support the Surface Pro 9 and potential future devices, we
|
|
|
|
+need to properly disambiguate between source IDs. Therefore, add the
|
|
|
|
+source ID to the state we carry and determine the tablet-mode state (as
|
|
|
|
+well as state names) based on that.
|
|
|
|
|
|
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Patchset: surface-sam
|
|
Patchset: surface-sam
|
|
---
|
|
---
|
|
- .../surface/surface_aggregator_tabletsw.c | 180 ++++++++++++++----
|
|
|
|
- 1 file changed, 141 insertions(+), 39 deletions(-)
|
|
|
|
|
|
+ .../surface/surface_aggregator_tabletsw.c | 123 ++++++++++++------
|
|
|
|
+ 1 file changed, 84 insertions(+), 39 deletions(-)
|
|
|
|
|
|
diff --git a/drivers/platform/surface/surface_aggregator_tabletsw.c b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
diff --git a/drivers/platform/surface/surface_aggregator_tabletsw.c b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
-index 9fed800c7cc0..8f52b62d1c19 100644
|
|
|
|
|
|
+index 9fed800c7cc0..e8682f52558f 100644
|
|
--- a/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
--- a/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
+++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
+++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
@@ -20,16 +20,23 @@
|
|
@@ -20,16 +20,23 @@
|
|
@@ -1743,7 +1747,7 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-@@ -312,11 +324,24 @@ MODULE_PARM_DESC(tablet_mode_in_slate_state, "Enable tablet mode in slate device
|
|
|
|
|
|
+@@ -312,11 +324,15 @@ MODULE_PARM_DESC(tablet_mode_in_slate_state, "Enable tablet mode in slate device
|
|
#define SSAM_EVENT_POS_CID_POSTURE_CHANGED 0x03
|
|
#define SSAM_EVENT_POS_CID_POSTURE_CHANGED 0x03
|
|
#define SSAM_POS_MAX_SOURCES 4
|
|
#define SSAM_POS_MAX_SOURCES 4
|
|
|
|
|
|
@@ -1753,18 +1757,9 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
- SSAM_POS_POSTURE_SLATE = 0x02,
|
|
- SSAM_POS_POSTURE_SLATE = 0x02,
|
|
- SSAM_POS_POSTURE_TABLET = 0x03,
|
|
- SSAM_POS_POSTURE_TABLET = 0x03,
|
|
+enum ssam_pos_source_id {
|
|
+enum ssam_pos_source_id {
|
|
-+ SSAM_POS_SOURCE_COVER = 0x00,
|
|
|
|
+ SSAM_POS_SOURCE_SLS = 0x03,
|
|
+ SSAM_POS_SOURCE_SLS = 0x03,
|
|
+};
|
|
+};
|
|
+
|
|
+
|
|
-+enum ssam_pos_state_cover {
|
|
|
|
-+ SSAM_POS_COVER_DISCONNECTED = 0x01,
|
|
|
|
-+ SSAM_POS_COVER_CLOSED = 0x02,
|
|
|
|
-+ SSAM_POS_COVER_LAPTOP = 0x03,
|
|
|
|
-+ SSAM_POS_COVER_FOLDED_CANVAS = 0x04,
|
|
|
|
-+ SSAM_POS_COVER_FOLDED_BACK = 0x05,
|
|
|
|
-+};
|
|
|
|
-+
|
|
|
|
+enum ssam_pos_state_sls {
|
|
+enum ssam_pos_state_sls {
|
|
+ SSAM_POS_SLS_LID_CLOSED = 0x00,
|
|
+ SSAM_POS_SLS_LID_CLOSED = 0x00,
|
|
+ SSAM_POS_SLS_LAPTOP = 0x01,
|
|
+ SSAM_POS_SLS_LAPTOP = 0x01,
|
|
@@ -1773,35 +1768,11 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
};
|
|
};
|
|
|
|
|
|
struct ssam_sources_list {
|
|
struct ssam_sources_list {
|
|
-@@ -324,42 +349,116 @@ struct ssam_sources_list {
|
|
|
|
|
|
+@@ -324,42 +340,68 @@ struct ssam_sources_list {
|
|
__le32 id[SSAM_POS_MAX_SOURCES];
|
|
__le32 id[SSAM_POS_MAX_SOURCES];
|
|
} __packed;
|
|
} __packed;
|
|
|
|
|
|
-static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw, u32 state)
|
|
-static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw, u32 state)
|
|
-+static const char *ssam_pos_state_name_cover(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
-+{
|
|
|
|
-+ switch (state) {
|
|
|
|
-+ case SSAM_POS_COVER_DISCONNECTED:
|
|
|
|
-+ return "disconnected";
|
|
|
|
-+
|
|
|
|
-+ case SSAM_POS_COVER_CLOSED:
|
|
|
|
-+ return "closed";
|
|
|
|
-+
|
|
|
|
-+ case SSAM_POS_COVER_LAPTOP:
|
|
|
|
-+ return "laptop";
|
|
|
|
-+
|
|
|
|
-+ case SSAM_POS_COVER_FOLDED_CANVAS:
|
|
|
|
-+ return "folded-canvas";
|
|
|
|
-+
|
|
|
|
-+ case SSAM_POS_COVER_FOLDED_BACK:
|
|
|
|
-+ return "folded-back";
|
|
|
|
-+
|
|
|
|
-+ default:
|
|
|
|
-+ dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
|
|
|
|
-+ return "<unknown>";
|
|
|
|
-+ }
|
|
|
|
-+}
|
|
|
|
-+
|
|
|
|
+static const char *ssam_pos_state_name_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
+static const char *ssam_pos_state_name_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
{
|
|
{
|
|
switch (state) {
|
|
switch (state) {
|
|
@@ -1833,9 +1804,6 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
+{
|
|
+{
|
|
+ switch (state->source) {
|
|
+ switch (state->source) {
|
|
-+ case SSAM_POS_SOURCE_COVER:
|
|
|
|
-+ return ssam_pos_state_name_cover(sw, state->state);
|
|
|
|
-+
|
|
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
+ return ssam_pos_state_name_sls(sw, state->state);
|
|
+ return ssam_pos_state_name_sls(sw, state->state);
|
|
+
|
|
+
|
|
@@ -1845,34 +1813,16 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
+ }
|
|
+ }
|
|
+}
|
|
+}
|
|
+
|
|
+
|
|
-+static bool ssam_pos_state_is_tablet_mode_cover(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
|
|
++static bool ssam_pos_state_is_tablet_mode_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
{
|
|
{
|
|
switch (state) {
|
|
switch (state) {
|
|
- case SSAM_POS_POSTURE_LAPTOP:
|
|
- case SSAM_POS_POSTURE_LAPTOP:
|
|
- case SSAM_POS_POSTURE_LID_CLOSED:
|
|
- case SSAM_POS_POSTURE_LID_CLOSED:
|
|
-+ case SSAM_POS_COVER_DISCONNECTED:
|
|
|
|
-+ case SSAM_POS_COVER_FOLDED_CANVAS:
|
|
|
|
-+ case SSAM_POS_COVER_FOLDED_BACK:
|
|
|
|
-+ return true;
|
|
|
|
-+
|
|
|
|
-+ case SSAM_POS_COVER_CLOSED:
|
|
|
|
-+ case SSAM_POS_COVER_LAPTOP:
|
|
|
|
|
|
++ case SSAM_POS_SLS_LAPTOP:
|
|
|
|
++ case SSAM_POS_SLS_LID_CLOSED:
|
|
return false;
|
|
return false;
|
|
|
|
|
|
- case SSAM_POS_POSTURE_SLATE:
|
|
- case SSAM_POS_POSTURE_SLATE:
|
|
-+ default:
|
|
|
|
-+ dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
|
|
|
|
-+ return true;
|
|
|
|
-+ }
|
|
|
|
-+}
|
|
|
|
-+
|
|
|
|
-+static bool ssam_pos_state_is_tablet_mode_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
-+{
|
|
|
|
-+ switch (state) {
|
|
|
|
-+ case SSAM_POS_SLS_LAPTOP:
|
|
|
|
-+ case SSAM_POS_SLS_LID_CLOSED:
|
|
|
|
-+ return false;
|
|
|
|
-+
|
|
|
|
+ case SSAM_POS_SLS_SLATE:
|
|
+ case SSAM_POS_SLS_SLATE:
|
|
return tablet_mode_in_slate_state;
|
|
return tablet_mode_in_slate_state;
|
|
|
|
|
|
@@ -1891,9 +1841,6 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
+{
|
|
+{
|
|
+ switch (state->source) {
|
|
+ switch (state->source) {
|
|
-+ case SSAM_POS_SOURCE_COVER:
|
|
|
|
-+ return ssam_pos_state_is_tablet_mode_cover(sw, state->state);
|
|
|
|
-+
|
|
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
+ return ssam_pos_state_is_tablet_mode_sls(sw, state->state);
|
|
+ return ssam_pos_state_is_tablet_mode_sls(sw, state->state);
|
|
+
|
|
+
|
|
@@ -1902,7 +1849,7 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-@@ -450,9 +549,10 @@ static int ssam_pos_get_posture_for_source(struct ssam_tablet_sw *sw, u32 source
|
|
|
|
|
|
+@@ -450,9 +492,10 @@ static int ssam_pos_get_posture_for_source(struct ssam_tablet_sw *sw, u32 source
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1914,7 +1861,7 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
int status;
|
|
int status;
|
|
|
|
|
|
status = ssam_pos_get_source(sw, &source_id);
|
|
status = ssam_pos_get_source(sw, &source_id);
|
|
-@@ -461,13 +561,15 @@ static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, u32 *state)
|
|
|
|
|
|
+@@ -461,13 +504,15 @@ static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, u32 *state)
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1934,7 +1881,124 @@ index 9fed800c7cc0..8f52b62d1c19 100644
|
|
--
|
|
--
|
|
2.39.2
|
|
2.39.2
|
|
|
|
|
|
-From 47f8746cc24f7add9f1ed8f95e32178c711f4de4 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 32270352f1138ce75cf2e5d1e69acd8e822a8023 Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
|
|
+Date: Sun, 19 Feb 2023 23:33:43 +0100
|
|
|
|
+Subject: [PATCH] platform/surface: aggregator_tabletsw: Add support for
|
|
|
|
+ Type-Cover posture source
|
|
|
|
+
|
|
|
|
+Implement support for the Type-Cover posture source (ID 0x00), found on
|
|
|
|
+the Surface Pro 9.
|
|
|
|
+
|
|
|
|
+Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
|
|
|
|
+Patchset: surface-sam
|
|
|
|
+---
|
|
|
|
+ .../surface/surface_aggregator_tabletsw.c | 57 +++++++++++++++++++
|
|
|
|
+ 1 file changed, 57 insertions(+)
|
|
|
|
+
|
|
|
|
+diff --git a/drivers/platform/surface/surface_aggregator_tabletsw.c b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
|
|
+index e8682f52558f..8f52b62d1c19 100644
|
|
|
|
+--- a/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
|
|
++++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
|
|
|
|
+@@ -325,9 +325,18 @@ MODULE_PARM_DESC(tablet_mode_in_slate_state, "Enable tablet mode in slate device
|
|
|
|
+ #define SSAM_POS_MAX_SOURCES 4
|
|
|
|
+
|
|
|
|
+ enum ssam_pos_source_id {
|
|
|
|
++ SSAM_POS_SOURCE_COVER = 0x00,
|
|
|
|
+ SSAM_POS_SOURCE_SLS = 0x03,
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
++enum ssam_pos_state_cover {
|
|
|
|
++ SSAM_POS_COVER_DISCONNECTED = 0x01,
|
|
|
|
++ SSAM_POS_COVER_CLOSED = 0x02,
|
|
|
|
++ SSAM_POS_COVER_LAPTOP = 0x03,
|
|
|
|
++ SSAM_POS_COVER_FOLDED_CANVAS = 0x04,
|
|
|
|
++ SSAM_POS_COVER_FOLDED_BACK = 0x05,
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
+ enum ssam_pos_state_sls {
|
|
|
|
+ SSAM_POS_SLS_LID_CLOSED = 0x00,
|
|
|
|
+ SSAM_POS_SLS_LAPTOP = 0x01,
|
|
|
|
+@@ -340,6 +349,30 @@ struct ssam_sources_list {
|
|
|
|
+ __le32 id[SSAM_POS_MAX_SOURCES];
|
|
|
|
+ } __packed;
|
|
|
|
+
|
|
|
|
++static const char *ssam_pos_state_name_cover(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
++{
|
|
|
|
++ switch (state) {
|
|
|
|
++ case SSAM_POS_COVER_DISCONNECTED:
|
|
|
|
++ return "disconnected";
|
|
|
|
++
|
|
|
|
++ case SSAM_POS_COVER_CLOSED:
|
|
|
|
++ return "closed";
|
|
|
|
++
|
|
|
|
++ case SSAM_POS_COVER_LAPTOP:
|
|
|
|
++ return "laptop";
|
|
|
|
++
|
|
|
|
++ case SSAM_POS_COVER_FOLDED_CANVAS:
|
|
|
|
++ return "folded-canvas";
|
|
|
|
++
|
|
|
|
++ case SSAM_POS_COVER_FOLDED_BACK:
|
|
|
|
++ return "folded-back";
|
|
|
|
++
|
|
|
|
++ default:
|
|
|
|
++ dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
|
|
|
|
++ return "<unknown>";
|
|
|
|
++ }
|
|
|
|
++}
|
|
|
|
++
|
|
|
|
+ static const char *ssam_pos_state_name_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
+ {
|
|
|
|
+ switch (state) {
|
|
|
|
+@@ -365,6 +398,9 @@ static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw,
|
|
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
|
|
+ {
|
|
|
|
+ switch (state->source) {
|
|
|
|
++ case SSAM_POS_SOURCE_COVER:
|
|
|
|
++ return ssam_pos_state_name_cover(sw, state->state);
|
|
|
|
++
|
|
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
|
|
+ return ssam_pos_state_name_sls(sw, state->state);
|
|
|
|
+
|
|
|
|
+@@ -374,6 +410,24 @@ static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
++static bool ssam_pos_state_is_tablet_mode_cover(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
++{
|
|
|
|
++ switch (state) {
|
|
|
|
++ case SSAM_POS_COVER_DISCONNECTED:
|
|
|
|
++ case SSAM_POS_COVER_FOLDED_CANVAS:
|
|
|
|
++ case SSAM_POS_COVER_FOLDED_BACK:
|
|
|
|
++ return true;
|
|
|
|
++
|
|
|
|
++ case SSAM_POS_COVER_CLOSED:
|
|
|
|
++ case SSAM_POS_COVER_LAPTOP:
|
|
|
|
++ return false;
|
|
|
|
++
|
|
|
|
++ default:
|
|
|
|
++ dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
|
|
|
|
++ return true;
|
|
|
|
++ }
|
|
|
|
++}
|
|
|
|
++
|
|
|
|
+ static bool ssam_pos_state_is_tablet_mode_sls(struct ssam_tablet_sw *sw, u32 state)
|
|
|
|
+ {
|
|
|
|
+ switch (state) {
|
|
|
|
+@@ -397,6 +451,9 @@ static bool ssam_pos_state_is_tablet_mode(struct ssam_tablet_sw *sw,
|
|
|
|
+ const struct ssam_tablet_sw_state *state)
|
|
|
|
+ {
|
|
|
|
+ switch (state->source) {
|
|
|
|
++ case SSAM_POS_SOURCE_COVER:
|
|
|
|
++ return ssam_pos_state_is_tablet_mode_cover(sw, state->state);
|
|
|
|
++
|
|
|
|
+ case SSAM_POS_SOURCE_SLS:
|
|
|
|
+ return ssam_pos_state_is_tablet_mode_sls(sw, state->state);
|
|
|
|
+
|
|
|
|
+--
|
|
|
|
+2.39.2
|
|
|
|
+
|
|
|
|
+From 7b29b804ebbe5b6e4b5cc642b3f3530a7bb3b3bf Mon Sep 17 00:00:00 2001
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
From: Maximilian Luz <luzmaximilian@gmail.com>
|
|
Date: Sun, 19 Feb 2023 23:41:18 +0100
|
|
Date: Sun, 19 Feb 2023 23:41:18 +0100
|
|
Subject: [PATCH] platform/surface: aggregator_registry: Add support for
|
|
Subject: [PATCH] platform/surface: aggregator_registry: Add support for
|