All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND 00/10] drm/msm: A handful of dpu fixes
@ 2018-02-21 15:18 Sean Paul
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

Apologies for the spam, I'm resending again because git send-email keeps
adding the commit hash as a cc, and then failing since it's not a valid
email. If anyone knows how to suppress git send-email from adding the 
"From <sha1> Mon Sep 17 00:00:00 2001" line as a cc, hit me up. For
now, I've just done the dumb thing and marked --suppress-cc=all.

[original msg]
We've finally got the mtp development kit booting the DPU driver that
was sent upstream last week. Here are some of the patches that were
necessary to do that. There are a bunch more, but they touch downstream
code that is not going upstream (namely dsi-staging and smmu). The
booting kernel can be found at [1].

Once the patches in this series receive some light review, I'll drop
them on for-next at [2].

Thanks,

Sean

[1]- https://cgit.freedesktop.org/~seanpaul/dpu-staging/log/?h=mtp-testing
[2]- https://cgit.freedesktop.org/~seanpaul/dpu-staging/log/?h=for-next

Jeykumar Sankaran (1):
  drm/msm/dpu: Fix writeback compile macros

Sean Paul (9):
  drm/msm: Add displayport files to Makefile
  drm/msm: Include the dpu_dbg header in msm_drv.c
  drm/msm: Change driver name back to msm
  drm/msm: Remove smmu driver init/cleanup from msm_drv
  drm/msm: Defer probe if display component not found
  drm/msm: Fix deadlock calling msm_gem_new()
  drm/msm: Populate kms->irq for dpu
  drm/msm: Sprinkle pm_runtime calls around
  drm/msm: Restore msm_atomic_check hook

 drivers/gpu/drm/msm/Makefile                  | 14 ++++++++++++++
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      |  3 +++
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c   |  7 ++-----
 .../gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c |  2 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c       | 19 ++++++++++++++++++-
 drivers/gpu/drm/msm/msm_drv.c                 | 17 +++++++++--------
 6 files changed, 46 insertions(+), 16 deletions(-)

-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [PATCH RESEND 01/10] drm/msm: Add displayport files to Makefile
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-2-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c Sean Paul
                     ` (8 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

Still behind a config flag, and ymmv when trying to build them, but
they're present at least.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/Makefile | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index d9014441d022..fcd85ae28d66 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -108,6 +108,20 @@ msm-y := \
 	msm_ringbuffer.o \
 	msm_submitqueue.o
 
+msm-$(CONFIG_DRM_MSM_DP)+= dp/dp_usbpd.o \
+	dp/dp_parser.o \
+	dp/dp_power.o \
+	dp/dp_catalog.o \
+	dp/dp_aux.o \
+	dp/dp_panel.o \
+	dp/dp_link.o \
+	dp/dp_ctrl.o \
+	dp/dp_audio.o \
+	dp/dp_debug.o \
+	dp/dp_display.o \
+	dp/dp_drm.o \
+	dp/dp_hdcp2p2.o
+
 msm_wb-$(CONFIG_DRM_MSM_WRITEBACK) += disp/dpu1/dpu_wb.o \
 				      disp/dpu1/dpu_encoder_phys_wb.o
 
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 01/10] drm/msm: Add displayport files to Makefile Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-3-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 03/10] drm/msm: Change driver name back to msm Sean Paul
                     ` (7 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

We'll need to clean up these conditionals further, but at least fix the
compilation error.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/msm_drv.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index e1b7e468c3dc..6f2affe5ccff 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -53,6 +53,9 @@
 #ifdef CONFIG_DRM_MSM_DSI_STAGING
 #include "dsi_display.h"
 #endif
+#ifdef CONFIG_DRM_MSM_DPU
+#include "dpu_dbg.h"
+#endif
 
 /*
  * MSM driver version:
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 03/10] drm/msm: Change driver name back to msm
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 01/10] drm/msm: Add displayport files to Makefile Sean Paul
  2018-02-21 15:18   ` [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-4-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv Sean Paul
                     ` (6 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

So userspace can find it again.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/msm_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 6f2affe5ccff..106678a164c2 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -1943,7 +1943,7 @@ static struct platform_driver msm_platform_driver = {
 	.probe      = msm_pdev_probe,
 	.remove     = msm_pdev_remove,
 	.driver     = {
-		.name   = "msm_drm",
+		.name   = "msm",
 		.of_match_table = dt_match,
 		.pm     = &msm_pm_ops,
 	},
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (2 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 03/10] drm/msm: Change driver name back to msm Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-5-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 05/10] drm/msm: Defer probe if display component not found Sean Paul
                     ` (5 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

Leftover bits from the initial removal of smmu.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/msm_drv.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 106678a164c2..9532321a0e4f 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -1966,9 +1966,6 @@ static int __init msm_drm_register(void)
 
 	DBG("init");
 	msm_mdp_register();
-#ifdef CONFIG_DRM_MSM_DPU
-	msm_smmu_driver_init();
-#endif
 	msm_dsi_register();
 	msm_edp_register();
 	msm_hdmi_register();
@@ -1985,9 +1982,6 @@ static void __exit msm_drm_unregister(void)
 	msm_edp_unregister();
 	msm_dsi_unregister();
 	msm_mdp_unregister();
-#ifdef CONFIG_DRM_MSM_DPU
-	msm_smmu_driver_cleanup();
-#endif
 }
 
 module_init(msm_drm_register);
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 05/10] drm/msm: Defer probe if display component not found
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (3 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-6-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 06/10] drm/msm: Fix deadlock calling msm_gem_new() Sean Paul
                     ` (4 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

The downstream driver relies on Makefile ordering of files to ensure
components probe in the right order. This took me entirely too long to
sort out, so don't rely on that any longer.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/msm_drv.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 9532321a0e4f..30c56b873fbe 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -1784,6 +1784,7 @@ static int add_display_components(struct device *dev,
 	if (of_device_is_compatible(dev->of_node, "qcom,dpu-kms")) {
 		struct device_node *np = dev->of_node;
 		unsigned int i;
+		bool found = false;
 
 #ifdef CONFIG_DRM_MSM_DSI_STAGING
 		for (i = 0; i < MAX_DSI_ACTIVE_DISPLAY; i++) {
@@ -1794,8 +1795,11 @@ static int add_display_components(struct device *dev,
 				component_match_add(dev, matchptr, compare_of,
 						node);
 				pr_debug("Added component = %s\n", name);
+				found = true;
 			}
 		}
+		if (!found)
+			return -EPROBE_DEFER;
 #endif
 
 		for (i = 0; ; i++) {
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 06/10] drm/msm: Fix deadlock calling msm_gem_new()
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (4 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 05/10] drm/msm: Defer probe if display component not found Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-7-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 07/10] drm/msm: Populate kms->irq for dpu Sean Paul
                     ` (3 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

msm_gem_new() acquires the struct_mutex, so surrounding this call with
locks causes deadlocks all day long.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
index fc2efec6360b..bb4547748ce9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
@@ -601,10 +601,8 @@ static struct dpu_reg_dma_buffer *alloc_reg_dma_buf_v1(u32 size)
 	if (!dma_buf)
 		return ERR_PTR(-ENOMEM);
 
-	mutex_lock(&reg_dma->drm_dev->struct_mutex);
 	dma_buf->buf = msm_gem_new(reg_dma->drm_dev,
 				    rsize, MSM_BO_UNCACHED);
-	mutex_unlock(&reg_dma->drm_dev->struct_mutex);
 	if (IS_ERR_OR_NULL(dma_buf->buf)) {
 		rc = -EINVAL;
 		goto fail;
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 07/10] drm/msm: Populate kms->irq for dpu
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (5 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 06/10] drm/msm: Fix deadlock calling msm_gem_new() Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-8-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around Sean Paul
                     ` (2 subsequent siblings)
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

The irq wasn't actually getting installed b/c kms->irq was vacant. Fill
it in.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 24eb4683ae62..fb4de59d8ed1 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -2047,14 +2047,22 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 
 struct msm_kms *dpu_kms_init(struct drm_device *dev)
 {
+	struct platform_device *pdev = to_platform_device(dev->dev);
 	struct msm_drm_private *priv;
 	struct dpu_kms *dpu_kms;
+	int irq;
 
 	if (!dev || !dev->dev_private) {
 		DPU_ERROR("drm device node invalid\n");
 		return ERR_PTR(-EINVAL);
 	}
 
+	irq = platform_get_irq(pdev, 0);
+	if (irq < 0) {
+		DPU_ERROR("failed to get irq: %d\n", irq);
+		return irq;
+	}
+
 	priv = dev->dev_private;
 
 	dpu_kms = kzalloc(sizeof(*dpu_kms), GFP_KERNEL);
@@ -2065,6 +2073,7 @@ struct msm_kms *dpu_kms_init(struct drm_device *dev)
 
 	msm_kms_init(&dpu_kms->base, &kms_funcs);
 	dpu_kms->dev = dev;
+	dpu_kms->base.irq = irq;
 
 	return &dpu_kms->base;
 }
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (6 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 07/10] drm/msm: Populate kms->irq for dpu Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-9-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-21 15:18   ` [PATCH RESEND 09/10] drm/msm/dpu: Fix writeback compile macros Sean Paul
  2018-02-21 15:18   ` [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook Sean Paul
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

Adding missing pm_runtime references where appropriate.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 10 +++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index f1642d72469e..df6cbeb15cf5 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
 	/* disable clk & bw control until clk & bw properties are set */
 	cstate->bw_control = false;
 	cstate->bw_split_vote = false;
+	pm_runtime_put_sync(crtc->dev->dev);
 
 	mutex_unlock(&dpu_crtc->crtc_lock);
 }
