MSM Maximum Current Throttling (MSM-MCT) driver

The MCT driver provides support to enable/disable the MCT
mechanism and to modify the MCT control parameters. The
MCT mechanism's main goal is to limit the CPU's max power
consumption over a period of time by assessing the number
and type of instructions that are executed and then by mitigating
the CPU's instruction execution rate. The MCT works on a user
defined power budget for every cycle and when the CPU's average
power consumption exceeds this budget for a particular period of time,
then the CPU's instruction execution rate is throttled.

The devicetree representation of the MCT block should be:
Required Properties:
- compatible            : "qcom,max-current-throttling"

Optional Properties:
- qcom,mct-wr-weight    : Energy weight of integer instruction.
- qcom,mct-vxwr-weight  : Energy weight of VeNum arithmetic operations.
- qcom,mct-vlswr-weight : Energy weight of VeNum memory operations.
- qcom,mct-vaw-energy   : Energy associated with clocking the VeNum unit.
- qcom,mct-ulim         : The maximum energy debt that can be incurred
                          before throttling will be engaged.
- qcom,mct-dcnt         : The per-cycle energy budget.
- <mct-regulator-name>-supply = <&phandle_of_regulator> : mct-regulator-name
                          is the regulator name that's defined in the mct
                          driver. phandle_of_regulator should be the phandle
                          for mct regulator, defined by regulator device tree.
- qcom,mct-regulators   : List of MCT regulators corresponding to each CPU.
                          These regulators will be enabled/disabled, whenever
                          the MCT feature for that particular CPU is
                          enabled/disabled in the driver. User can specify
                          regulators for specific CPU's and give empty string
                          for the rest. The phandle for the regulator supply
                          should be defined.

Example:
qcom,msm-mct {
	compatible = "qcom,max-current-throttling";
	krait0-mct-supply = <&krait0_adj_reg>;
	krait1-mct-supply = <&krait1_adj_reg>;
	krait2-mct-supply = <&krait2_adj_reg>;
	krait3-mct-supply = <&krait3_adj_reg>;
	qcom,mct-regulators = "krait0-mct", "krait1-mct",
				"krait2-mct", "krait3-mct";
	qcom,mct-wr-weight = <0x14221120>;
	qcom,mct-vxwr-weight = <0xf8436430>;
	qcom,mct-vlswr-weight = <0xa5846330>;
	qcom,mct-vaw-energy = <0x1>;
	qcom,mct-ulim = <0x007f>;
	qcom,mct-dcnt = <0x0c>;
};
