nuttx/arch/arm64/Kconfig

420 lines
10 KiB
Plaintext
Raw Permalink Normal View History

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
if ARCH_ARM64
comment "ARM64 Options"
choice
prompt "ARM64 Toolchain Selection"
default ARM64_TOOLCHAIN_GNU_EABI
config ARM64_TOOLCHAIN_GNU_EABI
bool "Generic GNU EABI toolchain"
select ARCH_TOOLCHAIN_GNU
---help---
This option should work for any modern GNU toolchain (GCC 4.5 or newer)
config ARM64_TOOLCHAIN_CLANG
bool "LLVM Clang toolchain"
select ARCH_TOOLCHAIN_CLANG
endchoice # ARM64 Toolchain Selection
choice
prompt "ARM64 chip selection"
default ARCH_CHIP_QEMU
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
config ARCH_CHIP_A64
bool "Allwinner A64"
select ARCH_CORTEX_A53
select ARCH_HAVE_ADDRENV
2022-12-07 04:41:39 +01:00
select ARCH_HAVE_RESET
select ARCH_HAVE_IRQTRIGGER
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
select ARCH_NEED_ADDRENV_MAPPING
select ARM64_HAVE_PSCI
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
---help---
Allwinner A64 SoC
config ARCH_CHIP_RK3399
bool "Rockchip RK3399"
select ARCH_CORTEX_A53
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_RESET
select ARCH_NEED_ADDRENV_MAPPING
select ARM64_HAVE_PSCI
---help---
Rockchip RK3399 SoC
config ARCH_CHIP_QEMU
bool "QEMU virt platform (ARMv8a)"
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_IRQTRIGGER
select ARCH_NEED_ADDRENV_MAPPING
select ARCH_HAVE_POWEROFF
select ARCH_HAVE_RESET
select ARCH_HAVE_TEXT_HEAP
select ARM64_HAVE_PSCI
---help---
QEMU virt platform (ARMv8a)
config ARCH_CHIP_GOLDFISH
bool "goldfish platform (ARMv8a)"
select ARCH_CORTEX_A53
select ARCH_HAVE_MULTICPU
select ARMV8A_HAVE_GICv2
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_IRQTRIGGER
select ARCH_HAVE_POWEROFF
select ARCH_HAVE_RESET
select ARCH_NEED_ADDRENV_MAPPING
select ARM64_HAVE_PSCI
---help---
Android GoldFish platform for NuttX (ARMv8a),
based on ARM virt board
config ARCH_CHIP_FVP_ARMV8R
bool "ARM FVP virt platform (ARMv8r)"
select ARCH_CORTEX_R82
select ARCH_HAVE_IRQTRIGGER
---help---
ARM FVP virt platform (ARMv8r)
config ARCH_CHIP_IMX8
bool "NXP i.MX8 Platform (ARMv8a)"
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_IRQTRIGGER
select ARCH_NEED_ADDRENV_MAPPING
---help---
NXP i.MX8 (ARMv8a) applications processors
config ARCH_CHIP_IMX9
bool "NXP i.MX9 Platform (ARMv8.2a)"
select ARCH_HAVE_ADDRENV
2024-03-27 16:13:08 +01:00
select ARCH_HAVE_I2CRESET
select ARCH_HAVE_IRQTRIGGER
select ARCH_NEED_ADDRENV_MAPPING
---help---
NXP i.MX9 (ARMv8.2a) applications processors
config ARCH_CHIP_ZYNQ_MPSOC
bool "XilinX Zynq UltraScale+ MPSoC"
select ARCH_CORTEX_A53
select ARCH_HAVE_ADDRENV
select ARCH_HAVE_RESET
select ARCH_HAVE_IRQTRIGGER
select ARCH_NEED_ADDRENV_MAPPING
select ARM64_HAVE_PSCI
---help---
XilinX ZYNQ MPSOC
config ARCH_CHIP_ARM64_CUSTOM
bool "Custom ARM64 chip"
select ARCH_CHIP_CUSTOM
---help---
Select this option if there is no directory for the chip under arch/arm64/src/.
endchoice # ARM64 chip selection
config ARCH_ARMV8A
bool
default n
select ARCH_HAVE_EL3
config ARCH_ARMV8R
bool
default n
select ARCH_SINGLE_SECURITY_STATE
config ARCH_SINGLE_SECURITY_STATE
bool "ARM Single Security State Support"
default n
---help---
Some ARM aarch64 Cortex-family processors only supports single
security state(eg. Cortex-R82). For these Processors,
GIC or other ARM architecture feature will with different
configure
config ARM64_SMP_BUSY_WAIT
bool "Busy wait when SMP boot"
default n
depends on SMP
---help---
Enables busy wait when SMP boot
config ARM64_SMP_BUSY_WAIT_FLAG_ADDR
hex "Busy wait flag address"
depends on ARM64_SMP_BUSY_WAIT
config ARCH_HAVE_EL3
bool
default n
---help---
Some ARM aarch64 Cortex-family processors only supports
EL0~El2(eg. Cortex-R82). For these Processors, the code
runing at EL3 is not necessary and system register for EL3
is not accessible
config ARCH_ARM64_EXCEPTION_LEVEL
int "Exception level to operate"
default 1
range 1 3
---help---
Default exception level is EL1 for the NuttX OS. However,
if NuttX works as the primary bootloader, this may be set
to EL3. Other levels are not supported at the moment.
config ARCH_SET_VMPIDR_EL2
bool "Set VMPIDR_EL2 at EL2 stage"
---help---
VMPIDR_EL2 holds the value of the Virtualization Multiprocessor ID.
From architecture manual of AArch64, the behave is:
-reading register MPIDR_EL1 in EL2, it's return real MPIDR_EL1
-reading register MPIDR_EL1 in EL1, it's return VMPIDR_EL2
So since NuttX for SMP is running at EL1 to read MPIDR_EL1 for
identify CPU id, it's need to set VMPIDR_EL2 to MPIDR_EL1 for
every CPU at boot EL2 stage.
For some platform, the bootloader or hypervisor will do that at
the EL2 stage, but not all.
ARM FVP and VDK should set it since these platform will boot
without BootLoader.
config ARCH_EARLY_PRINT
bool "arch early print support"
default n
---help---
The aarch64 have EL0~El3 execute level and NS/S (security state),
the NuttX should be execute at EL1 in NS(ARmv8-A) or S(ARmv8-R)
state. but booting NuttX have different ELs and state while with
different platform, if NuttX runing at wrong ELs or state it will
not normal anymore. So we need to print something in arm64_head.S
to debug this situation.
Enabling this option will need to implement arm64_earlyprintinit and
arm64_lowputc functions just you see in qemu_lowputc.S.
by default, UART dev will be used. You can also logging the booting
message through rewriting fake arm64_lowputc with other debug
method (eg semihosting , ARM debug channel etc)
if you not sure, keeping the option disable.
config ARCH_CORTEX_A53
bool
default n
select ARCH_ARMV8A
select ARCH_HAVE_TRUSTZONE
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_HAVE_FPU
select ARCH_HAVE_TESTSET
select ARM64_HAVE_NEON
config ARCH_CORTEX_A55
bool
default n
select ARCH_ARMV8A
select ARCH_HAVE_TRUSTZONE
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_HAVE_FPU
select ARCH_HAVE_TESTSET
select ARM64_HAVE_NEON
config ARCH_CORTEX_A57
bool
default n
select ARCH_ARMV8A
select ARCH_HAVE_TRUSTZONE
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_HAVE_FPU
select ARCH_HAVE_TESTSET
select ARM64_HAVE_NEON
config ARCH_CORTEX_A72
bool
default n
select ARCH_ARMV8A
select ARCH_HAVE_TRUSTZONE
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MMU
select ARCH_HAVE_FPU
select ARCH_HAVE_TESTSET
select ARM64_HAVE_NEON
config ARCH_CORTEX_R82
bool
default n
select ARCH_ARMV8R
select ARCH_DCACHE
select ARCH_ICACHE
select ARCH_HAVE_MPU
select ARCH_HAVE_FPU
select ARCH_HAVE_TESTSET
select ARM64_HAVE_NEON
config ARCH_FAMILY
string
default "armv8-a" if ARCH_ARMV8A
default "armv8-r" if ARCH_ARMV8R
config ARCH_CHIP
string
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
default "a64" if ARCH_CHIP_A64
default "rk3399" if ARCH_CHIP_RK3399
default "zynq-mpsoc" if ARCH_CHIP_ZYNQ_MPSOC
default "qemu" if ARCH_CHIP_QEMU
default "goldfish" if ARCH_CHIP_GOLDFISH
default "fvp-v8r" if ARCH_CHIP_FVP_ARMV8R
default "imx8" if ARCH_CHIP_IMX8
default "imx9" if ARCH_CHIP_IMX9
config ARM64_HAVE_PSCI
bool "ARM PCSI (Power State Coordination Interface) Support"
default n
---help---
This Power State Coordination Interface (PSCI) defines
a standard interface for power management. the PCSI need
to implement handling firmware at EL2 or EL3. The option
maybe not applicable for arm core without PCSI firmware
interface implement
config ARM64_PSCI
bool "Enabled PSCI"
depends on ARM64_HAVE_PSCI
default y
---help---
See ARM64_HAVE_PSCI for details
config ARM64_HAVE_NEON
bool
default n
---help---
Decide whether support NEON instruction
config ARM64_NEON
bool "Advanced SIMD (NEON) Extension"
default y
depends on ARM64_HAVE_NEON
config ARM64_DECODEFIQ
bool "FIQ Handler"
default n
---help---
Select this option if your platform supports the function
arm_decodefiq(). This is used primarily to support secure TrustZone
interrupts received on the FIQ vector.
config ARM64_GIC_VERSION
arch/arm64: Add support for Generic Interrupt Controller Version 2 Currently NuttX on Arm64 supports Generic Interrupt Controller (GIC) Versions 3 and 4: [`arm64_gicv3.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm64/src/common/arm64_gicv3.c), [`arm64_gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm64/src/common/arm64_gic.h). This PR adds support for GIC Version 2, which is needed by [Pine64 PinePhone](https://lupyuen.github.io/articles/interrupt) based on Allwinner A64 SoC. This 64-bit implementation of GIC v2 is mostly identical to the existing GIC v2 for 32-bit Armv7-A ([`armv7-a/arm_gicv2.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/arm_gicv2.c), [`armv7-a/gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/gic.h)), with minor modifications to support 64-bit Registers (Interrupt Context). - `arch/arm64/Kconfig`: Under "ARM64 Options", we added an integer option `ARM_GIC_VERSION` ("GIC version") that selects the GIC Version. Valid values are 2, 3 and 4, default is 3. - `arch/arm64/src/common/arm64_gicv2.c`: Implements 64-bit GIC v2 based on 32-bit [`armv7-a/arm_gicv2.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/arm_gicv2.c) and [`armv7-a/gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/gic.h), modified to support 64-bit Registers (Interrupt Context). Function and Macro Names have not been changed, for easier cross-referencing between the 32-bit and 64-bit implementations of GIC v2. - `arch/arm64/src/common/arm64_gicv3.c`: Added Conditional Compilation for GIC v3. This file will not be compiled if `ARM_GIC_VERSION` is 2. - `arch/arm64/src/common/arm64_gic.h`: Added the Version Identifier for GIC v2. At startup we read the GIC Version from hardware and verify that it matches `ARM_GIC_VERSION`. - `arch/arm64/include/qemu/chip.h`: Added the QEMU Base Addresses for GIC v2. - `arch/arm64/src/common/Make.defs`: Added the source file that implements GIC v2. - `boards/arm64/qemu/qemu-armv8a/README.txt`: Added the documentation for testing GIC v2 with QEMU. - `boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig`: Added the Board Configuration `qemu-armv8a:nsh_gicv2` for testing GIC v2 with QEMU. Identical to `qemu-armv8a:nsh`, except that `ARM_GIC_VERSION` is 2.
2022-11-16 08:29:43 +01:00
int "GIC version"
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
default 2 if ARCH_CHIP_A64
arch/arm64: Add support for Generic Interrupt Controller Version 2 Currently NuttX on Arm64 supports Generic Interrupt Controller (GIC) Versions 3 and 4: [`arm64_gicv3.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm64/src/common/arm64_gicv3.c), [`arm64_gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm64/src/common/arm64_gic.h). This PR adds support for GIC Version 2, which is needed by [Pine64 PinePhone](https://lupyuen.github.io/articles/interrupt) based on Allwinner A64 SoC. This 64-bit implementation of GIC v2 is mostly identical to the existing GIC v2 for 32-bit Armv7-A ([`armv7-a/arm_gicv2.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/arm_gicv2.c), [`armv7-a/gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/gic.h)), with minor modifications to support 64-bit Registers (Interrupt Context). - `arch/arm64/Kconfig`: Under "ARM64 Options", we added an integer option `ARM_GIC_VERSION` ("GIC version") that selects the GIC Version. Valid values are 2, 3 and 4, default is 3. - `arch/arm64/src/common/arm64_gicv2.c`: Implements 64-bit GIC v2 based on 32-bit [`armv7-a/arm_gicv2.c`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/arm_gicv2.c) and [`armv7-a/gic.h`](https://github.com/apache/incubator-nuttx/blob/master/arch/arm/src/armv7-a/gic.h), modified to support 64-bit Registers (Interrupt Context). Function and Macro Names have not been changed, for easier cross-referencing between the 32-bit and 64-bit implementations of GIC v2. - `arch/arm64/src/common/arm64_gicv3.c`: Added Conditional Compilation for GIC v3. This file will not be compiled if `ARM_GIC_VERSION` is 2. - `arch/arm64/src/common/arm64_gic.h`: Added the Version Identifier for GIC v2. At startup we read the GIC Version from hardware and verify that it matches `ARM_GIC_VERSION`. - `arch/arm64/include/qemu/chip.h`: Added the QEMU Base Addresses for GIC v2. - `arch/arm64/src/common/Make.defs`: Added the source file that implements GIC v2. - `boards/arm64/qemu/qemu-armv8a/README.txt`: Added the documentation for testing GIC v2 with QEMU. - `boards/arm64/qemu/qemu-armv8a/configs/nsh_gicv2/defconfig`: Added the Board Configuration `qemu-armv8a:nsh_gicv2` for testing GIC v2 with QEMU. Identical to `qemu-armv8a:nsh`, except that `ARM_GIC_VERSION` is 2.
2022-11-16 08:29:43 +01:00
default 3
range 2 4
---help---
Version of Generic Interrupt Controller (GIC) supported by the
architecture
if ARM64_GIC_VERSION = 2
config ARM64_GIC_EOIMODE
bool
default n
---help---
Enable GICC_CTLR.EOImode, this will separates the priority drop and interrupt
deactivation operations.
config ARM64_GICV2M
bool "gicv2m support message irq"
depends on PCI_MSIX
default n
config ARM64_GICV2_LEGACY_IRQ0
int "pci legacy irq0 default val"
default 35
---help---
qemu pci legacy irq0 val, not support if val < 0
endif
config ARM64_SEMIHOSTING_HOSTFS
bool "Semihosting HostFS"
depends on FS_HOSTFS
---help---
Mount HostFS through semihosting.
This doesn't support some directory operations like readdir because
of the limitations of semihosting mechanism.
if ARM64_SEMIHOSTING_HOSTFS
config ARM64_SEMIHOSTING_HOSTFS_CACHE_COHERENCE
bool "Cache coherence in semihosting hostfs"
depends on ARCH_DCACHE
---help---
Flush & Invalidte cache before & after bkpt instruction.
endif # ARM64_SEMIHOSTING_HOSTFS
config ARM64_DCACHE_DISABLE
bool "Disable DCACHE at __start"
default n
config ARM64_ICACHE_DISABLE
bool "Disable ICACHE at __start"
default n
config ARM64_VA_BITS
int "Virtual address space size"
default 48
---help---
Allows choosing one of multiple possible virtual address
space sizes. The level of translation table is determined by
a combination of page size and virtual address space size.
The choice could be: 32, 36, 42, 48
config ARM64_PA_BITS
int "Physical address space size"
default 48
---help---
Choose the maximum physical address range that the kernel will support.
The choice could be: 32, 36, 42, 48
arch/arm64: Add support for PINE64 PinePhone This PR adds support for PINE64 PinePhone and the Allwinner A64 SoC (based on Arm Cortex-A53). With this PR, PinePhone boots successfully to nsh (via microSD Card) and runs console apps. - `arch/arm64/Kconfig`: Added Allwinner A64 SoC - `boards/Kconfig`: Added PINE64 PinePhone - `arch/arm64/src/a64/Kconfig`: New Kconfig for Allwinner A64 SoC - `boards/arm64/a64/pinephone/Kconfig`: New Kconfig for PINE64 PinePhone - `src/a64/a64_boot.c`, `a64_boot.h`: Boot functions for Allwinner A64 - `src/a64/a64_lowputc.S`: Low-level console output - `src/a64/a64_serial.c`, `a64_serial.h`: A64 Serial Driver - `src/a64/chip.h`: A64 SoC Definitions - `include/a64/chip.h`: A64 Memory Map, Generic Interrupt Controller - `include/a64/irq.h`: A64 Interrupts - `src/a64/Make.defs`: Source files for A64 - `configs/nsh/defconfig`: Board Configuration for `pinephone:nsh` - `src/pinephone_appinit.c`: Init PinePhone - `src/pinephone_boardinit.c`: Init PinePhone - `src/pinephone_bringup.c`: Start PinePhone Drivers - `src/pinephone.h`: PinePhone Declarations - `include/board_memorymap.h`: PinePhone Memory Map - `scripts/dramboot.ld`: PinePhone Linker Script - `scripts/Make.defs`: Source files for PinePhone - `src/Makefile`: PinePhone Makefile - `platforms/arm/a64/boards/pinephone/index.rst`: Building and booting NuttX on PinePhone - `platforms/arm/a64/index.rst`: Overview of Allwinner A64 - `introduction/supported_platforms.rst`: Added Allwinner A64 - `introduction/detailed_support.rst`: Added Allwinner A64
2022-11-22 00:32:45 +01:00
if ARCH_CHIP_A64
source "arch/arm64/src/a64/Kconfig"
endif
if ARCH_CHIP_RK3399
source "arch/arm64/src/rk3399/Kconfig"
endif
if ARCH_CHIP_QEMU
source "arch/arm64/src/qemu/Kconfig"
endif
if ARCH_CHIP_FVP_ARMV8R
source "arch/arm64/src/fvp-v8r/Kconfig"
endif
if ARCH_CHIP_IMX8
source "arch/arm64/src/imx8/Kconfig"
endif
if ARCH_CHIP_IMX9
source "arch/arm64/src/imx9/Kconfig"
endif
if ARCH_CHIP_GOLDFISH
source "arch/arm64/src/goldfish/Kconfig"
endif
if ARCH_CHIP_ZYNQ_MPSOC
source "arch/arm64/src/zynq-mpsoc/Kconfig"
endif
endif # ARCH_ARM64