@@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
 	DPU_EVT32_VERBOSE(DRMID(crtc));
 	dpu_crtc = to_dpu_crtc(crtc);
 
+	pm_runtime_get_sync(crtc->dev->dev);
+
 	drm_for_each_encoder(encoder, crtc->dev) {
 		if (encoder->crtc != crtc)
 			continue;
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index fb4de59d8ed1..b919c9a6a463 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -114,6 +114,7 @@ static int _dpu_danger_signal_status(struct seq_file *s,
 	priv = kms->dev->dev_private;
 	memset(&status, 0, sizeof(struct dpu_danger_safe_status));
 
+	pm_runtime_get_sync(kms->dev->dev);
 	dpu_power_resource_enable(&priv->phandle, kms->core_client, true);
 	if (danger_status) {
 		seq_puts(s, "\nDanger signal status:\n");
@@ -127,6 +128,7 @@ static int _dpu_danger_signal_status(struct seq_file *s,
 					&status);
 	}
 	dpu_power_resource_enable(&priv->phandle, kms->core_client, false);
+	pm_runtime_put_sync(kms->dev->dev);
 
 	seq_printf(s, "MDP     :  0x%x\n", status.mdp);
 
@@ -346,12 +348,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms *dpu_kms)
 
 static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
 {
+	pm_runtime_get_sync(crtc->dev->dev);
 	return dpu_crtc_vblank(crtc, true);
 }
 
 static void dpu_kms_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
 {
 	dpu_crtc_vblank(crtc, false);
+	pm_runtime_put_sync(crtc->dev->dev);
 }
 
 static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms *kms,
@@ -413,6 +417,7 @@ static void dpu_kms_prepare_commit(struct msm_kms *kms,
 	if (!dev || !dev->dev_private)
 		return;
 	priv = dev->dev_private;
+	pm_runtime_get_sync(dev->dev);
 	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, true);
 
 	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
@@ -471,6 +476,7 @@ static void dpu_kms_complete_commit(struct msm_kms *kms,
 	}
 
 	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, false);
+	pm_runtime_put_sync(dpu_kms->dev->dev);
 
 	DPU_EVT32_VERBOSE(DPU_EVTLOG_FUNC_EXIT);
 }
@@ -1896,7 +1902,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 		dpu_kms->core_client = NULL;
 		goto error;
 	}
-
+	pm_runtime_get_sync(dev->dev);
 	rc = dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
 		true);
 	if (rc) {
@@ -2030,6 +2036,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 			dpu_kms_handle_power_event, dpu_kms, "kms");
 
 	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, false);
+	pm_runtime_put_sync(dev->dev);
 
 	return 0;
 
@@ -2039,6 +2046,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
 perf_err:
 power_error:
 	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, false);
