diff options
author | Wai-Hong Tam <waihong@google.com> | 2021-07-21 15:11:59 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-23 22:14:04 +0000 |
commit | e8f6467d65f086a16ec33cb3cfd724086595d2f1 (patch) | |
tree | e633d245112862427696f51e11d35a90a17e0442 /board/gumboz | |
parent | 6521a7aa8d69c494e98667d1ff05ec2c2d784287 (diff) | |
download | chrome-ec-e8f6467d65f086a16ec33cb3cfd724086595d2f1.tar.gz |
tablet_mode: Fix the race condition of setting the tablet mode
There are 2 tablet mode triggers:
* Lid: when the lid angle close to 360 degree, either detected by
a GMR sensor or by the angle computed by 2 motion sensors.
* Base: when the detachable base is detached.
These 2 triggers set the tablet mode status, which as a boolean,
resulting a race condition.
This CL fixes the race condition. Each trigger updates its own bit. The
final tablet mode status is the OR of all bits.
BRANCH=Trogdor
BUG=b:193873098
TEST=Attached the base, checked tablet_mode enabled;
detached the base, checked tablet_mode disabled;
flip base to 360 degree, checked tablet_mode disabled;
move the base out of the lid, checked tablet_mode disabled.
Change-Id: Ia9d9d2d66c194796c1039cc8b746c8d1f28a4496
Signed-off-by: Wai-Hong Tam <waihong@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3044414
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/gumboz')
-rw-r--r-- | board/gumboz/board.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/board/gumboz/board.c b/board/gumboz/board.c index 8108798d63..b04a09f0f5 100644 --- a/board/gumboz/board.c +++ b/board/gumboz/board.c @@ -497,7 +497,7 @@ static void setup_fw_config(void) } else { motion_sensor_count = 0; /* Device is clamshell only */ - tablet_set_mode(0); + tablet_set_mode(0, TABLET_TRIGGER_LID); /* Gyro is not present, don't allow line to float */ gpio_set_flags(GPIO_6AXIS_INT_L, GPIO_INPUT | GPIO_PULL_DOWN); } |