blob: 16303f769d42222e3e15609fefc06fbaa7c6bf3d [file] [log] [blame]
MSM SPDM bandwidth monitor device
devfreq-spdm is a device that represents a device that is monitored by the SPDM
hardware to measure the traffic status of configured master ports on the bus.
Required properties:
-compatible: Must be "qcom,devfreq_spdm"
-clock-names: Clocks used to measure current bus frequency.
Expected names are "cci_clk"
-clocks: References to named clocks
-qcom,spdm-client: Client id of the port being monitored
-qcom,bw-upstep: Initial up vote size in MB/s
-qcom,bw-dwnstep: Initial down vote size in MB/s
-qcom,max-vote: Vote ceiling in MB/s
-qcom,ports: SPDM ports used by this device
-qcom,alpha-up: SPDM filter up alpha value
-qcom,alpha-down: SPDM filter down alpha value
-qcom,bucket-size: SPDM filter bucket size
-qcom,pl-freqs: The driver supports different filter values at
three different performance levels. This value
defines the cut-over frequenices
-qcom,reject-rate: Desired rejection rate used to calculate
SPDM threshold
-qcom,response-time-us: Desired response time used to calculate
SPDM threshold
-qcom,cci-response-time-us: Desired response time used to calculate
SPDM threshold when CCI is under heavy load
-qcom,max-cci-freq: CCI frequency at which cci_response_time_us
is used
-qcom,up-step-multp: used to increase rate of growth on up votes
-qcom,spdm-interval: down-vote polling interval
Example:
devfreq_spdm_cpu {
compatible = "qcom,devfreq_spdm";
qcom,msm-bus,name = "devfreq_spdm";
qcom,msm-bus,num-cases = <2>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<1 512 0 0>,
<1 512 0 0>;
qcom,spdm-client = <0>;
clock-names = "cci_clk";
clocks = <&clock_cpu clk_cci_clk>;
qcom,bw-upstep = <100>;
qcom,bw-dwnstep = <100>;
qcom,max-vote = <10000>;
qcom,up-step-multp = <2>;
qcom,spdm-interval = <100>;
qcom,ports = <16>;
qcom,alpha-up = <7>;
qcom,alpha-down = <15>;
qcom,bucket-size = <8>;
/*max pl1 freq, max pl2 freq*/
qcom,pl-freqs = <149999999 150000000>;
/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
qcom,reject-rate = <5000 5000 5000 5000 5000 5000>;
/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
qcom,response-time-us = <220 220 2000 2000 900 900>;
/* pl1 low, pl1 high, pl2 low, pl2 high, pl3 low, pl3 high */
qcom,cci-response-time-us = <50 50 30 30 20 20>;
qcom,max-cci-freq = <600000000>;
};
This device is always used with the SPDM governor which requires a device tree
entry to know what IRQ to respond to.
Required properties:
-compatible Must be "qcom,gov_spdm_hyp"
-interrupt-names SPDM irq to handle. Name should be "spdm-irq"
-interrupts The interrupt number the SPDM hw is assigned
Example:
devfreq_spdm_gov {
compatible = "qcom,gov_spdm_hyp";
interrupt-names = "spdm-irq";
interrupts = <0 192 0>;
};