+	pm_runtime_put_sync(dev->dev);
 error:
 	_dpu_kms_hw_destroy(dpu_kms, platformdev);
 end:
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 09/10] drm/msm/dpu: Fix writeback compile macros
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (7 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
  2018-02-21 15:18   ` [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook Sean Paul
  9 siblings, 0 replies; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

From: Jeykumar Sankaran <jsanka@codeaurora.org>

The writeback config gates were too aggressive and blocked out all
encoder initialization. Reduce the scope of the gating to just exclude
writeback initialization

Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
[seanpaul fixed commit msg and reduced to one block inside the function]
Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 6f1688786838..3d168fa09f3f 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -3441,7 +3441,6 @@ static void dpu_encoder_early_unregister(struct drm_encoder *encoder)
 	_dpu_encoder_destroy_debugfs(encoder);
 }
 
-#ifdef CONFIG_DRM_MSM_WRITEBACK
 static int dpu_encoder_virt_add_phys_encs(
 		u32 display_caps,
 		struct dpu_encoder_virt *dpu_enc,
@@ -3494,6 +3493,7 @@ static int dpu_encoder_virt_add_phys_encs(
 static int dpu_encoder_virt_add_phys_enc_wb(struct dpu_encoder_virt *dpu_enc,
 		struct dpu_enc_phys_init_params *params)
 {
+#ifdef CONFIG_DRM_MSM_WRITEBACK
 	struct dpu_encoder_phys *enc = NULL;
 
 	if (!dpu_enc) {
@@ -3519,10 +3519,9 @@ static int dpu_encoder_virt_add_phys_enc_wb(struct dpu_encoder_virt *dpu_enc,
 
 	dpu_enc->phys_encs[dpu_enc->num_phys_encs] = enc;
 	++dpu_enc->num_phys_encs;
-
+#endif
 	return 0;
 }
-#endif
 
 static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 				 struct dpu_kms *dpu_kms,
@@ -3625,7 +3624,6 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 			}
 		}
 
-#ifdef CONFIG_DRM_MSM_WRITEBACK
 		if (!ret) {
 			if (intf_type == INTF_WB)
 				ret = dpu_encoder_virt_add_phys_enc_wb(dpu_enc,
@@ -3639,7 +3637,6 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc,
 				DPU_ERROR_ENC(dpu_enc,
 						"failed to add phys encs\n");
 		}
-#endif
 	}
 
 	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook
       [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
                     ` (8 preceding siblings ...)
  2018-02-21 15:18   ` [PATCH RESEND 09/10] drm/msm/dpu: Fix writeback compile macros Sean Paul
@ 2018-02-21 15:18   ` Sean Paul
       [not found]     ` <20180221151838.224718-11-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  9 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-02-21 15:18 UTC (permalink / raw)
  To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
  Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ, robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

Somehow this got lost, put it back. We might want to re-evaluate whether
this is actually necessary, but for now let's actually use the thing.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---
 drivers/gpu/drm/msm/msm_drv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 30c56b873fbe..eda4a2340f93 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -119,7 +119,7 @@ int msm_atomic_check(struct drm_device *dev,
 static const struct drm_mode_config_funcs mode_config_funcs = {
 	.fb_create = msm_framebuffer_create,
 	.output_poll_changed = msm_fb_output_poll_changed,
-	.atomic_check = drm_atomic_helper_check,
+	.atomic_check = msm_atomic_check,
 	.atomic_commit = msm_atomic_commit,
 	.atomic_state_alloc = msm_atomic_state_alloc,
 	.atomic_state_clear = msm_atomic_state_clear,
-- 
2.16.1.291.g4437f3f132-goog

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

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook
       [not found]     ` <20180221151838.224718-11-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-02-22 20:08       ` Rob Clark
       [not found]         ` <CAF6AEGswWCtmdCi_Etg8V2Ty9pr1=veHnd8s7iuE4Ot8SB8Ppw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  2018-03-09  0:15       ` Jeykumar Sankaran
  1 sibling, 1 reply; 28+ messages in thread
From: Rob Clark @ 2018-02-22 20:08 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm, Kristian H. Kristensen, freedreno, Jeykumar Sankaran

On Wed, Feb 21, 2018 at 10:18 AM, Sean Paul <seanpaul@chromium.org> wrote:
> Somehow this got lost, put it back. We might want to re-evaluate whether
> this is actually necessary, but for now let's actually use the thing.
>
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

we might need this atm, although I'd prefer trying to move back to
original atomic check/commit/etc to start with.  Personally I'd rather
be moving in the direction of using the generic helpers (only reason
it doesn't now is they didn't exist when I did initial atomic
conversion, and no one has gotten around to this cleanup yet).

If the kthread-per-crtc scheme ends up being useful, it should
probably be done in the atomic-helpers rather than in-driver, to
ensure more consistent behavior (and bug-fixes) across drivers..

BR,
-R


> ---
>  drivers/gpu/drm/msm/msm_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 30c56b873fbe..eda4a2340f93 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -119,7 +119,7 @@ int msm_atomic_check(struct drm_device *dev,
>  static const struct drm_mode_config_funcs mode_config_funcs = {
>         .fb_create = msm_framebuffer_create,
>         .output_poll_changed = msm_fb_output_poll_changed,
> -       .atomic_check = drm_atomic_helper_check,
> +       .atomic_check = msm_atomic_check,
>         .atomic_commit = msm_atomic_commit,
>         .atomic_state_alloc = msm_atomic_state_alloc,
>         .atomic_state_clear = msm_atomic_state_clear,
> --
> 2.16.1.291.g4437f3f132-goog
>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook
       [not found]         ` <CAF6AEGswWCtmdCi_Etg8V2Ty9pr1=veHnd8s7iuE4Ot8SB8Ppw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-22 21:01           ` Sean Paul
  0 siblings, 0 replies; 28+ messages in thread
From: Sean Paul @ 2018-02-22 21:01 UTC (permalink / raw)
  To: Rob Clark
  Cc: freedreno, Kristian H. Kristensen, Sean Paul, Jeykumar Sankaran,
	linux-arm-msm

On Thu, Feb 22, 2018 at 03:08:55PM -0500, Rob Clark wrote:
> On Wed, Feb 21, 2018 at 10:18 AM, Sean Paul <seanpaul@chromium.org> wrote:
> > Somehow this got lost, put it back. We might want to re-evaluate whether
> > this is actually necessary, but for now let's actually use the thing.
> >
> > Signed-off-by: Sean Paul <seanpaul@chromium.org>
> 
> we might need this atm, although I'd prefer trying to move back to
> original atomic check/commit/etc to start with.  Personally I'd rather
> be moving in the direction of using the generic helpers (only reason
> it doesn't now is they didn't exist when I did initial atomic
> conversion, and no one has gotten around to this cleanup yet).

I suspect we can get rid of it. iirc, the dpu check didn't do anything
interesting yet. I didn't want to rip it all out yet, but I'll add it to the
trello and revisit once it bubbles up to the top of the stack (when I go through
the msm core changes).

Sean

> 
> If the kthread-per-crtc scheme ends up being useful, it should
> probably be done in the atomic-helpers rather than in-driver, to
> ensure more consistent behavior (and bug-fixes) across drivers..
> 
> BR,
> -R
> 
> 
> > ---
> >  drivers/gpu/drm/msm/msm_drv.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> > index 30c56b873fbe..eda4a2340f93 100644
> > --- a/drivers/gpu/drm/msm/msm_drv.c
> > +++ b/drivers/gpu/drm/msm/msm_drv.c
> > @@ -119,7 +119,7 @@ int msm_atomic_check(struct drm_device *dev,
> >  static const struct drm_mode_config_funcs mode_config_funcs = {
> >         .fb_create = msm_framebuffer_create,
> >         .output_poll_changed = msm_fb_output_poll_changed,
> > -       .atomic_check = drm_atomic_helper_check,
> > +       .atomic_check = msm_atomic_check,
> >         .atomic_commit = msm_atomic_commit,
> >         .atomic_state_alloc = msm_atomic_state_alloc,
> >         .atomic_state_clear = msm_atomic_state_clear,
> > --
> > 2.16.1.291.g4437f3f132-goog
> >
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 01/10] drm/msm: Add displayport files to Makefile
       [not found]     ` <20180221151838.224718-2-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:01       ` Jeykumar Sankaran
  0 siblings, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:01 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> Still behind a config flag, and ymmv when trying to build them, but
> they're present at least.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/Makefile | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/Makefile 
> b/drivers/gpu/drm/msm/Makefile
> index d9014441d022..fcd85ae28d66 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -108,6 +108,20 @@ msm-y := \
>  	msm_ringbuffer.o \
>  	msm_submitqueue.o
> 
> +msm-$(CONFIG_DRM_MSM_DP)+= dp/dp_usbpd.o \
> +	dp/dp_parser.o \
> +	dp/dp_power.o \
> +	dp/dp_catalog.o \
> +	dp/dp_aux.o \
> +	dp/dp_panel.o \
> +	dp/dp_link.o \
> +	dp/dp_ctrl.o \
> +	dp/dp_audio.o \
> +	dp/dp_debug.o \
> +	dp/dp_display.o \
> +	dp/dp_drm.o \
> +	dp/dp_hdcp2p2.o
> +
>  msm_wb-$(CONFIG_DRM_MSM_WRITEBACK) += disp/dpu1/dpu_wb.o \
>  				      disp/dpu1/dpu_encoder_phys_wb.o

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 03/10] drm/msm: Change driver name back to msm
       [not found]     ` <20180221151838.224718-4-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:02       ` Jeykumar Sankaran
  0 siblings, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:02 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> So userspace can find it again.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index 6f2affe5ccff..106678a164c2 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1943,7 +1943,7 @@ static struct platform_driver msm_platform_driver 
> = {
>  	.probe      = msm_pdev_probe,
>  	.remove     = msm_pdev_remove,
>  	.driver     = {
> -		.name   = "msm_drm",
> +		.name   = "msm",
>  		.of_match_table = dt_match,
>  		.pm     = &msm_pm_ops,
>  	},

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c
       [not found]     ` <20180221151838.224718-3-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:03       ` Jeykumar Sankaran
  2018-03-08 22:06       ` Jeykumar Sankaran
  1 sibling, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:03 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> We'll need to clean up these conditionals further, but at least fix the
> compilation error.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed by Jeykumar Sankaran

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index e1b7e468c3dc..6f2affe5ccff 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -53,6 +53,9 @@
>  #ifdef CONFIG_DRM_MSM_DSI_STAGING
>  #include "dsi_display.h"
>  #endif
> +#ifdef CONFIG_DRM_MSM_DPU
> +#include "dpu_dbg.h"
> +#endif
> 
>  /*
>   * MSM driver version:

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv
       [not found]     ` <20180221151838.224718-5-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:04       ` Jeykumar Sankaran
  2018-03-08 22:07       ` Jeykumar Sankaran
  1 sibling, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:04 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> Leftover bits from the initial removal of smmu.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed by Jeykumar Sankaran

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index 106678a164c2..9532321a0e4f 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1966,9 +1966,6 @@ static int __init msm_drm_register(void)
> 
>  	DBG("init");
>  	msm_mdp_register();
> -#ifdef CONFIG_DRM_MSM_DPU
> -	msm_smmu_driver_init();
> -#endif
>  	msm_dsi_register();
>  	msm_edp_register();
>  	msm_hdmi_register();
> @@ -1985,9 +1982,6 @@ static void __exit msm_drm_unregister(void)
>  	msm_edp_unregister();
>  	msm_dsi_unregister();
>  	msm_mdp_unregister();
> -#ifdef CONFIG_DRM_MSM_DPU
> -	msm_smmu_driver_cleanup();
> -#endif
>  }
> 
>  module_init(msm_drm_register);

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c
       [not found]     ` <20180221151838.224718-3-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-03-08 22:03       ` Jeykumar Sankaran
@ 2018-03-08 22:06       ` Jeykumar Sankaran
  1 sibling, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:06 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> We'll need to clean up these conditionals further, but at least fix the
> compilation error.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index e1b7e468c3dc..6f2affe5ccff 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -53,6 +53,9 @@
>  #ifdef CONFIG_DRM_MSM_DSI_STAGING
>  #include "dsi_display.h"
>  #endif
> +#ifdef CONFIG_DRM_MSM_DPU
> +#include "dpu_dbg.h"
> +#endif
> 
>  /*
>   * MSM driver version:

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv
       [not found]     ` <20180221151838.224718-5-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-03-08 22:04       ` Jeykumar Sankaran
@ 2018-03-08 22:07       ` Jeykumar Sankaran
  1 sibling, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:07 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> Leftover bits from the initial removal of smmu.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index 106678a164c2..9532321a0e4f 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1966,9 +1966,6 @@ static int __init msm_drm_register(void)
> 
>  	DBG("init");
>  	msm_mdp_register();
> -#ifdef CONFIG_DRM_MSM_DPU
> -	msm_smmu_driver_init();
> -#endif
>  	msm_dsi_register();
>  	msm_edp_register();
>  	msm_hdmi_register();
> @@ -1985,9 +1982,6 @@ static void __exit msm_drm_unregister(void)
>  	msm_edp_unregister();
>  	msm_dsi_unregister();
>  	msm_mdp_unregister();
> -#ifdef CONFIG_DRM_MSM_DPU
> -	msm_smmu_driver_cleanup();
> -#endif
>  }
> 
>  module_init(msm_drm_register);

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 05/10] drm/msm: Defer probe if display component not found
       [not found]     ` <20180221151838.224718-6-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:09       ` Jeykumar Sankaran
  0 siblings, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:09 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> The downstream driver relies on Makefile ordering of files to ensure
> components probe in the right order. This took me entirely too long to
> sort out, so don't rely on that any longer.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index 9532321a0e4f..30c56b873fbe 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1784,6 +1784,7 @@ static int add_display_components(struct device 
> *dev,
>  	if (of_device_is_compatible(dev->of_node, "qcom,dpu-kms")) {
>  		struct device_node *np = dev->of_node;
>  		unsigned int i;
> +		bool found = false;
> 
>  #ifdef CONFIG_DRM_MSM_DSI_STAGING
>  		for (i = 0; i < MAX_DSI_ACTIVE_DISPLAY; i++) {
> @@ -1794,8 +1795,11 @@ static int add_display_components(struct device 
> *dev,
>  				component_match_add(dev, matchptr, compare_of,
>  						node);
>  				pr_debug("Added component = %s\n", name);
> +				found = true;
>  			}
>  		}
> +		if (!found)
> +			return -EPROBE_DEFER;
>  #endif
> 
>  		for (i = 0; ; i++) {

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 06/10] drm/msm: Fix deadlock calling msm_gem_new()
       [not found]     ` <20180221151838.224718-7-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:21       ` Jeykumar Sankaran
  0 siblings, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:21 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> msm_gem_new() acquires the struct_mutex, so surrounding this call with
> locks causes deadlocks all day long.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
> index fc2efec6360b..bb4547748ce9 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_reg_dma_v1.c
> @@ -601,10 +601,8 @@ static struct dpu_reg_dma_buffer
> *alloc_reg_dma_buf_v1(u32 size)
>  	if (!dma_buf)
>  		return ERR_PTR(-ENOMEM);
> 
> -	mutex_lock(&reg_dma->drm_dev->struct_mutex);
>  	dma_buf->buf = msm_gem_new(reg_dma->drm_dev,
>  				    rsize, MSM_BO_UNCACHED);
> -	mutex_unlock(&reg_dma->drm_dev->struct_mutex);
>  	if (IS_ERR_OR_NULL(dma_buf->buf)) {
>  		rc = -EINVAL;
>  		goto fail;

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 07/10] drm/msm: Populate kms->irq for dpu
       [not found]     ` <20180221151838.224718-8-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-08 22:36       ` Jeykumar Sankaran
  0 siblings, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-08 22:36 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> The irq wasn't actually getting installed b/c kms->irq was vacant. Fill
> it in.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index 24eb4683ae62..fb4de59d8ed1 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -2047,14 +2047,22 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
> 
>  struct msm_kms *dpu_kms_init(struct drm_device *dev)
>  {
> +	struct platform_device *pdev = to_platform_device(dev->dev);
>  	struct msm_drm_private *priv;
>  	struct dpu_kms *dpu_kms;
> +	int irq;
> 
>  	if (!dev || !dev->dev_private) {
>  		DPU_ERROR("drm device node invalid\n");
>  		return ERR_PTR(-EINVAL);
>  	}
> 
> +	irq = platform_get_irq(pdev, 0);
> +	if (irq < 0) {
> +		DPU_ERROR("failed to get irq: %d\n", irq);
> +		return irq;
> +	}
> +
>  	priv = dev->dev_private;
> 
>  	dpu_kms = kzalloc(sizeof(*dpu_kms), GFP_KERNEL);
> @@ -2065,6 +2073,7 @@ struct msm_kms *dpu_kms_init(struct drm_device 
> *dev)
> 
>  	msm_kms_init(&dpu_kms->base, &kms_funcs);
>  	dpu_kms->dev = dev;
> +	dpu_kms->base.irq = irq;

msm_drv.c uses
> 
>  	return &dpu_kms->base;
>  }

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around
       [not found]     ` <20180221151838.224718-9-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-09  0:14       ` Jeykumar Sankaran
       [not found]         ` <e953b0d8daa63e5cd2f65259b1c80a27-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
  0 siblings, 1 reply; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-09  0:14 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> Adding missing pm_runtime references where appropriate.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 10 +++++++++-
>  2 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index f1642d72469e..df6cbeb15cf5 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc 
> *crtc)
>  	/* disable clk & bw control until clk & bw properties are set */
>  	cstate->bw_control = false;
>  	cstate->bw_split_vote = false;
> +	pm_runtime_put_sync(crtc->dev->dev);
> 
>  	mutex_unlock(&dpu_crtc->crtc_lock);
>  }
> @@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc 
> *crtc,
>  	DPU_EVT32_VERBOSE(DRMID(crtc));
>  	dpu_crtc = to_dpu_crtc(crtc);
> 
> +	pm_runtime_get_sync(crtc->dev->dev);
> +
>  	drm_for_each_encoder(encoder, crtc->dev) {
>  		if (encoder->crtc != crtc)
>  			continue;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index fb4de59d8ed1..b919c9a6a463 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -114,6 +114,7 @@ static int _dpu_danger_signal_status(struct 
> seq_file *s,
>  	priv = kms->dev->dev_private;
>  	memset(&status, 0, sizeof(struct dpu_danger_safe_status));
> 
> +	pm_runtime_get_sync(kms->dev->dev);
>  	dpu_power_resource_enable(&priv->phandle, kms->core_client, true);
>  	if (danger_status) {
>  		seq_puts(s, "\nDanger signal status:\n");
> @@ -127,6 +128,7 @@ static int _dpu_danger_signal_status(struct 
> seq_file *s,
>  					&status);
>  	}
>  	dpu_power_resource_enable(&priv->phandle, kms->core_client, false);
> +	pm_runtime_put_sync(kms->dev->dev);
> 
>  	seq_printf(s, "MDP     :  0x%x\n", status.mdp);
> 
> @@ -346,12 +348,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms 
> *dpu_kms)
> 
>  static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc 
> *crtc)
>  {
> +	pm_runtime_get_sync(crtc->dev->dev);
>  	return dpu_crtc_vblank(crtc, true);
>  }
> 
>  static void dpu_kms_disable_vblank(struct msm_kms *kms, struct 
> drm_crtc *crtc)
>  {
>  	dpu_crtc_vblank(crtc, false);
> +	pm_runtime_put_sync(crtc->dev->dev);
>  }
> 
>  static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms 
> *kms,
> @@ -413,6 +417,7 @@ static void dpu_kms_prepare_commit(struct msm_kms 
> *kms,
>  	if (!dev || !dev->dev_private)
>  		return;
>  	priv = dev->dev_private;
> +	pm_runtime_get_sync(dev->dev);

CONFIG_DEBUG_FS is not enabled yet. Do we need this change here? If yes, 
we need
to add pm_runtime calls in other files as well e.g: 
sde_plane_danger_read/write in dpu_plane.c.

>  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, 
> true);
> 
>  	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
> @@ -471,6 +476,7 @@ static void dpu_kms_complete_commit(struct msm_kms 
> *kms,
>  	}
> 
>  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, 
> false);
> +	pm_runtime_put_sync(dpu_kms->dev->dev);
> 
>  	DPU_EVT32_VERBOSE(DPU_EVTLOG_FUNC_EXIT);
>  }
> @@ -1896,7 +1902,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>  		dpu_kms->core_client = NULL;
>  		goto error;
>  	}
> -
> +	pm_runtime_get_sync(dev->dev);
>  	rc = dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
>  		true);
>  	if (rc) {
> @@ -2030,6 +2036,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>  			dpu_kms_handle_power_event, dpu_kms, "kms");
> 
>  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, 
> false);
> +	pm_runtime_put_sync(dev->dev);
> 
>  	return 0;
> 
> @@ -2039,6 +2046,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
>  perf_err:
>  power_error:
>  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, 
> false);
> +	pm_runtime_put_sync(dev->dev);
>  error:
>  	_dpu_kms_hw_destroy(dpu_kms, platformdev);
>  end:

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook
       [not found]     ` <20180221151838.224718-11-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  2018-02-22 20:08       ` Rob Clark
