xref: /freebsd/sys/contrib/device-tree/Bindings/clock/qcom,rpmcc.txt (revision 8cc087a1eee9ec1ca9f7ac1e63ad51bdb5a682eb)
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