Add the nodes to enable qrtr communication between primary vm and oemvm on kera. This adds platform devices and vdevice descriptions to start the qrtr gunyah transport on both primary vm and oemvm device trees. This also adds the device tree node to configure qrtr as node id 21 on oem vm. Change-Id: Icdcfcb4872351df13561c2c6963f06094f46d8c6 Signed-off-by: Pranav Mahesh Phansalkar <quic_pphansal@quicinc.com>
331 lines
7.0 KiB
Plaintext
331 lines
7.0 KiB
Plaintext
// SPDX-License-Identifier: BSD-3-Clause
|
|
/*
|
|
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
/ {
|
|
#address-cells = <0x2>;
|
|
#size-cells = <0x2>;
|
|
qcom,msm-id = <659 0x10000>, <686 0x10000>;
|
|
interrupt-parent = <&vgic>;
|
|
|
|
chosen {
|
|
bootargs = "nokaslr log_buf_len=256K console=hvc0 loglevel=8 swiotlb=noforce";
|
|
};
|
|
|
|
cpus {
|
|
#address-cells = <0x2>;
|
|
#size-cells = <0x0>;
|
|
|
|
CPU0: cpu@0 {
|
|
compatible = "arm,armv8";
|
|
reg = <0x0 0x0>;
|
|
device_type = "cpu";
|
|
enable-method = "psci";
|
|
cpu-idle-states = <&CPU_PWR_DWN
|
|
&CLUSTER_PWR_DWN>;
|
|
};
|
|
|
|
CPU1: cpu@100 {
|
|
compatible = "arm,armv8";
|
|
reg = <0x0 0x100>;
|
|
device_type = "cpu";
|
|
enable-method = "psci";
|
|
cpu-idle-states = <&CPU_PWR_DWN
|
|
&CLUSTER_PWR_DWN>;
|
|
|
|
};
|
|
};
|
|
|
|
idle-states {
|
|
CPU_PWR_DWN: c4 { /* Using Medium C4 latencies */
|
|
compatible = "arm,idle-state";
|
|
status = "disabled";
|
|
};
|
|
|
|
CLUSTER_PWR_DWN: ss3 { /* C4+CL5+SS3 */
|
|
compatible = "arm,idle-state";
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
qcom,vm-config {
|
|
compatible = "qcom,vm-1.0";
|
|
vm-type = "aarch64-guest";
|
|
boot-config = "fdt,unified";
|
|
os-type = "linux";
|
|
kernel-entry-segment = "kernel";
|
|
kernel-entry-offset = <0x0 0x0>;
|
|
vendor = "QTI";
|
|
image-name = "qcom,oemvm";
|
|
qcom,pasid = <0x0 0x22>;
|
|
qcom,qtee-config-info = "p=3,9,39,7C,8F,97,159,7F1,CDF;";
|
|
qcom,secdomain-ids = <49>;
|
|
qcom,primary-vm-index = <0>;
|
|
vm-uri = "vmuid/oemvm";
|
|
vm-guid = "847bfe26-0b12-5728-812a-06103f6bdec0";
|
|
qcom,sensitive;
|
|
|
|
vm-attrs = "context-dump", "crash-restart";
|
|
|
|
memory {
|
|
#address-cells = <0x2>;
|
|
#size-cells = <0x0>;
|
|
/*
|
|
* IPA address linux image is loaded at. Must be within
|
|
* first 1GB due to memory hotplug requirement.
|
|
*/
|
|
base-address = <0x0 0x88800000 >;
|
|
};
|
|
|
|
segments {
|
|
config_cpio = <2>;
|
|
};
|
|
|
|
vcpus {
|
|
config = "/cpus";
|
|
affinity = "proxy";
|
|
affinity-map = <0x0 0x0>;
|
|
sched-priority = <0>; /* relative to PVM */
|
|
sched-timeslice = <2000>; /* in ms */
|
|
};
|
|
|
|
interrupts {
|
|
config = &vgic;
|
|
};
|
|
|
|
vdevices {
|
|
generate = "/hypervisor";
|
|
|
|
minidump {
|
|
vdevice-type = "minidump";
|
|
push-compatible = "qcom,minidump_rm";
|
|
minidump_allowed;
|
|
};
|
|
|
|
rm-rpc {
|
|
vdevice-type = "rm-rpc";
|
|
generate = "/hypervisor/qcom,resource-mgr";
|
|
console-dev;
|
|
message-size = <0x000000f0>;
|
|
queue-depth = <0x00000008>;
|
|
qcom,label = <0x1>;
|
|
};
|
|
|
|
virtio-mmio@0 {
|
|
vdevice-type = "virtio-mmio";
|
|
generate = "/virtio-mmio";
|
|
peer-default;
|
|
vqs-num = <0x1>;
|
|
push-compatible = "virtio,mmio";
|
|
dma-coherent;
|
|
dma_base = <0x0 0x0>;
|
|
memory {
|
|
qcom,label = <0x16>; //for persist.img
|
|
#address-cells = <0x2>;
|
|
base = <0x0 0xFFEFC000>;
|
|
};
|
|
};
|
|
|
|
virtio-mmio@1 {
|
|
vdevice-type = "virtio-mmio";
|
|
generate = "/virtio-mmio";
|
|
peer-default;
|
|
vqs-num = <0x2>;
|
|
push-compatible = "virtio,mmio";
|
|
dma-coherent;
|
|
dma_base = <0x0 0x4000>;
|
|
memory {
|
|
qcom,label = <0x13>; //for system.img
|
|
#address-cells = <0x2>;
|
|
base = <0x0 0xFFF00000>;
|
|
};
|
|
};
|
|
|
|
swiotlb-shm {
|
|
vdevice-type = "shm";
|
|
generate = "/swiotlb";
|
|
push-compatible = "swiotlb";
|
|
peer-default;
|
|
dma_base = <0x0 0x8000>;
|
|
memory {
|
|
qcom,label = <0x14>;
|
|
#address-cells = <0x2>;
|
|
base = <0x0 0xFFF04000>;
|
|
};
|
|
};
|
|
|
|
vrtc {
|
|
vdevice-type = "vrtc-pl031";
|
|
peer-default;
|
|
allocate-base;
|
|
};
|
|
|
|
mem-buf-message-queue-pair {
|
|
vdevice-type = "message-queue-pair";
|
|
generate = "/hypervisor/membuf-msgq-pair";
|
|
message-size = <0x000000f0>;
|
|
queue-depth = <0x00000008>;
|
|
peer-default;
|
|
qcom,label = <0x000000C>;
|
|
};
|
|
|
|
test-dbl-oemvm {
|
|
vdevice-type = "doorbell";
|
|
generate = "/hypervisor/test-dbl-oemvm";
|
|
qcom,label = <0x5>;
|
|
peer-default;
|
|
};
|
|
|
|
test-dbl-oemvm-source {
|
|
vdevice-type = "doorbell-source";
|
|
generate = "/hypervisor/test-dbl-oemvm-source";
|
|
qcom,label = <0x5>;
|
|
peer-default;
|
|
};
|
|
|
|
test-msgq-oemvm {
|
|
vdevice-type = "message-queue-pair";
|
|
generate = "/hypervisor/test-msgq-oemvm-pair";
|
|
message-size = <0xf0>;
|
|
queue-depth = <0x8>;
|
|
qcom,label = <0x5>;
|
|
peer-default;
|
|
};
|
|
|
|
test-large-dmabuf-oemvm {
|
|
vdevice-type = "message-queue-pair";
|
|
generate = "/hypervisor/test-large-dmabuf-oemvm-pair";
|
|
message-size = <0xf0>;
|
|
queue-depth = <0x8>;
|
|
qcom,label = <0xe>;
|
|
peer-default;
|
|
};
|
|
|
|
qrtr-shm {
|
|
vdevice-type = "shm-doorbell";
|
|
generate = "/hypervisor/qrtr-shm";
|
|
push-compatible = "qcom,qrtr-gunyah-gen";
|
|
peer-default;
|
|
memory {
|
|
qcom,label = <0x8>;
|
|
allocate-base;
|
|
};
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
firmware: firmware {
|
|
qcom_scm: scm {
|
|
compatible = "qcom,scm";
|
|
};
|
|
};
|
|
|
|
soc: soc { };
|
|
};
|
|
|
|
&soc {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0 0 0 0xffffffff>;
|
|
compatible = "simple-bus";
|
|
|
|
psci {
|
|
compatible = "arm,psci-1.0";
|
|
method = "smc";
|
|
};
|
|
|
|
vgic: interrupt-controller@17100000 {
|
|
compatible = "arm,gic-v3";
|
|
interrupt-controller;
|
|
#interrupt-cells = <0x3>;
|
|
#redistributor-regions = <1>;
|
|
redistributor-stride = <0x0 0x40000>;
|
|
reg = <0x17100000 0x10000>, /* GICD */
|
|
<0x17180000 0x200000>; /* GICR * 8 */
|
|
};
|
|
|
|
arch_timer: timer {
|
|
compatible = "arm,armv8-timer";
|
|
always-on;
|
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
|
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
|
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
|
|
<GIC_PPI 12 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
|
|
clock-frequency = <19200000>;
|
|
};
|
|
|
|
qcom,mem-buf {
|
|
compatible = "qcom,mem-buf";
|
|
qcom,mem-buf-capabilities = "consumer";
|
|
qcom,ipa-range = <0x0 0x0 0xf 0xffffffff>;
|
|
qcom,dmabuf-ipa-size = <0x1 0x00000000>; /* 4GB IPA space for dmabuf */
|
|
qcom,vmid = <49>;
|
|
};
|
|
|
|
qcom,mem-buf-msgq {
|
|
compatible = "qcom,mem-buf-msgq";
|
|
qcom,msgq-names = "oem_vm";
|
|
};
|
|
|
|
virtio_mem_device {
|
|
compatible = "qcom,virtio-mem";
|
|
/* Must be memory_block_size_bytes() aligned */
|
|
qcom,max-size = <0x0 0x10000000>;
|
|
qcom,ipa-range = <0x0 0x0 0xf 0xffffffff>;
|
|
qcom,block-size = <0x400000>;
|
|
};
|
|
|
|
qcom,test-dbl-oemvm {
|
|
compatible = "qcom,gh-dbl";
|
|
qcom,label = <0x5>;
|
|
};
|
|
|
|
qcom,test-msgq-oemvm {
|
|
compatible = "qcom,gh-msgq-test";
|
|
gunyah-label = <0x5>;
|
|
affinity = <0>;
|
|
};
|
|
|
|
qcom,test-large-dmabuf-oemvm {
|
|
compatible = "qcom,gh-large-dmabuf-test";
|
|
gunyah-label = <0xe>;
|
|
};
|
|
|
|
qcom,gh-qtimer@1742b000 {
|
|
compatible = "qcom,gh-qtmr";
|
|
reg = <0x1742b000 0x1000>;
|
|
reg-names = "qtmr-base";
|
|
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "qcom,qtmr-intr";
|
|
qcom,secondary;
|
|
};
|
|
|
|
qcom_smcinvoke {
|
|
compatible = "qcom,smcinvoke";
|
|
};
|
|
|
|
qcom_mem_object {
|
|
compatible = "qcom,mem-object";
|
|
};
|
|
|
|
qcom,qrtr {
|
|
compatible = "qcom,qrtr";
|
|
qcom,node-id = <21>;
|
|
};
|
|
|
|
qrtr-gunyah {
|
|
compatible = "qcom,qrtr-gunyah";
|
|
gunyah-label = <8>;
|
|
};
|
|
|
|
qtee_shmbridge {
|
|
compatible = "qcom,tee-shared-memory-bridge";
|
|
qcom,custom-bridge-size = <512>;
|
|
qcom,support-hypervisor;
|
|
};
|
|
};
|