@ 2018-03-09  0:15       ` Jeykumar Sankaran
  1 sibling, 0 replies; 28+ messages in thread
From: Jeykumar Sankaran @ 2018-03-09  0:15 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-02-21 07:18, Sean Paul wrote:
> Somehow this got lost, put it back. We might want to re-evaluate 
> whether
> this is actually necessary, but for now let's actually use the thing.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>

Reviewed-by: Jeykumar Sankaran <jsanka@codeaurora.org>

> ---
>  drivers/gpu/drm/msm/msm_drv.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/msm/msm_drv.c 
> b/drivers/gpu/drm/msm/msm_drv.c
> index 30c56b873fbe..eda4a2340f93 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -119,7 +119,7 @@ int msm_atomic_check(struct drm_device *dev,
>  static const struct drm_mode_config_funcs mode_config_funcs = {
>  	.fb_create = msm_framebuffer_create,
>  	.output_poll_changed = msm_fb_output_poll_changed,
> -	.atomic_check = drm_atomic_helper_check,
> +	.atomic_check = msm_atomic_check,
>  	.atomic_commit = msm_atomic_commit,
>  	.atomic_state_alloc = msm_atomic_state_alloc,
>  	.atomic_state_clear = msm_atomic_state_clear,

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

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around
       [not found]         ` <e953b0d8daa63e5cd2f65259b1c80a27-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-03-12 20:06           ` Sean Paul
  2018-03-14 15:07             ` [DPU PATCH] drm/msm: Add pm_runtime_get/put calls to dpu Sean Paul
  0 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-03-12 20:06 UTC (permalink / raw)
  To: Jeykumar Sankaran
  Cc: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w, Sean Paul,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw,
	linux-arm-msm-u79uwXL29TY76Z2rM5mHXA

