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

Commit 2ab16453 authored by Veera Sundaram Sankaran's avatar Veera Sundaram Sankaran
Browse files

msm: sde: rot: add parsing logic to get reg bw vote from DT



Add parsing code to get the rotator register bw vote settings
from the device tree, so that it can be extended to other targets.

Change-Id: Icb64467a1380c614745dc57a16287c889d33023a
Signed-off-by: default avatarVeera Sundaram Sankaran <veeras@codeaurora.org>
parent 1a395d00
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -120,6 +120,8 @@ Optional properties
				minimum allowable length configuration value.
- qcom,sde-ubwc-swizzle:	A u32 property to specify the default UBWC
				swizzle configuration value.
- qcom,rot-reg-bus:		Property to provide Bus scaling for register
				access for rotator blocks.

Subnode properties:
- compatible:		Compatible name used in smmu v2.
@@ -189,6 +191,16 @@ Example:
		cache-slice-names = "rotator";
		cache-slices = <&llcc 4>;

		rot_reg: qcom,rot-reg-bus {
			qcom,msm-bus,name = "mdss_rot_reg";
			qcom,msm-bus,num-cases = <2>;
			qcom,msm-bus,num-paths = <1>;
			qcom,msm-bus,active-only;
			qcom,msm-bus,vectors-KBps =
				<1 590 0 0>,
				<1 590 0 76800>;
		};

		smmu_rot_unsec: qcom,smmu_rot_unsec_cb {
			compatible = "qcom,smmu_sde_rot_unsec";
			iommus = <&mdp_smmu 0xe00>;
+22 −6
Original line number Diff line number Diff line
@@ -2583,6 +2583,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr,
{
	int ret = 0, i;
	int usecases;
	struct device_node *node;

	mgr->data_bus.bus_scale_pdata = msm_bus_cl_get_pdata(dev);
	if (IS_ERR_OR_NULL(mgr->data_bus.bus_scale_pdata)) {
@@ -2594,6 +2595,20 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr,
		}
	}

	node = of_get_child_by_name(dev->dev.of_node, "qcom,rot-reg-bus");
	if (node) {
		mgr->reg_bus.bus_scale_pdata
				= msm_bus_pdata_from_node(dev, node);
		if (IS_ERR_OR_NULL(mgr->reg_bus.bus_scale_pdata)) {
			SDEROT_ERR("reg bus pdata parsing failed\n");
			ret = PTR_ERR(mgr->reg_bus.bus_scale_pdata);
			if (!mgr->reg_bus.bus_scale_pdata)
				ret = -EINVAL;
			mgr->reg_bus.bus_scale_pdata = NULL;
		}
	} else {
		SDEROT_DBG(
			"no DT entries, configuring default reg bus table\n");
		mgr->reg_bus.bus_scale_pdata = &rot_reg_bus_scale_table;
		usecases = mgr->reg_bus.bus_scale_pdata->num_usecases;
		for (i = 0; i < usecases; i++) {
@@ -2601,6 +2616,7 @@ static int sde_rotator_parse_dt_bus(struct sde_rot_mgr *mgr,
			rot_reg_bus_usecases[i].vectors =
				&rot_reg_bus_vectors[i];
		}
	}

	return ret;
}