summaryrefslogtreecommitdiff
path: root/src/mainboard/intel/galileo/vboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard/intel/galileo/vboot.c')
-rw-r--r--src/mainboard/intel/galileo/vboot.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/mainboard/intel/galileo/vboot.c b/src/mainboard/intel/galileo/vboot.c
new file mode 100644
index 0000000000..cc8831eaeb
--- /dev/null
+++ b/src/mainboard/intel/galileo/vboot.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2016-2017 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but without any warranty; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <assert.h>
+#include <bootmode.h>
+#include <console/console.h>
+#include <delay.h>
+#include <device/i2c.h>
+#include <lib.h>
+#include <soc/i2c.h>
+#include <soc/reg_access.h>
+#include "reg_access.h"
+#include "gen1.h"
+#include "gen2.h"
+#include <spi_flash.h>
+#include <vboot/vboot_common.h>
+
+int clear_recovery_mode_switch(void)
+{
+ /* Nothing to do */
+ return 0;
+}
+
+int get_developer_mode_switch(void)
+{
+ return 0;
+}
+
+int get_recovery_mode_switch(void)
+{
+ return 0;
+}
+
+int get_sw_write_protect_state(void)
+{
+ /* Not write protected */
+ return 0;
+}
+
+int get_write_protect_state(void)
+{
+ /* Not write protected */
+ return 0;
+}
+
+void log_recovery_mode_switch(void)
+{
+}
+
+void verstage_mainboard_init(void)
+{
+ const struct reg_script *script;
+
+ /* Crypto Shield I2C Addresses:
+ *
+ * 0x29: AT97S3204T - TPM 1.2
+ * 0x50: ATAES132 - AES-128
+ * 0x60: ATECC108 - Elliptical Curve
+ * 0x64: ATSHA204 - SHA-256
+ * 0x68: DS3231M - RTC
+ */
+
+ /* Determine the correct script for the board */
+ if (IS_ENABLED(CONFIG_GALILEO_GEN2))
+ script = gen2_i2c_init;
+ else
+ /* Determine which I2C address is in use */
+ script = (reg_legacy_gpio_read (R_QNC_GPIO_RGLVL_RESUME_WELL)
+ & GALILEO_DETERMINE_IOEXP_SLA_RESUMEWELL_GPIO)
+ ? gen1_i2c_0x20_init : gen1_i2c_0x21_init;
+
+ /* Direct the I2C SDA and SCL signals to the Arduino connector */
+ reg_script_run(script);
+}
+
+void __attribute__((weak)) vboot_platform_prepare_reboot(void)
+{
+ const struct reg_script *script;
+
+ /* Crypto Shield I2C Addresses:
+ *
+ * 0x29: AT97S3204T - TPM 1.2
+ * 0x50: ATAES132 - AES-128
+ * 0x60: ATECC108 - Elliptical Curve
+ * 0x64: ATSHA204 - SHA-256
+ * 0x68: DS3231M - RTC
+ */
+
+ /* Determine the correct script for the board */
+ if (IS_ENABLED(CONFIG_GALILEO_GEN2))
+ script = gen2_tpm_reset;
+ else
+ /* Determine which I2C address is in use */
+ script = (reg_legacy_gpio_read (R_QNC_GPIO_RGLVL_RESUME_WELL)
+ & GALILEO_DETERMINE_IOEXP_SLA_RESUMEWELL_GPIO)
+ ? gen1_tpm_reset_0x20 : gen1_tpm_reset_0x21;
+
+ /* Reset the TPM */
+ reg_script_run(script);
+}