On Thu, Mar 08, 2018 at 04:14:38PM -0800, Jeykumar Sankaran wrote:
> On 2018-02-21 07:18, Sean Paul wrote:
> > Adding missing pm_runtime references where appropriate.
> > 
> > Signed-off-by: Sean Paul <seanpaul@chromium.org>
> > ---
> >  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
> >  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 10 +++++++++-
> >  2 files changed, 12 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > index f1642d72469e..df6cbeb15cf5 100644
> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> > @@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc
> > *crtc)
> >  	/* disable clk & bw control until clk & bw properties are set */
> >  	cstate->bw_control = false;
> >  	cstate->bw_split_vote = false;
> > +	pm_runtime_put_sync(crtc->dev->dev);
> > 
> >  	mutex_unlock(&dpu_crtc->crtc_lock);
> >  }
> > @@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
> >  	DPU_EVT32_VERBOSE(DRMID(crtc));
> >  	dpu_crtc = to_dpu_crtc(crtc);
> > 
> > +	pm_runtime_get_sync(crtc->dev->dev);
> > +
> >  	drm_for_each_encoder(encoder, crtc->dev) {
> >  		if (encoder->crtc != crtc)
> >  			continue;
> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > index fb4de59d8ed1..b919c9a6a463 100644
> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > @@ -114,6 +114,7 @@ static int _dpu_danger_signal_status(struct seq_file
> > *s,
> >  	priv = kms->dev->dev_private;
> >  	memset(&status, 0, sizeof(struct dpu_danger_safe_status));
> > 
> > +	pm_runtime_get_sync(kms->dev->dev);
> >  	dpu_power_resource_enable(&priv->phandle, kms->core_client, true);
> >  	if (danger_status) {
> >  		seq_puts(s, "\nDanger signal status:\n");
> > @@ -127,6 +128,7 @@ static int _dpu_danger_signal_status(struct seq_file
> > *s,
> >  					&status);
> >  	}
> >  	dpu_power_resource_enable(&priv->phandle, kms->core_client, false);
> > +	pm_runtime_put_sync(kms->dev->dev);
> > 
> >  	seq_printf(s, "MDP     :  0x%x\n", status.mdp);
> > 
> > @@ -346,12 +348,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms
> > *dpu_kms)
> > 
> >  static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc
> > *crtc)
> >  {
> > +	pm_runtime_get_sync(crtc->dev->dev);
> >  	return dpu_crtc_vblank(crtc, true);
> >  }
> > 
> >  static void dpu_kms_disable_vblank(struct msm_kms *kms, struct drm_crtc
> > *crtc)
> >  {
> >  	dpu_crtc_vblank(crtc, false);
> > +	pm_runtime_put_sync(crtc->dev->dev);
> >  }
> > 
> >  static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms
> > *kms,
> > @@ -413,6 +417,7 @@ static void dpu_kms_prepare_commit(struct msm_kms
> > *kms,
> >  	if (!dev || !dev->dev_private)
> >  		return;
> >  	priv = dev->dev_private;
> > +	pm_runtime_get_sync(dev->dev);
> 
> CONFIG_DEBUG_FS is not enabled yet. Do we need this change here? If yes, we
> need
> to add pm_runtime calls in other files as well e.g:
> sde_plane_danger_read/write in dpu_plane.c.

Hmm, yeah good catch. Aside from the question of debugfs (which I think we
should probably do a deep review of what's being exposed), perhaps we should
move the pm_runtime_(get|put)_sync calls in dpu_power_resource_enable, then we
don't need to worry about adding the calls everywhere.

Thoughts?

Sean


> 
> >  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client, true);
> > 
> >  	list_for_each_entry(encoder, &dev->mode_config.encoder_list, head)
> > @@ -471,6 +476,7 @@ static void dpu_kms_complete_commit(struct msm_kms
> > *kms,
> >  	}
> > 
> >  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
> > false);
> > +	pm_runtime_put_sync(dpu_kms->dev->dev);
> > 
> >  	DPU_EVT32_VERBOSE(DPU_EVTLOG_FUNC_EXIT);
> >  }
> > @@ -1896,7 +1902,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
> >  		dpu_kms->core_client = NULL;
> >  		goto error;
> >  	}
> > -
> > +	pm_runtime_get_sync(dev->dev);
> >  	rc = dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
> >  		true);
> >  	if (rc) {
> > @@ -2030,6 +2036,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
> >  			dpu_kms_handle_power_event, dpu_kms, "kms");
> > 
> >  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
> > false);
> > +	pm_runtime_put_sync(dev->dev);
> > 
> >  	return 0;
> > 
> > @@ -2039,6 +2046,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
> >  perf_err:
> >  power_error:
> >  	dpu_power_resource_enable(&priv->phandle, dpu_kms->core_client,
> > false);
> > +	pm_runtime_put_sync(dev->dev);
> >  error:
> >  	_dpu_kms_hw_destroy(dpu_kms, platformdev);
> >  end:
> 
> -- 
> Jeykumar S

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 28+ messages in thread

