mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-19 09:43:08 +00:00
e663b2ff4b
For a TPM device to be operational we need to initialize it and perform its startup sequence. The 'tpm init' command currently calls tpm_init() which ends up calling the ->open() per-device callback and performs the initial hardware configuration as well as requesting locality 0 for the caller. There no code that currently calls tpm_init() without following up with a tpm_startup() and tpm_self_test_full() or tpm_continue_self_test(). So let's add a 'tpm autostart' command and call tpm_auto_start() which leaves the device in an operational state. It's worth noting that calling tpm_init() only, doesn't allow a someone to use the TPM since the startup sequence is mandatory. We always repeat the pattern of calling - tpm_init() - tpm_startup() - tpm_self_test_full() or tpm_continue_self_test() Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
29 lines
1.2 KiB
C
29 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (c) 2013 The Chromium OS Authors.
|
|
* Coypright (c) 2013 Guntermann & Drunck GmbH
|
|
*/
|
|
|
|
#ifndef __TPM_USER_UTILS_H
|
|
#define __TPM_USER_UTILS_H
|
|
|
|
void print_byte_string(u8 *data, size_t count);
|
|
void *parse_byte_string(char *bytes, u8 *data, size_t *count_ptr);
|
|
int report_return_code(int return_code);
|
|
int type_string_get_num_values(const char *type_str);
|
|
size_t type_string_get_space_size(const char *type_str);
|
|
void *type_string_alloc(const char *type_str, u32 *count);
|
|
int type_string_pack(const char *type_str, char * const values[], u8 *data);
|
|
int type_string_write_vars(const char *type_str, u8 *data, char * const vars[]);
|
|
int get_tpm(struct udevice **devp);
|
|
|
|
int do_tpm_device(struct cmd_tbl *cmdtp, int flag, int argc,
|
|
char *const argv[]);
|
|
int do_tpm_init(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
|
|
int do_tpm_autostart(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
|
|
int do_tpm_info(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
|
|
int do_tpm_report_state(struct cmd_tbl *cmdtp, int flag, int argc,
|
|
char *const argv[]);
|
|
int do_tpm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
|
|
|
|
#endif /* __TPM_USER_UTILS_H */
|