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

Commit d2ce09e2 authored by David Collins's avatar David Collins
Browse files

clk: qcom: set use_max_uV for vdd_mm to avoid voltage voting conflicts



On SA8155 boards, vdd_cx and vdd_mm are supplied by the same
physical regulator.  In the camcc-sm8150, dispcc-sm8150,
gcc-sm8150, and videocc-sm8150 drivers, vdd_cx is specified
with support up to TURBO_L1 level whereas vdd_mm is specified
with support only up to TURBO level.  The vdd_mm regulator
voltage requests with max = TURBO block vdd_cx regulator
requests for TURBO_L1.

Fix this issue by setting vdd_mm.use_max_uV = true in the
affected drivers.  This results in regulator voltage requests
with max = INT_MAX which will not block TURBO_L1 requests.

Change-Id: I3777e5f22b2e5f70c9ca8cafa2d80f7df3d1cc9e
Signed-off-by: default avatarDavid Collins <collinsd@codeaurora.org>
parent 49f7d351
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2464,6 +2464,7 @@ static int cam_cc_sm8150_probe(struct platform_device *pdev)
				"Unable to get vdd_mm regulator\n");
		return PTR_ERR(vdd_mm.regulator[0]);
	}
	vdd_mm.use_max_uV = true;

	ret = cam_cc_sm8150_fixup(pdev, regmap);
	if (ret)
+1 −0
Original line number Diff line number Diff line
@@ -1584,6 +1584,7 @@ static int disp_cc_sm8150_probe(struct platform_device *pdev)
				"Unable to get vdd_mm regulator\n");
		return PTR_ERR(vdd_mm.regulator[0]);
	}
	vdd_mm.use_max_uV = true;

	ret = disp_cc_sm8150_fixup(pdev, regmap);
	if (ret)
+1 −0
Original line number Diff line number Diff line
@@ -4259,6 +4259,7 @@ static int gcc_sm8150_probe(struct platform_device *pdev)
			dev_err(&pdev->dev, "Unable to get vdd_mm regulator\n");
		return PTR_ERR(vdd_mm.regulator[0]);
	}
	vdd_mm.use_max_uV = true;

	/* register hardware clocks */
	for (i = 0; i < ARRAY_SIZE(gcc_sm8150_hws); i++) {
+1 −0
Original line number Diff line number Diff line
@@ -331,6 +331,7 @@ static int video_cc_sm8150_probe(struct platform_device *pdev)
			dev_err(&pdev->dev, "Unable to get vdd_mm regulator\n");
		return PTR_ERR(vdd_mm.regulator[0]);
	}
	vdd_mm.use_max_uV = true;

	ret = video_cc_sm8150_fixup(pdev, regmap);
	if (ret)