|
@@ -1,4 +1,4 @@
|
|
-From 17139df23635da28915ca2d773fa58256d83ce1d Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 524aa5b19d2e47b154f019cafd215485a92dade1 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 946a5f5f86081642505ba01ef283554fe3f95001 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 579bff76ba34bcb58095619f3979b7439ce2141b 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 bbc9e55c28a3045136c65b2f733c8916a0b928f5 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 8d1fc0624ac2b8098a81b45a62817694954d5706 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 2440786252569c4f67a8b6812ff31d1b68b34d10 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 22fde7b902788d11128cfe797932cdc12089fdb9 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 1d28b5d3f6e12bcf719060252c527cee6156e657 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 561dd91dcd12fd2884010f4506b30f4faaf1ce4b 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 5ea2062e66332762e254802d3f02b23dcaa6dc14 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 4694b688ec5aee3b83e94323927b73dae49df600 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 b0d064bfa512302cba59f67fea6986317263c598 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 07a2478f1c23bcc49c943543314bc5a6ff9d50eb 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 a216001b6443cb02d8ed9b068df4597cfe70d93d Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 7acd1eff13c3675d11b409e280c3a7abfb392c8e 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 1cc64ee542a07da26712e6bfe275ec0032280f85 Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From fe9bfae16a94433e44c6befc22221ac571e0fa85 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 db3a211290c9c43f4cc9eaafe8a921153cc8f2ce Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 4a8f291c901288b28e9b52f00dc1096e16cf38b2 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 e245b9ea0a5d819e5ce334a112c718a67b57311a Mon Sep 17 00:00:00 2001
|
|
|
|
|
|
+From 2f304d367a83a0e5b447f604e6d650484a138eb1 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 80f55117fdcc2ead64c9392b07342dbf792ff616 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
|