diff --git a/bindings/arm/msm/ipc-spinlock.txt b/bindings/arm/msm/ipc-spinlock.txt new file mode 100644 index 000000000000..6460a70a74af --- /dev/null +++ b/bindings/arm/msm/ipc-spinlock.txt @@ -0,0 +1,27 @@ +Interprocessor Communication Spinlock + +--Dedicated Hardware Implementation-- +Required properties: +- compatible : should be "qcom,ipc-spinlock-sfpb" +- reg : the location and size of the spinlock hardware +- qcom,num-locks : the number of locks supported + +Example: + + qcom,ipc-spinlock@fd484000 { + compatible = "qcom,ipc-spinlock-sfpb"; + reg = <0xfd484000 0x1000>; + qcom,num-locks = <32>; + }; + +--LDREX Implementation-- +Required properties: +- compatible : should be "qcom,ipc-spinlock-ldrex" +- reg : the location and size of the shared lock memory + +Example: + + qcom,ipc-spinlock@fa00000 { + compatible = "qcom,ipc-spinlock-ldrex"; + reg = <0xfa00000 0x200000>; + }; diff --git a/bindings/soc/qcom/soc-sleep-stats.txt b/bindings/soc/qcom/soc-sleep-stats.txt index 4c5ade89abbb..725a2ccb5505 100644 --- a/bindings/soc/qcom/soc-sleep-stats.txt +++ b/bindings/soc/qcom/soc-sleep-stats.txt @@ -13,7 +13,8 @@ Properties: - compatible: Usage: required Value type: - Definition: Should be "qcom,rpmh-sleep-stats" or "qcom,rpm-sleep-stats". + Definition: Should be "qcom,rpmh-sleep-stats" or "qcom,rpm-sleep-stats" + or "qcom,legacy-rpm-sleep-stats". - reg: Usage: required @@ -34,3 +35,11 @@ EXAMPLE 2: compatible = "qcom,rpm-sleep-stats"; reg = <0 0x04690000 0 0x400>; }; + +EXAMPLE 3: + + rpm_sleep_stats: soc-sleep-stats@29dba0 { + compatible = "qcom,legacy-rpm-sleep-stats"; + reg = <0x2a1ba0 0x1000>; + }; + diff --git a/qcom/sdxnightjar-pm.dtsi b/qcom/sdxnightjar-pm.dtsi new file mode 100644 index 000000000000..38faa981f8fa --- /dev/null +++ b/qcom/sdxnightjar-pm.dtsi @@ -0,0 +1,130 @@ +&soc { + qcom,spm@b009000 { + compatible = "qcom,spm-v2"; + #address-cells = <1>; + #size-cells = <1>; + reg = <0xb009000 0x1000>; + qcom,name = "cpu0"; + qcom,cpu = <&CPU0>; + qcom,saw2-ver-reg = <0xfd0>; + qcom,saw2-cfg = <0x1>; + qcom,saw2-spm-dly= <0x3c102800>; + qcom,saw2-spm-ctl = <0xe>; + qcom,mode0 { + qcom,label = "qcom,saw2-spm-cmd-wfi"; + qcom,sequence = [04 03 04 0f]; + qcom,spm_en; + }; + + qcom,mode1 { + qcom,label = "qcom,saw2-spm-cmd-spc"; + qcom,sequence = [1f 34 04 44 24 54 03 + 54 44 04 24 34 0f]; + qcom,spm_en; + qcom,pc_mode; + }; + + qcom,mode2 { + qcom,label = "qcom,saw2-spm-cmd-pc"; + qcom,sequence = [1f 34 04 44 14 24 54 03 + 54 44 14 04 04 24 04 34 0f]; + qcom,spm_en; + qcom,pc_mode; + qcom,slp_cmd_mode; + }; + }; + + qcom,lpm-levels { + compatible = "qcom,lpm-levels"; + #address-cells = <1>; + #size-cells = <0>; + + qcom,pm-cluster@0 { + #address-cells = <1>; + #size-cells = <0>; + reg = <0>; + label = "system"; + qcom,default-level=<0>; + + qcom,pm-cluster-level@0 { + reg = <0>; + label = "l2-active"; + qcom,latency-us = <270>; + qcom,ss-power = <455>; + qcom,energy-overhead = <270621>; + qcom,time-overhead = <500>; + }; + + qcom,pm-cluster-level@1 { + reg = <1>; + label = "l2-pc"; + qcom,latency-us = <285>; + qcom,ss-power = <442>; + qcom,energy-overhead = <306621>; + qcom,time-overhead = <540>; + qcom,min-child-idx = <2>; + qcom,notify-rpm; + qcom,reset-level = <3>; + }; + + qcom,pm-cpu { + #address-cells = <1>; + #size-cells = <0>; + + qcom,pm-cpu-level@0 { + reg = <0>; + qcom,spm-cpu-mode = "wfi"; + qcom,latency-us = <1>; + qcom,ss-power = <473>; + qcom,energy-overhead = <100000>; + qcom,time-overhead = <25>; + }; + + qcom,pm-cpu-level@1 { + reg = <1>; + qcom,spm-cpu-mode ="standalone_pc"; + qcom,latency-us = <240>; + qcom,ss-power = <467>; + qcom,energy-overhead = <202781>; + qcom,time-overhead = <420>; + qcom,use-broadcast-timer; + qcom,is-reset; + qcom,reset-level = <3>; + }; + + qcom,pm-cpu-level@2 { + reg = <2>; + qcom,spm-cpu-mode = "pc"; + qcom,latency-us = <270>; + qcom,ss-power = <455>; + qcom,energy-overhead = <270621>; + qcom,time-overhead = <500>; + qcom,use-broadcast-timer; + qcom,is-reset; + qcom,reset-level = <3>; + }; + }; + }; + }; + + qcom,pm@8600664 { + compatible = "qcom,pm"; + reg = <0x8600664 0x40>; + qcom,use-sync-timer; + qcom,synced-clocks; + qcom,tz-flushes-cache; + }; + + qcom,rpm-stats@29dba0 { + compatible = "qcom,legacy-rpm-sleep-stats"; + reg = <0x2a1ba0 0x1000>; + }; + + qcom,rpm-master-stats@60150 { + compatible = "qcom,rpm-master-stats"; + reg = <0x60150 0x2030>; + qcom,masters = "APSS", "MPSS", "PRONTO"; + qcom,master-stats-version = <2>; + qcom,master-offset = <4096>; + }; +}; diff --git a/qcom/sdxnightjar.dtsi b/qcom/sdxnightjar.dtsi index 1238ce10e2af..b1f160c00823 100644 --- a/qcom/sdxnightjar.dtsi +++ b/qcom/sdxnightjar.dtsi @@ -116,6 +116,22 @@ <0x0b002000 0x1000>; }; + wakegic: wake-gic { + compatible = "qcom,mpm-gic-sdxnightjar", "qcom,mpm"; + interrupts = ; + reg = <0x601b8 0x1000>, + <0xb011008 0x4>; /* MSM_APCS_GCC_BASE 4K */ + reg-names = "vmpm", "ipc"; + qcom,num-mpm-irqs = <96>; + interrupt-controller; + interrupt-parent = <&intc>; + #interrupt-cells = <2>; + }; + + system_pm_rpm { + compatible = "qcom,system-pm-rpm"; + }; + qcom,mpm2-sleep-counter@4a3000 { compatible = "qcom,mpm2-sleep-counter"; reg = <0x004a3000 0x1000>; @@ -696,6 +712,12 @@ reg = <0x60000 0x6000>; }; + qcom,ipc-spinlock@1905000 { + compatible = "qcom,ipc-spinlock-sfpb"; + reg = <0x1905000 0x8000>; + qcom,num-locks = <8>; + }; + smem { compatible = "qcom,smem"; memory-region = <&smem_mem>; @@ -1048,6 +1070,7 @@ #include "sdxnightjar-coresight.dtsi" #include "sdxnightjar-pinctrl.dtsi" #include "sdxnightjar-ion.dtsi" +#include "sdxnightjar-pm.dtsi" #include "sdxnightjar-blsp.dtsi" #include "sdxnightjar-cnss.dtsi" #include "sdxnightjar-pcie.dtsi"