Add new imx8mp-evk platform

This new platform is NXP Semiconductor's Evaluation Kit for the i.MX 8M
Plus Applications Processor. It's from the i.MX 8M family of processors
and is largely similar to the existing i.MX 8M Quad and i.MX 8M Mini
platforms.

Signed-off-by: Damon Lee <damon@kry10.com>
This commit is contained in:
Damon Lee
2024-05-14 13:34:05 +10:00
committed by Kent McLeod
parent ecec5e4afb
commit f8b289d096
4 changed files with 2722 additions and 3 deletions

View File

@@ -0,0 +1,17 @@
/*
* Copyright 2024, Kry10 Limited.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <sel4/config.h>
#include <sel4/arch/constants_cortex_a53.h>
#if CONFIG_WORD_SIZE == 32
/* First address in the virtual address space that is not accessible to user level */
#define seL4_UserTop 0xe0000000
#else
/* otherwise this is defined at the arch level */
#endif

View File

@@ -9,12 +9,19 @@ cmake_minimum_required(VERSION 3.7.2)
declare_platform(imx8mq-evk KernelPlatformImx8mq-evk PLAT_IMX8MQ_EVK KernelArchARM) declare_platform(imx8mq-evk KernelPlatformImx8mq-evk PLAT_IMX8MQ_EVK KernelArchARM)
declare_platform(imx8mm-evk KernelPlatformImx8mm-evk PLAT_IMX8MM_EVK KernelArchARM) declare_platform(imx8mm-evk KernelPlatformImx8mm-evk PLAT_IMX8MM_EVK KernelArchARM)
declare_platform(imx8mp-evk KernelPlatformImx8mp-evk PLAT_IMX8MP_EVK KernelArchARM)
if(KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk) if(KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk OR KernelPlatformImx8mp-evk)
declare_seL4_arch(aarch64 aarch32) declare_seL4_arch(aarch64 aarch32)
if(KernelPlatformImx8mq-evk) if(KernelPlatformImx8mq-evk)
config_set(KernelPlatImx8mq PLAT_IMX8MQ ON) config_set(KernelPlatImx8mq PLAT_IMX8MQ ON)
endif() endif()
if(KernelPlatformImx8mp-evk)
# The i.MX 8M Plus SoC has higher interrupt numbers than the 8M Mini and the 8M Quad
set(IMX8M_MAX_IRQ 192 CACHE INTERNAL "")
else()
set(IMX8M_MAX_IRQ 160 CACHE INTERNAL "")
endif()
set(KernelArmCortexA53 ON) set(KernelArmCortexA53 ON)
set(KernelArchArmV8a ON) set(KernelArchArmV8a ON)
set(KernelArmGicV3 ON) set(KernelArmGicV3 ON)
@@ -27,7 +34,7 @@ if(KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk)
endif() endif()
declare_default_headers( declare_default_headers(
TIMER_FREQUENCY 8000000 TIMER_FREQUENCY 8000000
MAX_IRQ 160 MAX_IRQ ${IMX8M_MAX_IRQ}
TIMER drivers/timer/arm_generic.h TIMER drivers/timer/arm_generic.h
INTERRUPT_CONTROLLER arch/machine/gic_v3.h INTERRUPT_CONTROLLER arch/machine/gic_v3.h
NUM_PPI 32 NUM_PPI 32
@@ -38,6 +45,6 @@ if(KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk)
endif() endif()
add_sources( add_sources(
DEP "KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk" DEP "KernelPlatformImx8mq-evk OR KernelPlatformImx8mm-evk OR KernelPlatformImx8mp-evk"
CFILES src/arch/arm/machine/gic_v3.c src/arch/arm/machine/l2c_nop.c CFILES src/arch/arm/machine/gic_v3.c src/arch/arm/machine/l2c_nop.c
) )

View File

@@ -0,0 +1,27 @@
/*
* Copyright 2024, Kry10 Limited.
*
* SPDX-License-Identifier: GPL-2.0-only
*/
/ {
chosen {
seL4,elfloader-devices =
"serial1",
&{/psci},
&{/timer};
seL4,kernel-devices =
"serial1",
&{/soc@0/interrupt-controller@38800000},
&{/timer};
};
reserved-memory {
/* The following normal memory regions are Linux specific. */
/delete-node/ dsp@92400000;
/delete-node/ vdev0vring0@942f0000;
/delete-node/ vdev0vring1@942f8000;
/delete-node/ vdev0buffer@94300000;
};
};

2668
tools/dts/imx8mp-evk.dts Normal file

File diff suppressed because it is too large Load Diff