All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rajesh Yadav <ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org,
	Rajesh Yadav <ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org
Subject: [DPU PATCH 07/11] drm/msm/dpu: remove dt parsing logic for bus_scale config
Date: Wed, 30 May 2018 20:19:44 +0530	[thread overview]
Message-ID: <1527691788-9350-8-git-send-email-ryadav@codeaurora.org> (raw)
In-Reply-To: <1527691788-9350-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>

Bus scale config related dt-bindings are removed.
Add bus_scale config in driver instead.

Signed-off-by: Rajesh Yadav <ryadav@codeaurora.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c | 254 +++++++++++++++--------
 1 file changed, 167 insertions(+), 87 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c
index bdf18de..24c3274 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c
@@ -20,15 +20,137 @@
 #include <linux/slab.h>
 #include <linux/mutex.h>
 #include <linux/of_platform.h>
-#ifdef CONFIG_QCOM_BUS_SCALING
-#include <linux/msm-bus.h>
-#include <linux/msm-bus-board.h>
-#endif
 #include <linux/dpu_io_util.h>
 
 #include "dpu_power_handle.h"
 #include "dpu_trace.h"
 
+#ifdef CONFIG_QCOM_BUS_SCALING
+#include <linux/msm-bus.h>
+#include <linux/msm-bus-board.h>
+
+#define DPU_BUS_VECTOR_ENTRY(src_val, dst_val, ab_val, ib_val) \
+	{                                                          \
+		.src = src_val,                                        \
+		.dst = dst_val,                                        \
+		.ab = (ab_val),                                        \
+		.ib = (ib_val),                                        \
+	}
+
+static struct msm_bus_vectors dpu_reg_bus_vectors[] = {
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_FIRST,
+			     MSM_BUS_SLAVE_DISPLAY_CFG, 0, 0),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_FIRST,
+			     MSM_BUS_SLAVE_DISPLAY_CFG, 0, 76800000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_FIRST,
+			     MSM_BUS_SLAVE_DISPLAY_CFG, 0, 150000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_FIRST,
+			     MSM_BUS_SLAVE_DISPLAY_CFG, 0, 300000000),
+};
+
+static struct msm_bus_paths dpu_reg_bus_usecases[] = { {
+		.num_paths = 1,
+		.vectors = &dpu_reg_bus_vectors[0],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_reg_bus_vectors[1],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_reg_bus_vectors[2],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_reg_bus_vectors[3],
+} };
+
+static struct msm_bus_scale_pdata dpu_reg_bus_scale_table = {
+	.usecase = dpu_reg_bus_usecases,
+	.num_usecases = ARRAY_SIZE(dpu_reg_bus_usecases),
+	.name = "mdss_reg",
+};
+
+static struct msm_bus_vectors dpu_data_bus_vectors[] = {
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT0,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 0),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT1,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 0),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT0,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 6400000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT1,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 6400000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT0,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 6400000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MDP_PORT1,
+			     MSM_BUS_SLAVE_MNOC_HF_MEM_NOC, 0, 6400000000),
+};
+
+static struct msm_bus_paths dpu_data_bus_usecases[] = { {
+		.num_paths = 2,
+		.vectors = &dpu_data_bus_vectors[0],
+}, {
+		.num_paths = 2,
+		.vectors = &dpu_data_bus_vectors[2],
+}, {
+		.num_paths = 2,
+		.vectors = &dpu_data_bus_vectors[4],
+} };
+
+static struct msm_bus_scale_pdata dpu_data_bus_scale_table = {
+	.usecase = dpu_data_bus_usecases,
+	.num_usecases = ARRAY_SIZE(dpu_data_bus_usecases),
+	.name = "mdss_mnoc",
+};
+
+static struct msm_bus_vectors dpu_llcc_bus_vectors[] = {
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MNOC_HF_MEM_NOC,
+			     MSM_BUS_SLAVE_LLCC, 0, 0),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MNOC_HF_MEM_NOC,
+			     MSM_BUS_SLAVE_LLCC, 0, 6400000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_MNOC_HF_MEM_NOC,
+			     MSM_BUS_SLAVE_LLCC, 0, 6400000000),
+};
+
+static struct msm_bus_paths dpu_llcc_bus_usecases[] = { {
+		.num_paths = 1,
+		.vectors = &dpu_llcc_bus_vectors[0],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_llcc_bus_vectors[1],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_llcc_bus_vectors[2],
+} };
+static struct msm_bus_scale_pdata dpu_llcc_bus_scale_table = {
+	.usecase = dpu_llcc_bus_usecases,
+	.num_usecases = ARRAY_SIZE(dpu_llcc_bus_usecases),
+	.name = "mdss_llcc",
+};
+
+static struct msm_bus_vectors dpu_ebi_bus_vectors[] = {
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_LLCC,
+			     MSM_BUS_SLAVE_EBI_CH0, 0, 0),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_LLCC,
+			     MSM_BUS_SLAVE_EBI_CH0, 0, 6400000000),
+	DPU_BUS_VECTOR_ENTRY(MSM_BUS_MASTER_LLCC,
+			     MSM_BUS_SLAVE_EBI_CH0, 0, 6400000000),
+};
+
+static struct msm_bus_paths dpu_ebi_bus_usecases[] = { {
+		.num_paths = 1,
+		.vectors = &dpu_ebi_bus_vectors[0],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_ebi_bus_vectors[1],
+}, {
+		.num_paths = 1,
+		.vectors = &dpu_ebi_bus_vectors[2],
+} };
+static struct msm_bus_scale_pdata dpu_ebi_bus_scale_table = {
+	.usecase = dpu_ebi_bus_usecases,
+	.num_usecases = ARRAY_SIZE(dpu_ebi_bus_usecases),
+	.name = "mdss_ebi",
+};
+#endif
+
 static const char *data_bus_name[DPU_POWER_HANDLE_DBUS_ID_MAX] = {
 	[DPU_POWER_HANDLE_DBUS_ID_MNOC] = "qcom,dpu-data-bus",
 	[DPU_POWER_HANDLE_DBUS_ID_LLCC] = "qcom,dpu-llcc-bus",
@@ -276,93 +398,54 @@ static void dpu_power_data_bus_unregister(
 	}
 }
 
