summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/nocturne_fp/fpsensor_detect.c20
-rw-r--r--board/nocturne_fp/gpio.inc2
-rw-r--r--board/nocturne_fp/gpio_rw.inc1
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)