coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
cr50.c File Reference
#include <drivers/spi/tpm/tpm.h>
#include <security/tpm/tis.h>
#include <string.h>
#include <types.h>
Include dependency graph for cr50.c:

Go to the source code of this file.

Macros

#define CR50_DID_VID   0x00281ae0L
 
#define TI50_DID_VID   0x504a6666L
 
#define CR50_BOARD_CFG_LOCKBIT_MASK   0x80000000U
 
#define CR50_BOARD_CFG_FEATUREBITS_MASK   0x3FFFFFFFU
 
#define CR50_BOARD_CFG_100US_READY_PULSE   0x00000001U
 
#define CR50_BOARD_CFG_VALUE
 
#define CR50_FW_VER_REG_SPI   (TPM_LOCALITY_0_SPI_BASE + 0xf90)
 
#define CR50_BOARD_CFG_REG_SPI   (TPM_LOCALITY_0_SPI_BASE + 0xfe0)
 
#define CR50_FW_VER_REG_I2C   0x0f
 
#define CR50_BOARD_CFG_REG_I2C   0x1c
 

Enumerations

enum  cr50_register { CR50_FW_VER_REG , CR50_BOARD_CFG_REG }
 

Functions

static int get_reg_addr (enum cr50_register reg)
 
static bool cr50_fw_supports_board_cfg (struct cr50_firmware_version *version)
 
static uint32_t cr50_get_board_cfg (void)
 
enum cb_err cr50_set_board_cfg (void)
 Set the BOARD_CFG register on the TPM chip to a particular compile-time constant value. More...
 
bool cr50_is_long_interrupt_pulse_enabled (void)
 
static enum cb_err cr50_parse_fw_version (const char *version_str, struct cr50_firmware_version *ver)
 
enum cb_err cr50_get_firmware_version (struct cr50_firmware_version *version)
 

Macro Definition Documentation

◆ CR50_BOARD_CFG_100US_READY_PULSE

#define CR50_BOARD_CFG_100US_READY_PULSE   0x00000001U

Definition at line 14 of file cr50.c.

◆ CR50_BOARD_CFG_FEATUREBITS_MASK

#define CR50_BOARD_CFG_FEATUREBITS_MASK   0x3FFFFFFFU

Definition at line 12 of file cr50.c.

◆ CR50_BOARD_CFG_LOCKBIT_MASK

#define CR50_BOARD_CFG_LOCKBIT_MASK   0x80000000U

Definition at line 11 of file cr50.c.

◆ CR50_BOARD_CFG_REG_I2C

#define CR50_BOARD_CFG_REG_I2C   0x1c

Definition at line 28 of file cr50.c.

◆ CR50_BOARD_CFG_REG_SPI

#define CR50_BOARD_CFG_REG_SPI   (TPM_LOCALITY_0_SPI_BASE + 0xfe0)

Definition at line 25 of file cr50.c.

◆ CR50_BOARD_CFG_VALUE

#define CR50_BOARD_CFG_VALUE
Value:
(CONFIG(CR50_USE_LONG_INTERRUPT_PULSES) \
#define CR50_BOARD_CFG_100US_READY_PULSE
Definition: cr50.c:14
@ CONFIG
Definition: dsi_common.h:201

Definition at line 15 of file cr50.c.

◆ CR50_DID_VID

#define CR50_DID_VID   0x00281ae0L

Definition at line 8 of file cr50.c.

◆ CR50_FW_VER_REG_I2C

#define CR50_FW_VER_REG_I2C   0x0f

Definition at line 27 of file cr50.c.

◆ CR50_FW_VER_REG_SPI

#define CR50_FW_VER_REG_SPI   (TPM_LOCALITY_0_SPI_BASE + 0xf90)

Definition at line 24 of file cr50.c.

◆ TI50_DID_VID

#define TI50_DID_VID   0x504a6666L

Definition at line 9 of file cr50.c.

Enumeration Type Documentation

◆ cr50_register

Enumerator
CR50_FW_VER_REG 
CR50_BOARD_CFG_REG 

Definition at line 19 of file cr50.c.

Function Documentation

◆ cr50_fw_supports_board_cfg()

static bool cr50_fw_supports_board_cfg ( struct cr50_firmware_version version)
static

Definition at line 58 of file cr50.c.

References BIOS_INFO, printk, and version.

Referenced by cr50_get_board_cfg().

Here is the caller graph for this function:

◆ cr50_get_board_cfg()

static uint32_t cr50_get_board_cfg ( void  )
static

Definition at line 76 of file cr50.c.

References BIOS_ERR, CB_SUCCESS, CR50_BOARD_CFG_FEATUREBITS_MASK, CR50_BOARD_CFG_REG, cr50_fw_supports_board_cfg(), cr50_get_firmware_version(), get_reg_addr(), printk, tis_vendor_read(), and value.

Referenced by cr50_get_firmware_version().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cr50_get_firmware_version()

enum cb_err cr50_get_firmware_version ( struct cr50_firmware_version version)

Definition at line 151 of file cr50.c.

References CONFIG, CR50_BOARD_CFG_100US_READY_PULSE, and cr50_get_board_cfg().

Referenced by cr50_get_board_cfg(), fifo_transfer(), and tpm_vendor_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cr50_is_long_interrupt_pulse_enabled()

bool cr50_is_long_interrupt_pulse_enabled ( void  )

Definition at line 151 of file cr50.c.

Referenced by mainboard_update_soc_chip_config().

Here is the caller graph for this function:

◆ cr50_parse_fw_version()

static enum cb_err cr50_parse_fw_version ( const char *  version_str,
struct cr50_firmware_version ver 
)
static

Definition at line 151 of file cr50.c.

◆ cr50_set_board_cfg()

enum cb_err cr50_set_board_cfg ( void  )

Set the BOARD_CFG register on the TPM chip to a particular compile-time constant value.

Definition at line 76 of file cr50.c.

Referenced by fifo_transfer(), and tpm_vendor_init().

Here is the caller graph for this function:

◆ get_reg_addr()

static int get_reg_addr ( enum cr50_register  reg)
static

Definition at line 31 of file cr50.c.

References CONFIG, CR50_BOARD_CFG_REG, CR50_BOARD_CFG_REG_I2C, CR50_BOARD_CFG_REG_SPI, CR50_FW_VER_REG, CR50_FW_VER_REG_I2C, and CR50_FW_VER_REG_SPI.

Referenced by cr50_get_board_cfg().

Here is the caller graph for this function: