![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <commonlib/endian.h>
#include <commonlib/helpers.h>
#include <console/console.h>
#include <delay.h>
#include <device/i2c_simple.h>
#include <drivers/tpm/cr50.h>
#include <endian.h>
#include <security/tpm/tis.h>
#include <string.h>
#include <types.h>
#include <timer.h>
#include "tpm.h"
Go to the source code of this file.
Data Structures | |
struct | tpm_inf_dev |
Macros | |
#define | CR50_MAX_BUFSIZE 63 |
#define | CR50_TIMEOUT_INIT_MS 30000 /* Very long timeout for TPM init */ |
#define | CR50_TIMEOUT_LONG_MS 2000 /* Long timeout while waiting for TPM */ |
#define | CR50_TIMEOUT_SHORT_MS 2 /* Short timeout during transactions */ |
#define | CR50_TIMEOUT_NOIRQ_MS 20 /* Timeout for TPM ready without IRQ */ |
#define | CR50_TIMEOUT_IRQ_MS 100 /* Timeout for TPM ready with IRQ */ |
#define | CR50_DID_VID 0x00281ae0L |
#define | TI50_DID_VID 0x504a6666L |
Variables | |
static struct tpm_inf_dev | tpm_dev |
#define CR50_TIMEOUT_INIT_MS 30000 /* Very long timeout for TPM init */ |
#define CR50_TIMEOUT_IRQ_MS 100 /* Timeout for TPM ready with IRQ */ |
#define CR50_TIMEOUT_LONG_MS 2000 /* Long timeout while waiting for TPM */ |
#define CR50_TIMEOUT_NOIRQ_MS 20 /* Timeout for TPM ready without IRQ */ |
#define CR50_TIMEOUT_SHORT_MS 2 /* Short timeout during transactions */ |
|
static |
Definition at line 213 of file cr50.c.
References BIOS_INFO, cr50_i2c_read(), cr50_i2c_write(), mask, printk, TPM_ACCESS, TPM_ACCESS_ACTIVE_LOCALITY, TPM_ACCESS_REQUEST_USE, and TPM_ACCESS_VALID.
Referenced by tpm_vendor_init().
Definition at line 441 of file cr50.c.
References BIOS_ERR, BIOS_INFO, CR50_DID_VID, cr50_i2c_read(), mdelay(), printk, TI50_DID_VID, and TPM_DID_VID.
Referenced by tpm_vendor_init().
Definition at line 91 of file cr50.c.
References addr, tpm_inf_dev::addr, BIOS_ERR, buffer, tpm_inf_dev::bus, cr50_i2c_wait_tpm_ready(), i2c_read_raw(), i2c_write_raw(), printk, tis_plat_irq_status(), and tpm_dev.
Referenced by claim_locality(), cr50_i2c_probe(), cr50_i2c_tis_recv(), cr50_i2c_tis_status(), cr50_i2c_wait_burststs(), and process_reset().
Definition at line 255 of file cr50.c.
References buf, chip, cr50_i2c_write(), CR50_TIMEOUT_SHORT_MS, tpm_vendor_specific::locality, mdelay(), TPM_STS, TPM_STS_COMMAND_READY, and tpm_chip::vendor.
Referenced by cr50_i2c_tis_recv(), cr50_i2c_tis_send(), and cr50_vendor_init().
Definition at line 294 of file cr50.c.
References addr, BIOS_ERR, buf, chip, cr50_i2c_read(), cr50_i2c_tis_ready(), cr50_i2c_tis_status(), cr50_i2c_wait_burststs(), stopwatch::current, tpm_vendor_specific::locality, mask, MIN, printk, read_be32(), TPM_DATA_FIFO, TPM_HEADER_SIZE, TPM_RSP_SIZE_BYTE, TPM_STS_COMMAND_READY, TPM_STS_DATA_AVAIL, TPM_STS_VALID, and tpm_chip::vendor.
Referenced by cr50_vendor_init().
Definition at line 357 of file cr50.c.
References BIOS_ERR, buf, chip, cr50_i2c_tis_ready(), cr50_i2c_tis_status(), cr50_i2c_wait_burststs(), cr50_i2c_write(), CR50_TIMEOUT_LONG_MS, tpm_vendor_specific::locality, mask, MIN, printk, stopwatch_expired(), stopwatch_init_msecs_expire(), TPM_DATA_FIFO, TPM_STS, TPM_STS_COMMAND_READY, TPM_STS_DATA_EXPECT, TPM_STS_GO, TPM_STS_VALID, and tpm_chip::vendor.
Referenced by cr50_vendor_init().
Definition at line 243 of file cr50.c.
References BIOS_ERR, buf, chip, cr50_i2c_read(), tpm_vendor_specific::locality, printk, TPM_STS, and tpm_chip::vendor.
Referenced by cr50_i2c_tis_recv(), cr50_i2c_tis_send(), and cr50_vendor_init().
|
static |
Definition at line 264 of file cr50.c.
References BIOS_ERR, buf, chip, cr50_i2c_read(), CR50_MAX_BUFSIZE, CR50_TIMEOUT_LONG_MS, CR50_TIMEOUT_SHORT_MS, tpm_vendor_specific::locality, mask, mdelay(), printk, read_le16(), stopwatch_expired(), stopwatch_init_msecs_expire(), TPM_STS, and tpm_chip::vendor.
Referenced by cr50_i2c_tis_recv(), and cr50_i2c_tis_send().
|
static |
Definition at line 64 of file cr50.c.
References BIOS_ERR, CR50_TIMEOUT_IRQ_MS, printk, stopwatch_expired(), stopwatch_init_msecs_expire(), and tis_plat_irq_status().
Referenced by cr50_i2c_read(), and cr50_i2c_write().
Definition at line 131 of file cr50.c.
References addr, tpm_inf_dev::addr, BIOS_ERR, tpm_inf_dev::buf, buffer, tpm_inf_dev::bus, cr50_i2c_wait_tpm_ready(), CR50_MAX_BUFSIZE, i2c_write_raw(), memcpy(), printk, tis_plat_irq_status(), and tpm_dev.
Referenced by claim_locality(), cr50_i2c_tis_ready(), and cr50_i2c_tis_send().
Definition at line 424 of file cr50.c.
References tpm_vendor_specific::cancel, chip, cr50_i2c_tis_ready(), cr50_i2c_tis_recv(), cr50_i2c_tis_send(), cr50_i2c_tis_status(), memset(), tpm_vendor_specific::recv, tpm_vendor_specific::req_canceled, tpm_vendor_specific::req_complete_mask, tpm_vendor_specific::req_complete_val, tpm_vendor_specific::send, tpm_vendor_specific::status, TPM_STS_COMMAND_READY, TPM_STS_DATA_AVAIL, TPM_STS_VALID, and tpm_chip::vendor.
Referenced by tpm_vendor_init().
|
static |
Definition at line 162 of file cr50.c.
References BIOS_ERR, BIOS_INFO, cr50_i2c_read(), CR50_TIMEOUT_INIT_MS, mask, mdelay(), printk, stopwatch_duration_msecs(), stopwatch_expired(), stopwatch_init_msecs_expire(), TPM_ACCESS, TPM_ACCESS_ACTIVE_LOCALITY, and TPM_ACCESS_VALID.
Referenced by tpm_vendor_init().
Definition at line 49 of file cr50.c.
References BIOS_WARNING, CR50_TIMEOUT_NOIRQ_MS, mdelay(), and printk.
Referenced by cr50_i2c_read(), cr50_i2c_wait_tpm_ready(), and cr50_i2c_write().
Definition at line 513 of file cr50.c.
Referenced by cr50_get_board_cfg().
Definition at line 513 of file cr50.c.
Referenced by tis_close().
Definition at line 476 of file cr50.c.
References tpm_inf_dev::addr, BIOS_DEBUG, BIOS_ERR, tpm_inf_dev::bus, chip, claim_locality(), cr50_get_firmware_version(), cr50_i2c_probe(), cr50_set_board_cfg(), cr50_vendor_init(), ENV_BOOTBLOCK, ENV_SEPARATE_VERSTAGE, tpm_chip::is_open, NULL, printk, process_reset(), tpm_dev, and tpm_first_access_this_boot().
Referenced by tis_open().
Definition at line 436 of file cr50.c.
Referenced by tis_init().
|
static |
Definition at line 1 of file cr50.c.
Referenced by cr50_i2c_read(), cr50_i2c_write(), and tpm_vendor_init().