summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru M Stan <amstan@chromium.org>2017-11-30 19:53:09 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-03-14 04:06:55 -0700
commit2cc7923423f95949a7e4f769ec8e3c8b02177d93 (patch)
tree8f5c84e5acd4616243fc098a01b6f7739ff368ef
parent4a1d2e3daf005766dc523216b8c3639fcd9595a2 (diff)
downloadchrome-ec-2cc7923423f95949a7e4f769ec8e3c8b02177d93.tar.gz
scarlet: Hookup the vsync pin and the sync driver
BUG=b:67743747 TEST=With kernel driver, turn on camera and see interrupt here for every frame. BRANCH=master Change-Id: I447f753cb2224bf78442fbd15c5fa2d2c713a9e7 Signed-off-by: Alexandru M Stan <amstan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/802832 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
-rw-r--r--board/scarlet/board.c38
-rw-r--r--board/scarlet/board.h6
-rw-r--r--board/scarlet/gpio.inc4
3 files changed, 46 insertions, 2 deletions
diff --git a/board/scarlet/board.c b/board/scarlet/board.c
index af9b5926cd..5d3dc341ec 100644
--- a/board/scarlet/board.c
+++ b/board/scarlet/board.c
@@ -16,6 +16,7 @@
#include "ec_commands.h"
#include "driver/accelgyro_bmi160.h"
#include "driver/charger/rt946x.h"
+#include "driver/sync.h"
#include "driver/tcpm/fusb302.h"
#include "driver/temp_sensor/tmp432.h"
#include "extpower.h"
@@ -244,6 +245,9 @@ static void board_init(void)
/* Enable interrupts from BMI160 sensor. */
gpio_enable_interrupt(GPIO_ACCEL_INT_L);
+ /* Enable interrupt for the camera vsync. */
+ gpio_enable_interrupt(GPIO_SYNC_INT);
+
/* Set SPI2 pins to high speed */
/* pins D0/D1/D3/D4 */
STM32_GPIO_OSPEEDR(GPIO_D) |= 0x000003cf;
@@ -447,6 +451,40 @@ struct motion_sensor_t motion_sensors[] = {
},
},
},
+ [VSYNC] = {
+ .name = "Camera vsync",
+ .active_mask = SENSOR_ACTIVE_S0,
+ .chip = MOTIONSENSE_CHIP_GPIO,
+ .type = MOTIONSENSE_TYPE_SYNC,
+ .location = MOTIONSENSE_LOC_CAMERA,
+ .drv = &sync_drv,
+ .default_range = 0,
+ .min_frequency = 0,
+ .max_frequency = 1,
+ .config = {
+ /* AP: by default shutdown all sensors */
+ [SENSOR_CONFIG_AP] = {
+ .odr = 0,
+ .ec_rate = 0,
+ },
+ /* EC does not need in S0 */
+ [SENSOR_CONFIG_EC_S0] = {
+ .odr = 0,
+ .ec_rate = 0,
+ },
+ /* Sensor off in S3/S5 */
+ [SENSOR_CONFIG_EC_S3] = {
+ .odr = 0,
+ .ec_rate = 0,
+ },
+ /* Sensor off in S3/S5 */
+ [SENSOR_CONFIG_EC_S5] = {
+ .odr = 0,
+ .ec_rate = 0,
+ },
+ },
+
+ },
};
const unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors);
#endif /* defined(HAS_TASK_MOTIONSENSE) */
diff --git a/board/scarlet/board.h b/board/scarlet/board.h
index 6c030da25a..578f62d8f7 100644
--- a/board/scarlet/board.h
+++ b/board/scarlet/board.h
@@ -89,6 +89,11 @@
#define CONFIG_ACCEL_INTERRUPTS
#define CONFIG_ACCELGYRO_BMI160_INT_EVENT TASK_EVENT_CUSTOM(4)
+/* Camera VSYNC */
+#define CONFIG_SYNC
+#define CONFIG_SYNC_COMMAND
+#define CONFIG_SYNC_INT_EVENT TASK_EVENT_CUSTOM(5)
+
/* To be able to indicate the device is in tablet mode. */
#define CONFIG_TABLET_MODE_SWITCH
@@ -196,6 +201,7 @@ enum power_signal {
enum sensor_id {
LID_ACCEL = 0,
LID_GYRO,
+ VSYNC,
};
#include "gpio_signal.h"
diff --git a/board/scarlet/gpio.inc b/board/scarlet/gpio.inc
index 8e382b774e..6a84791a4b 100644
--- a/board/scarlet/gpio.inc
+++ b/board/scarlet/gpio.inc
@@ -32,6 +32,8 @@ GPIO_INT(AP_OVERTEMP, PIN(E, 4), GPIO_INT_RISING | GPIO_PULL_DOWN,
overtemp_interrupt)
GPIO_INT(ACCEL_INT_L, PIN(D, 14), GPIO_INT_FALLING | GPIO_SEL_1P8V,
bmi160_interrupt)
+GPIO_INT(SYNC_INT, PIN(A, 12), GPIO_INT_RISING | GPIO_PULL_DOWN,
+ sync_interrupt)
/* Voltage rails control pins */
GPIO(PP1800_S0_EN, PIN(D, 11), GPIO_OUT_LOW)
@@ -71,8 +73,6 @@ GPIO(WP_L, PIN(E, 5), GPIO_INPUT)
GPIO(CCD_MODE_ODL, PIN(C, 5), GPIO_INPUT | GPIO_PULL_UP)
/* TODO(b:63772957): Add an interrupt handler for charger rt946x */
GPIO(CHARGER_INT_L, PIN(E, 6), GPIO_INPUT | GPIO_PULL_UP)
-/* TODO(b:63773130): Add an interrupt handler for battery gauge max17055 */
-GPIO(BATTERY_INT_L, PIN(A, 12), GPIO_INPUT | GPIO_PULL_UP)
/* Non-INT power signal pin */
GPIO(AP_CORE_PG, PIN(D, 7), GPIO_INPUT | GPIO_PULL_UP)
/* Battery ID strap pin */