From e4609af63c3b2884b4dd89e04175c7fbc2abab21 Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Mon, 21 Nov 2016 15:40:09 -0800 Subject: [PATCH] Reef: Enable interrupt for BMI160 This patch enables an interrupt handler for BMI160. This will improve response time of the motion sense task. BUG=None BRANCH=none TEST=Install and run AIDA64 from Playstore. Wiggle Reef DVT. Verify 'CrosEC Gyroscope' readings change. Change-Id: Ie8dacb51795fa194840817d833cc6356beb01c8f Signed-off-by: Daisuke Nojiri Reviewed-on: https://chromium-review.googlesource.com/413079 --- board/reef/board.c | 3 +++ board/reef/board.h | 2 ++ board/reef/ec.tasklist | 2 +- board/reef/gpio.inc | 4 ++-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/board/reef/board.c b/board/reef/board.c index de0a1966f9..8db512b45f 100644 --- a/board/reef/board.c +++ b/board/reef/board.c @@ -499,6 +499,9 @@ static void board_init(void) /* Enable charger interrupts */ gpio_enable_interrupt(GPIO_CHARGER_INT_L); + + /* Enable Gyro interrupts */ + gpio_enable_interrupt(GPIO_BASE_SIXAXIS_INT_L); } /* PP3300 needs to be enabled before TCPC init hooks */ DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_FIRST); diff --git a/board/reef/board.h b/board/reef/board.h index 392d69cab6..2829d27e62 100644 --- a/board/reef/board.h +++ b/board/reef/board.h @@ -183,6 +183,8 @@ #define CONFIG_MKBP_EVENT #define CONFIG_MKBP_USE_HOST_EVENT #define CONFIG_ACCELGYRO_BMI160 +#define CONFIG_ACCEL_INTERRUPTS +#define CONFIG_ACCELGYRO_BMI160_INT_EVENT TASK_EVENT_CUSTOM(4) #define CONFIG_MAG_BMI160_BMM150 #define BMM150_I2C_ADDRESS BMM150_ADDR0 /* 8-bit address */ #define CONFIG_MAG_CALIBRATE diff --git a/board/reef/ec.tasklist b/board/reef/ec.tasklist index c3e369d7c6..47e0048872 100644 --- a/board/reef/ec.tasklist +++ b/board/reef/ec.tasklist @@ -26,7 +26,7 @@ TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG, usb_charger_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \ - TASK_NOTEST(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ + TASK_ALWAYS(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \ TASK_NOTEST(PDCMD, pd_command_task, NULL, TASK_STACK_SIZE) \ diff --git a/board/reef/gpio.inc b/board/reef/gpio.inc index 232393569a..35492b75a9 100644 --- a/board/reef/gpio.inc +++ b/board/reef/gpio.inc @@ -41,8 +41,8 @@ GPIO_INT(TABLET_MODE_L, PIN(3, 6), GPIO_INT_BOTH, tablet_mode_interrupt) GPIO_INT(WP_L, PIN(4, 0), GPIO_INT_BOTH | GPIO_SEL_1P8V, switch_interrupt) /* EC_WP_ODL */ -//GPIO_INT(BASE_SIXAXIS_INT_L, PIN(9, 3), GPIO_INT_LOW | GPIO_SEL_1P8V, gyro_interrupt) -GPIO(BASE_SIXAXIS_INT_L, PIN(9, 3), GPIO_INPUT | GPIO_SEL_1P8V) +GPIO_INT(BASE_SIXAXIS_INT_L, PIN(9, 3), GPIO_INT_FALLING | GPIO_SEL_1P8V, + bmi160_interrupt) GPIO(LID_ACCEL_INT_L, PIN(C, 7), GPIO_INPUT | GPIO_SEL_1P8V) /* I2C GPIOs will be set to alt. function later. */