aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch')
-rw-r--r--recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch b/recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch
new file mode 100644
index 0000000..5e430b1
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/generic-drivers/mdss-icc/0003_drm_msm_mdss_inline_msm_mdss_icc_request_bw.patch
@@ -0,0 +1,69 @@
+From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Subject: drm/msm/mdss: inline msm_mdss_icc_request_bw()
+Date: Sun, 03 Dec 2023 01:42:46 +0300
+
+There are just two places where we set the bandwidth: in the resume and
+in the suspend paths. Drop the wrapping function
+msm_mdss_icc_request_bw() and call icc_set_bw() directly.
+
+Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Upstream-Status: Backport [https://gitlab.freedesktop.org/lumag/msm/-/commit/7323694e118a]
+---
+ drivers/gpu/drm/msm/msm_mdss.c | 19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/msm/msm_mdss.c b/drivers/gpu/drm/msm/msm_mdss.c
+index e1b208fd072e..eeca281e9d6d 100644
+--- a/drivers/gpu/drm/msm/msm_mdss.c
++++ b/drivers/gpu/drm/msm/msm_mdss.c
+@@ -66,14 +66,6 @@ static int msm_mdss_parse_data_bus_icc_path(struct device *dev,
+ return 0;
+ }
+
+-static void msm_mdss_icc_request_bw(struct msm_mdss *msm_mdss, unsigned long bw)
+-{
+- int i;
+-
+- for (i = 0; i < msm_mdss->num_mdp_paths; i++)
+- icc_set_bw(msm_mdss->mdp_path[i], 0, Bps_to_icc(bw));
+-}
+-
+ static void msm_mdss_irq(struct irq_desc *desc)
+ {
+ struct msm_mdss *msm_mdss = irq_desc_get_handler_data(desc);
+@@ -227,14 +219,15 @@ const struct msm_mdss_data *msm_mdss_get_mdss_data(struct device *dev)
+
+ static int msm_mdss_enable(struct msm_mdss *msm_mdss)
+ {
+- int ret;
++ int ret, i;
+
+ /*
+ * Several components have AXI clocks that can only be turned on if
+ * the interconnect is enabled (non-zero bandwidth). Let's make sure
+ * that the interconnects are at least at a minimum amount.
+ */
+- msm_mdss_icc_request_bw(msm_mdss, MIN_IB_BW);
++ for (i = 0; i < msm_mdss->num_mdp_paths; i++)
++ icc_set_bw(msm_mdss->mdp_path[i], 0, Bps_to_icc(MIN_IB_BW));
+
+ ret = clk_bulk_prepare_enable(msm_mdss->num_clocks, msm_mdss->clocks);
+ if (ret) {
+@@ -286,8 +279,12 @@ static int msm_mdss_enable(struct msm_mdss *msm_mdss)
+
+ static int msm_mdss_disable(struct msm_mdss *msm_mdss)
+ {
++ int i;
++
+ clk_bulk_disable_unprepare(msm_mdss->num_clocks, msm_mdss->clocks);
+- msm_mdss_icc_request_bw(msm_mdss, 0);
++
++ for (i = 0; i < msm_mdss->num_mdp_paths; i++)
++ icc_set_bw(msm_mdss->mdp_path[i], 0, 0);
+
+ return 0;
+ }
+--
+2.39.2