* [DPU PATCH] drm/msm: Add pm_runtime_get/put calls to dpu
  2018-03-12 20:06           ` Sean Paul
@ 2018-03-14 15:07             ` Sean Paul
       [not found]               ` <20180314150718.254814-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
  0 siblings, 1 reply; 28+ messages in thread
From: Sean Paul @ 2018-03-14 15:07 UTC (permalink / raw)
  To: freedreno, linux-arm-msm, dri-devel; +Cc: hoegsberg, abhinavk

Ensure that pm_runtime is properly referenced/unreferenced when we need
it.

Signed-off-by: Sean Paul <seanpaul@chromium.org>
---

Didn't get a response to my suggestion, so wrote the patch anyways.
Thoughts?


 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  |  2 ++
 drivers/gpu/drm/msm/dpu_power_handle.c   | 12 ++++++++----
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index f1642d72469e..df6cbeb15cf5 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
 	/* disable clk & bw control until clk & bw properties are set */
 	cstate->bw_control = false;
 	cstate->bw_split_vote = false;
+	pm_runtime_put_sync(crtc->dev->dev);
 
 	mutex_unlock(&dpu_crtc->crtc_lock);
 }
@@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
 	DPU_EVT32_VERBOSE(DRMID(crtc));
 	dpu_crtc = to_dpu_crtc(crtc);
 
+	pm_runtime_get_sync(crtc->dev->dev);
+
 	drm_for_each_encoder(encoder, crtc->dev) {
 		if (encoder->crtc != crtc)
 			continue;
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index fb4de59d8ed1..90608a303aec 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -346,12 +346,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms *dpu_kms)
 
 static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
 {
+	pm_runtime_get_sync(crtc->dev->dev);
 	return dpu_crtc_vblank(crtc, true);
 }
 
 static void dpu_kms_disable_vblank(struct msm_kms *kms, struct drm_crtc *crtc)
 {
 	dpu_crtc_vblank(crtc, false);
+	pm_runtime_put_sync(crtc->dev->dev);
 }
 
 static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms *kms,
diff --git a/drivers/gpu/drm/msm/dpu_power_handle.c b/drivers/gpu/drm/msm/dpu_power_handle.c
index 477ea9f2778c..a52be861117f 100644
--- a/drivers/gpu/drm/msm/dpu_power_handle.c
+++ b/drivers/gpu/drm/msm/dpu_power_handle.c
@@ -18,6 +18,7 @@
 #include <linux/of.h>
 #include <linux/string.h>
 #include <linux/of_address.h>
+#include <linux/pm_runtime.h>
 #include <linux/slab.h>
 #include <linux/mutex.h>
 #include <linux/of_platform.h>
@@ -857,6 +858,9 @@ int dpu_power_resource_enable(struct dpu_power_handle *phandle,
 		return -EINVAL;
 	}
 
+	if (enable)
+		pm_runtime_get_sync(phandle->dev);
+
 	mp = &phandle->mp;
 
 	mutex_lock(&phandle->phandle_lock);
@@ -963,10 +967,6 @@ int dpu_power_resource_enable(struct dpu_power_handle *phandle,
 				DPU_POWER_EVENT_POST_DISABLE);
 	}
 
-end:
-	mutex_unlock(&phandle->phandle_lock);
-	return rc;
-
 clk_err:
 	dpu_power_rsc_update(phandle, false);
 rsc_err:
@@ -979,7 +979,11 @@ int dpu_power_resource_enable(struct dpu_power_handle *phandle,
 		dpu_power_data_bus_update(&phandle->data_bus_handle[i], 0);
 data_bus_hdl_err:
 	phandle->current_usecase_ndx = prev_usecase_ndx;
+
+end:
 	mutex_unlock(&phandle->phandle_lock);
+	if (!enable)
+		pm_runtime_put_sync(phandle->dev);
 	return rc;
 }
 
-- 
Sean Paul, Software Engineer, Google / Chromium OS

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 28+ messages in thread

* Re: [DPU PATCH] drm/msm: Add pm_runtime_get/put calls to dpu
       [not found]               ` <20180314150718.254814-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2018-03-15 14:42                 ` skolluku-sgV2jX0FEOL9JmXXK+q4OQ
       [not found]                   ` <94e53348399f60ace8da8281acdaaef0-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
  0 siblings, 1 reply; 28+ messages in thread
