Files
seL4/tools/hardware.yml
Simon Shields 82084ad92b hardware_schema: simplify and clarify schema
The two interrupt-related 'macros' are rather confusingly different.
Explain them, rename them and simplify interrupt specification while
we're at it.
2019-11-12 16:18:33 +11:00

235 lines
5.8 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
- index: 0
kernel: GIC_V2_DISTRIBUTOR_PPTR
# controller
- index: 1
kernel: GIC_V2_CONTROLLER_PPTR
# GICV
- index: 2
kernel: GIC_V2_VCPUCTRL_PPTR
macro: CONFIG_ARM_HYPERVISOR_SUPPORT
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
- index: 0
kernel: GICD_PPTR
kernel_size: 0x10000
# GICRedistributor
- 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:
- index: 0
kernel: INTC_PPTR
# Broadcom top level IRQ controller (interrupt-controller/brcm,bcm2836-l1-intc.txt)
- compatible:
- brcm,bcm2836-l1-intc
regions:
- 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:
- index: 0
kernel: AVIC_PPTR
# ARM PL310 L2 cache controller (arm/l2c2x0.txt)
- compatible:
- arm,pl310-cache
regions:
- index: 0
kernel: L2CC_L2C310_PPTR
# i.MX31 L2CC (seL4 only)
- compatible:
- fsl,imx31-l2cc
regions:
- 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:
- index: 0
kernel: EXYNOS_MCT_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
- compatible:
- samsung,exynos4210-mct
regions:
- 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:
- 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:
sel_macro: CONFIG_ARM_HYPERVISOR_SUPPORT
index: 3
undef_index: 2
# Allwinner A10 Timer (timer/allwinner,sun4i-timer.txt)
- compatible:
- allwinner,sun4i-a10-timer
regions:
- 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:
- index: 0
kernel: ARM_MP_PRIV_TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# Cortex-a9 global timer (timer/arm,global_timer.yaml)
- compatible:
- arm,cortex-a9-global-timer
regions:
- index: 0
kernel: TIMER_PPTR
interrupts:
# IMX6 also has the imx31-gpt.
KERNEL_TIMER_IRQ: 0
# i.MX EPIT (no Linux binding, this is seL4-specific.)
- compatible:
- fsl,imx31-epit
regions:
- index: 0
kernel: EPIT_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# i.MX GPT
- compatible:
- fsl,imx31-gpt
regions:
- index: 0
kernel: TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# QCOM Krait timer (timer/qcom,msm-timer.txt)
- compatible:
- qcom,kpss-timer
regions:
- index: 0
kernel: TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# TI AM335x/OMAP3430 timer
- compatible:
- ti,am335x-timer
- ti,omap3430-timer
regions:
- index: 0
kernel: TIMER_PPTR
interrupts:
KERNEL_TIMER_IRQ: 0
# TI prcm (arm/omap/prcm.txt)
- compatible:
- ti,am3-prcm
regions:
- index: 0
kernel: CMPER_PPTR
user: true
# TI watchdog
- compatible:
- ti,omap3-wdt
regions:
- 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:
- index: 0
kernel: UART_PPTR
macro: CONFIG_PRINTING
user: true
# RISC-V PLIC
- compatible:
- riscv,plic0
regions:
- index: 0
kernel: PLIC_PPTR