123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- From 4dcb84956a7df3414c1b89b35442ad9eca8eb255 Mon Sep 17 00:00:00 2001
- From: Maximilian Luz <luzmaximilian@gmail.com>
- Date: Sat, 4 Mar 2023 20:09:36 +0100
- Subject: [PATCH] platform/surface: aggregator_tabletsw: Properly handle
- different posture source IDs
- 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.
- 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>
- Patchset: surface-sam
- ---
- .../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
- index a18e9fc7896b..f9a58db6afde 100644
- --- a/drivers/platform/surface/surface_aggregator_tabletsw.c
- +++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
- @@ -20,16 +20,23 @@
-
- struct ssam_tablet_sw;
-
- +struct ssam_tablet_sw_state {
- + u32 source;
- + u32 state;
- +};
- +
- struct ssam_tablet_sw_ops {
- - int (*get_state)(struct ssam_tablet_sw *sw, u32 *state);
- - const char *(*state_name)(struct ssam_tablet_sw *sw, u32 state);
- - bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw, u32 state);
- + int (*get_state)(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state);
- + const char *(*state_name)(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state);
- + bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state);
- };
-
- struct ssam_tablet_sw {
- struct ssam_device *sdev;
-
- - u32 state;
- + struct ssam_tablet_sw_state state;
- struct work_struct update_work;
- struct input_dev *mode_switch;
-
- @@ -45,9 +52,11 @@ struct ssam_tablet_sw_desc {
-
- struct {
- u32 (*notify)(struct ssam_event_notifier *nf, const struct ssam_event *event);
- - int (*get_state)(struct ssam_tablet_sw *sw, u32 *state);
- - const char *(*state_name)(struct ssam_tablet_sw *sw, u32 state);
- - bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw, u32 state);
- + int (*get_state)(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state);
- + const char *(*state_name)(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state);
- + bool (*state_is_tablet_mode)(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state);
- } ops;
-
- struct {
- @@ -61,7 +70,7 @@ struct ssam_tablet_sw_desc {
- static ssize_t state_show(struct device *dev, struct device_attribute *attr, char *buf)
- {
- struct ssam_tablet_sw *sw = dev_get_drvdata(dev);
- - const char *state = sw->ops.state_name(sw, sw->state);
- + const char *state = sw->ops.state_name(sw, &sw->state);
-
- return sysfs_emit(buf, "%s\n", state);
- }
- @@ -79,19 +88,19 @@ static const struct attribute_group ssam_tablet_sw_group = {
- static void ssam_tablet_sw_update_workfn(struct work_struct *work)
- {
- struct ssam_tablet_sw *sw = container_of(work, struct ssam_tablet_sw, update_work);
- + struct ssam_tablet_sw_state state;
- int tablet, status;
- - u32 state;
-
- status = sw->ops.get_state(sw, &state);
- if (status)
- return;
-
- - if (sw->state == state)
- + if (sw->state.source == state.source && sw->state.state == state.state)
- return;
- sw->state = state;
-
- /* Send SW_TABLET_MODE event. */
- - tablet = sw->ops.state_is_tablet_mode(sw, state);
- + tablet = sw->ops.state_is_tablet_mode(sw, &state);
- input_report_switch(sw->mode_switch, SW_TABLET_MODE, tablet);
- input_sync(sw->mode_switch);
- }
- @@ -146,7 +155,7 @@ static int ssam_tablet_sw_probe(struct ssam_device *sdev)
- sw->mode_switch->id.bustype = BUS_HOST;
- sw->mode_switch->dev.parent = &sdev->dev;
-
- - tablet = sw->ops.state_is_tablet_mode(sw, sw->state);
- + tablet = sw->ops.state_is_tablet_mode(sw, &sw->state);
- input_set_capability(sw->mode_switch, EV_SW, SW_TABLET_MODE);
- input_report_switch(sw->mode_switch, SW_TABLET_MODE, tablet);
-
- @@ -204,9 +213,10 @@ enum ssam_kip_cover_state {
- SSAM_KIP_COVER_STATE_BOOK = 0x06,
- };
-
- -static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw, u32 state)
- +static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state)
- {
- - switch (state) {
- + switch (state->state) {
- case SSAM_KIP_COVER_STATE_DISCONNECTED:
- return "disconnected";
-
- @@ -226,14 +236,15 @@ static const char *ssam_kip_cover_state_name(struct ssam_tablet_sw *sw, u32 stat
- return "book";
-
- default:
- - dev_warn(&sw->sdev->dev, "unknown KIP cover state: %u\n", state);
- + dev_warn(&sw->sdev->dev, "unknown KIP cover state: %u\n", state->state);
- return "<unknown>";
- }
- }
-
- -static bool ssam_kip_cover_state_is_tablet_mode(struct ssam_tablet_sw *sw, u32 state)
- +static bool ssam_kip_cover_state_is_tablet_mode(struct ssam_tablet_sw *sw,
- + const struct ssam_tablet_sw_state *state)
- {
- - switch (state) {
- + switch (state->state) {
- case SSAM_KIP_COVER_STATE_DISCONNECTED:
- case SSAM_KIP_COVER_STATE_FOLDED_CANVAS:
- case SSAM_KIP_COVER_STATE_FOLDED_BACK:
- @@ -245,7 +256,7 @@ static bool ssam_kip_cover_state_is_tablet_mode(struct ssam_tablet_sw *sw, u32 s
- return false;
-
- default:
- - dev_warn(&sw->sdev->dev, "unknown KIP cover state: %d\n", sw->state);
- + dev_warn(&sw->sdev->dev, "unknown KIP cover state: %d\n", state->state);
- return true;
- }
- }
- @@ -257,7 +268,7 @@ SSAM_DEFINE_SYNC_REQUEST_R(__ssam_kip_get_cover_state, u8, {
- .instance_id = 0x00,
- });
-
- -static int ssam_kip_get_cover_state(struct ssam_tablet_sw *sw, u32 *state)
- +static int ssam_kip_get_cover_state(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state)
- {
- int status;
- u8 raw;
- @@ -268,7 +279,8 @@ static int ssam_kip_get_cover_state(struct ssam_tablet_sw *sw, u32 *state)
- return status;
- }
-
- - *state = raw;
- + state->source = 0; /* Unused for KIP switch. */
- + state->state = raw;
- return 0;
- }
-
- @@ -317,11 +329,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_POS_MAX_SOURCES 4
-
- -enum ssam_pos_state {
- - SSAM_POS_POSTURE_LID_CLOSED = 0x00,
- - SSAM_POS_POSTURE_LAPTOP = 0x01,
- - SSAM_POS_POSTURE_SLATE = 0x02,
- - SSAM_POS_POSTURE_TABLET = 0x03,
- +enum ssam_pos_source_id {
- + SSAM_POS_SOURCE_SLS = 0x03,
- +};
- +
- +enum ssam_pos_state_sls {
- + SSAM_POS_SLS_LID_CLOSED = 0x00,
- + SSAM_POS_SLS_LAPTOP = 0x01,
- + SSAM_POS_SLS_SLATE = 0x02,
- + SSAM_POS_SLS_TABLET = 0x03,
- };
-
- struct ssam_sources_list {
- @@ -329,42 +345,68 @@ struct ssam_sources_list {
- __le32 id[SSAM_POS_MAX_SOURCES];
- } __packed;
-
- -static const char *ssam_pos_state_name(struct ssam_tablet_sw *sw, u32 state)
- +static const char *ssam_pos_state_name_sls(struct ssam_tablet_sw *sw, u32 state)
- {
- switch (state) {
- - case SSAM_POS_POSTURE_LID_CLOSED:
- + case SSAM_POS_SLS_LID_CLOSED:
- return "closed";
-
- - case SSAM_POS_POSTURE_LAPTOP:
- + case SSAM_POS_SLS_LAPTOP:
- return "laptop";
-
- - case SSAM_POS_POSTURE_SLATE:
- + case SSAM_POS_SLS_SLATE:
- return "slate";
-
- - case SSAM_POS_POSTURE_TABLET:
- + case SSAM_POS_SLS_TABLET:
- return "tablet";
-
- default:
- - dev_warn(&sw->sdev->dev, "unknown device posture: %u\n", state);
- + dev_warn(&sw->sdev->dev, "unknown device posture for SLS: %u\n", state);
- return "<unknown>";
- }
- }
-
- -static bool ssam_pos_state_is_tablet_mode(struct ssam_tablet_sw *sw, u32 state)
- +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_SLS:
- + return ssam_pos_state_name_sls(sw, state->state);
- +
- + default:
- + dev_warn(&sw->sdev->dev, "unknown device posture source: %u\n", state->source);
- + return "<unknown>";
- + }
- +}
- +
- +static bool ssam_pos_state_is_tablet_mode_sls(struct ssam_tablet_sw *sw, u32 state)
- {
- switch (state) {
- - case SSAM_POS_POSTURE_LAPTOP:
- - case SSAM_POS_POSTURE_LID_CLOSED:
- + case SSAM_POS_SLS_LAPTOP:
- + case SSAM_POS_SLS_LID_CLOSED:
- return false;
-
- - case SSAM_POS_POSTURE_SLATE:
- + case SSAM_POS_SLS_SLATE:
- return tablet_mode_in_slate_state;
-
- - case SSAM_POS_POSTURE_TABLET:
- + case SSAM_POS_SLS_TABLET:
- return true;
-
- default:
- - dev_warn(&sw->sdev->dev, "unknown device posture: %u\n", state);
- + dev_warn(&sw->sdev->dev, "unknown device posture for SLS: %u\n", state);
- + return true;
- + }
- +}
- +
- +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_SLS:
- + return ssam_pos_state_is_tablet_mode_sls(sw, state->state);
- +
- + default:
- + dev_warn(&sw->sdev->dev, "unknown device posture source: %u\n", state->source);
- return true;
- }
- }
- @@ -455,9 +497,10 @@ static int ssam_pos_get_posture_for_source(struct ssam_tablet_sw *sw, u32 source
- return 0;
- }
-
- -static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, u32 *state)
- +static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, struct ssam_tablet_sw_state *state)
- {
- u32 source_id;
- + u32 source_state;
- int status;
-
- status = ssam_pos_get_source(sw, &source_id);
- @@ -466,13 +509,15 @@ static int ssam_pos_get_posture(struct ssam_tablet_sw *sw, u32 *state)
- return status;
- }
-
- - status = ssam_pos_get_posture_for_source(sw, source_id, state);
- + status = ssam_pos_get_posture_for_source(sw, source_id, &source_state);
- if (status) {
- dev_err(&sw->sdev->dev, "failed to get posture value for source %u: %d\n",
- source_id, status);
- return status;
- }
-
- + state->source = source_id;
- + state->state = source_state;
- return 0;
- }
-
- --
- 2.41.0
- From 25ad1b483aed0fd0c93e01d483a97ad167c2666d 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 f9a58db6afde..4a029f5db20a 100644
- --- a/drivers/platform/surface/surface_aggregator_tabletsw.c
- +++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
- @@ -330,9 +330,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,
- @@ -345,6 +354,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) {
- @@ -370,6 +403,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);
-
- @@ -379,6 +415,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) {
- @@ -402,6 +456,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.41.0
- From ba24c30b876ad6d3becdc04f56cb38125f114d82 Mon Sep 17 00:00:00 2001
- From: Maximilian Luz <luzmaximilian@gmail.com>
- Date: Sun, 19 Feb 2023 23:41:18 +0100
- Subject: [PATCH] platform/surface: aggregator_registry: Add support for
- tablet-mode switch on Surface Pro 9
- Add support for the POS-subsystem tablet-mode switch used on the Surface
- Pro 9.
- Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
- Patchset: surface-sam
- ---
- drivers/platform/surface/surface_aggregator_registry.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
- diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c
- index 296f72d52e6a..0fe5be539652 100644
- --- a/drivers/platform/surface/surface_aggregator_registry.c
- +++ b/drivers/platform/surface/surface_aggregator_registry.c
- @@ -305,7 +305,7 @@ static const struct software_node *ssam_node_group_sp9[] = {
- &ssam_node_bat_ac,
- &ssam_node_bat_main,
- &ssam_node_tmp_pprof,
- - /* TODO: Tablet mode switch (via POS subsystem) */
- + &ssam_node_pos_tablet_switch,
- &ssam_node_hid_kip_keyboard,
- &ssam_node_hid_kip_penstash,
- &ssam_node_hid_kip_touchpad,
- --
- 2.41.0
- From b397542f5dcf1f4ea7dab46be9d753f5d5f89b15 Mon Sep 17 00:00:00 2001
- From: Maximilian Luz <luzmaximilian@gmail.com>
- Date: Thu, 18 May 2023 22:33:55 +0200
- Subject: [PATCH] platform/surface: aggregator: Make to_ssam_device_driver()
- respect const-ness
- Make to_ssam_device_driver() a bit safer by replacing container_of()
- with container_of_const() to respect the const-ness of the passed in
- pointer, instead of silently discarding any const specifications.
- Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
- Patchset: surface-sam
- ---
- include/linux/surface_aggregator/device.h | 6 +-----
- 1 file changed, 1 insertion(+), 5 deletions(-)
- diff --git a/include/linux/surface_aggregator/device.h b/include/linux/surface_aggregator/device.h
- index df81043b9e71..42b249b4c24b 100644
- --- a/include/linux/surface_aggregator/device.h
- +++ b/include/linux/surface_aggregator/device.h
- @@ -243,11 +243,7 @@ static inline bool is_ssam_device(struct device *d)
- * Return: Returns the pointer to the &struct ssam_device_driver wrapping the
- * given device driver @d.
- */
- -static inline
- -struct ssam_device_driver *to_ssam_device_driver(struct device_driver *d)
- -{
- - return container_of(d, struct ssam_device_driver, driver);
- -}
- +#define to_ssam_device_driver(d) container_of_const(d, struct ssam_device_driver, driver)
-
- const struct ssam_device_id *ssam_device_id_match(const struct ssam_device_id *table,
- const struct ssam_device_uid uid);
- --
- 2.41.0
- From fac938f7f7ccde053b509d0826e56b20c4eabe85 Mon Sep 17 00:00:00 2001
- From: Maximilian Luz <luzmaximilian@gmail.com>
- Date: Thu, 18 May 2023 22:57:17 +0200
- Subject: [PATCH] platform/surface: aggregator_tabletsw: Add support for book
- mode in POS subsystem
- Devices with a type-cover have an additional "book" mode, deactivating
- type-cover input and turning off its backlight. This is currently
- unsupported, leading to the warning
- surface_aggregator_tablet_mode_switch 01:26:01:00:01: unknown device posture for type-cover: 6
- Therefore, add support for this state and map it to enable tablet-mode.
- Fixes: 37ff64cd81ff ("platform/surface: aggregator_tabletsw: Add support for Type-Cover posture source")
- Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
- Patchset: surface-sam
- ---
- drivers/platform/surface/surface_aggregator_tabletsw.c | 5 +++++
- 1 file changed, 5 insertions(+)
- diff --git a/drivers/platform/surface/surface_aggregator_tabletsw.c b/drivers/platform/surface/surface_aggregator_tabletsw.c
- index 4a029f5db20a..c0a1a5869246 100644
- --- a/drivers/platform/surface/surface_aggregator_tabletsw.c
- +++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
- @@ -340,6 +340,7 @@ enum ssam_pos_state_cover {
- SSAM_POS_COVER_LAPTOP = 0x03,
- SSAM_POS_COVER_FOLDED_CANVAS = 0x04,
- SSAM_POS_COVER_FOLDED_BACK = 0x05,
- + SSAM_POS_COVER_BOOK = 0x06,
- };
-
- enum ssam_pos_state_sls {
- @@ -372,6 +373,9 @@ static const char *ssam_pos_state_name_cover(struct ssam_tablet_sw *sw, u32 stat
- case SSAM_POS_COVER_FOLDED_BACK:
- return "folded-back";
-
- + case SSAM_POS_COVER_BOOK:
- + return "book";
- +
- default:
- dev_warn(&sw->sdev->dev, "unknown device posture for type-cover: %u\n", state);
- return "<unknown>";
- @@ -421,6 +425,7 @@ static bool ssam_pos_state_is_tablet_mode_cover(struct ssam_tablet_sw *sw, u32 s
- case SSAM_POS_COVER_DISCONNECTED:
- case SSAM_POS_COVER_FOLDED_CANVAS:
- case SSAM_POS_COVER_FOLDED_BACK:
- + case SSAM_POS_COVER_BOOK:
- return true;
-
- case SSAM_POS_COVER_CLOSED:
- --
- 2.41.0
|