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
next prev 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
[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
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
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).