blob: df5913a0ef71cce6acce0e2787c6bb55c0b61346 [file] [log] [blame]
// MDI definitions for Zircon
// Top level nodes
list kernel MDI_KERNEL 1
list cpu-map MDI_CPU_MAP 2
list platform MDI_PLATFORM 3
// Common definitions
string name MDI_NAME 10
uint64 base-virt MDI_BASE_VIRT 11 // virtual base address
uint64 base-phys MDI_BASE_PHYS 12 // physical base address
uint64 length MDI_LENGTH 13
uint32 irq MDI_IRQ 14 // IRQ number
// CPU topology
//string cpu-map.clusters.name
list cpu-map.clusters MDI_CPU_CLUSTERS 100
uint8 cpu-map.clusters.cpu-count MDI_CPU_COUNT 101
// platform-bus nodes
uint32 platform.vid MDI_PLATFORM_VID 200
uint32 platform.pid MDI_PLATFORM_PID 201
list platform.device MDI_PLATFORM_DEVICE 202
uint32 platform.device.vid MDI_PLATFORM_DEVICE_VID 203
uint32 platform.device.pid MDI_PLATFORM_DEVICE_PID 204
uint32 platform.device.did MDI_PLATFORM_DEVICE_DID 205
list platform.bus MDI_PLATFORM_BUS 210
list platform.bus.gpios MDI_PLATFORM_BUS_GPIOS 211
uint32 platform.bus.gpios.start MDI_PLATFORM_BUS_GPIOS_START 212
uint32 platform.bus.gpios.count MDI_PLATFORM_BUS_GPIOS_COUNT 213
uint32 platform.bus.gpios.mmio_index MDI_PLATFORM_BUS_GPIOS_MMIO_INDEX 214
// platform.*.mmios elements have base-phys and length
list mmios MDI_PLATFORM_MMIOS 220
// list of IRQs for a platform device or bus
array[uint32] irqs MDI_PLATFORM_IRQS 221
// Kernel Drivers
// ARM PSCI driver
list kernel.arm-psci MDI_ARM_PSCI 1000
boolean kernel.arm-psci.use-smc MDI_ARM_PSCI_USE_SMC 1001
boolean kernel.arm-psci.use-hvc MDI_ARM_PSCI_USE_HVC 1002
// ARM gic v3 driver
list kernel.arm-gic-v3 MDI_ARM_GIC_V3 1010
// TODO:(hollande) We use virt since peripherals
// should be accessed via a device memory mapping and presently
// we do not have mechanisms in kernel for converting phys address
// to peripheral address. For now this requires keeping the base-virt
// definition consistent with the PERIPH_BASE_VIRT definition in
// the targets rules.mk
// GIC V3 uses base-virt
uint64 kernel.arm-gic-v3.gicd-offset MDI_ARM_GIC_V3_GICD_OFFSET 1011
uint64 kernel.arm-gic-v3.gicr-offset MDI_ARM_GIC_V3_GICR_OFFSET 1012
uint64 kernel.arm-gic-v3.gicr-stride MDI_ARM_GIC_V3_GICR_STRIDE 1013
uint32 kernel.arm-gic-v3.ipi-base MDI_ARM_GIC_V3_IPI_BASE 1014
// ARM generic timer driver
list kernel.arm-timer MDI_ARM_TIMER 1030
uint32 kernel.arm-timer.irq-phys MDI_ARM_TIMER_IRQ_PHYS 1031 // for using physical timer
uint32 kernel.arm-timer.irq-virt MDI_ARM_TIMER_IRQ_VIRT 1032 // for using virtual timer
uint32 kernel.arm-timer.irq-sphys MDI_ARM_TIMER_IRQ_SPHYS 1033 // for using secure physical timer
uint32 kernel.arm-timer.freq-override MDI_ARM_TIMER_FREQ_OVERRIDE 1034 // optional
// bcm28xx drivers
list kernel.bcm28xx-interrupt MDI_BCM28XX_INTERRUPT 1040
list kernel.bcm28xx-uart MDI_BCM28XX_UART 1041
// ARM pl011 uart
list kernel.arm-pl011-uart MDI_ARM_PL011_UART 1050
// pl011 driver uses base-virt, base-phys and IRQ
// TODO:(hollande) See note above re: phys/virt
// qemu drivers
list kernel.qemu-pcie MDI_QEMU_PCIE 1060
// ARM gicv2 driver
list kernel.arm-gic-v2 MDI_ARM_GIC_V2 1070
// ARM gicv2 also uses base-virt and base-phys
// TODO:(hollande) See note above re: phys/virt
uint64 kernel.arm-gic-v2.gicd-offset MDI_ARM_GIC_V2_GICD_OFFSET 1071
uint64 kernel.arm-gic-v2.gicc-offset MDI_ARM_GIC_V2_GICC_OFFSET 1072
uint32 kernel.arm-gic-v2.ipi-base MDI_ARM_GIC_V2_IPI_BASE 1073
uint64 kernel.arm-gic-v2.msi-frame-phys MDI_ARM_GIC_V2_MSI_FRAME_PHYS 1074
uint64 kernel.arm-gic-v2.msi-frame-virt MDI_ARM_GIC_V2_MSI_FRAME_VIRT 1075
// AmLogic S905
list kernel.s905-uart MDI_S905_UART 1080
// VID and PID for generic platform devices (that is, devices that may be used by multiple vendors).
const PDEV_VID_GENERIC = 0
const PDEV_PID_GENERIC = 0
// Platform device IDs for generic devices
const PDEV_DID_USB_DWC3 = 1
const PDEV_DID_USB_XHCI = 2
const PDEV_DID_KPCI = 3