-static int dpu_power_data_bus_parse(struct platform_device *pdev,
-	struct dpu_power_data_bus_handle *pdbus, const char *name)
+static int dpu_power_data_bus_register(struct dpu_power_handle *phandle,
+		int index)
 {
-	struct device_node *node;
-	int rc = 0;
-	int paths;
-
-	pdbus->bus_channels = 1;
-	rc = of_property_read_u32(pdev->dev.of_node,
-		"qcom,dpu-dram-channels", &pdbus->bus_channels);
-	if (rc) {
-		pr_debug("number of channels property not specified\n");
-		rc = 0;
-	}
+	struct dpu_power_data_bus_handle *pdbus = &phandle->data_bus_handle[index];
 
+	pdbus->bus_channels = 2;
 	pdbus->nrt_axi_port_cnt = 0;
-	rc = of_property_read_u32(pdev->dev.of_node,
-			"qcom,dpu-num-nrt-paths",
-			&pdbus->nrt_axi_port_cnt);
-	if (rc) {
-		pr_debug("number of axi port property not specified\n");
-		rc = 0;
+	pdbus->axi_port_cnt = 1;
+
+	switch (index) {
+	case DPU_POWER_HANDLE_DBUS_ID_MNOC:
+		pdbus->data_bus_scale_table = &dpu_data_bus_scale_table;
+		pdbus->axi_port_cnt = 2;
+		break;
+	case DPU_POWER_HANDLE_DBUS_ID_LLCC:
+		pdbus->data_bus_scale_table = &dpu_llcc_bus_scale_table;
+		break;
+	case DPU_POWER_HANDLE_DBUS_ID_EBI:
+		pdbus->data_bus_scale_table = &dpu_ebi_bus_scale_table;
+		break;
+	default:
+		pr_err("invalid data_bus type: %d", index);
+		return -EINVAL;
 	}
 
-	node = of_get_child_by_name(pdev->dev.of_node, name);
-	if (node) {
-		rc = of_property_read_u32(node,
-				"qcom,msm-bus,num-paths", &paths);
-		if (rc) {
-			pr_err("Error. qcom,msm-bus,num-paths not found\n");
-			return rc;
-		}
-		pdbus->axi_port_cnt = paths;
-
-		pdbus->data_bus_scale_table =
-				msm_bus_pdata_from_node(pdev, node);
-		if (IS_ERR_OR_NULL(pdbus->data_bus_scale_table)) {
-			pr_err("reg bus handle parsing failed\n");
-			rc = PTR_ERR(pdbus->data_bus_scale_table);
-			if (!pdbus->data_bus_scale_table)
-				rc = -EINVAL;
-			goto end;
-		}
-		pdbus->data_bus_hdl = msm_bus_scale_register_client(
-				pdbus->data_bus_scale_table);
-		if (!pdbus->data_bus_hdl) {
-			pr_err("data_bus_client register failed\n");
-			rc = -EINVAL;
-			goto end;
-		}
-		pr_debug("register %s data_bus_hdl=%x\n", name,
-				pdbus->data_bus_hdl);
+	pdbus->data_bus_hdl = msm_bus_scale_register_client(
+			pdbus->data_bus_scale_table);
+	if (!pdbus->data_bus_hdl) {
+		pr_err("data_bus_client register failed\n");
+		return -EINVAL;
 	}
+	pr_debug("register %s data_bus_hdl=%x\n", data_bus_name[index],
+			pdbus->data_bus_hdl);
 
-end:
-	return rc;
+	return 0;
 }
 
-static int dpu_power_reg_bus_parse(struct platform_device *pdev,
-	struct dpu_power_handle *phandle)
+static int dpu_power_reg_bus_register(struct dpu_power_handle *phandle)
 {
-	struct device_node *node;
-	struct msm_bus_scale_pdata *bus_scale_table;
-	int rc = 0;
-
-	node = of_get_child_by_name(pdev->dev.of_node, "qcom,dpu-reg-bus");
-	if (node) {
-		bus_scale_table = msm_bus_pdata_from_node(pdev, node);
-		if (IS_ERR_OR_NULL(bus_scale_table)) {
-			pr_err("reg bus handle parsing failed\n");
-			rc = PTR_ERR(bus_scale_table);
-			if (!bus_scale_table)
-				rc = -EINVAL;
-			goto end;
-		}
-		phandle->reg_bus_hdl = msm_bus_scale_register_client(
-			      bus_scale_table);
-		if (!phandle->reg_bus_hdl) {
-			pr_err("reg_bus_client register failed\n");
-			rc = -EINVAL;
-			goto end;
-		}
-		pr_debug("register reg_bus_hdl=%x\n", phandle->reg_bus_hdl);
+	phandle->reg_bus_hdl = msm_bus_scale_register_client(
+			&dpu_reg_bus_scale_table);
+	if (!phandle->reg_bus_hdl) {
+		pr_err("reg_bus_client register failed\n");
+		return -EINVAL;
 	}
+	pr_debug("register reg_bus_hdl=%x\n", phandle->reg_bus_hdl);
 
-end:
-	return rc;
+	return 0;
 }
 
 static void dpu_power_reg_bus_unregister(u32 reg_bus_hdl)
@@ -419,8 +502,8 @@ static int dpu_power_reg_bus_update(u32 reg_bus_hdl, u32 usecase_ndx)
 	return rc;
 }
 #else
-static int dpu_power_data_bus_parse(struct platform_device *pdev,
-		struct dpu_power_data_bus_handle *pdbus, const char *name)
+static int dpu_power_data_bus_register(struct dpu_power_handle *phandle,
+		int index)
 {
 	return 0;
 }
@@ -438,8 +521,7 @@ int dpu_power_data_bus_set_quota(struct dpu_power_handle *phandle,
 	return 0;
 }
 
-static int dpu_power_reg_bus_parse(struct platform_device *pdev,
-	struct dpu_power_handle *phandle)
+static int dpu_power_reg_bus_register(struct dpu_power_handle *phandle)
 {
 	return 0;
 }
@@ -473,7 +555,7 @@ int dpu_power_resource_init(struct platform_device *pdev,
 
 	phandle->dev = &pdev->dev;
 
-	rc = dpu_power_reg_bus_parse(pdev, phandle);
+	rc = dpu_power_reg_bus_register(phandle);
 	if (rc) {
 		pr_err("register bus parse failed rc=%d\n", rc);
 		return rc;
@@ -481,9 +563,7 @@ int dpu_power_resource_init(struct platform_device *pdev,
 
 	for (i = DPU_POWER_HANDLE_DBUS_ID_MNOC;
 			i < DPU_POWER_HANDLE_DBUS_ID_MAX; i++) {
-		rc = dpu_power_data_bus_parse(pdev,
-				&phandle->data_bus_handle[i],
-				data_bus_name[i]);
+		rc = dpu_power_data_bus_register(phandle, i);
 		if (rc) {
 			pr_err("register data bus parse failed id=%d rc=%d\n",
 					i, rc);
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

  parent reply	other threads:[~2018-05-30 14:49 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-30 14:49 [DPU PATCH 00/11] Remove unused code and cleanup devicetree bindings for DPU driver Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 05/11] drm/msm/dpu: remove writeback support Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 06/11] drm/msm/dpu: remove hdcp support Rajesh Yadav
2018-05-30 14:49 ` [DPU PATCH 08/11] dt-bindings: msm/disp: cleanup bindings for Snapdragon 845 DPU Rajesh Yadav
     [not found] ` <1527691788-9350-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-30 14:49   ` [DPU PATCH 01/11] dt-bindings: msm/disp: remove unused dsi & panel bindings Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 02/11] dt-bindings: msm/disp: remove unused display port bindings Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 03/11] Revert "drm/msm: Add DisplayPort support" Rajesh Yadav
2018-05-30 14:49   ` [DPU PATCH 04/11] dt-bindings: msm/disp: remove unused writeback bindings Rajesh Yadav
2018-05-30 14:49   ` Rajesh Yadav [this message]
2018-05-30 14:49   ` [DPU PATCH 09/11] drm/msm/dpu: Remove unused code and move the header Rajesh Yadav
     [not found]     ` <1527691788-9350-10-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-06-22 13:51       ` Sean Paul
     [not found]         ` <CAOw6vbLXWojrjXUQq62+n-BDbtQsyBLq_xYGe0RSqnsxo2Ep5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-06-22 15:33           ` Jordan Crouse
     [not found]             ` <20180622153352.GE24526-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-06-22 17:39               ` ryadav-sgV2jX0FEOL9JmXXK+q4OQ
2018-05-30 14:49   ` [DPU PATCH 10/11] drm/msm/dpu: correct dpu_io_util.h include path Rajesh Yadav
     [not found]     ` <1527691788-9350-11-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-30 16:30       ` Jordan Crouse
     [not found]         ` <20180530163005.GC5028-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-05-31 11:41           ` ryadav-sgV2jX0FEOL9JmXXK+q4OQ
2018-05-30 14:49   ` [DPU PATCH 11/11] drm/msm/dpu: move dpu_io_util to dpu folder Rajesh Yadav

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1527691788-9350-8-git-send-email-ryadav@codeaurora.org \
    --to=ryadav-sgv2jx0feol9jmxxk+q4oq@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    --cc=linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.