1#
2# Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3# Copyright 2020, HENSOLDT Cyber GmbH
4#
5# SPDX-License-Identifier: GPL-2.0-only
6#
7
8cmake_minimum_required(VERSION 3.7.2)
9
10declare_platform(imx6 KernelPlatImx6 PLAT_IMX6 KernelSel4ArchAarch32)
11
12# disable platform specific settings by default in cache, will be enabled below
13# if active
14foreach(
15    var
16    IN
17    ITEMS
18    KernelPlatformSabre
19    KernelPlatformWandQ
20    KernelPlatformNitrogen6SX
21    KernelPlatImx6dq
22    KernelPlatImx6sx
23)
24    unset(${var} CACHE)
25    set(${var} OFF)
26endforeach()
27
28if(KernelPlatImx6)
29
30    check_platform_and_fallback_to_default(KernelARMPlatform "sabre")
31
32    if(KernelARMPlatform STREQUAL "sabre")
33        config_set(KernelPlatformSabre PLAT_SABRE ON)
34        config_set(KernelPlatImx6dq PLAT_IMX6DQ ON)
35
36    elseif(KernelARMPlatform STREQUAL "wandq")
37        config_set(KernelPlatformWandQ PLAT_WANDQ ON)
38        config_set(KernelPlatImx6dq PLAT_IMX6DQ ON)
39
40    elseif(KernelARMPlatform STREQUAL "nitrogen6sx")
41        config_set(KernelPlatformNitrogen6SX PLAT_NITROGEN6SX ON)
42        config_set(KernelPlatImx6sx PLAT_IMX6SX ON)
43
44    else()
45        message(FATAL_ERROR "Which imx6 platform not specified")
46    endif()
47
48    config_set(KernelARMPlatform ARM_PLAT ${KernelARMPlatform})
49    declare_seL4_arch(aarch32)
50    set(KernelArmCortexA9 ON)
51    set(KernelArchArmV7a ON)
52    set(KernelArmMach "imx" CACHE INTERNAL "")
53    list(APPEND KernelDTSList "tools/dts/${KernelARMPlatform}.dts")
54    list(APPEND KernelDTSList "src/plat/imx6/overlay-${KernelARMPlatform}.dts")
55
56    if(KernelIsMCS)
57        if(KernelARMPlatform STREQUAL "nitrogen6sx")
58            list(APPEND KernelDTSList "src/plat/imx6/mcs-overlay-nitrogen6sx.dts")
59        else()
60            list(APPEND KernelDTSList "src/plat/imx6/mcs-overlay-imx6.dts")
61        endif()
62        set(timer_file drivers/timer/arm_global.h)
63    else()
64        set(timer_file drivers/timer/arm_priv.h)
65    endif()
66
67    declare_default_headers(
68        TIMER_FREQUENCY 498000000
69        MAX_IRQ 159
70        INTERRUPT_CONTROLLER arch/machine/gic_v2.h
71        NUM_PPI 32
72        TIMER ${timer_file}
73        CLK_SHIFT 41llu
74        CLK_MAGIC 4415709349llu
75        KERNEL_WCET 10llu
76        TIMER_PRECISION 2u
77    )
78endif()
79
80add_sources(
81    DEP "KernelPlatImx6"
82    CFILES src/arch/arm/machine/l2c_310.c src/arch/arm/machine/gic_v2.c
83)
84