Browse Source
Adding supporting soc files for the k32lx platforms and updating soc.yaml. Signed-off-by: Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> soc: nxp: kinetis: k32lx: Use device tree provided value This clock frequency value will be defined in the board device tree. Signed-off-by: Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com>pull/92275/head
8 changed files with 566 additions and 0 deletions
@ -0,0 +1,337 @@
@@ -0,0 +1,337 @@
|
||||
/* |
||||
* Copyright (c) 2025 Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
#include <mem.h> |
||||
#include <arm/armv6-m.dtsi> |
||||
#include <zephyr/dt-bindings/adc/adc.h> |
||||
#include <zephyr/dt-bindings/clock/kinetis_sim.h> |
||||
#include <zephyr/dt-bindings/clock/kinetis_mcg.h> |
||||
#include <zephyr/dt-bindings/gpio/gpio.h> |
||||
#include <zephyr/dt-bindings/i2c/i2c.h> |
||||
#include <zephyr/dt-bindings/pwm/pwm.h> |
||||
|
||||
/ { |
||||
chosen { |
||||
zephyr,flash-controller = &ftfa; |
||||
}; |
||||
|
||||
cpus { |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
|
||||
cpu0: cpu@0 { |
||||
device_type = "cpu"; |
||||
compatible = "arm,cortex-m0+"; |
||||
reg = <0>; |
||||
}; |
||||
}; |
||||
|
||||
sram0: memory@1FFFF000 { |
||||
compatible = "mmio-sram"; |
||||
}; |
||||
|
||||
/* Dummy pinctrl node, filled with pin mux options at board level */ |
||||
pinctrl: pinctrl { |
||||
compatible = "nxp,port-pinctrl"; |
||||
status = "okay"; |
||||
}; |
||||
|
||||
clocks { |
||||
osc: osc { |
||||
compatible = "nxp,mcxc-osc"; |
||||
#clock-cells = <0>; |
||||
load-capacitance-picofarads = <0>; |
||||
mode = "external"; |
||||
}; |
||||
}; |
||||
|
||||
temp0: temp0 { |
||||
compatible = "nxp,kinetis-temperature"; |
||||
io-channels = <&adc0 26>, <&adc0 27>; |
||||
io-channel-names = "SENSOR", "BANDGAP"; |
||||
bandgap-voltage = <1000000>; |
||||
vtemp25 = <716000>; |
||||
sensor-slope-cold = <1620>; |
||||
sensor-slope-hot = <1620>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
soc { |
||||
ftfa: flash-controller@40020000 { |
||||
compatible = "nxp,kinetis-ftfa"; |
||||
reg = <0x40020000 0x14>; |
||||
interrupts = <5 0>; |
||||
status = "disabled"; |
||||
#address-cells = <1>; |
||||
#size-cells = <1>; |
||||
fsec = <0xfe>; |
||||
fopt = <0x3d>; |
||||
config-field-offset = <0x400>; |
||||
|
||||
flash0: flash@0 { |
||||
compatible = "soc-nv-flash"; |
||||
erase-block-size = <1024>; |
||||
write-block-size = <4>; |
||||
}; |
||||
}; |
||||
|
||||
mcg: clock-controller@40064000 { |
||||
compatible = "nxp,kinetis-mcg"; |
||||
reg = <0x40064000 0xd>; |
||||
fcrdiv = <0>; |
||||
lircdiv2 = <0>; |
||||
#clock-cells = <1>; |
||||
}; |
||||
|
||||
sim: sim@40047000 { |
||||
compatible = "nxp,kinetis-sim"; |
||||
reg = <0x40047000 0x1060>; |
||||
#clock-cells = <3>; |
||||
|
||||
core_clk { |
||||
compatible = "fixed-factor-clock"; |
||||
clocks = <&mcg KINETIS_MCG_OUT_CLK>; |
||||
clock-div = <1>; |
||||
#clock-cells = <0>; |
||||
}; |
||||
|
||||
flash_clk { |
||||
compatible = "fixed-factor-clock"; |
||||
clocks = <&mcg KINETIS_MCG_OUT_CLK>; |
||||
clock-div = <2>; |
||||
#clock-cells = <0>; |
||||
}; |
||||
}; |
||||
|
||||
porta: pinmux@40049000 { |
||||
compatible = "nxp,port-pinmux"; |
||||
reg = <0x40049000 0xd0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1038 9>; |
||||
}; |
||||
|
||||
portb: pinmux@4004a000 { |
||||
compatible = "nxp,port-pinmux"; |
||||
reg = <0x4004a000 0xd0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1038 10>; |
||||
}; |
||||
|
||||
portc: pinmux@4004b000 { |
||||
compatible = "nxp,port-pinmux"; |
||||
reg = <0x4004b000 0xd0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1038 11>; |
||||
}; |
||||
|
||||
portd: pinmux@4004c000 { |
||||
compatible = "nxp,port-pinmux"; |
||||
reg = <0x4004c000 0xd0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1038 12>; |
||||
}; |
||||
|
||||
porte: pinmux@4004d000 { |
||||
compatible = "nxp,port-pinmux"; |
||||
reg = <0x4004d000 0xd0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1038 13>; |
||||
}; |
||||
|
||||
gpioa: gpio@400ff000 { |
||||
compatible = "nxp,kinetis-gpio"; |
||||
status = "disabled"; |
||||
reg = <0x400ff000 0x40>; |
||||
interrupts = <30 2>; |
||||
gpio-controller; |
||||
#gpio-cells = <2>; |
||||
nxp,kinetis-port = <&porta>; |
||||
}; |
||||
|
||||
gpiob: gpio@400ff040 { |
||||
compatible = "nxp,kinetis-gpio"; |
||||
status = "disabled"; |
||||
reg = <0x400ff040 0x40>; |
||||
gpio-controller; |
||||
#gpio-cells = <2>; |
||||
nxp,kinetis-port = <&portb>; |
||||
}; |
||||
|
||||
gpioc: gpio@400ff080 { |
||||
compatible = "nxp,kinetis-gpio"; |
||||
status = "disabled"; |
||||
reg = <0x400ff080 0x40>; |
||||
interrupts = <31 2>; |
||||
gpio-controller; |
||||
#gpio-cells = <2>; |
||||
nxp,kinetis-port = <&portc>; |
||||
}; |
||||
|
||||
gpiod: gpio@400ff0c0 { |
||||
compatible = "nxp,kinetis-gpio"; |
||||
status = "disabled"; |
||||
reg = <0x400ff0c0 0x40>; |
||||
gpio-controller; |
||||
#gpio-cells = <2>; |
||||
nxp,kinetis-port = <&portd>; |
||||
}; |
||||
|
||||
gpioe: gpio@400ff100 { |
||||
compatible = "nxp,kinetis-gpio"; |
||||
status = "disabled"; |
||||
reg = <0x400ff100 0x40>; |
||||
gpio-controller; |
||||
#gpio-cells = <2>; |
||||
nxp,kinetis-port = <&porte>; |
||||
}; |
||||
|
||||
adc0: adc@4003b000{ |
||||
compatible = "nxp,kinetis-adc16"; |
||||
reg = <0x4003b000 0x70>; |
||||
interrupts = <15 0>; |
||||
status = "disabled"; |
||||
#io-channel-cells = <1>; |
||||
}; |
||||
|
||||
i2c0: i2c@40066000 { |
||||
compatible = "nxp,kinetis-i2c"; |
||||
clock-frequency = <I2C_BITRATE_STANDARD>; |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
reg = <0x40066000 0x1000>; |
||||
interrupts = <8 0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1034 6>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
i2c1: i2c@40067000 { |
||||
compatible = "nxp,kinetis-i2c"; |
||||
clock-frequency = <I2C_BITRATE_STANDARD>; |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
reg = <0x40067000 0x1000>; |
||||
interrupts = <9 0>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1034 7>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
usb: usbd@40072000 { |
||||
compatible = "nxp,kinetis-usbd"; |
||||
reg = <0x40072000 0x1000>; |
||||
interrupts = <24 1>; |
||||
interrupt-names = "usb"; |
||||
num-bidir-endpoints = <16>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
lpuart0: uart@40054000 { |
||||
compatible = "nxp,lpuart"; |
||||
reg = <0x40054000 0x1000>; |
||||
interrupts = <12 0>; |
||||
clocks = <&sim KINETIS_SIM_MCGPCLK 0x1038 20>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
lpuart1: uart@40055000 { |
||||
compatible = "nxp,lpuart"; |
||||
reg = <0x40055000 0x1000>; |
||||
interrupts = <13 0>; |
||||
clocks = <&sim KINETIS_SIM_MCGPCLK 0x1038 21>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
uart2: uart@4006c000 { |
||||
compatible = "nxp,kinetis-uart"; |
||||
reg = <0x4006c000 0x1000>; |
||||
interrupts = <14 0>; |
||||
interrupt-names = "status"; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x1034 12>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
tpm0: pwm@40038000 { |
||||
compatible = "nxp,kinetis-tpm"; |
||||
reg = <0x40038000 0x88>; |
||||
interrupts = <17 0>; |
||||
clocks = <&sim KINETIS_SIM_MCGPCLK 0x103C 24>; |
||||
prescaler = <16>; |
||||
status = "disabled"; |
||||
#pwm-cells = <3>; |
||||
}; |
||||
|
||||
tpm1: pwm@40039000 { |
||||
compatible = "nxp,kinetis-tpm"; |
||||
reg = <0x40039000 0x88>; |
||||
interrupts = <18 0>; |
||||
clocks = <&sim KINETIS_SIM_MCGPCLK 0x103C 25>; |
||||
prescaler = <16>; |
||||
status = "disabled"; |
||||
#pwm-cells = <3>; |
||||
}; |
||||
|
||||
tpm2: pwm@4003a000 { |
||||
compatible = "nxp,kinetis-tpm"; |
||||
reg = <0x4003a000 0x88>; |
||||
interrupts = <19 0>; |
||||
clocks = <&sim KINETIS_SIM_MCGPCLK 0x103C 26>; |
||||
prescaler = <16>; |
||||
status = "disabled"; |
||||
#pwm-cells = <3>; |
||||
}; |
||||
|
||||
lptmr0: lptmr@40040000 { |
||||
compatible = "nxp,lptmr"; |
||||
reg = <0x40040000 0x1000>; |
||||
interrupts = <28 0>; |
||||
clock-frequency = <1000>; |
||||
prescaler = <1>; |
||||
prescale-glitch-filter = <1>; |
||||
clk-source = <1>; |
||||
resolution = <16>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
rtc: rtc@4003d000 { |
||||
compatible = "nxp,rtc"; |
||||
reg = <0x4003d000 0x1000>; |
||||
interrupts = <20 0>, <21 0>; |
||||
interrupt-names = "alarm", "seconds"; |
||||
clock-frequency = <32768>; |
||||
prescaler = <32768>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
pit0: pit@40037000 { |
||||
compatible = "nxp,pit"; |
||||
reg = <0x40037000 0x1000>; |
||||
clocks = <&sim KINETIS_SIM_BUS_CLK 0x103c 23>; |
||||
interrupts = <22 0>; |
||||
max-load-value = <0xffffffff>; |
||||
status = "disabled"; |
||||
#address-cells = <1>; |
||||
#size-cells = <0>; |
||||
|
||||
pit0_channel0: pit0_channel@0 { |
||||
compatible = "nxp,pit-channel"; |
||||
reg = <0>; |
||||
status = "disabled"; |
||||
}; |
||||
|
||||
pit0_channel1: pit0_channel@1 { |
||||
compatible = "nxp,pit-channel"; |
||||
reg = <1>; |
||||
status = "disabled"; |
||||
}; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
&nvic { |
||||
arm,num-irq-priority-bits = <2>; |
||||
}; |
||||
|
||||
&sram0 { |
||||
reg = <0x1FFFE000 DT_SIZE_K(32)>; |
||||
}; |
||||
|
||||
&flash0 { |
||||
reg = <0 DT_SIZE_K(256)>; |
||||
}; |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
# Copyright (c) 2025 Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> |
||||
# |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
zephyr_include_directories(.) |
||||
|
||||
zephyr_sources(soc.c) |
||||
|
||||
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "") |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
# Copyright (c) 2025 Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> |
||||
# |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
# Kinetis K32Lx MCU series |
||||
|
||||
config SOC_SERIES_K32LX |
||||
select ARM |
||||
select CPU_CORTEX_M0PLUS |
||||
select CPU_CORTEX_M_HAS_VTOR |
||||
select CPU_CORTEX_M_HAS_SYSTICK |
||||
select HAS_MCUX |
||||
select HAS_MCUX_ADC16 |
||||
select HAS_MCUX_SIM |
||||
select HAS_MCUX_RCM |
||||
select HAS_MCUX_FTFX |
||||
select HAS_MCUX_LPUART |
||||
select HAS_MCUX_LPI2C |
||||
select HAS_MCUX_TPM |
||||
select CLOCK_CONTROL |
||||
select SOC_RESET_HOOK |
||||
select SOC_EARLY_INIT_HOOK |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
# Copyright (c) 2025 Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> |
||||
# |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
if SOC_SERIES_K32LX |
||||
|
||||
config NUM_IRQS |
||||
default 32 |
||||
|
||||
config SYS_CLOCK_HW_CYCLES_PER_SEC |
||||
default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency) if CORTEX_M_SYSTICK |
||||
|
||||
endif # SOC_SERIES_K32LX |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
# Copyright (c) 2025 Ishraq Ibne Ashraf <ishraq.i.ashraf@gmail.com> |
||||
# |
||||
# SPDX-License-Identifier: Apache-2.0 |
||||
|
||||
config SOC_SERIES_K32LX |
||||
bool |
||||
select SOC_FAMILY_KINETIS |
||||
|
||||
config SOC_SERIES |
||||
default "k32lx" if SOC_SERIES_K32LX |
||||
|
||||
config SOC_K32L2B31A |
||||
bool |
||||
select SOC_SERIES_K32LX |
||||
|
||||
config SOC |
||||
default "k32l2b31a" if SOC_K32L2B31A |
||||
|
||||
config SOC_PART_NUMBER_K32L2B31VLH0A |
||||
bool |
||||
|
||||
config SOC_PART_NUMBER |
||||
default "K32L2B31VLH0A" if SOC_PART_NUMBER_K32L2B31VLH0A |
@ -0,0 +1,136 @@
@@ -0,0 +1,136 @@
|
||||
/*
|
||||
* Copyright 2024 NXP |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
#include <zephyr/kernel.h> |
||||
#include <zephyr/device.h> |
||||
#include <zephyr/init.h> |
||||
#include <soc.h> |
||||
#include <fsl_common.h> |
||||
#include <fsl_clock.h> |
||||
#include <zephyr/arch/cpu.h> |
||||
|
||||
/*******************************************************************************
|
||||
* Definitions |
||||
******************************************************************************/ |
||||
#define IRC48M_CLK_FREQ (48000000UL) |
||||
|
||||
#define MCG_NODE DT_NODELABEL(mcg) |
||||
#define OSC_NODE DT_NODELABEL(osc) |
||||
|
||||
#define SIM_MODULE_CLK_SEL_DISABLED 0U /*!< Module clock select: Disabled */ |
||||
#define SIM_MODULE_CLK_SEL_IRC48M_CLK 1U /*!< Module clock select: IRC48M clock */ |
||||
#define SIM_MODULE_CLK_SEL_OSCERCLK_CLK 2U /*!< Module clock select: OSCERCLK clock */ |
||||
#define SIM_MODULE_CLK_SEL_MCGIRCLK_CLK 3U /*!< Module clock select: MCGIRCLK clock */ |
||||
|
||||
#define CLOCK_NODEID(clk) DT_CHILD(DT_INST(0, nxp_kinetis_sim), clk) |
||||
|
||||
#define CLOCK_DIVIDER(clk) DT_PROP_OR(CLOCK_NODEID(clk), clock_div, 1) - 1 |
||||
|
||||
#define LPUART_CLOCK_SEL(label) \ |
||||
(DT_PHA(DT_NODELABEL(label), clocks, name) == kCLOCK_McgIrc48MClk \ |
||||
? SIM_MODULE_CLK_SEL_IRC48M_CLK \ |
||||
: DT_PHA(DT_NODELABEL(label), clocks, name) == kCLOCK_Osc0ErClk \ |
||||
? SIM_MODULE_CLK_SEL_OSCERCLK_CLK \ |
||||
: DT_PHA(DT_NODELABEL(label), clocks, name) == kCLOCK_McgInternalRefClk \ |
||||
? SIM_MODULE_CLK_SEL_MCGIRCLK_CLK \ |
||||
: SIM_MODULE_CLK_SEL_DISABLED) |
||||
|
||||
#define TPM_CLOCK_SEL(node_id) \ |
||||
(DT_PHA(node_id, clocks, name) == kCLOCK_McgIrc48MClk ? SIM_MODULE_CLK_SEL_IRC48M_CLK \ |
||||
: DT_PHA(node_id, clocks, name) == kCLOCK_Osc0ErClk ? SIM_MODULE_CLK_SEL_OSCERCLK_CLK \ |
||||
: DT_PHA(node_id, clocks, name) == kCLOCK_McgInternalRefClk \ |
||||
? SIM_MODULE_CLK_SEL_MCGIRCLK_CLK \ |
||||
: SIM_MODULE_CLK_SEL_DISABLED) |
||||
|
||||
/*******************************************************************************
|
||||
* Variables |
||||
******************************************************************************/ |
||||
|
||||
const mcglite_config_t mcgliteConfig_BOARD_BootClockRUN = { |
||||
.outSrc = kMCGLITE_ClkSrcHirc, /* MCGOUTCLK source is HIRC */ |
||||
.irclkEnableMode = kMCGLITE_IrclkEnable, /* MCGIRCLK enabled */ |
||||
.ircs = kMCGLITE_Lirc8M, /* Slow internal reference (LIRC) 8 MHz clock */ |
||||
/* Low-frequency Reference Clock Divider */ |
||||
.fcrdiv = DT_PROP_OR(MCG_NODE, fcrdiv, 0), |
||||
/* Second Low-frequency Reference Clock Divider */ |
||||
.lircDiv2 = DT_PROP_OR(MCG_NODE, lircdiv2, 0), |
||||
.hircEnableInNotHircMode = true, /* HIRC source is enabled */ |
||||
}; |
||||
|
||||
const sim_clock_config_t simConfig_BOARD_BootClockRUN = { |
||||
.er32kSrc = DT_PROP(DT_INST(0, nxp_kinetis_sim), er32k_select), |
||||
.clkdiv1 = SIM_CLKDIV1_OUTDIV1(CLOCK_DIVIDER(core_clk)) | |
||||
SIM_CLKDIV1_OUTDIV4(CLOCK_DIVIDER(flash_clk)), |
||||
}; |
||||
|
||||
const osc_config_t oscConfig_BOARD_BootClockRUN = { |
||||
.freq = DT_PROP(OSC_NODE, clock_frequency), |
||||
.capLoad = 0, |
||||
#if DT_ENUM_HAS_VALUE(OSC_NODE, mode, external) |
||||
.workMode = kOSC_ModeExt, |
||||
#elif DT_ENUM_HAS_VALUE(OSC_NODE, mode, low_power) |
||||
.workMode = kOSC_ModeOscLowPower, |
||||
#elif DT_ENUM_HAS_VALUE(OSC_NODE, mode, high_gain) |
||||
.workMode = kOSC_ModeOscHighGain, |
||||
#else |
||||
#error "An oscillator mode must be defined" |
||||
#endif |
||||
.oscerConfig = { |
||||
.enableMode = kOSC_ErClkEnable, |
||||
} |
||||
}; |
||||
|
||||
__weak void clock_init(void) |
||||
{ |
||||
/* Set the system clock dividers in SIM to safe value. */ |
||||
CLOCK_SetSimSafeDivs(); |
||||
/* Initializes OSC0 according to board configuration. */ |
||||
CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN); |
||||
CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq); |
||||
/* Set MCG to HIRC mode. */ |
||||
CLOCK_SetMcgliteConfig(&mcgliteConfig_BOARD_BootClockRUN); |
||||
/* Set the clock configuration in SIM module. */ |
||||
CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN); |
||||
/* Set SystemCoreClock variable. */ |
||||
SystemCoreClock = DT_PROP(DT_NODELABEL(cpu0), clock_frequency); |
||||
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart0)) |
||||
/* Set LPUART0 clock source. */ |
||||
CLOCK_SetLpuart0Clock(LPUART_CLOCK_SEL(lpuart0)); |
||||
#endif |
||||
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(lpuart1)) |
||||
/* Set LPUART1 clock source. */ |
||||
CLOCK_SetLpuart1Clock(LPUART_CLOCK_SEL(lpuart1)); |
||||
#endif |
||||
#if DT_HAS_COMPAT_STATUS_OKAY(nxp_kinetis_tpm) |
||||
/* All TPM instances share common clock source for counter clock.
|
||||
* Select the clock source using an arbitrary enabled TPM node. |
||||
* All TPM nodes should use the same clock source in device tree. |
||||
*/ |
||||
CLOCK_SetTpmClock(TPM_CLOCK_SEL(DT_COMPAT_GET_ANY_STATUS_OKAY(nxp_kinetis_tpm))); |
||||
#endif |
||||
#if CONFIG_USB_KINETIS || CONFIG_UDC_KINETIS |
||||
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcIrc48M, IRC48M_CLK_FREQ); |
||||
#endif |
||||
} |
||||
|
||||
void soc_early_init_hook(void) |
||||
{ |
||||
#ifdef CONFIG_TEMP_KINETIS |
||||
/* enable bandgap buffer */ |
||||
PMC->REGSC |= PMC_REGSC_BGBE_MASK; |
||||
#endif /* CONFIG_TEMP_KINETIS */ |
||||
|
||||
clock_init(); |
||||
} |
||||
|
||||
#ifdef CONFIG_SOC_RESET_HOOK |
||||
|
||||
void soc_reset_hook(void) |
||||
{ |
||||
SystemInit(); |
||||
} |
||||
|
||||
#endif /* CONFIG_SOC_RESET_HOOK */ |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2024 NXP |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
|
||||
#ifndef _SOC__H_ |
||||
#define _SOC__H_ |
||||
|
||||
#include <zephyr/sys/util.h> |
||||
#include <fsl_port.h> |
||||
|
||||
#define UART0_CLK_SRC kCLOCK_CoreSysClk |
||||
|
||||
#define PORT_MUX_GPIO kPORT_MuxAsGpio /* GPIO setting for the Port Mux Register */ |
||||
|
||||
#ifndef _ASMLANGUAGE |
||||
|
||||
#include <fsl_common.h> |
||||
|
||||
#endif /* !_ASMLANGUAGE */ |
||||
|
||||
#endif /* _SOC__H_ */ |
Loading…
Reference in new issue