1c66ec88fSEmmanuel VadotQualcomm RPM Clock Controller Binding 2c66ec88fSEmmanuel Vadot------------------------------------------------ 3c66ec88fSEmmanuel VadotThe RPM is a dedicated hardware engine for managing the shared 4c66ec88fSEmmanuel VadotSoC resources in order to keep the lowest power profile. It 5c66ec88fSEmmanuel Vadotcommunicates with other hardware subsystems via shared memory 6c66ec88fSEmmanuel Vadotand accepts clock requests, aggregates the requests and turns 7c66ec88fSEmmanuel Vadotthe clocks on/off or scales them on demand. 8c66ec88fSEmmanuel Vadot 9c66ec88fSEmmanuel VadotRequired properties : 10c66ec88fSEmmanuel Vadot- compatible : shall contain only one of the following. The generic 11c66ec88fSEmmanuel Vadot compatible "qcom,rpmcc" should be also included. 12c66ec88fSEmmanuel Vadot 13354d7675SEmmanuel Vadot "qcom,rpmcc-mdm9607", "qcom,rpmcc" 14c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8660", "qcom,rpmcc" 15c66ec88fSEmmanuel Vadot "qcom,rpmcc-apq8060", "qcom,rpmcc" 165956d97fSEmmanuel Vadot "qcom,rpmcc-msm8226", "qcom,rpmcc" 17c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8916", "qcom,rpmcc" 18c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8936", "qcom,rpmcc" 19354d7675SEmmanuel Vadot "qcom,rpmcc-msm8953", "qcom,rpmcc" 20c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8974", "qcom,rpmcc" 21c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8976", "qcom,rpmcc" 22c66ec88fSEmmanuel Vadot "qcom,rpmcc-apq8064", "qcom,rpmcc" 23c66ec88fSEmmanuel Vadot "qcom,rpmcc-ipq806x", "qcom,rpmcc" 24c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8992",·"qcom,rpmcc" 25c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8994",·"qcom,rpmcc" 26c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8996", "qcom,rpmcc" 27c66ec88fSEmmanuel Vadot "qcom,rpmcc-msm8998", "qcom,rpmcc" 28*8cc087a1SEmmanuel Vadot "qcom,rpmcc-qcm2290", "qcom,rpmcc" 29c66ec88fSEmmanuel Vadot "qcom,rpmcc-qcs404", "qcom,rpmcc" 30c66ec88fSEmmanuel Vadot "qcom,rpmcc-sdm660", "qcom,rpmcc" 31354d7675SEmmanuel Vadot "qcom,rpmcc-sm6115", "qcom,rpmcc" 32354d7675SEmmanuel Vadot "qcom,rpmcc-sm6125", "qcom,rpmcc" 33c66ec88fSEmmanuel Vadot 34c66ec88fSEmmanuel Vadot- #clock-cells : shall contain 1 35c66ec88fSEmmanuel Vadot 36c66ec88fSEmmanuel VadotThe clock enumerators are defined in <dt-bindings/clock/qcom,rpmcc.h> 37c66ec88fSEmmanuel Vadotand come in pairs: FOO_CLK followed by FOO_A_CLK. The latter clock 38c66ec88fSEmmanuel Vadotis an "active" clock, which means that the consumer only care that the 39c66ec88fSEmmanuel Vadotclock is available when the apps CPU subsystem is active, i.e. not 40c66ec88fSEmmanuel Vadotsuspended or in deep idle. If it is important that the clock keeps running 41c66ec88fSEmmanuel Vadotduring system suspend, you need to specify the non-active clock, the one 42c66ec88fSEmmanuel Vadotnot containing *_A_* in the enumerator name. 43c66ec88fSEmmanuel Vadot 44c66ec88fSEmmanuel VadotExample: 45c66ec88fSEmmanuel Vadot smd { 46c66ec88fSEmmanuel Vadot compatible = "qcom,smd"; 47c66ec88fSEmmanuel Vadot 48c66ec88fSEmmanuel Vadot rpm { 49c66ec88fSEmmanuel Vadot interrupts = <0 168 1>; 50c66ec88fSEmmanuel Vadot qcom,ipc = <&apcs 8 0>; 51c66ec88fSEmmanuel Vadot qcom,smd-edge = <15>; 52c66ec88fSEmmanuel Vadot 53c66ec88fSEmmanuel Vadot rpm_requests { 54c66ec88fSEmmanuel Vadot compatible = "qcom,rpm-msm8916"; 55c66ec88fSEmmanuel Vadot qcom,smd-channels = "rpm_requests"; 56c66ec88fSEmmanuel Vadot 57c66ec88fSEmmanuel Vadot rpmcc: clock-controller { 58c66ec88fSEmmanuel Vadot compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc"; 59c66ec88fSEmmanuel Vadot #clock-cells = <1>; 60c66ec88fSEmmanuel Vadot }; 61c66ec88fSEmmanuel Vadot }; 62c66ec88fSEmmanuel Vadot }; 63c66ec88fSEmmanuel Vadot }; 64