@ -31,10 +31,31 @@ static int do_tpm2_startup(cmd_tbl_t *cmdtp, int flag, int argc,
return report_return_code ( tpm2_startup ( mode ) ) ;
}
static int do_tpm2_self_test ( cmd_tbl_t * cmdtp , int flag , int argc ,
char * const argv [ ] )
{
enum tpm2_yes_no full_test ;
if ( argc ! = 2 )
return CMD_RET_USAGE ;
if ( ! strcasecmp ( " full " , argv [ 1 ] ) ) {
full_test = TPMI_YES ;
} else if ( ! strcasecmp ( " continue " , argv [ 1 ] ) ) {
full_test = TPMI_NO ;
} else {
printf ( " Couldn't recognize test mode: %s \n " , argv [ 1 ] ) ;
return CMD_RET_FAILURE ;
}
return report_return_code ( tpm2_self_test ( full_test ) ) ;
}
static cmd_tbl_t tpm2_commands [ ] = {
U_BOOT_CMD_MKENT ( info , 0 , 1 , do_tpm_info , " " , " " ) ,
U_BOOT_CMD_MKENT ( init , 0 , 1 , do_tpm_init , " " , " " ) ,
U_BOOT_CMD_MKENT ( startup , 0 , 1 , do_tpm2_startup , " " , " " ) ,
U_BOOT_CMD_MKENT ( self_test , 0 , 1 , do_tpm2_self_test , " " , " " ) ,
} ;
cmd_tbl_t * get_tpm_commands ( unsigned int * size )
@ -56,4 +77,9 @@ U_BOOT_CMD(tpm, CONFIG_SYS_MAXARGS, 1, do_tpm, "Issue a TPMv2.x command",
" <mode> is one of: \n "
" * TPM2_SU_CLEAR (reset state) \n "
" * TPM2_SU_STATE (preserved state) \n "
" self_test <type> \n "
" Test the TPM capabilities. \n "
" <type> is one of: \n "
" * full (perform all tests) \n "
" * continue (only check untested tests) \n "
) ;