| 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>; |
| }; |