summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2021-01-25 14:31:20 -0800
committerCommit Bot <commit-bot@chromium.org>2021-01-29 21:42:07 +0000
commit8552c791688d06a1d52971868c4759246369073a (patch)
tree441438a21f07ea4bc3567af535a944c8b1275fe2 /board
parent9687476ddaa78061cd74e98259f10bfc2d26d572 (diff)
downloadchrome-ec-8552c791688d06a1d52971868c4759246369073a.tar.gz
fpsensor: Add FP sensor SPI detection logic
BRANCH=none BUG=b:177908650 TEST=Flash icetower v0.2, observed FP_SPI_SEL on console TEST=Flash nocturne, observed FP_SPI_SEL on console Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I2b221139fed817de4c58db3b6c8198942ab86e7b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2648731 Reviewed-by: Craig Hesling <hesling@chromium.org>
Diffstat (limited to 'board')
-rw-r--r--board/hatch_fp/fpsensor_detect.c5
-rw-r--r--board/nocturne_fp/board.c4
-rw-r--r--board/nocturne_fp/fpsensor_detect.c23
-rw-r--r--board/nocturne_fp/gpio.inc4
4 files changed, 36 insertions, 0 deletions
diff --git a/board/hatch_fp/fpsensor_detect.c b/board/hatch_fp/fpsensor_detect.c
index e737052b77..86071bd7f6 100644
--- a/board/hatch_fp/fpsensor_detect.c
+++ b/board/hatch_fp/fpsensor_detect.c
@@ -48,3 +48,8 @@ enum fp_transport_type get_fp_transport_type(void)
gpio_set_level(GPIO_DIVIDER_HIGHSIDE, 0);
return ret;
}
+
+enum fp_sensor_spi_select get_fp_sensor_spi_select(void)
+{
+ return FP_SENSOR_SPI_SELECT_PRODUCTION;
+}
diff --git a/board/nocturne_fp/board.c b/board/nocturne_fp/board.c
index e4886f3cc8..fdce969d7a 100644
--- a/board/nocturne_fp/board.c
+++ b/board/nocturne_fp/board.c
@@ -82,6 +82,10 @@ static void spi_configure(void)
/* Initialize board. */
static void board_init(void)
{
+ enum fp_sensor_spi_select spi_select = get_fp_sensor_spi_select();
+
+ ccprints("FP_SPI_SEL: %s", fp_sensor_spi_select_to_str(spi_select));
+
spi_configure();
ccprints("TRANSPORT_SEL: %s",
diff --git a/board/nocturne_fp/fpsensor_detect.c b/board/nocturne_fp/fpsensor_detect.c
index 72b9b89e11..fcb0cc0ec5 100644
--- a/board/nocturne_fp/fpsensor_detect.c
+++ b/board/nocturne_fp/fpsensor_detect.c
@@ -4,6 +4,8 @@
*/
#include "fpsensor_detect.h"
+#include "gpio.h"
+#include "timer.h"
enum fp_sensor_type get_fp_sensor_type(void)
{
@@ -14,3 +16,24 @@ enum fp_transport_type get_fp_transport_type(void)
{
return FP_TRANSPORT_TYPE_SPI;
}
+
+enum fp_sensor_spi_select get_fp_sensor_spi_select(void)
+{
+ enum fp_sensor_spi_select ret;
+
+ gpio_set_level(GPIO_DIVIDER_HIGHSIDE, 1);
+ usleep(1);
+ switch (gpio_get_level(GPIO_FP_SPI_SEL)) {
+ case 0:
+ ret = FP_SENSOR_SPI_SELECT_DEVELOPMENT;
+ break;
+ case 1:
+ ret = FP_SENSOR_SPI_SELECT_PRODUCTION;
+ break;
+ default:
+ ret = FP_SENSOR_SPI_SELECT_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 a5ac01f1b3..1f34808203 100644
--- a/board/nocturne_fp/gpio.inc
+++ b/board/nocturne_fp/gpio.inc
@@ -23,11 +23,15 @@ GPIO_INT(WP, PIN(B, 7), GPIO_INT_BOTH, wp_event)
GPIO(WP, PIN(B, 7), GPIO_INPUT)
#endif
+/* TODO(b/178808871): Only enable pull up when doing detection. */
+GPIO(FP_SPI_SEL, PIN(E, 1), GPIO_INPUT | GPIO_PULL_UP)
+
/* Outputs */
GPIO(EC_INT_L, PIN(A, 1), GPIO_OUT_HIGH)
GPIO(FP_RST_ODL, PIN(E, 0), GPIO_OUT_HIGH)
GPIO(SPI4_NSS, PIN(E, 4), GPIO_OUT_HIGH)
GPIO(USER_PRES_L, PIN(C, 5), GPIO_ODR_HIGH)
+GPIO(DIVIDER_HIGHSIDE, PIN(B, 8), GPIO_OUT_LOW)
UNIMPLEMENTED(ENTERING_RW)