summaryrefslogtreecommitdiff
path: root/common/tablet_mode.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/tablet_mode.c')
-rw-r--r--common/tablet_mode.c85
1 files changed, 12 insertions, 73 deletions
diff --git a/common/tablet_mode.c b/common/tablet_mode.c
index 18e97e91db..576e80c0ef 100644
--- a/common/tablet_mode.c
+++ b/common/tablet_mode.c
@@ -28,12 +28,6 @@ static uint32_t tablet_mode;
*/
static bool tablet_mode_forced;
-/*
- * Console command can force the value of tablet_mode. If tablet_mode_force is
- * false, use stored tablet mode value before it was (possibly) overridden.
- */
-static uint32_t tablet_mode_store;
-
/* True if GMR sensor is reporting 360 degrees. */
static bool gmr_sensor_at_360;
@@ -68,51 +62,27 @@ static void notify_tablet_mode_change(void)
void tablet_set_mode(int mode, uint32_t trigger)
{
- uint32_t new_mode = tablet_mode_forced ? tablet_mode_store :
- tablet_mode;
- uint32_t old_mode = 0;
+ uint32_t old_mode = tablet_mode;
+
+ /* If tablet_mode is forced via a console command, ignore set. */
+ if (tablet_mode_forced)
+ return;
if (disabled) {
- /*
- * If tablet mode is being forced by the user, then this logging
- * would be misleading since the mode wouldn't change anyway, so
- * skip it.
- */
- if (!tablet_mode_forced)
- CPRINTS("Tablet mode set while disabled (ignoring)!");
+ CPRINTS("Tablet mode set while disabled (ignoring)!");
return;
}
if (gmr_sensor_at_360 && !mode) {
- /*
- * If tablet mode is being forced by the user, then this logging
- * would be misleading since the mode wouldn't change anyway, so
- * skip it.
- */
- if (!tablet_mode_forced)
- CPRINTS("Ignoring tablet mode exit while gmr sensor "
- "reports 360-degree tablet mode.");
+ CPRINTS("Ignoring tablet mode exit while gmr sensor "
+ "reports 360-degree tablet mode.");
return;
}
if (mode)
- new_mode |= trigger;
+ tablet_mode |= trigger;
else
- new_mode &= ~trigger;
-
- if (tablet_mode_forced) {
- /*
- * Save the current mode based on the HW orientation, so we
- * apply the correct mode if tablet mode no longer forced in the
- * future. Don't notify of the tablet mode change yet, since
- * that will be done as part of handling 'tabletmode reset'.
- */
- tablet_mode_store = new_mode;
- return;
- }
-
- old_mode = tablet_mode;
- tablet_mode = new_mode;
+ tablet_mode &= ~trigger;
/* Boolean comparison */
if (!tablet_mode == !old_mode)
@@ -203,42 +173,11 @@ void gmr_tablet_switch_disable(void)
}
#endif
-static enum ec_status tablet_mode_command(struct host_cmd_handler_args *args)
-{
- const struct ec_params_set_tablet_mode *p = args->params;
-
- if (tablet_mode_forced == false)
- tablet_mode_store = tablet_mode;
-
- switch (p->tablet_mode) {
- case TABLET_MODE_DEFAULT:
- tablet_mode = tablet_mode_store;
- tablet_mode_forced = false;
- break;
- case TABLET_MODE_FORCE_TABLET:
- tablet_mode = TABLET_TRIGGER_LID;
- tablet_mode_forced = true;
- break;
- case TABLET_MODE_FORCE_CLAMSHELL:
- tablet_mode = 0;
- tablet_mode_forced = true;
- break;
- default:
- CPRINTS("Invalid EC_CMD_SET_TABLET_MODE parameter: %d",
- p->tablet_mode);
- return EC_RES_INVALID_PARAM;
- }
-
- notify_tablet_mode_change();
-
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_SET_TABLET_MODE, tablet_mode_command,
- EC_VER_MASK(0) | EC_VER_MASK(1));
-
#ifdef CONFIG_TABLET_MODE
static int command_settabletmode(int argc, const char **argv)
{
+ static uint32_t tablet_mode_store;
+
if (argc == 1) {
print_tablet_mode();
return EC_SUCCESS;