diff options
-rw-r--r-- | board/nocturne_fp/fpsensor_detect.c | 20 | ||||
-rw-r--r-- | board/nocturne_fp/gpio.inc | 2 | ||||
-rw-r--r-- | 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) |