xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/clock/qcom,rpmcc.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunQualcomm RPM Clock Controller Binding
2*4882a593Smuzhiyun------------------------------------------------
3*4882a593SmuzhiyunThe RPM is a dedicated hardware engine for managing the shared
4*4882a593SmuzhiyunSoC resources in order to keep the lowest power profile. It
5*4882a593Smuzhiyuncommunicates with other hardware subsystems via shared memory
6*4882a593Smuzhiyunand accepts clock requests, aggregates the requests and turns
7*4882a593Smuzhiyunthe clocks on/off or scales them on demand.
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunRequired properties :
10*4882a593Smuzhiyun- compatible : shall contain only one of the following. The generic
11*4882a593Smuzhiyun               compatible "qcom,rpmcc" should be also included.
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun			"qcom,rpmcc-msm8660", "qcom,rpmcc"
14*4882a593Smuzhiyun			"qcom,rpmcc-apq8060", "qcom,rpmcc"
15*4882a593Smuzhiyun			"qcom,rpmcc-msm8916", "qcom,rpmcc"
16*4882a593Smuzhiyun			"qcom,rpmcc-msm8936", "qcom,rpmcc"
17*4882a593Smuzhiyun			"qcom,rpmcc-msm8974", "qcom,rpmcc"
18*4882a593Smuzhiyun			"qcom,rpmcc-msm8976", "qcom,rpmcc"
19*4882a593Smuzhiyun			"qcom,rpmcc-apq8064", "qcom,rpmcc"
20*4882a593Smuzhiyun			"qcom,rpmcc-ipq806x", "qcom,rpmcc"
21*4882a593Smuzhiyun			"qcom,rpmcc-msm8992",·"qcom,rpmcc"
22*4882a593Smuzhiyun			"qcom,rpmcc-msm8994",·"qcom,rpmcc"
23*4882a593Smuzhiyun			"qcom,rpmcc-msm8996", "qcom,rpmcc"
24*4882a593Smuzhiyun			"qcom,rpmcc-msm8998", "qcom,rpmcc"
25*4882a593Smuzhiyun			"qcom,rpmcc-qcs404", "qcom,rpmcc"
26*4882a593Smuzhiyun			"qcom,rpmcc-sdm660", "qcom,rpmcc"
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun- #clock-cells : shall contain 1
29*4882a593Smuzhiyun
30*4882a593SmuzhiyunThe clock enumerators are defined in <dt-bindings/clock/qcom,rpmcc.h>
31*4882a593Smuzhiyunand come in pairs: FOO_CLK followed by FOO_A_CLK. The latter clock
32*4882a593Smuzhiyunis an "active" clock, which means that the consumer only care that the
33*4882a593Smuzhiyunclock is available when the apps CPU subsystem is active, i.e. not
34*4882a593Smuzhiyunsuspended or in deep idle. If it is important that the clock keeps running
35*4882a593Smuzhiyunduring system suspend, you need to specify the non-active clock, the one
36*4882a593Smuzhiyunnot containing *_A_* in the enumerator name.
37*4882a593Smuzhiyun
38*4882a593SmuzhiyunExample:
39*4882a593Smuzhiyun	smd {
40*4882a593Smuzhiyun		compatible = "qcom,smd";
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun		rpm {
43*4882a593Smuzhiyun			interrupts = <0 168 1>;
44*4882a593Smuzhiyun			qcom,ipc = <&apcs 8 0>;
45*4882a593Smuzhiyun			qcom,smd-edge = <15>;
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun			rpm_requests {
48*4882a593Smuzhiyun				compatible = "qcom,rpm-msm8916";
49*4882a593Smuzhiyun				qcom,smd-channels = "rpm_requests";
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun				rpmcc: clock-controller {
52*4882a593Smuzhiyun					compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
53*4882a593Smuzhiyun					#clock-cells = <1>;
54*4882a593Smuzhiyun				};
55*4882a593Smuzhiyun			};
56*4882a593Smuzhiyun		};
57*4882a593Smuzhiyun	};
58