summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2018-03-29 07:43:43 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-04-05 18:41:13 -0700
commit54884c45c59c07a4c16fd131dc4641a27559c871 (patch)
tree6bc30809f2887e8354b74f7d51321462f0ec16f3
parent87e769a87e43c17eea69cbe6d04c3dc072f79a91 (diff)
downloadchrome-ec-54884c45c59c07a4c16fd131dc4641a27559c871.tar.gz
meowth: Add Gyro/FIFO support
Enable Gyro and collect data with FIFO. BUG=b:73546254 BRANCH=master TEST=Check gyro data is correct when enabled. Run CTS test: cheets_CTS_N.7.1_r15.x86.CtsHardwareTestCases Change-Id: I41321cfc8e7b4f8a006ee45c3a9d11305761315d Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/986918 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--board/zoombini/board.c10
-rw-r--r--board/zoombini/board.h25
-rw-r--r--board/zoombini/gpio.inc10
3 files changed, 36 insertions, 9 deletions
diff --git a/board/zoombini/board.c b/board/zoombini/board.c
index a3ac8f611f..d71bfceb96 100644
--- a/board/zoombini/board.c
+++ b/board/zoombini/board.c
@@ -217,7 +217,7 @@ static struct mutex g_base_mutex;
* Motion Sense
*/
-struct stprivate_data lsm6dsm_a_data;
+struct lsm6dsm_data lsm6dsm_a_data;
struct stprivate_data lsm6dsm_g_data;
struct stprivate_data lsm6dsm_m_data;
@@ -234,7 +234,7 @@ struct motion_sensor_t motion_sensors[] = {
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
.rot_standard_ref = NULL,
- .default_range = 2, /* g, enough for laptop. */
+ .default_range = 4, /* g, enough for laptop. */
.min_frequency = LSM6DSM_ODR_MIN_VAL,
.max_frequency = LSM6DSM_ODR_MAX_VAL,
.config = {
@@ -256,8 +256,10 @@ struct motion_sensor_t motion_sensors[] = {
.drv_data = &lsm6dsm_g_data,
.port = I2C_PORT_SENSOR,
.addr = LSM6DSM_ADDR0,
- .default_range = 245, /* dps */
.rot_standard_ref = NULL,
+ .default_range = 1000, /* dps */
+ .min_frequency = LSM6DSM_ODR_MIN_VAL,
+ .max_frequency = LSM6DSM_ODR_MAX_VAL,
},
[LID_ALS] = {
.name = "Light",
@@ -464,6 +466,8 @@ static void board_init(void)
gpio_enable_interrupt(GPIO_USB_C0_PPC_INT_L);
gpio_enable_interrupt(GPIO_USB_C1_PPC_INT_L);
gpio_enable_interrupt(GPIO_USB_C2_PPC_INT_L);
+#else
+ gpio_enable_interrupt(GPIO_SIXAXIS_INT_L);
#endif /* defined(BOARD_ZOOMBINI) */
/* Enable TCPC interrupts. */
diff --git a/board/zoombini/board.h b/board/zoombini/board.h
index f5cd988afd..ec1d3d1d57 100644
--- a/board/zoombini/board.h
+++ b/board/zoombini/board.h
@@ -8,6 +8,14 @@
#ifndef __CROS_EC_BOARD_H
#define __CROS_EC_BOARD_H
+/*
+ * By default, enable all console messages excepted HC, ACPI and event:
+ * The sensor stack is generating a lot of activity.
+ */
+#define CC_DEFAULT (CC_ALL & ~(CC_MASK(CC_EVENTS) | CC_MASK(CC_LPC)))
+#undef CONFIG_HOSTCMD_DEBUG_MODE
+#define CONFIG_HOSTCMD_DEBUG_MODE HCDEBUG_OFF
+
/* Optional features */
#define CONFIG_HIBERNATE_PSL
#define CONFIG_SYSTEM_UNLOCKED /* Allow dangerous commands. */
@@ -41,11 +49,24 @@
#endif /* defined(BOARD_ZOOMBINI) */
#define CONFIG_ACCELGYRO_LSM6DSM
+#define CONFIG_SPI_FLASH_W25Q80
#define CONFIG_ALS
#define CONFIG_ALS_OPT3001
#define OPT3001_I2C_ADDR OPT3001_I2C_ADDR1
#define ALS_COUNT 1
+/* FIFO size is in power of 2. */
+#define CONFIG_ACCEL_FIFO 1024
+
+/* Depends on how fast the AP boots and typical ODRs */
+#define CONFIG_ACCEL_FIFO_THRES (CONFIG_ACCEL_FIFO / 3)
+
+/* Interrupt management. */
+#define CONFIG_ACCEL_INTERRUPTS
+
+/* Custom sensor option. */
+#define CONFIG_ACCEL_LSM6DSM_INT_EVENT TASK_EVENT_CUSTOM(4)
+
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BATTERY_CUT_OFF
@@ -265,9 +286,7 @@ enum sensor_id {
LID_ALS,
};
-/* TODO(gwendal): Currently LSM6DSM does not use interrupt. */
-#define CONFIG_ACCEL_FORCE_MODE_MASK \
- ((1 << LID_ACCEL) || (1 << LID_GYRO) || (1 << LID_ALS))
+#define CONFIG_ACCEL_FORCE_MODE_MASK (1 << LID_ALS)
#ifdef BOARD_MEOWTH
int board_get_version(void);
diff --git a/board/zoombini/gpio.inc b/board/zoombini/gpio.inc
index dcd98490cd..2c299bd3c9 100644
--- a/board/zoombini/gpio.inc
+++ b/board/zoombini/gpio.inc
@@ -132,8 +132,7 @@ ALTERNATE(PIN_MASK(4, 0x30), 1, MODULE_ADC, 0) /* ADC0-1 */
ALTERNATE(PIN_MASK(0, 0x03), 1, MODULE_PMU, 0) /* GPIO00, GPIO01 */
ALTERNATE(PIN_MASK(D, 0x04), 1, MODULE_PMU, 0) /* GPIOD2 */
-/* Meowth GPIOs */
-#else
+#else /* defined(BOARD_ZOOMBINI) */
GPIO_INT(USB_C0_PD_INT_L, PIN(6, 1), GPIO_INT_FALLING, usb_c_interrupt)
GPIO_INT(USB_C1_PD_INT_L, PIN(F, 5), GPIO_INT_FALLING, usb_c_interrupt)
@@ -156,6 +155,11 @@ GPIO_INT(VOLUME_UP_L, PIN(7, 5), GPIO_INT_BOTH | GPIO_PULL_UP, button_interr
GPIO_INT(VOLUME_DOWN_L, PIN(6, 3), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
GPIO_INT(BASE_PWR_FLT_L, PIN(2, 4), GPIO_INT_FALLING, base_pwr_fault_interrupt)
+/* MEMS Sensors. */
+GPIO_INT(SIXAXIS_INT_L, PIN(5, 6), GPIO_INT_FALLING, lsm6dsm_interrupt)
+GPIO(ALS_INT_L, PIN(5, 0), GPIO_INPUT)
+
+
/* Power Enables. */
GPIO(EN_PP3300_DSW, PIN(8, 2), GPIO_OUT_LOW)
GPIO(EN_PP5000, PIN(7, 3), GPIO_OUT_LOW)
@@ -232,4 +236,4 @@ ALTERNATE(PIN_MASK(F, 0x03), 1, MODULE_ADC, 0) /* ADC8-9 */
ALTERNATE(PIN_MASK(0, 0x03), 1, MODULE_PMU, 0) /* GPIO00, GPIO01 */
ALTERNATE(PIN_MASK(D, 0x04), 1, MODULE_PMU, 0) /* GPIOD2 */
-#endif /* defined(BOARD_ZOOMBINI) */
+#endif /* defined(BOARD_ZOOMBINI) */