seL4/tools/hardware.yml
Kent McLeod cf997974a8 hardware_gen: Always specify kernel devices
The kernel device IRQs and Frame mappings generated by this script will
only come from nodes specified in the seL4,kernel-devices property of
the chosen node.  Previously these devices were inferred by the script
but this led to false matching and didn't support easily overriding
which devices to match under different configurations or across
different platforms.

Explicitly specifying which devices from the device tree will be used in
the kernel makes it easier to check which devices the kernel is actually
using and makes it easier to change on a per platform or per
configuration basis.
2019-08-13 14:54:35 +10:00

243 lines
6.2 KiB
YAML

#
# Copyright 2018, Data61
# Commonwealth Scientific and Industrial Research Organisation (CSIRO)
# ABN 41 687 119 230.
#
# This software may be distributed and modified according to the terms of
# the GNU General Public License version 2. Note that NO WARRANTY is provided.
# See "LICENSE_GPLv2.txt" for details.
#
# @TAG(DATA61_GPL)
#
# Documentation for bindings is relative to Documentation/devicetree/bindings in Linux,
# unless otherwise noted.
devices:
# ARM GIC (interrupt-controller/arm,gic.txt)
- compatible:
- arm,cortex-a15-gic
- arm,cortex-a7-gic
- arm,cortex-a9-gic
- arm,gic-400
- qcom,msm-qgic2
regions:
# distributor
- executeNever: true
index: 0
kernel: GIC_V2_DISTRIBUTOR_PPTR
# controller
- executeNever: true
index: 1
kernel: GIC_V2_CONTROLLER_PPTR
# GICV
- executeNever: true
index: 2
kernel: GIC_V2_VCPUCTRL_PPTR
macro: CONFIG_ARM_HYPERVISOR_SUPPORT
user: false # never expose to userspace, even if macro is false.
# other regions (i.e. GICH)
- user: true
interrupts:
INTERRUPT_VGIC_MAINTENANCE: 0
# ARM GICv3
# We only need GIC distributor and GIC redistributor regions and
# use system registers for GICC, GICH.
- compatible:
- arm,gic-v3
regions:
# GICDistributor
- executeNever: true
index: 0
kernel: GICD_PPTR
kernel_size: 0x10000
# GICRedistributor
- executeNever: true
index: 1
kernel: GICR_PPTR
# Assume 8 cores max
kernel_size: 0x100000
interrupts:
INTERRUPT_VGIC_MAINTENANCE: 0
# Broadcom second level IRQ controller (interrupt-controller/brcm,bcm2835-armctrl-ic.txt),
# TI AM33XX/OMAP3 intc (interrupt-controller/ti,omap-intc-irq.txt)
- compatible:
- brcm,bcm2836-armctrl-ic
- ti,am33xx-intc
- ti,omap3-intc
regions:
- executeNever: true
index: 0
kernel: INTC_PPTR
# Broadcom top level IRQ controller (interrupt-controller/brcm,bcm2836-l1-intc.txt)
- compatible:
- brcm,bcm2836-l1-intc
regions:
- executeNever: true
index: 0
kernel: ARM_LOCAL_PPTR
# i.MX AVIC (no Linux docs, used in arch/arm/mach-imx/avic.c)
- compatible:
- fsl,imx31-avic
regions:
- executeNever: true
index: 0
kernel: AVIC_PPTR
# ARM PL310 L2 cache controller (arm/l2c2x0.txt)
- compatible:
- arm,pl310-cache
regions:
- executeNever: true
index: 0
kernel: L2CC_L2C310_PPTR
# i.MX31 L2CC (seL4 only)
- compatible:
- fsl,imx31-l2cc
regions:
- executeNever: true
index: 0
kernel: L2CC_PPTR
# Exynos multi core timer (timer/samsung,exynos4210-mct.txt)
# Exynos4412 MCT is separate as we use it for the timer IRQ.
# Other Exynos platforms use the ARM architecture timer.
- compatible:
- samsung,exynos4412-mct
regions:
- executeNever: true
index: 0
kernel: EXYNOS_MCT_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
- compatible:
- samsung,exynos4210-mct
regions:
- executeNever: true
index: 0
kernel: EXYNOS_MCT_PPTR
# ARM PMU (arm/pmu.txt)
- compatible:
- arm,armv8-pmuv3
- arm,cortex-a15-pmu
- arm,cortex-a7-pmu
- arm,cortex-a9-pmu
interrupts:
KERNEL_PMU_IRQ: boot-cpu
# i.MX evtmon (no Linux binding, this one is seL4-specific.)
- compatible:
- fsl,imx31-evtmon
interrupts:
KERNEL_PMU_IRQ: 0
# Tegra SMMU (memory-controllers/nvidia,tegra30-mc.txt)
- compatible:
- nvidia,tegra124-mc
regions:
- executeNever: false
index: 0
kernel: SMMU_PPTR
macro: CONFIG_ARM_SMMU
interrupts:
INTERRUPT_SMMU: 0
# ARM architected timer (timer/arm,arch_timer.txt)
- compatible:
- arm,armv7-timer
- arm,armv8-timer
interrupts:
KERNEL_TIMER_IRQ:
index:
macro: CONFIG_ARM_HYPERVISOR_SUPPORT
defined: 3
undefined: 2
# Allwinner A10 Timer (timer/allwinner,sun4i-timer.txt)
- compatible:
- allwinner,sun4i-a10-timer
regions:
- executeNever: true
index: 0
kernel: TIMER0_PPTR
interrupts:
# A20 also has the ARM architected timer,
# but we want to use the allwinner timer
# for now at least.
KERNEL_TIMER_IRQ:
index: 0
priority: 1
# ARM per-core timer-watchdog (timer/arm,twd.txt)
- compatible:
- arm,cortex-a9-twd-timer
regions:
- executeNever: true
index: 0
kernel: ARM_MP_PRIV_TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# i.MX EPIT (no Linux binding, this is seL4-specific.)
- compatible:
- fsl,imx31-epit
regions:
- executeNever: true
index: 0
kernel: EPIT_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# QCOM Krait timer (timer/qcom,msm-timer.txt)
- compatible:
- qcom,kpss-timer
regions:
- executeNever: true
index: 0
kernel: TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# TI AM335x/OMAP3430 timer
- compatible:
- ti,am335x-timer
- ti,omap3430-timer
regions:
- executeNever: true
index: 0
kernel: TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# TI prcm (arm/omap/prcm.txt)
- compatible:
- ti,am3-prcm
regions:
- executeNever: true
index: 0
kernel: CMPER_PPTR
user: true
# TI watchdog
- compatible:
- ti,omap3-wdt
regions:
- executeNever: true
index: 0
kernel: WDT1_PPTR
user: true
# various serial consoles (`grep <compatible> serial/*`)
- compatible:
- amlogic,meson-gx-uart
- arm,pl011
- brcm,bcm2835-aux-uart
- fsl,imx31-uart
- fsl,imx6q-uart
- nvidia,tegra124-hsuart
- nvidia,tegra20-uart
- qcom,msm-uartdm
- samsung,exynos4210-uart
- snps,dw-apb-uart
- ti,omap3-uart
- xlnx,xuartps
regions:
- executeNever: true
index: 0
kernel: UART_PPTR
macro: CONFIG_PRINTING
user: true
# RISC-V PLIC
- compatible:
- riscv,plic0
regions:
- executeNever: true
index: 0
kernel: PLIC_PPTR