From e8f6467d65f086a16ec33cb3cfd724086595d2f1 Mon Sep 17 00:00:00 2001 From: Wai-Hong Tam Date: Wed, 21 Jul 2021 15:11:59 -0700 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3044414 Reviewed-by: Ting Shen --- board/nuwani/board.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'board/nuwani') diff --git a/board/nuwani/board.c b/board/nuwani/board.c index 5d5f5f842d..8004e25b37 100644 --- a/board/nuwani/board.c +++ b/board/nuwani/board.c @@ -172,7 +172,7 @@ void board_update_sensor_config_from_sku(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); -- cgit v1.2.1