blob: 69b7fff4a606a2b499bf3503bccfd4e69ab7ad9f [file] [log] [blame]
/*
*
* Copyright 2019 NXP
* SPDX-License-Identifier: Apache-2.0
*/
/* Common header fils used by Freedom K64F */
#ifndef HAVE_KSDK
#error "HAVE_KSDK must be defined"
#endif
/* Expsosed variables */
#define HAVE_KSDK_LED_APIS 0
#include "ax_reset.h"
#include "board.h"
#include "fsl_gpio.h"
#include "ledHandler.h"
#include "pin_mux.h"
#include "se_reset_config.h"
#include "sm_timer.h"
#if defined(SSS_USE_FTR_FILE)
#include "fsl_sss_ftr.h"
#else
#include "fsl_sss_ftr_default.h"
#endif
#if (SSS_HAVE_MBEDTLS)
#include "ksdk_mbedtls.h"
#endif
#ifdef CPU_MIMXRT1062DVL6A
#include "fsl_dcp.h"
#include "fsl_trng.h"
#endif
#include "fsl_iomuxc.h"
#ifdef CPU_MIMXRT1062DVL6A
#define TRNG0 TRNG
#endif
void BOARD_InitModuleClock(void)
{
const clock_enet_pll_config_t config = {.enableClkOutput = true, .enableClkOutput25M = false, .loopDivider = 1};
CLOCK_InitEnetPll(&config);
}
void ex_sss_main_ksdk_bm()
{
#if defined(_WIN32) && defined(WIN32) && defined(DEBUG)
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
#endif
dcp_config_t dcpConfig;
trng_config_t trngConfig;
BOARD_ConfigMPU();
BOARD_InitBootPins();
BOARD_BootClockRUN();
BOARD_InitDebugConsole();
BOARD_InitModuleClock();
#if defined(IMX_RT)
/* Data cache must be temporarily disabled to be able to use sdram */
SCB_DisableDCache();
#endif
/* Initialize DCP */
DCP_GetDefaultConfig(&dcpConfig);
DCP_Init(DCP, &dcpConfig);
/* Initialize TRNG */
TRNG_GetDefaultConfig(&trngConfig);
/* Set sample mode of the TRNG ring oscillator to Von Neumann, for better random data.
* It is optional.*/
trngConfig.sampleMode = kTRNG_SampleModeVonNeumann;
/* Initialize TRNG */
TRNG_Init(TRNG0, &trngConfig);
#if (SSS_HAVE_MBEDTLS)
CRYPTO_InitHardware();
#if defined(FSL_FEATURE_SOC_SHA_COUNT) && (FSL_FEATURE_SOC_SHA_COUNT > 0)
CLOCK_EnableClock(kCLOCK_Sha0);
RESET_PeripheralReset(kSHA_RST_SHIFT_RSTn);
#endif /* SHA */
#endif /* defined(MBEDTLS) */
sm_initSleep();
}
void ex_sss_main_ksdk_boot_rtos_task()
{
#if defined(MBEDTLS)
CRYPTO_InitHardware();
#endif /* defined(MBEDTLS) */
gpio_pin_config_t gpio_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1TxClkOutputDir, true);
GPIO_PinInit(GPIO1, 9, &gpio_config);
GPIO_PinInit(GPIO1, 10, &gpio_config);
/* pull up the ENET_INT before RESET. */
GPIO_WritePinOutput(GPIO1, 10, 1);
GPIO_WritePinOutput(GPIO1, 9, 0);
sm_sleep(2);
GPIO_WritePinOutput(GPIO1, 9, 1);
}
void ex_sss_main_ksdk_success()
{
LED_BLUE_OFF();
LED_RED_OFF();
LED_GREEN_ON();
}
void ex_sss_main_ksdk_failure()
{
LED_BLUE_OFF();
LED_RED_ON();
LED_GREEN_OFF();
}