diff options
Diffstat (limited to 'src/mainboard/intel/galileo/vboot.c')
-rw-r--r-- | src/mainboard/intel/galileo/vboot.c | 111 |
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); +} |