zephyr/soc/arm/nxp_lpc/lpc55xxx/Kconfig.soc
Daniel DeGrasse faf5593272 soc: arm: nxp_lpc: Only clock core from PLL1 when CONFIG_FLASH=n
Do not clock the LPC55xxx cores from PLL1 when CONFIG_FLASH is set. This
is required due to the following limitation of the flash controller
(documented in the reference manual):

Flash operations (erase, blank check, program) and reading a single word
can only be performed for CPU frequencies of up to 100 MHz. These
operations cannot be performed for frequencies above 100 MHz.

The PLL1 clock source will result in a core clock of 150MHz, which
violates this requirement.

Fixes #62963

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2023-10-08 11:25:02 +01:00

172 lines
4.3 KiB
Text

# LPC LPC55XXX Series
# Copyright 2019, 2023 NXP
# SPDX-License-Identifier: Apache-2.0
choice
prompt "LPC5500 Series MCU Selection"
depends on SOC_SERIES_LPC55XXX
config SOC_LPC55S06
bool "SOC_LPC55S06 M33"
select CPU_CORTEX_M33
select CPU_HAS_ARM_SAU
select CPU_HAS_ARM_MPU
select CPU_HAS_FPU
select ARMV8_M_DSP
select ARM_TRUSTZONE_M
select CLOCK_CONTROL
select HAS_MCUX_IAP if !TRUSTED_EXECUTION_NONSECURE
select HAS_MCUX_RNG
config SOC_LPC55S16
bool "SOC_LPC55S16 M33"
select CPU_CORTEX_M33
select CPU_HAS_ARM_SAU
select CPU_HAS_ARM_MPU
select CPU_HAS_FPU
select ARMV8_M_DSP
select ARM_TRUSTZONE_M
select CLOCK_CONTROL
select HAS_MCUX_IAP if !TRUSTED_EXECUTION_NONSECURE
select HAS_MCUX_MCAN
select HAS_MCUX_RNG
config SOC_LPC55S28
bool "SOC_LPC55S28 M33"
select CPU_CORTEX_M33
select CPU_HAS_ARM_MPU
select CPU_HAS_FPU
select ARMV8_M_DSP
select CLOCK_CONTROL
select HAS_MCUX_IAP
select HAS_MCUX_LPADC
select HAS_MCUX_LPC_DMA
select HAS_MCUX_RNG
config SOC_LPC55S36
bool "SOC_LPC55S36 M33"
select CPU_CORTEX_M33
select CPU_HAS_ARM_SAU
select CPU_HAS_ARM_MPU
select CPU_HAS_FPU
select ARMV8_M_DSP
select ARM_TRUSTZONE_M
select CLOCK_CONTROL
select HAS_MCUX_MCAN
select HAS_MCUX_PWM
config SOC_LPC55S69_CPU0
bool "SOC_LPC55S69 M33 [CPU 0]"
select CPU_CORTEX_M33
select CPU_HAS_ARM_SAU
select CPU_HAS_ARM_MPU
select CPU_HAS_FPU
select ARMV8_M_DSP
select ARM_TRUSTZONE_M
select CLOCK_CONTROL
select HAS_MCUX_IAP
select HAS_MCUX_LPADC
select HAS_MCUX_LPC_DMA
select HAS_MCUX_USB_LPCIP3511
select HAS_MCUX_CTIMER
select HAS_MCUX_SCTIMER
select HAS_MCUX_RNG
config SOC_LPC55S69_CPU1
bool "SOC_LPC55S69 M33 [CPU 1]"
select CPU_CORTEX_M33
endchoice
if SOC_SERIES_LPC55XXX
config SOC_PART_NUMBER_LPC55S06JBD64
bool
config SOC_PART_NUMBER_LPC55S16JBD64
bool
config SOC_PART_NUMBER_LPC55S16JBD100
bool
config SOC_PART_NUMBER_LPC55S28JBD100
bool
config SOC_PART_NUMBER_LPC55S36JBD100
bool
config SOC_PART_NUMBER_LPC55S69JBD100
bool
config SOC_PART_NUMBER_LPC55S69JET98
bool
config SOC_PART_NUMBER_LPC55XXX
string
default "LPC55S06JBD64" if SOC_PART_NUMBER_LPC55S06JBD64
default "LPC55S16JBD64" if SOC_PART_NUMBER_LPC55S16JBD64
default "LPC55S16JBD100" if SOC_PART_NUMBER_LPC55S16JBD100
default "LPC55S28JBD100" if SOC_PART_NUMBER_LPC55S28JBD100
default "LPC55S36JBD100" if SOC_PART_NUMBER_LPC55S36JBD100
default "LPC55S69JBD100" if SOC_PART_NUMBER_LPC55S69JBD100
default "LPC55S69JET98" if SOC_PART_NUMBER_LPC55S69JET98
help
This string holds the full part number of the SoC. It is a hidden
option that you should not set directly. The part number selection
choice defines the default value for this string.
config INIT_PLL0
bool "Initialize PLL0"
config INIT_PLL1
bool "Initialize PLL1"
default "y"
depends on !(SOC_LPC55S06 || FLASH)
help
In the LPC55XXX Family, this is currently being used to set the
core clock value at it's highest frequency which clocks at 150MHz.
Note that flash programming operations are limited to 100MHz, and
this PLL should not be used as the core clock in those cases.
config SECOND_CORE_MCUX
bool "LPC55xxx's second core"
depends on HAS_MCUX
help
Indicates the second core will be enabled, and the part will run
in dual core mode.
# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_CODE_CPU1_PARTITION := zephyr,code-cpu1-partition
config SECOND_CORE_BOOT_ADDRESS_MCUX
depends on SECOND_CORE_MCUX
hex "Address the second core will boot at"
default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_CODE_CPU1_PARTITION))
help
This is the address the second core will boot from.
# Move the LMA for the second core image to be in the flash region of primary
# core, so that JLink flash will load it correctly.
config BUILD_OUTPUT_ADJUST_LMA
depends on SECOND_CORE_MCUX && SOC_LPC55S69_CPU1
default "0x10000000"
config LPC55XXX_SRAM_CLOCKS
bool "CLock LPC SRAM banks"
default y
help
SRAM controllers 1,2,3, and 4 are disabled at reset.
By default, CMSIS SystemInit will enable the clock to these RAM banks.
Disable this Kconfig to leave the ram banks untouched out of reset.
config LPC55XXX_USB_RAM
bool
default y
help
Some SoC's in the LPC5500 Series do have a dedicated USB RAM.
By default, USB RAM is assumed to be present.
Disable this Kconfig in case there is no dedicated USB RAM.
endif # SOC_SERIES_LPC55XXX