xref: /openbmc/u-boot/arch/arm/cpu/armv8/Kconfig (revision 3aec452e4dbd16be7bdbabfa80d1fcc840cf342c)
123b5877cSLinus Walleijif ARM64
223b5877cSLinus Walleij
323b5877cSLinus Walleijconfig ARMV8_MULTIENTRY
4ab65006bSMasahiro Yamada        bool "Enable multiple CPUs to enter into U-Boot"
523b5877cSLinus Walleij
6*3aec452eSMingkai Huconfig ARMV8_SET_SMPEN
7*3aec452eSMingkai Hu        bool "Enable data coherency with other cores in cluster"
8*3aec452eSMingkai Hu        help
9*3aec452eSMingkai Hu	  Say Y here if there is not any trust firmware to set
10*3aec452eSMingkai Hu	  CPUECTLR_EL1.SMPEN bit before U-Boot.
11*3aec452eSMingkai Hu
12*3aec452eSMingkai Hu	  For A53, it enables data coherency with other cores in the
13*3aec452eSMingkai Hu	  cluster, and for A57/A72, it enables receiving of instruction
14*3aec452eSMingkai Hu	  cache and TLB maintenance operations.
15*3aec452eSMingkai Hu	  Cortex A53/57/72 cores require CPUECTLR_EL1.SMPEN set even
16*3aec452eSMingkai Hu	  for single core systems. Unfortunately write access to this
17*3aec452eSMingkai Hu	  register may be controlled by EL3/EL2 firmware. To be more
18*3aec452eSMingkai Hu	  precise, by default (if there is EL2/EL3 firmware running)
19*3aec452eSMingkai Hu	  this register is RO for NS EL1.
20*3aec452eSMingkai Hu	  This switch can be used to avoid writing to CPUECTLR_EL1,
21*3aec452eSMingkai Hu	  it can be safely enabled when EL2/EL3 initialized SMPEN bit
22*3aec452eSMingkai Hu	  or when CPU implementation doesn't include that register.
23*3aec452eSMingkai Hu
246b6024eaSMasahiro Yamadaconfig ARMV8_SPIN_TABLE
256b6024eaSMasahiro Yamada	bool "Support spin-table enable method"
266b6024eaSMasahiro Yamada	depends on ARMV8_MULTIENTRY && OF_LIBFDT
276b6024eaSMasahiro Yamada	help
286b6024eaSMasahiro Yamada	  Say Y here to support "spin-table" enable method for booting Linux.
296b6024eaSMasahiro Yamada
306b6024eaSMasahiro Yamada	  To use this feature, you must do:
316b6024eaSMasahiro Yamada	    - Specify enable-method = "spin-table" in each CPU node in the
326b6024eaSMasahiro Yamada	      Device Tree you are using to boot the kernel
336b6024eaSMasahiro Yamada	    - Let secondary CPUs in U-Boot (in a board specific manner)
346b6024eaSMasahiro Yamada	      before the master CPU jumps to the kernel
356b6024eaSMasahiro Yamada
366b6024eaSMasahiro Yamada	  U-Boot automatically does:
376b6024eaSMasahiro Yamada	    - Set "cpu-release-addr" property of each CPU node
386b6024eaSMasahiro Yamada	      (overwrites it if already exists).
396b6024eaSMasahiro Yamada	    - Reserve the code for the spin-table and the release address
406b6024eaSMasahiro Yamada	      via a /memreserve/ region in the Device Tree.
416b6024eaSMasahiro Yamada
428069821fSAlexander Grafconfig PSCI_RESET
438069821fSAlexander Graf	bool "Use PSCI for reset and shutdown"
448069821fSAlexander Graf	default y
458069821fSAlexander Graf	depends on !ARCH_EXYNOS7 && !ARCH_BCM283X && !TARGET_LS2080A_EMU && \
468069821fSAlexander Graf		   !TARGET_LS2080A_SIMU && !TARGET_LS2080AQDS && \
478069821fSAlexander Graf		   !TARGET_LS2080ARDB && !TARGET_LS1012AQDS && \
488069821fSAlexander Graf		   !TARGET_LS1012ARDB && !TARGET_LS1012AFRDM && \
49441a2306SAlexander Graf		   !TARGET_LS1043ARDB && !TARGET_LS1043AQDS && \
50441a2306SAlexander Graf		   !TARGET_LS1046ARDB && !TARGET_LS1046AQDS && \
51441a2306SAlexander Graf		   !ARCH_UNIPHIER && !ARCH_SNAPDRAGON && !TARGET_S32V234EVB
528069821fSAlexander Graf	help
538069821fSAlexander Graf	  Most armv8 systems have PSCI support enabled in EL3, either through
548069821fSAlexander Graf	  ARM Trusted Firmware or other firmware.
558069821fSAlexander Graf
568069821fSAlexander Graf	  On these systems, we do not need to implement system reset manually,
578069821fSAlexander Graf	  but can instead rely on higher level firmware to deal with it.
588069821fSAlexander Graf
598069821fSAlexander Graf	  Select Y here to make use of PSCI calls for system reset
608069821fSAlexander Graf
61df88cb3bSmacro.wave.z@gmail.comconfig ARMV8_PSCI
62df88cb3bSmacro.wave.z@gmail.com	bool "Enable PSCI support" if EXPERT
63df88cb3bSmacro.wave.z@gmail.com	default n
64df88cb3bSmacro.wave.z@gmail.com	help
65df88cb3bSmacro.wave.z@gmail.com	  PSCI is Power State Coordination Interface defined by ARM.
66df88cb3bSmacro.wave.z@gmail.com	  The PSCI in U-boot provides a general framework and each platform
67df88cb3bSmacro.wave.z@gmail.com	  can implement their own specific PSCI functions.
68df88cb3bSmacro.wave.z@gmail.com	  Say Y here to enable PSCI support on ARMv8 platform.
69df88cb3bSmacro.wave.z@gmail.com
70df88cb3bSmacro.wave.z@gmail.comconfig ARMV8_PSCI_NR_CPUS
71df88cb3bSmacro.wave.z@gmail.com	int "Maximum supported CPUs for PSCI"
72df88cb3bSmacro.wave.z@gmail.com	depends on ARMV8_PSCI
73df88cb3bSmacro.wave.z@gmail.com	default 4
74df88cb3bSmacro.wave.z@gmail.com	help
75df88cb3bSmacro.wave.z@gmail.com	  The maximum number of CPUs supported in the PSCI firmware.
76df88cb3bSmacro.wave.z@gmail.com	  It is no problem to set a larger value than the number of CPUs in
77df88cb3bSmacro.wave.z@gmail.com	  the actual hardware implementation.
78df88cb3bSmacro.wave.z@gmail.com
7914bf25d5Smacro.wave.z@gmail.comconfig ARMV8_PSCI_CPUS_PER_CLUSTER
8014bf25d5Smacro.wave.z@gmail.com	int "Number of CPUs per cluster"
8114bf25d5Smacro.wave.z@gmail.com	depends on ARMV8_PSCI
8214bf25d5Smacro.wave.z@gmail.com	default 0
8314bf25d5Smacro.wave.z@gmail.com	help
8414bf25d5Smacro.wave.z@gmail.com	  The number of CPUs per cluster, suppose each cluster has same number
8514bf25d5Smacro.wave.z@gmail.com	  of CPU cores, platforms with asymmetric clusters don't apply here.
8614bf25d5Smacro.wave.z@gmail.com	  A value 0 or no definition of it works for single cluster system.
8714bf25d5Smacro.wave.z@gmail.com	  System with multi-cluster should difine their own exact value.
8814bf25d5Smacro.wave.z@gmail.com
89df88cb3bSmacro.wave.z@gmail.comif SYS_HAS_ARMV8_SECURE_BASE
90df88cb3bSmacro.wave.z@gmail.com
91df88cb3bSmacro.wave.z@gmail.comconfig ARMV8_SECURE_BASE
92df88cb3bSmacro.wave.z@gmail.com	hex "Secure address for PSCI image"
93df88cb3bSmacro.wave.z@gmail.com	depends on ARMV8_PSCI
94df88cb3bSmacro.wave.z@gmail.com	help
95df88cb3bSmacro.wave.z@gmail.com	  Address for placing the PSCI text, data and stack sections.
96df88cb3bSmacro.wave.z@gmail.com	  If not defined, the PSCI sections are placed together with the u-boot
97df88cb3bSmacro.wave.z@gmail.com	  but platform can choose to place PSCI code image separately in other
98df88cb3bSmacro.wave.z@gmail.com	  places such as some secure RAM built-in SOC etc.
99df88cb3bSmacro.wave.z@gmail.com
100df88cb3bSmacro.wave.z@gmail.comendif
101df88cb3bSmacro.wave.z@gmail.com
10223b5877cSLinus Walleijendif
103