Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d9a89d6a authored by Vikram Mulukutla's avatar Vikram Mulukutla
Browse files

msm: clock-8974: Model clock controllers as Linux devices



Clock controllers on MSM chipsets expose software
controllable clock generators, PLLs and branches.
Model these controllers using the Linux device model
and read necessary data from device tree.

Change-Id: Ib09037f47bc84ef33135606f0f961a86cfad2a1f
Signed-off-by: default avatarVikram Mulukutla <markivx@codeaurora.org>
parent 4ac39f69
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
Qualcomm MSM Clock controller

Qualcomm MSM Clock controller devices contain PLLs, root clock generators
and other clocking hardware blocks that provide stable, low power clocking to
hardware blocks on Qualcomm SOCs. The clock controller device node lists the
power supplies needed to be scaled using the vdd_*-supply property.

Minor differences between hardware revisions are handled in code by re-using
the compatible string to indicate the revision.

Required properties:
- compatible:		Must be one of "qcom,gcc-<target>",
			"qcom,mmsscc-<target>", "qcom,debugcc-<target>" or
			"qcom,lpasscc-<target>". <target> is the name of the
			Qualcomm SoC.
- reg:			Pairs of physical base addresses and region sizes of
			memory mapped registers.
- reg-names:		Names of the bases for the above registers. Currently,
			there is one expected base: "cc_base"

Optional properties:
- vdd_dig-supply:	The digital logic rail supply.
- #clock_cells:		If this device will also be providing controllable
			clocks, the clock_cells property needs to be specified.
			This will allow the common clock device tree framework
			to recognize _this_ device node as a clock provider.

Example:
	clock_rpm: qcom,rpmcc@fc4000000 {
		compatible = "qcom,rpmcc-8974";
		reg = <0xfc400000 0x4000>;
		reg-names = "cc_base";
		#clock-cells = <1>;
	};

	clock_gcc: qcom,gcc@fc400000 {
		compatible = "qcom,gcc-8974";
		reg = <0xfc400000 0x4000>;
		reg-names = "cc_base";
		vdd_dig-supply = <&pm8841_s2_corner>;
		#clock-cells = <1>;
	};
+1 −1
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ obj-$(CONFIG_ARCH_APQ8084) += clock-local2.o clock-pll.o clock-8084.o clock-rpm.
obj-$(CONFIG_ARCH_APQ8084) += clock-krait-8974.o
obj-$(CONFIG_ARCH_MSM8974) += board-8974.o board-8974-gpiomux.o
obj-$(CONFIG_ARCH_MSM8974) += clock-krait-8974.o
obj-$(CONFIG_ARCH_MSM8974) += clock-local2.o clock-pll.o clock-8974.o clock-rpm.o clock-voter.o clock-mdss-8974.o
obj-$(CONFIG_ARCH_MSM8974) += clock-local2.o clock-pll.o clock-rpm-8974.o clock-gcc-8974.o clock-mmss-8974.o clock-lpass-8974.o clock-rpm.o clock-voter.o clock-mdss-8974.o
obj-$(CONFIG_ARCH_MSM8974) += gdsc.o
obj-$(CONFIG_ARCH_MSM8226) += gdsc.o
obj-$(CONFIG_ARCH_MSM8610) += gdsc.o
+0 −4
Original line number Diff line number Diff line
@@ -93,10 +93,6 @@ void __init msm8974_add_drivers(void)
	rpm_regulator_smd_driver_init();
	msm_spm_device_init();
	krait_power_init();
	if (of_board_is_rumi())
		msm_clock_init(&msm8974_rumi_clock_init_data);
	else
		msm_clock_init(&msm8974_clock_init_data);
	tsens_tm_init_driver();
	msm_thermal_device_init();
}
Loading