From b4125247f556650771bf6c92ccf612de382ad221 Mon Sep 17 00:00:00 2001 From: Bhanu Prakash Maiya Date: Fri, 2 Jul 2021 23:58:47 -0700 Subject: Dartmonkey: Implement get_fp_transport_type This patch reads GPIO_TRANSPORT_SEL in get_fp_transport_type() to get selected transport on board BRANCH=none BUG=b:192713372 TEST=1. make BOARD=nocturne_fp -j 2. On Icetower check logs 3. fpmcu console logs: ``` [1.099996 UART initialized after sysjump] [Image: RW, dartmonkey_v2.0.9475+375c295d0 cryptoc:v1.9308_26_0.9-3830fff private:v0.0.123-fd096e4 fpc:v0.0.119-cd5a676 2021-07-06 13:03:07 bhanumaiya@bhanumaiya2] [Reset cause: reset-pin power-on soft sysjump ap-off] [1.100221 Inits done] [1.100278 WARNING: Reset flags power-on + ap-off were forged.] [1.100380 TRANSPORT_SEL: UART] [1.100446 TRANSPORT_SEL: UART] ``` Signed-off-by: Bhanu Prakash Maiya Change-Id: I8ed933ce7a4c8b922d9c2da75b32ba4838e10e54 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3004293 Auto-Submit: Bhanu Prakash Maiya Reviewed-by: Jora Jacobi Reviewed-by: Craig Hesling Reviewed-by: Bhanu Prakash Maiya Commit-Queue: Bhanu Prakash Maiya Tested-by: Bhanu Prakash Maiya --- board/nocturne_fp/fpsensor_detect.c | 20 +++++++++++++++++++- board/nocturne_fp/gpio.inc | 2 ++ board/nocturne_fp/gpio_rw.inc | 1 - 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/board/nocturne_fp/fpsensor_detect.c b/board/nocturne_fp/fpsensor_detect.c index 5a4b95e64c..638b5fbfe0 100644 --- a/board/nocturne_fp/fpsensor_detect.c +++ b/board/nocturne_fp/fpsensor_detect.c @@ -4,8 +4,26 @@ */ #include "fpsensor_detect.h" +#include "gpio.h" +#include "timer.h" enum fp_transport_type get_fp_transport_type(void) { - return FP_TRANSPORT_TYPE_SPI; + enum fp_transport_type ret; + + gpio_set_level(GPIO_DIVIDER_HIGHSIDE, 1); + usleep(1); + switch (gpio_get_level(GPIO_TRANSPORT_SEL)) { + case 0: + ret = FP_TRANSPORT_TYPE_UART; + break; + case 1: + ret = FP_TRANSPORT_TYPE_SPI; + break; + default: + ret = FP_TRANSPORT_TYPE_UNKNOWN; + break; + } + gpio_set_level(GPIO_DIVIDER_HIGHSIDE, 0); + return ret; } diff --git a/board/nocturne_fp/gpio.inc b/board/nocturne_fp/gpio.inc index 7e90ef0da4..f10ddde389 100644 --- a/board/nocturne_fp/gpio.inc +++ b/board/nocturne_fp/gpio.inc @@ -11,9 +11,11 @@ GPIO_INT(SPI1_NSS, PIN(A, 4), GPIO_INPUT, spi_event) #ifndef APPLY_RESET_LOOP_FIX GPIO(WP, PIN(B, 7), GPIO_INPUT) #endif +GPIO(TRANSPORT_SEL, PIN(B, 1), GPIO_INPUT) /* Outputs */ GPIO(EC_INT_L, PIN(A, 1), GPIO_OUT_HIGH) +GPIO(DIVIDER_HIGHSIDE, PIN(B, 8), GPIO_OUT_LOW) UNIMPLEMENTED(ENTERING_RW) diff --git a/board/nocturne_fp/gpio_rw.inc b/board/nocturne_fp/gpio_rw.inc index 65036abe14..61cd3e17e2 100644 --- a/board/nocturne_fp/gpio_rw.inc +++ b/board/nocturne_fp/gpio_rw.inc @@ -30,7 +30,6 @@ GPIO(PCH_SLP_SUS_L, PIN(D, 3), GPIO_INPUT) GPIO(FP_SPI_SEL, PIN(E, 1), GPIO_INPUT | GPIO_PULL_UP) /* Outputs */ -GPIO(DIVIDER_HIGHSIDE, PIN(B, 8), GPIO_OUT_LOW) GPIO(FP_RST_ODL, PIN(E, 0), GPIO_OUT_HIGH) GPIO(SPI4_NSS, PIN(E, 4), GPIO_OUT_HIGH) GPIO(SPI4_ALT_NSS, PIN(E, 11), GPIO_OUT_HIGH) -- cgit v1.2.1