From: skolluku-sgV2jX0FEOL9JmXXK+q4OQ @ 2018-03-15 14:42 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-owner-u79uwXL29TY76Z2rM5mHXA,
	robdclark-Re5JQEeQqe8AvxtiuMwx3w,
	abhinavk-sgV2jX0FEOL9JmXXK+q4OQ, jsanka-sgV2jX0FEOL9JmXXK+q4OQ,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw

On 2018-03-14 20:37, Sean Paul wrote:
> Ensure that pm_runtime is properly referenced/unreferenced when we need
> it.
> 
> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> ---
> 
> Didn't get a response to my suggestion, so wrote the patch anyways.
> Thoughts?
> 

This patch looks fine for now.
The plan is to deprecate the downstream power_handler APIs going forward 
and rely entirely on runtime pm APIs.

Currently, the pm_runtime_get/put API is used to control the MDSS main 
power supply (which is defined as a generic power domain). The idea is 
to extend the runtime_pm suspend/resume handlers to manage clock and bus 
resources so that the power_handler code can be trimmed off.

Thanks,
Sravanthi

> 
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  |  2 ++
>  drivers/gpu/drm/msm/dpu_power_handle.c   | 12 ++++++++----
>  3 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index f1642d72469e..df6cbeb15cf5 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc 
> *crtc)
>  	/* disable clk & bw control until clk & bw properties are set */
>  	cstate->bw_control = false;
>  	cstate->bw_split_vote = false;
> +	pm_runtime_put_sync(crtc->dev->dev);
> 
>  	mutex_unlock(&dpu_crtc->crtc_lock);
>  }
> @@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc 
> *crtc,
>  	DPU_EVT32_VERBOSE(DRMID(crtc));
>  	dpu_crtc = to_dpu_crtc(crtc);
> 
> +	pm_runtime_get_sync(crtc->dev->dev);
> +
>  	drm_for_each_encoder(encoder, crtc->dev) {
>  		if (encoder->crtc != crtc)
>  			continue;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index fb4de59d8ed1..90608a303aec 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -346,12 +346,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms 
> *dpu_kms)
> 
>  static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc 
> *crtc)
>  {
> +	pm_runtime_get_sync(crtc->dev->dev);
>  	return dpu_crtc_vblank(crtc, true);
>  }
> 
>  static void dpu_kms_disable_vblank(struct msm_kms *kms, struct 
> drm_crtc *crtc)
>  {
>  	dpu_crtc_vblank(crtc, false);
> +	pm_runtime_put_sync(crtc->dev->dev);
>  }
> 
>  static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms 
> *kms,
> diff --git a/drivers/gpu/drm/msm/dpu_power_handle.c
> b/drivers/gpu/drm/msm/dpu_power_handle.c
> index 477ea9f2778c..a52be861117f 100644
> --- a/drivers/gpu/drm/msm/dpu_power_handle.c
> +++ b/drivers/gpu/drm/msm/dpu_power_handle.c
> @@ -18,6 +18,7 @@
>  #include <linux/of.h>
>  #include <linux/string.h>
>  #include <linux/of_address.h>
> +#include <linux/pm_runtime.h>
>  #include <linux/slab.h>
>  #include <linux/mutex.h>
>  #include <linux/of_platform.h>
> @@ -857,6 +858,9 @@ int dpu_power_resource_enable(struct
> dpu_power_handle *phandle,
>  		return -EINVAL;
>  	}
> 
> +	if (enable)
> +		pm_runtime_get_sync(phandle->dev);
> +
>  	mp = &phandle->mp;
> 
>  	mutex_lock(&phandle->phandle_lock);
> @@ -963,10 +967,6 @@ int dpu_power_resource_enable(struct
> dpu_power_handle *phandle,
>  				DPU_POWER_EVENT_POST_DISABLE);
>  	}
> 
> -end:
> -	mutex_unlock(&phandle->phandle_lock);
> -	return rc;
> -
>  clk_err:
>  	dpu_power_rsc_update(phandle, false);
>  rsc_err:
> @@ -979,7 +979,11 @@ int dpu_power_resource_enable(struct
> dpu_power_handle *phandle,
>  		dpu_power_data_bus_update(&phandle->data_bus_handle[i], 0);
>  data_bus_hdl_err:
>  	phandle->current_usecase_ndx = prev_usecase_ndx;
> +
> +end:
>  	mutex_unlock(&phandle->phandle_lock);
> +	if (!enable)
> +		pm_runtime_put_sync(phandle->dev);
>  	return rc;
>  }
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [DPU PATCH] drm/msm: Add pm_runtime_get/put calls to dpu
       [not found]                   ` <94e53348399f60ace8da8281acdaaef0-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
@ 2018-03-15 14:55                     ` skolluku-sgV2jX0FEOL9JmXXK+q4OQ
  0 siblings, 0 replies; 28+ messages in thread
From: skolluku-sgV2jX0FEOL9JmXXK+q4OQ @ 2018-03-15 14:55 UTC (permalink / raw)
  To: Sean Paul
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	abhinavk-sgV2jX0FEOL9JmXXK+q4OQ,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	hoegsberg-F7+t8E8rja9g9hUCZPvPmw,
	freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	linux-arm-msm-owner-u79uwXL29TY76Z2rM5mHXA

