| Qualcomm RPM Clock Controller Binding |
| ------------------------------------------------ |
| The RPM is a dedicated hardware engine for managing the shared |
| SoC resources in order to keep the lowest power profile. It |
| communicates with other hardware subsystems via shared memory |
| and accepts clock requests, aggregates the requests and turns |
| the clocks on/off or scales them on demand. |
| |
| Required properties : |
| - compatible : shall contain only one of the following. The generic |
| compatible "qcom,rpmcc" should be also included. |
| |
| "qcom,rpmcc-msm8660", "qcom,rpmcc" |
| "qcom,rpmcc-apq8060", "qcom,rpmcc" |
| "qcom,rpmcc-msm8916", "qcom,rpmcc" |
| "qcom,rpmcc-msm8974", "qcom,rpmcc" |
| "qcom,rpmcc-apq8064", "qcom,rpmcc" |
| "qcom,rpmcc-msm8996", "qcom,rpmcc" |
| "qcom,rpmcc-msm8998", "qcom,rpmcc" |
| "qcom,rpmcc-qcs404", "qcom,rpmcc" |
| |
| - #clock-cells : shall contain 1 |
| |
| The clock enumerators are defined in <dt-bindings/clock/qcom,rpmcc.h> |
| and come in pairs: FOO_CLK followed by FOO_A_CLK. The latter clock |
| is an "active" clock, which means that the consumer only care that the |
| clock is available when the apps CPU subsystem is active, i.e. not |
| suspended or in deep idle. If it is important that the clock keeps running |
| during system suspend, you need to specify the non-active clock, the one |
| not containing *_A_* in the enumerator name. |
| |
| Example: |
| smd { |
| compatible = "qcom,smd"; |
| |
| rpm { |
| interrupts = <0 168 1>; |
| qcom,ipc = <&apcs 8 0>; |
| qcom,smd-edge = <15>; |
| |
| rpm_requests { |
| compatible = "qcom,rpm-msm8916"; |
| qcom,smd-channels = "rpm_requests"; |
| |
| rpmcc: clock-controller { |
| compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc"; |
| #clock-cells = <1>; |
| }; |
| }; |
| }; |
| }; |