@@ -367,38 +367,21 @@ void hal_clk_init(void)
367367 PROTECT_ON (); /* write protect on */
368368}
369369
370- void hal_init (void )
370+ #if defined(WOLFBOOT_RENESAS_TSIP ) && !defined(WOLFBOOT_RENESAS_APP )
371+ static int sipInitDone = 0 ;
372+ int hal_renesas_init (void )
371373{
372- #if defined(WOLFBOOT_RENESAS_TSIP ) && \
373- !defined(WOLFBOOT_RENESAS_APP )
374374 int err ;
375375 uint32_t key_type = 0 ;
376376 int tsip_key_type = -1 ;
377377 struct enc_pub_key * encrypted_user_key_data ;
378- #endif
379-
380- /* For CCRX, mcu_clock_setup() in resetprg.c will set up clocks. */
381- #if defined(__GNUC__ )
382- hal_clk_init ();
383- #endif
384378
385- #ifdef ENABLE_LED
386- hal_led_off ();
387- #endif
379+ if (sipInitDone )
380+ return 0 ;
388381
389- #ifdef DEBUG_UART
390- uart_init ();
391- uart_write ("wolfBoot HAL Init\n" , 18 );
392- #endif
393-
394- hal_flash_init ();
395-
396- #if defined(WOLFBOOT_RENESAS_TSIP ) && \
397- !defined(WOLFBOOT_RENESAS_APP )
398382 err = wolfCrypt_Init ();
399383 if (err != 0 ) {
400- wolfBoot_printf ("ERROR: wolfCrypt_Init %d\n" , err );
401- hal_panic ();
384+ return err ;
402385 }
403386
404387 /* retrive installed pubkey data from flash */
@@ -407,19 +390,19 @@ void hal_init(void)
407390 key_type = keystore_get_key_type (0 );
408391 switch (key_type ) {
409392 case AUTH_KEY_RSA2048 :
410- tsip_key_type = TSIP_RSA2048 ;
393+ tsip_key_type = TSIP_KEY_TYPE_RSA2048 ;
411394 break ;
412395 case AUTH_KEY_RSA3072 :
413- tsip_key_type = TSIP_RSA3072 ;
396+ tsip_key_type = TSIP_KEY_TYPE_RSA3072 ;
414397 break ;
415398 case AUTH_KEY_RSA4096 :
416- tsip_key_type = TSIP_RSA4096 ;
399+ tsip_key_type = TSIP_KEY_TYPE_RSA4096 ;
417400 break ;
418401 case AUTH_KEY_ECC256 :
419- tsip_key_type = TSIP_ECCP256 ;
402+ tsip_key_type = TSIP_KEY_TYPE_ECDSAP256 ;
420403 break ;
421404 case AUTH_KEY_ECC384 :
422- tsip_key_type = TSIP_ECCP384 ;
405+ tsip_key_type = TSIP_KEY_TYPE_ECDSAP384 ;
423406 break ;
424407 case AUTH_KEY_ECC521 :
425408 case AUTH_KEY_ED25519 :
@@ -430,7 +413,7 @@ void hal_init(void)
430413 }
431414 if (tsip_key_type == -1 ) {
432415 wolfBoot_printf ("key type (%d) not supported\n" , key_type );
433- hal_panic () ;
416+ return -1 ;
434417 }
435418
436419 /* Load encrypted UFPK (User Factory Programming Key) */
@@ -447,7 +430,7 @@ void hal_init(void)
447430 sizeof (encrypted_user_key_data -> encrypted_user_key ),
448431 tsip_key_type ) != 0 ) {
449432 wolfBoot_printf ("ERROR tsip_use_PublicKey_buffer\n" );
450- hal_panic () ;
433+ return -1 ;
451434 }
452435
453436 /* Init Crypt Callback */
@@ -456,9 +439,43 @@ void hal_init(void)
456439 err = wc_CryptoCb_CryptInitRenesasCmn (NULL , & pkInfo );
457440 if (err < 0 ) {
458441 wolfBoot_printf ("ERROR: wc_CryptoCb_CryptInitRenesasCmn %d\n" , err );
459- hal_panic () ;
442+ return -1 ;
460443 }
444+ sipInitDone = 1 ;
445+ return 0 ;
446+ }
461447#endif /* TSIP */
448+
449+
450+ void hal_init (void )
451+ {
452+ #if defined(WOLFBOOT_RENESAS_TSIP ) && !defined(WOLFBOOT_RENESAS_APP )
453+ int err ;
454+ #endif
455+
456+ /* For CCRX, mcu_clock_setup() in resetprg.c will set up clocks. */
457+ #if defined(__GNUC__ )
458+ hal_clk_init ();
459+ #endif
460+
461+ #ifdef ENABLE_LED
462+ hal_led_off ();
463+ #endif
464+
465+ #ifdef DEBUG_UART
466+ uart_init ();
467+ uart_write ("wolfBoot HAL Init\n" , 18 );
468+ #endif
469+
470+ hal_flash_init ();
471+
472+ #if defined(WOLFBOOT_RENESAS_TSIP ) && !defined(WOLFBOOT_RENESAS_APP )
473+ err = hal_renesas_init ();
474+ if (err != 0 ) {
475+ wolfBoot_printf ("ERROR: hal_renesas_init %d\n" , err );
476+ hal_panic ();
477+ }
478+ #endif
462479}
463480
464481void hal_prepare_boot (void )
0 commit comments