summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2018-12-04 12:28:16 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-12-05 01:13:32 -0800
commit0034f8f365e647514e16c61031f661753089cf66 (patch)
tree3803572b3aa026d8e9d9f99487cc83c5f61228d2 /board
parent2b9ee186544863f29a84477aa46a80a57d8f09e0 (diff)
downloadchrome-ec-0034f8f365e647514e16c61031f661753089cf66.tar.gz
aleena/kasumi: Add support for motion sensors
Adjust Grunt baseboard to allow for per-sku support for motion sensors. Use this to enable motion sensors for SKU 82 (Kasumi360). Only enable the interrupt if the sensor is present. BUG=b:119795894 BRANCH=grunt TEST=Kasumi360 `ectool motionsense lid_angle` shows correct angles. Change-Id: Icb34359d7ac4cd894776e134c2c1fb7032741f03 Signed-off-by: Edward Hill <ecgh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1361987 Tested-by: Ryan Zhang <ryan.zhang@quanta.corp-partner.google.com> Reviewed-by: Ryan Zhang <ryan.zhang@quanta.corp-partner.google.com> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/aleena/board.c13
-rw-r--r--board/aleena/board.h18
-rw-r--r--board/aleena/ec.tasklist1
-rw-r--r--board/aleena/gpio.inc1
-rw-r--r--board/careena/board.c5
-rw-r--r--board/delan/board.c5
-rw-r--r--board/grunt/board.c3
-rw-r--r--board/liara/board.c5
8 files changed, 32 insertions, 19 deletions
diff --git a/board/aleena/board.c b/board/aleena/board.c
index c79b1c3b93..a7b1fa1301 100644
--- a/board/aleena/board.c
+++ b/board/aleena/board.c
@@ -14,6 +14,7 @@
#include "common.h"
#include "compile_time_macros.h"
#include "console.h"
+#include "driver/accelgyro_bmi160.h"
#include "driver/led/lm3630a.h"
#include "driver/ppc/sn5s330.h"
#include "driver/tcpm/anx74xx.h"
@@ -102,10 +103,18 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-static void board_init(void)
+void board_update_sensor_config_from_sku(void)
{
+ if (board_is_convertible()) {
+ /* Enable Gyro interrupts */
+ gpio_enable_interrupt(GPIO_6AXIS_INT_L);
+ } else {
+ motion_sensor_count = 0;
+ /* Gyro is not present, don't allow line to float */
+ gpio_set_flags(GPIO_6AXIS_INT_L,
+ GPIO_INPUT | GPIO_PULL_DOWN);
+ }
}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
void board_overcurrent_event(int port)
{
diff --git a/board/aleena/board.h b/board/aleena/board.h
index a32ec2ffd2..aeb75404a6 100644
--- a/board/aleena/board.h
+++ b/board/aleena/board.h
@@ -29,6 +29,24 @@
/* KB backlight driver */
#define CONFIG_LED_DRIVER_LM3630A
+/* Motion sensing drivers */
+#define CONFIG_ACCELGYRO_BMI160
+#define CONFIG_ACCELGYRO_BMI160_INT_EVENT TASK_EVENT_CUSTOM(4)
+#define CONFIG_ACCEL_INTERRUPTS
+#define CONFIG_ACCEL_KX022
+#define CONFIG_CMD_ACCELS
+#define CONFIG_CMD_ACCEL_INFO
+#define CONFIG_TABLET_MODE
+#define CONFIG_LID_ANGLE
+#define CONFIG_LID_ANGLE_UPDATE
+#define CONFIG_LID_ANGLE_SENSOR_BASE BASE_ACCEL
+#define CONFIG_LID_ANGLE_SENSOR_LID LID_ACCEL
+/*
+ * Slew rate on the PP1800_SENSOR load switch requires a short delay on startup.
+ */
+#undef CONFIG_MOTION_SENSE_RESUME_DELAY_US
+#define CONFIG_MOTION_SENSE_RESUME_DELAY_US (10 * MSEC)
+
#ifndef __ASSEMBLER__
enum pwm_channel {
diff --git a/board/aleena/ec.tasklist b/board/aleena/ec.tasklist
index 67453cd670..97711213a1 100644
--- a/board/aleena/ec.tasklist
+++ b/board/aleena/ec.tasklist
@@ -25,6 +25,7 @@
TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \
TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \
TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \
+ TASK_ALWAYS(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, VENTI_TASK_STACK_SIZE) \
TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \
TASK_NOTEST(PDCMD, pd_command_task, NULL, LARGER_TASK_STACK_SIZE) \
diff --git a/board/aleena/gpio.inc b/board/aleena/gpio.inc
index 085aa9a1d6..1256ecb6cb 100644
--- a/board/aleena/gpio.inc
+++ b/board/aleena/gpio.inc
@@ -23,6 +23,7 @@ GPIO_INT(WP_L, PIN(A, 1), GPIO_INT_BOTH, switch_interrupt)
GPIO_INT(VOLUME_DOWN_L, PIN(7, 0), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
GPIO_INT(VOLUME_UP_L, PIN(7, 5), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
GPIO_INT(USB_C0_CABLE_DET, PIN(3, 7), GPIO_INT_RISING, anx74xx_cable_det_interrupt)
+GPIO_INT(6AXIS_INT_L, PIN(8, 6), GPIO_INT_FALLING | GPIO_SEL_1P8V, bmi160_interrupt)
GPIO(EN_PWR_A, PIN(E, 2), GPIO_OUT_LOW) /* Enable Power */
GPIO(EN_PP1800_SENSOR, PIN(6, 7), GPIO_OUT_LOW) /* Enable Power */
diff --git a/board/careena/board.c b/board/careena/board.c
index fd3f417ae4..4ae4a8290c 100644
--- a/board/careena/board.c
+++ b/board/careena/board.c
@@ -101,11 +101,6 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-static void board_init(void)
-{
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
void board_overcurrent_event(int port)
{
enum gpio_signal signal = (port == 0) ? GPIO_USB_C0_OC_L
diff --git a/board/delan/board.c b/board/delan/board.c
index e1a06b7c10..c5c3718413 100644
--- a/board/delan/board.c
+++ b/board/delan/board.c
@@ -114,11 +114,6 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-static void board_init(void)
-{
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
void board_overcurrent_event(int port)
{
enum gpio_signal signal = (port == 0) ? GPIO_USB_C0_OC_L
diff --git a/board/grunt/board.c b/board/grunt/board.c
index c3b0d05dcf..b268ece314 100644
--- a/board/grunt/board.c
+++ b/board/grunt/board.c
@@ -118,12 +118,11 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-static void board_init(void)
+void board_update_sensor_config_from_sku(void)
{
/* Enable Gyro interrupts */
gpio_enable_interrupt(GPIO_6AXIS_INT_L);
}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
void board_overcurrent_event(int port)
{
diff --git a/board/liara/board.c b/board/liara/board.c
index cae8e2d77c..cb1167442e 100644
--- a/board/liara/board.c
+++ b/board/liara/board.c
@@ -114,11 +114,6 @@ const struct pwm_t pwm_channels[] = {
};
BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT);
-static void board_init(void)
-{
-}
-DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
-
void board_overcurrent_event(int port)
{
enum gpio_signal signal = (port == 0) ? GPIO_USB_C0_OC_L