summaryrefslogtreecommitdiff
path: root/board/jacuzzi
diff options
context:
space:
mode:
authorAlexandru M Stan <amstan@chromium.org>2020-02-06 20:46:03 -0800
committerCommit Bot <commit-bot@chromium.org>2020-02-11 01:59:26 +0000
commit02e0cabe5d9462d36a1df50d392d8a7d3b543ef7 (patch)
tree6276f05fc895ee90705a71179e091e4da1a837e4 /board/jacuzzi
parent1bc5961c7e2d4e7e623e69f628cb0069e02b6b4d (diff)
downloadchrome-ec-02e0cabe5d9462d36a1df50d392d8a7d3b543ef7.tar.gz
jacuzzi: unmux pins away from emmc once we want to talk to sensors
Muxing the spi peripheral to both the emmc and bmi160 is probably not a good idea, I'm pretty sure that creates an internal short between the emmc and sensor pins. Disconnect them away from emmc before attempting to use them for bmi160. BUG=b/144892889 TEST=boot juniper, see sensor init ok TEST=emmc still works BRANCH=kukui Change-Id: Iacfef625d3e7955e717372055c4d185f76a0189c Signed-off-by: Ting Shen <phoenixshen@google.com> Signed-off-by: Alexandru M Stan <amstan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2043151 Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'board/jacuzzi')
-rw-r--r--board/jacuzzi/board.c27
-rw-r--r--board/jacuzzi/gpio.inc5
2 files changed, 19 insertions, 13 deletions
diff --git a/board/jacuzzi/board.c b/board/jacuzzi/board.c
index 7199f9ce12..8becdc3328 100644
--- a/board/jacuzzi/board.c
+++ b/board/jacuzzi/board.c
@@ -261,17 +261,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,
@@ -279,14 +286,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/jacuzzi/gpio.inc b/board/jacuzzi/gpio.inc
index 67bae7370b..61a9afba89 100644
--- a/board/jacuzzi/gpio.inc
+++ b/board/jacuzzi/gpio.inc
@@ -112,11 +112,10 @@ ALTERNATE(PIN_MASK(B, 0x0038), 0, MODULE_SPI, 0)
ALTERNATE(PIN_MASK(A, 0x8000), 0, MODULE_SPI, 0)
/* SPI2 */
-#ifdef VARIANT_KUKUI_NO_SENSORS
+/* 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)
-#else
/* 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)
-#endif /* VARIANT_KUKUI_NO_SENSORS */