1#
2# Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3#
4# SPDX-License-Identifier: GPL-2.0-only
5#
6
7cmake_minimum_required(VERSION 3.7.2)
8
9declare_platform(am335x KernelPlatformAM335X PLAT_AM335X KernelSel4ArchAarch32)
10set(c_configs PLAT_AM335X_BONEBLACK PLAT_AM335X_BONEBLUE PLAT_AM335X_BONE)
11set(
12    cmake_configs
13    KernelPlatformAM335XBoneBlack
14    KernelPlatformAM335XBoneBlue
15    KernelPlatformAM335XBone
16)
17set(plat_lists am335x-boneblack am335x-boneblue am335x-bone)
18foreach(config IN LISTS cmake_configs)
19    unset(${config} CACHE)
20endforeach()
21
22if(KernelPlatformAM335X)
23    declare_seL4_arch(aarch32)
24
25    set(KernelHardwareDebugAPIUnsupported ON CACHE INTERNAL "")
26
27    set(KernelArmCortexA8 ON)
28    set(KernelArchArmV7a ON)
29    check_platform_and_fallback_to_default(KernelARMPlatform "am335x-boneblack")
30    list(FIND plat_lists ${KernelARMPlatform} index)
31    if("${index}" STREQUAL "-1")
32        message(FATAL_ERROR "Which am335x platform not specified")
33    endif()
34
35    list(GET c_configs ${index} c_config)
36    list(GET cmake_configs ${index} cmake_config)
37    config_set(KernelARMPlatform ARM_PLAT ${KernelARMPlatform})
38    config_set(${cmake_config} ${c_config} ON)
39    list(APPEND KernelDTSList "tools/dts/${KernelARMPlatform}.dts")
40    if("${KernelARMPlatform}" STREQUAL "am335x-boneblack")
41        list(APPEND KernelDTSList "src/plat/am335x/overlay-am335x-boneblack.dts")
42    endif()
43    list(APPEND KernelDTSList "src/plat/am335x/overlay-am335x.dts")
44
45    declare_default_headers(
46        MAX_IRQ 127
47        TIMER drivers/timer/am335x.h
48        INTERRUPT_CONTROLLER
49            drivers/irq/am335x.h
50            #  DMTIMER 2-7 have programmable CLKSRC.
51            #  Currently Kernel timer is DMTIMER4 using CLK_M_OSC.
52        TIMER_FREQUENCY 24000000
53        CLK_MAGIC 2863311531llu
54        CLK_SHIFT 36u
55        KERNEL_WCET 10u
56    )
57endif()
58
59add_sources(
60    DEP "KernelPlatformAM335X"
61    CFILES src/plat/am335x/machine/hardware.c src/plat/am335x/machine/l2cache.c
62)
63