| /* |
| * Copyright (c) 2021 metraTec GmbH |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/device.h> |
| #include <zephyr/init.h> |
| #include <soc.h> |
| #include <fsl_power.h> |
| #include <fsl_clock.h> |
| |
| int soc_init(void) |
| { |
| POWER_DisablePD(kPDRUNCFG_PD_FRO_EN); |
| CLOCK_SetupFROClocking(12000000U); |
| CLOCK_AttachClk(kFRO12M_to_MAIN_CLK); |
| |
| CLOCK_SetFLASHAccessCyclesForFreq(12000000U); |
| |
| CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false); |
| CLOCK_SetClkDiv(kCLOCK_DivSystickClk, 0U, true); |
| CLOCK_SetClkDiv(kCLOCK_DivSystickClk, 1U, false); |
| |
| CLOCK_AttachClk(kFRO12M_to_MAIN_CLK); |
| |
| /* Attach 12 MHz clock to flexcomm0 */ |
| CLOCK_AttachClk(kFRO12M_to_FLEXCOMM0); |
| |
| #if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(flexcomm4), nxp_lpc_i2c, okay) |
| /* attach 12 MHz clock for flexcomm4 */ |
| CLOCK_AttachClk(kFRO12M_to_FLEXCOMM4); |
| |
| /* reset FLEXCOMM for I2C */ |
| RESET_PeripheralReset(kFC4_RST_SHIFT_RSTn); |
| #endif |
| |
| #if DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(flexcomm5), nxp_lpc_spi, okay) |
| /* attach 12MHz clock to flexcomm5 */ |
| CLOCK_AttachClk(kFRO12M_to_FLEXCOMM5); |
| |
| /* reset FLEXCOMM for SPI */ |
| RESET_PeripheralReset(kFC5_RST_SHIFT_RSTn); |
| #endif |
| |
| POWER_DisablePD(kPDRUNCFG_PD_ADC0); |
| POWER_DisablePD(kPDRUNCFG_PD_VD7_ENA); |
| POWER_DisablePD(kPDRUNCFG_PD_VREFP_SW); |
| POWER_DisablePD(kPDRUNCFG_PD_TEMPS); |
| |
| return 0; |
| } |
| |
| #ifdef CONFIG_PLATFORM_SPECIFIC_INIT |
| |
| void z_arm_platform_init(void) |
| { |
| SystemInit(); |
| } |
| |
| #endif /* CONFIG_PLATFORM_SPECIFIC_INIT */ |
| |
| SYS_INIT(soc_init, PRE_KERNEL_1, 0); |