diff --git a/qcom/Makefile b/qcom/Makefile index be22d9cbddd1..d7d88aff5c88 100644 --- a/qcom/Makefile +++ b/qcom/Makefile @@ -355,6 +355,23 @@ dtb-$(CONFIG_QTI_QUIN_GVM) += sa8155-vm-la.dtb \ sa8195-vm-lv-lxc.dtb \ sa6155p-vm-la.dtb +ifeq ($(CONFIG_BUILD_ARM64_DT_OVERLAY),y) + dtbo-$(CONFIG_ARCH_DIREWOLF) += direwolf-ivi-rumi-overlay.dtbo \ + direwolf-ivi-adp-star-overlay.dtbo \ + direwolf-adas-rumi-overlay.dtbo \ + direwolf-adas-adp-star-overlay.dtbo + +direwolf-ivi-rumi-overlay.dtbo-base := direwolf-ivi.dtb +direwolf-ivi-adp-star-overlay.dtbo-base := direwolf-ivi.dtb +direwolf-adas-rumi-overlay.dtbo-base := direwolf-adas.dtb +direwolf-adas-adp-star-overlay.dtbo-base := direwolf-adas.dtb +else +dtb-$(CONFIG_ARCH_DIREWOLF) += direwolf-ivi-rumi.dtb \ + direwolf-ivi-adp-star.dtb \ + direwolf-adas-rumi.dtb \ + direwolf-adas-adp-star.dtb +endif + always := $(dtb-y) subdir-y := $(dts-dirs) clean-files := *.dtb *.dtbo diff --git a/qcom/direwolf-adas-adp-star-overlay.dts b/qcom/direwolf-adas-adp-star-overlay.dts new file mode 100644 index 000000000000..807fd3c2bca2 --- /dev/null +++ b/qcom/direwolf-adas-adp-star-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +#include "direwolf-adp-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU ADAS ADP-STAR"; + compatible = "qcom,direwolf-adas-adp-star", "qcom,direwolf-adas", + "qcom,direwolf", "qcom,adp-star"; + qcom,msm-id = <461 0x10000>; + qcom,board-id = <25 0>; +}; diff --git a/qcom/direwolf-adas-adp-star.dts b/qcom/direwolf-adas-adp-star.dts new file mode 100644 index 000000000000..534ad3fe07f4 --- /dev/null +++ b/qcom/direwolf-adas-adp-star.dts @@ -0,0 +1,11 @@ +/dts-v1/; + +#include "direwolf-adas.dtsi" +#include "direwolf-adp-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU ADAS ADP-STAR"; + compatible = "qcom,direwolf-adas-adp-star", "qcom,direwolf-adas", + "qcom,direwolf", "qcom,adp-star"; + qcom,board-id = <25 0>; +}; diff --git a/qcom/direwolf-adas-rumi-overlay.dts b/qcom/direwolf-adas-rumi-overlay.dts new file mode 100644 index 000000000000..8a1636584854 --- /dev/null +++ b/qcom/direwolf-adas-rumi-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +#include "direwolf-rumi-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU Rumi"; + compatible = "qcom,direwolf-adas-rumi", "qcom,direwolf-adas", + "qcom,direwolf", "qcom,rumi"; + qcom,msm-id = <461 0x10000>; + qcom,board-id = <0xF 0>; +}; diff --git a/qcom/direwolf-adas-rumi.dts b/qcom/direwolf-adas-rumi.dts new file mode 100644 index 000000000000..c37c9584471d --- /dev/null +++ b/qcom/direwolf-adas-rumi.dts @@ -0,0 +1,11 @@ +/dts-v1/; + +#include "direwolf-adas.dtsi" +#include "direwolf-rumi-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU ADAS SoC RUMI"; + compatible = "qcom,direwolf-adas-rumi", "qcom,direwolf-adas", + "qcom,direwolf", "qcom,rumi"; + qcom,board-id = <0xF 0>; +}; diff --git a/qcom/direwolf-adas.dts b/qcom/direwolf-adas.dts new file mode 100644 index 000000000000..790ab1ab6ab8 --- /dev/null +++ b/qcom/direwolf-adas.dts @@ -0,0 +1,9 @@ +/dts-v1/; + +#include "direwolf-adas.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU v1 ADAS SoC"; + compatible = "qcom,direwolf-adas", "qcom,direwolf"; + qcom,board-id = <0 0>; +}; diff --git a/qcom/direwolf-adas.dtsi b/qcom/direwolf-adas.dtsi new file mode 100644 index 000000000000..589458f88196 --- /dev/null +++ b/qcom/direwolf-adas.dtsi @@ -0,0 +1,7 @@ +#include "direwolf.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU ADAS SoC"; + compatible = "qcom,direwolf-adas", "qcom,direwolf"; + qcom,msm-id = <461 0x10000>; +}; diff --git a/qcom/direwolf-adp-common.dtsi b/qcom/direwolf-adp-common.dtsi new file mode 100644 index 000000000000..23df450781cf --- /dev/null +++ b/qcom/direwolf-adp-common.dtsi @@ -0,0 +1,3 @@ +&soc { + +}; diff --git a/qcom/direwolf-ivi-adp-star-overlay.dts b/qcom/direwolf-ivi-adp-star-overlay.dts new file mode 100644 index 000000000000..ae08d0b75f14 --- /dev/null +++ b/qcom/direwolf-ivi-adp-star-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +#include "direwolf-adp-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI ADP-STAR"; + compatible = "qcom,direwolf-ivi-adp-star", "qcom,direwolf-ivi", + "qcom,direwolf", "qcom,adp-star"; + qcom,msm-id = <460 0x10000>; + qcom,board-id = <25 0>; +}; diff --git a/qcom/direwolf-ivi-adp-star.dts b/qcom/direwolf-ivi-adp-star.dts new file mode 100644 index 000000000000..dea7557bf4ee --- /dev/null +++ b/qcom/direwolf-ivi-adp-star.dts @@ -0,0 +1,11 @@ +/dts-v1/; + +#include "direwolf-ivi.dtsi" +#include "direwolf-adp-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI ADP-STAR"; + compatible = "qcom,direwolf-ivi-adp-star", "qcom,direwolf-ivi", + "qcom,direwolf", "qcom,adp-star"; + qcom,board-id = <25 0>; +}; diff --git a/qcom/direwolf-ivi-rumi-overlay.dts b/qcom/direwolf-ivi-rumi-overlay.dts new file mode 100644 index 000000000000..b429cb8f61c9 --- /dev/null +++ b/qcom/direwolf-ivi-rumi-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +#include "direwolf-rumi-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI Rumi"; + compatible = "qcom,direwolf-ivi-rumi", "qcom,direwolf-ivi", + "qcom,direwolf", "qcom,rumi"; + qcom,msm-id = <460 0x10000>; + qcom,board-id = <0xF 0>; +}; diff --git a/qcom/direwolf-ivi-rumi.dts b/qcom/direwolf-ivi-rumi.dts new file mode 100644 index 000000000000..6087fea20246 --- /dev/null +++ b/qcom/direwolf-ivi-rumi.dts @@ -0,0 +1,11 @@ +/dts-v1/; + +#include "direwolf-ivi.dtsi" +#include "direwolf-rumi-common.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI SoC RUMI"; + compatible = "qcom,direwolf-ivi-rumi", "qcom,direwolf-ivi", + "qcom,direwolf", "qcom,rumi"; + qcom,board-id = <0xF 0>; +}; diff --git a/qcom/direwolf-ivi.dts b/qcom/direwolf-ivi.dts new file mode 100644 index 000000000000..8848c29b12f2 --- /dev/null +++ b/qcom/direwolf-ivi.dts @@ -0,0 +1,9 @@ +/dts-v1/; + +#include "direwolf-ivi.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI SoC"; + compatible = "qcom,direwolf-ivi", "qcom,direwolf"; + qcom,board-id = <0 0>; +}; diff --git a/qcom/direwolf-ivi.dtsi b/qcom/direwolf-ivi.dtsi new file mode 100644 index 000000000000..d69dedfd0352 --- /dev/null +++ b/qcom/direwolf-ivi.dtsi @@ -0,0 +1,7 @@ +#include "direwolf.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. DirewolfAU IVI SoC"; + compatible = "qcom,direwolf-ivi", "qcom,direwolf"; + qcom,msm-id = <460 0x10000>; +}; diff --git a/qcom/direwolf-rumi-common.dtsi b/qcom/direwolf-rumi-common.dtsi new file mode 100644 index 000000000000..23df450781cf --- /dev/null +++ b/qcom/direwolf-rumi-common.dtsi @@ -0,0 +1,3 @@ +&soc { + +}; diff --git a/qcom/direwolf.dtsi b/qcom/direwolf.dtsi new file mode 100644 index 000000000000..a5f21349c880 --- /dev/null +++ b/qcom/direwolf.dtsi @@ -0,0 +1,266 @@ +#include +#include + +/ { + model = "Qualcomm Technologies, Inc. Direwolf"; + compatible = "qcom,direwolf"; + qcom,msm-name = "Direwolf V1"; + interrupt-parent = <&intc>; + + #address-cells = <2>; + #size-cells = <2>; + memory { device_type = "memory"; reg = <0 0 0 0>; }; + + aliases { }; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + CPU0: cpu@0 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x0>; + enable-method = "psci"; + next-level-cache = <&L2_0>; + L2_0: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + + L3_0: l3-cache { + compatible = "arm,arch-cache"; + cache-level = <3>; + }; + }; + }; + + CPU1: cpu@100 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x100>; + enable-method = "psci"; + next-level-cache = <&L2_1>; + L2_1: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU2: cpu@200 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x200>; + enable-method = "psci"; + next-level-cache = <&L2_2>; + L2_2: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU3: cpu@300 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x300>; + enable-method = "psci"; + next-level-cache = <&L2_3>; + L2_3: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU4: cpu@400 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x400>; + enable-method = "psci"; + next-level-cache = <&L2_4>; + L2_4: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU5: cpu@500 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x500>; + enable-method = "psci"; + next-level-cache = <&L2_5>; + L2_5: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU6: cpu@600 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x600>; + enable-method = "psci"; + next-level-cache = <&L2_6>; + L2_6: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + CPU7: cpu@700 { + device_type = "cpu"; + compatible = "qcom,kryo"; + reg = <0x0 0x700>; + enable-method = "psci"; + next-level-cache = <&L2_7>; + L2_7: l2-cache { + compatible = "arm,arch-cache"; + cache-level = <2>; + next-level-cache = <&L3_0>; + }; + }; + + cpu-map { + cluster0 { + core0 { + cpu = <&CPU0>; + }; + + core1 { + cpu = <&CPU1>; + }; + + core2 { + cpu = <&CPU2>; + }; + + core3 { + cpu = <&CPU3>; + }; + }; + + cluster1 { + core0 { + cpu = <&CPU4>; + }; + + core1 { + cpu = <&CPU5>; + }; + + core2 { + cpu = <&CPU6>; + }; + + core3 { + cpu = <&CPU7>; + }; + }; + }; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + soc: soc { }; + + reserved_memory: reserved-memory { }; + + chosen { }; + + vendor: vendor { }; +}; + +&soc { + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0 0 0xffffffff>; + compatible = "simple-bus"; + + intc: interrupt-controller@17a00000 { + compatible = "arm,gic-v3"; + #interrupt-cells = <3>; + interrupt-controller; + #redistributor-regions = <1>; + redistributor-stride = <0x0 0x20000>; + reg = <0x17a00000 0x10000>, /* GICD */ + <0x17a60000 0x100000>; /* GICR * 8 */ + interrupts = ; + }; + + arch_timer: timer { + compatible = "arm,armv8-timer"; + interrupts = , + , + , + ; + clock-frequency = <19200000>; + }; + + memtimer: timer@17c20000 { + #address-cells = <1>; + #size-cells = <1>; + ranges; + compatible = "arm,armv7-timer-mem"; + reg = <0x17c20000 0x1000>; + clock-frequency = <500000>; + + frame@17c21000 { + frame-number = <0>; + interrupts = , + ; + reg = <0x17c21000 0x1000>, + <0x17c22000 0x1000>; + }; + + frame@17c23000 { + frame-number = <1>; + interrupts = ; + reg = <0x17c23000 0x1000>; + status = "disabled"; + }; + + frame@17c25000 { + frame-number = <2>; + interrupts = ; + reg = <0x17c25000 0x1000>; + status = "disabled"; + }; + + frame@17c27000 { + frame-number = <3>; + interrupts = ; + reg = <0x17c27000 0x1000>; + status = "disabled"; + }; + + frame@17c29000 { + frame-number = <4>; + interrupts = ; + reg = <0x17c29000 0x1000>; + status = "disabled"; + }; + + frame@17c2b000 { + frame-number = <5>; + interrupts = ; + reg = <0x17c2b000 0x1000>; + status = "disabled"; + }; + + frame@17c2d000 { + frame-number = <6>; + interrupts = ; + reg = <0x17c2d000 0x1000>; + status = "disabled"; + }; + }; +};