summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Chao <scott.chao@bitland.corp-partner.google.com>2020-03-27 03:58:22 -0400
committerCommit Bot <commit-bot@chromium.org>2020-03-30 07:12:22 +0000
commit5a9256d981a217615a0f13418de22afa33875f5d (patch)
treeb7bc26ad8fd2e1996abee63bf52c33dbb68f8ebe
parentfa1381fa9a2a9067451302ef03372bae9c289dd2 (diff)
downloadchrome-ec-5a9256d981a217615a0f13418de22afa33875f5d.tar.gz
damu: modify gpio as SPI for BMI160.
Damu EC using SPI to communicate with BMI160, so set gpio as alternate pin. Also include CL:2043151. BUG=b:147206199 BRANCH=kukui TEST=make -j BOARD=damu TEST=make buildall TEST=No failed log when sensor init [25.483715 Accel: MS Done Init type:0x0 range:2] [25.492217 Accel ODR: 10000 - roundup 1 from config 1 [AP 0] [25.495683 Gyro: MS Done Init type:0x1 range:1000] [25.501918 Gyro ODR: 0 - roundup 0 from config 0 [AP 0]] Signed-off-by: Scott Chao <scott.chao@bitland.corp-partner.google.com> Change-Id: I499762166a7021bdda2731f7b1bef0f11d61f1d1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2123621 Reviewed-by: Ting Shen <phoenixshen@chromium.org>
-rw-r--r--board/damu/board.c27
-rw-r--r--board/damu/gpio.inc10
2 files changed, 24 insertions, 13 deletions
diff --git a/board/damu/board.c b/board/damu/board.c
index 673978c05d..278c76727a 100644
--- a/board/damu/board.c
+++ b/board/damu/board.c
@@ -262,17 +262,24 @@ void bc12_interrupt(enum gpio_signal signal)
#ifndef VARIANT_KUKUI_NO_SENSORS
static void board_spi_enable(void)
{
- cputs(CC_ACCEL, "board_spi_enable");
- gpio_config_module(MODULE_SPI_MASTER, 1);
+ /*
+ * Pin mux spi peripheral away from emmc, since RO might have
+ * left them there.
+ */
+ gpio_config_module(MODULE_SPI_FLASH, 0);
- /* Enable clocks to SPI2 module */
+ /* Enable clocks to SPI2 module. */
STM32_RCC_APB1ENR |= STM32_RCC_PB1_SPI2;
- /* Reset SPI2 */
+ /* Reset SPI2 to clear state left over from the emmc slave. */
STM32_RCC_APB1RSTR |= STM32_RCC_PB1_SPI2;
STM32_RCC_APB1RSTR &= ~STM32_RCC_PB1_SPI2;
+ /* Reinitialize spi peripheral. */
spi_enable(CONFIG_SPI_ACCEL_PORT, 1);
+
+ /* Pin mux spi peripheral toward the sensor. */
+ gpio_config_module(MODULE_SPI_MASTER, 1);
}
DECLARE_HOOK(HOOK_CHIPSET_STARTUP,
board_spi_enable,
@@ -280,14 +287,14 @@ DECLARE_HOOK(HOOK_CHIPSET_STARTUP,
static void board_spi_disable(void)
{
- spi_enable(CONFIG_SPI_ACCEL_PORT, 0);
-
- /* Disable clocks to SPI2 module */
- STM32_RCC_APB1ENR &= ~STM32_RCC_PB1_SPI2;
-
- gpio_config_module(MODULE_SPI_MASTER, 0);
+ /* Set pins to a state calming the sensor down. */
gpio_set_flags(GPIO_EC_SENSOR_SPI_CK, GPIO_OUT_LOW);
gpio_set_level(GPIO_EC_SENSOR_SPI_CK, 0);
+ gpio_config_module(MODULE_SPI_MASTER, 0);
+
+ /* Disable spi peripheral and clocks. */
+ spi_enable(CONFIG_SPI_ACCEL_PORT, 0);
+ STM32_RCC_APB1ENR &= ~STM32_RCC_PB1_SPI2;
}
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN,
board_spi_disable,
diff --git a/board/damu/gpio.inc b/board/damu/gpio.inc
index 6b4a5ce117..893455bdb5 100644
--- a/board/damu/gpio.inc
+++ b/board/damu/gpio.inc
@@ -105,7 +105,11 @@ ALTERNATE(PIN_MASK(A, 0x1800), 5, MODULE_I2C, GPIO_ODR_HIGH )
ALTERNATE(PIN_MASK(B, 0x0038), 0, MODULE_SPI, 0)
/* SPI SLAVE CS: PA15 */
ALTERNATE(PIN_MASK(A, 0x8000), 0, MODULE_SPI, 0)
-#ifdef SECTION_IS_RO
-/* SPI SLAVE: PB13/14/15 */
+
+/* Shared between slave for emmc and master for bmi160 */
+/* They're mutually exclusive with gpio_config_module. */
+/* EMMC SPI SLAVE: PB13/14/15 */
ALTERNATE(PIN_MASK(B, 0xE000), 0, MODULE_SPI_FLASH, 0)
-#endif
+/* SENSORS SPI MASTER: PB10, PB12, PC2, PC3 */
+ALTERNATE(PIN_MASK(B, 0x0400), 5, MODULE_SPI_MASTER, 0)
+ALTERNATE(PIN_MASK(C, 0x000C), 1, MODULE_SPI_MASTER, 0)