mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 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 */
 |