diff --git a/qcom/Makefile b/qcom/Makefile index 546f3428..c7023ae9 100644 --- a/qcom/Makefile +++ b/qcom/Makefile @@ -100,7 +100,11 @@ ifeq ($(CONFIG_ARCH_QTI_VM), y) kalama_tuivm-dtb-$(CONFIG_ARCH_QTI_VM) += kalama-vm-rumi.dtb \ kalama-vm-mtp.dtb \ kalama-vm-cdp.dtb \ - kalama-vm-qrd.dtb + kalama-vm-qrd.dtb \ + kalama-oemvm-cdp.dtb \ + kalama-oemvm-mtp.dtb \ + kalama-oemvm-qrd.dtb \ + kalama-oemvm-rumi.dtb dtb-y += $(kalama_tuivm-dtb-y) endif endif diff --git a/qcom/kalama-oemvm-cdp.dts b/qcom/kalama-oemvm-cdp.dts new file mode 100644 index 00000000..b10f75d6 --- /dev/null +++ b/qcom/kalama-oemvm-cdp.dts @@ -0,0 +1,10 @@ +/dts-v1/; + +#include "kalama-oemvm.dtsi" +#include "kalama-oemvm-cdp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kalama OEMVM CDP"; + compatible = "qcom,kalama-cdp", "qcom,kalama", "qcom,cdp"; + qcom,board-id = <0x10001 0>; +}; diff --git a/qcom/kalama-oemvm-cdp.dtsi b/qcom/kalama-oemvm-cdp.dtsi new file mode 100644 index 00000000..17f1e228 --- /dev/null +++ b/qcom/kalama-oemvm-cdp.dtsi @@ -0,0 +1,2 @@ +&soc { +}; diff --git a/qcom/kalama-oemvm-mtp.dts b/qcom/kalama-oemvm-mtp.dts new file mode 100644 index 00000000..d52e562a --- /dev/null +++ b/qcom/kalama-oemvm-mtp.dts @@ -0,0 +1,10 @@ +/dts-v1/; + +#include "kalama-oemvm.dtsi" +#include "kalama-oemvm-mtp.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kalama OEMVM MTP"; + compatible = "qcom,kalama-mtp", "qcom,kalama", "qcom,mtp"; + qcom,board-id = <0x10008 0>; +}; diff --git a/qcom/kalama-oemvm-mtp.dtsi b/qcom/kalama-oemvm-mtp.dtsi new file mode 100644 index 00000000..17f1e228 --- /dev/null +++ b/qcom/kalama-oemvm-mtp.dtsi @@ -0,0 +1,2 @@ +&soc { +}; diff --git a/qcom/kalama-oemvm-qrd.dts b/qcom/kalama-oemvm-qrd.dts new file mode 100644 index 00000000..759f71dd --- /dev/null +++ b/qcom/kalama-oemvm-qrd.dts @@ -0,0 +1,10 @@ +/dts-v1/; + +#include "kalama-oemvm.dtsi" +#include "kalama-oemvm-qrd.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kalama OEMVM QRD"; + compatible = "qcom,kalama-qrd", "qcom,kalama", "qcom,qrd"; + qcom,board-id = <0x1000b 0>; +}; diff --git a/qcom/kalama-oemvm-qrd.dtsi b/qcom/kalama-oemvm-qrd.dtsi new file mode 100644 index 00000000..dd619006 --- /dev/null +++ b/qcom/kalama-oemvm-qrd.dtsi @@ -0,0 +1,3 @@ +&soc { +}; + diff --git a/qcom/kalama-oemvm-rumi.dts b/qcom/kalama-oemvm-rumi.dts new file mode 100644 index 00000000..cd979bcf --- /dev/null +++ b/qcom/kalama-oemvm-rumi.dts @@ -0,0 +1,10 @@ +/dts-v1/; + +#include "kalama-oemvm.dtsi" +#include "kalama-oemvm-rumi.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Kalama OEMVM RUMI"; + compatible = "qcom,kalama-rumi", "qcom,kalama", "qcom,rumi"; + qcom,board-id = <15 0>; +}; diff --git a/qcom/kalama-oemvm-rumi.dtsi b/qcom/kalama-oemvm-rumi.dtsi new file mode 100644 index 00000000..2cf87a3d --- /dev/null +++ b/qcom/kalama-oemvm-rumi.dtsi @@ -0,0 +1,3 @@ +&arch_timer { + clock-frequency = <500000>; +}; diff --git a/qcom/kalama-oemvm.dtsi b/qcom/kalama-oemvm.dtsi new file mode 100644 index 00000000..88853815 --- /dev/null +++ b/qcom/kalama-oemvm.dtsi @@ -0,0 +1,145 @@ +#include +#include +#include + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + qcom,msm-id = <519 0x10000>; + interrupt-parent = <&vgic>; + + chosen { + bootargs = "nokaslr log_buf_len=256K root=/dev/ram rw init=/init console=hvc0 loglevel=8"; + }; + + 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 Gold C4 latencies */ + compatible = "arm,idle-state"; + idle-state-name = "rail-pc"; + entry-latency-us = <369>; + exit-latency-us = <1502>; + min-residency-us = <4488>; + arm,psci-suspend-param = <0x40000004>; + local-timer-stop; + status = "disabled"; + }; + + CLUSTER_PWR_DWN: d4 { /* C4+D4 */ + compatible = "arm,idle-state"; + idle-state-name = "l3-pc"; + entry-latency-us = <584>; + exit-latency-us = <2332>; + min-residency-us = <6118>; + arm,psci-suspend-param = <0x40000044>; + local-timer-stop; + 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>; + + memory { + #address-cells = <0x2>; + #size-cells = <0x0>; + base-address = <0x0 0xf8000000>; + size-min = <0x0 0x5000000>; /* 80 MB */ + }; + + segments { + ramdisk = <2>; /* 8MB */ + }; + + vcpus { + config = "/cpus"; + affinity = "static"; + affinity-map = <0x5 0x6>; + sched-priority = <0>; /* relative to PVM */ + sched-timeslice = <2000>; /* in ms */ + }; + + interrupts { + config = &vgic; + }; + + vdevices { + generate = "/hypervisor"; + rm-rpc { + vdevice-type = "rm-rpc"; + generate = "/hypervisor/qcom,resource-mgr"; + console-dev; + message-size = <0x000000f0>; + queue-depth = <0x00000008>; + qcom,label = <0x1>; + }; + }; + }; + + + 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 0x100000>; /* GICR * 8 */ + }; + + arch_timer: timer { + compatible = "arm,armv8-timer"; + always-on; + interrupts = , + , + , + ; + clock-frequency = <19200000>; + }; + +}; diff --git a/qcom/kalama.dtsi b/qcom/kalama.dtsi index 842b0236..7495311c 100644 --- a/qcom/kalama.dtsi +++ b/qcom/kalama.dtsi @@ -2893,6 +2893,14 @@ memory-region = <&cpusys_vm_mem>; }; + qcom,guestvm_loader@f8000000 { + compatible = "qcom,guestvm-loader"; + qcom,pas-id = <34>; + qcom,vmid = <49>; + qcom,firmware-name = "oemvm"; + memory-region = <&oem_vm_mem>; + }; + tlmm-vm-mem-access { compatible = "qcom,tlmm-vm-mem-access"; qcom,master; @@ -2918,6 +2926,14 @@ memory-region = <&cpusys_vm_mem>; }; + qcom,gh_vm_loader_sec@f8000000 { + compatible = "qcom,gh-vm-loader-sec"; + qcom,pas-id = <34>; + qcom,vmid = <49>; + qcom,firmware-name = "oemvm"; + memory-region = <&oem_vm_mem>; + }; + trust_ui_vm: qcom,trust_ui_vm@f7efc000 { reg = <0xf7efc000 0x104000>; vm_name = "trustedvm";