On 2018-03-15 20:12, skolluku@codeaurora.org wrote:
> On 2018-03-14 20:37, Sean Paul wrote:
>> Ensure that pm_runtime is properly referenced/unreferenced when we 
>> need
>> it.
>> 
>> Signed-off-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Sravanthi Kollukuduru <skolluku@codeaurora.org>
>> ---
>> 
>> Didn't get a response to my suggestion, so wrote the patch anyways.
>> Thoughts?
>> 
> 
> This patch looks fine for now.
> The plan is to deprecate the downstream power_handler APIs going
> forward and rely entirely on runtime pm APIs.
> 
> Currently, the pm_runtime_get/put API is used to control the MDSS main
> power supply (which is defined as a generic power domain). The idea is
> to extend the runtime_pm suspend/resume handlers to manage clock and
> bus resources so that the power_handler code can be trimmed off.
> 
> Thanks,
> Sravanthi
> 
>> 
>>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  3 +++
>>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  |  2 ++
>>  drivers/gpu/drm/msm/dpu_power_handle.c   | 12 ++++++++----
>>  3 files changed, 13 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> index f1642d72469e..df6cbeb15cf5 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
>> @@ -3497,6 +3497,7 @@ static void dpu_crtc_disable(struct drm_crtc 
>> *crtc)
>>  	/* disable clk & bw control until clk & bw properties are set */
>>  	cstate->bw_control = false;
>>  	cstate->bw_split_vote = false;
>> +	pm_runtime_put_sync(crtc->dev->dev);
>> 
>>  	mutex_unlock(&dpu_crtc->crtc_lock);
>>  }
>> @@ -3523,6 +3524,8 @@ static void dpu_crtc_enable(struct drm_crtc 
>> *crtc,
>>  	DPU_EVT32_VERBOSE(DRMID(crtc));
>>  	dpu_crtc = to_dpu_crtc(crtc);
>> 
>> +	pm_runtime_get_sync(crtc->dev->dev);
>> +
>>  	drm_for_each_encoder(encoder, crtc->dev) {
>>  		if (encoder->crtc != crtc)
>>  			continue;
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> index fb4de59d8ed1..90608a303aec 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
>> @@ -346,12 +346,14 @@ static void _dpu_debugfs_destroy(struct dpu_kms 
>> *dpu_kms)
>> 
>>  static int dpu_kms_enable_vblank(struct msm_kms *kms, struct drm_crtc 
>> *crtc)
>>  {
>> +	pm_runtime_get_sync(crtc->dev->dev);
>>  	return dpu_crtc_vblank(crtc, true);
>>  }
>> 
>>  static void dpu_kms_disable_vblank(struct msm_kms *kms, struct 
>> drm_crtc *crtc)
>>  {
>>  	dpu_crtc_vblank(crtc, false);
>> +	pm_runtime_put_sync(crtc->dev->dev);
>>  }
>> 
>>  static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms 
>> *kms,
>> diff --git a/drivers/gpu/drm/msm/dpu_power_handle.c
>> b/drivers/gpu/drm/msm/dpu_power_handle.c
>> index 477ea9f2778c..a52be861117f 100644
>> --- a/drivers/gpu/drm/msm/dpu_power_handle.c
>> +++ b/drivers/gpu/drm/msm/dpu_power_handle.c
>> @@ -18,6 +18,7 @@
>>  #include <linux/of.h>
>>  #include <linux/string.h>
>>  #include <linux/of_address.h>
>> +#include <linux/pm_runtime.h>
>>  #include <linux/slab.h>
>>  #include <linux/mutex.h>
>>  #include <linux/of_platform.h>
>> @@ -857,6 +858,9 @@ int dpu_power_resource_enable(struct
>> dpu_power_handle *phandle,
>>  		return -EINVAL;
>>  	}
>> 
>> +	if (enable)
>> +		pm_runtime_get_sync(phandle->dev);
>> +
>>  	mp = &phandle->mp;
>> 
>>  	mutex_lock(&phandle->phandle_lock);
>> @@ -963,10 +967,6 @@ int dpu_power_resource_enable(struct
>> dpu_power_handle *phandle,
>>  				DPU_POWER_EVENT_POST_DISABLE);
>>  	}
>> 
>> -end:
>> -	mutex_unlock(&phandle->phandle_lock);
>> -	return rc;
>> -
>>  clk_err:
>>  	dpu_power_rsc_update(phandle, false);
>>  rsc_err:
>> @@ -979,7 +979,11 @@ int dpu_power_resource_enable(struct
>> dpu_power_handle *phandle,
>>  		dpu_power_data_bus_update(&phandle->data_bus_handle[i], 0);
>>  data_bus_hdl_err:
>>  	phandle->current_usecase_ndx = prev_usecase_ndx;
>> +
>> +end:
>>  	mutex_unlock(&phandle->phandle_lock);
>> +	if (!enable)
>> +		pm_runtime_put_sync(phandle->dev);
>>  	return rc;
>>  }
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2018-03-15 14:55 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21 15:18 [PATCH RESEND 00/10] drm/msm: A handful of dpu fixes Sean Paul
     [not found] ` <20180221151838.224718-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-02-21 15:18   ` [PATCH RESEND 01/10] drm/msm: Add displayport files to Makefile Sean Paul
     [not found]     ` <20180221151838.224718-2-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:01       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 02/10] drm/msm: Include the dpu_dbg header in msm_drv.c Sean Paul
     [not found]     ` <20180221151838.224718-3-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:03       ` Jeykumar Sankaran
2018-03-08 22:06       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 03/10] drm/msm: Change driver name back to msm Sean Paul
     [not found]     ` <20180221151838.224718-4-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:02       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 04/10] drm/msm: Remove smmu driver init/cleanup from msm_drv Sean Paul
     [not found]     ` <20180221151838.224718-5-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:04       ` Jeykumar Sankaran
2018-03-08 22:07       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 05/10] drm/msm: Defer probe if display component not found Sean Paul
     [not found]     ` <20180221151838.224718-6-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:09       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 06/10] drm/msm: Fix deadlock calling msm_gem_new() Sean Paul
     [not found]     ` <20180221151838.224718-7-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:21       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 07/10] drm/msm: Populate kms->irq for dpu Sean Paul
     [not found]     ` <20180221151838.224718-8-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-08 22:36       ` Jeykumar Sankaran
2018-02-21 15:18   ` [PATCH RESEND 08/10] drm/msm: Sprinkle pm_runtime calls around Sean Paul
     [not found]     ` <20180221151838.224718-9-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-09  0:14       ` Jeykumar Sankaran
     [not found]         ` <e953b0d8daa63e5cd2f65259b1c80a27-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-12 20:06           ` Sean Paul
2018-03-14 15:07             ` [DPU PATCH] drm/msm: Add pm_runtime_get/put calls to dpu Sean Paul
     [not found]               ` <20180314150718.254814-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-03-15 14:42                 ` skolluku-sgV2jX0FEOL9JmXXK+q4OQ
     [not found]                   ` <94e53348399f60ace8da8281acdaaef0-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-03-15 14:55                     ` skolluku-sgV2jX0FEOL9JmXXK+q4OQ
2018-02-21 15:18   ` [PATCH RESEND 09/10] drm/msm/dpu: Fix writeback compile macros Sean Paul
2018-02-21 15:18   ` [PATCH RESEND 10/10] drm/msm: Restore msm_atomic_check hook Sean Paul
     [not found]     ` <20180221151838.224718-11-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2018-02-22 20:08       ` Rob Clark
     [not found]         ` <CAF6AEGswWCtmdCi_Etg8V2Ty9pr1=veHnd8s7iuE4Ot8SB8Ppw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-02-22 21:01           ` Sean Paul
2018-03-09  0:15       ` Jeykumar Sankaran

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.