[Freedreno] [DPU PATCH 0/6] drm/msm: Fix dpu compile for unlikely #ifdef paths

2018-06-28 Thread Sean Paul
I took a pass through the driver looking for CONFIG_ paths that were
untested. I found a few cases where either compile was broken, or the
config path was never used. Here's a few patches to fix it up.

Here's hoping this will avoid any nastygrams from folks running into
compilation issues once dpu is upstream.

Sean

Sean Paul (6):
  drm/msm: Remove DPU_DBG->pr_err ifdef gate
  drm/msm: Alphabetize dpu files in Makefile
  drm/msm: Remove dpu bus scaling code
  drm/msm: Remove ion from dpu
  drm/msm: Fix dpu compile when CONFIG_DEBUG_FS !defined
  drm/msm: Remove remnants of dsi-staging

 drivers/gpu/drm/msm/Makefile  |   8 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c |  35 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h   |  17 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h   |   4 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c   |  32 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h   |   4 -
 .../gpu/drm/msm/disp/dpu1/dpu_power_handle.c  | 522 +-
 .../gpu/drm/msm/disp/dpu1/dpu_power_handle.h  |  65 +--
 8 files changed, 10 insertions(+), 677 deletions(-)

-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 4/6] drm/msm: Remove ion from dpu

2018-06-28 Thread Sean Paul
It's mostly gone and won't compile with CONFIG_ION, so
remove the remaining pieces.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 25 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |  4 
 2 files changed, 29 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 605da85bb53f..fcb94f01d8ad 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -599,15 +599,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
return ret;
 }
 
-#ifdef CONFIG_ION
-static void dpu_kms_set_gem_flags(struct msm_gem_object *msm_obj,
-   uint32_t flags)
-{
-   if (msm_obj)
-   msm_obj->flags |= flags;
-}
-#endif
-
 #ifdef CONFIG_DEBUG_FS
 static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
 {
@@ -657,13 +648,6 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
_dpu_debugfs_destroy(dpu_kms);
_dpu_kms_mmu_destroy(dpu_kms);
 
-#ifdef CONFIG_ION
-   if (dpu_kms->iclient) {
-   ion_client_destroy(dpu_kms->iclient);
-   dpu_kms->iclient = NULL;
-   }
-#endif
-
if (dpu_kms->catalog) {
for (i = 0; i < dpu_kms->catalog->vbif_count; i++) {
u32 vbif_idx = dpu_kms->catalog->vbif[i].id;
@@ -1131,15 +1115,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
}
}
 
-#ifdef CONFIG_ION
-   dpu_kms->iclient = msm_ion_client_create(dev->unique);
-   if (IS_ERR(dpu_kms->iclient)) {
-   rc = PTR_ERR(dpu_kms->iclient);
-   DPU_DEBUG("msm_ion_client not available: %d\n", rc);
-   dpu_kms->iclient = NULL;
-   }
-#endif
-
rc = dpu_core_perf_init(_kms->perf, dev, dpu_kms->catalog,
_kms->phandle,
_dpu_kms_get_clk(dpu_kms, "core_clk"));
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index f7a3915b2907..407c1ed27fe6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -19,9 +19,6 @@
 #ifndef __DPU_KMS_H__
 #define __DPU_KMS_H__
 
-#ifdef CONFIG_CHROME_MSM_ION
-#include 
-#endif
 #include "msm_drv.h"
 #include "msm_kms.h"
 #include "msm_mmu.h"
@@ -118,7 +115,6 @@ struct dpu_kms {
 
struct dpu_power_handle phandle;
struct dpu_power_client *core_client;
-   struct ion_client *iclient;
struct dpu_power_event *power_event;
 
/* directory entry for debugfs */
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 6/6] drm/msm: Remove remnants of dsi-staging

2018-06-28 Thread Sean Paul
Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h | 13 -
 1 file changed, 13 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
index 89edf2526aca..1e6fa945f98b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
@@ -68,15 +68,6 @@ void dpu_dbg_dump(bool queue_work, const char *name, bool 
dump_dbgbus_dpu,
  */
 void dpu_dbg_set_dpu_top_offset(u32 blk_off);
 
-/**
- * dsi_ctrl_debug_dump - dump dsi debug dump status
- */
-#if defined(CONFIG_DRM_MSM_DSI_STAGING)
-void dsi_ctrl_debug_dump(void);
-#else
-static inline void dsi_ctrl_debug_dump(void) {}
-#endif
-
 #else
 
 static inline void dpu_dbg_init_dbg_buses(u32 hwversion)
@@ -106,10 +97,6 @@ static inline void dpu_dbg_set_dpu_top_offset(u32 blk_off)
 {
 }
 
-static inline void dsi_ctrl_debug_dump(void)
-{
-}
-
 #endif /* defined(CONFIG_DEBUG_FS) */
 
 
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 3/6] drm/msm: Remove dpu bus scaling code

2018-06-28 Thread Sean Paul
QC bus scaling isn't upstream yet, so remove the bus scaling code until
it is.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c |  35 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c   |   7 +-
 .../gpu/drm/msm/disp/dpu1/dpu_power_handle.c  | 522 +-
 .../gpu/drm/msm/disp/dpu1/dpu_power_handle.h  |  65 +--
 4 files changed, 4 insertions(+), 625 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
index 1019ce7594ff..41c5191f9056 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
@@ -221,7 +221,6 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
 static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
struct drm_crtc *crtc, u32 bus_id)
 {
-   u64 bw_sum_of_intfs = 0, bus_ab_quota, bus_ib_quota;
struct dpu_core_perf_params perf = { { 0 } };
enum dpu_crtc_client_type curr_client_type
= dpu_crtc_get_client_type(crtc);
@@ -239,45 +238,11 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms 
*kms,
max(perf.max_per_pipe_ib[bus_id],
dpu_cstate->new_perf.max_per_pipe_ib[bus_id]);
 
-   bw_sum_of_intfs += dpu_cstate->new_perf.bw_ctl[bus_id];
-
DPU_DEBUG("crtc=%d bus_id=%d bw=%llu\n",
tmp_crtc->base.id, bus_id,
dpu_cstate->new_perf.bw_ctl[bus_id]);
}
}
-
-   bus_ab_quota = max(bw_sum_of_intfs, kms->perf.perf_tune.min_bus_vote);
-   bus_ib_quota = perf.max_per_pipe_ib[bus_id];
-
-   if (kms->perf.perf_tune.mode == DPU_PERF_MODE_FIXED) {
-   bus_ab_quota = kms->perf.fix_core_ab_vote;
-   bus_ib_quota = kms->perf.fix_core_ib_vote;
-   }
-
-   switch (curr_client_type) {
-   case NRT_CLIENT:
-   ret = dpu_power_data_bus_set_quota(
-   >phandle, kms->core_client,
-   DPU_POWER_HANDLE_DATA_BUS_CLIENT_NRT,
-   bus_id, bus_ab_quota, bus_ib_quota);
-   DPU_DEBUG("client:%s bus_id=%d ab=%llu ib=%llu\n", "nrt",
- bus_id, bus_ab_quota, bus_ib_quota);
-   break;
-
-   case RT_CLIENT:
-   ret = dpu_power_data_bus_set_quota(
-   >phandle, kms->core_client,
-   DPU_POWER_HANDLE_DATA_BUS_CLIENT_RT,
-   bus_id, bus_ab_quota, bus_ib_quota);
-   DPU_DEBUG("client:%s bus_id=%d ab=%llu ib=%llu\n", "rt",
- bus_id, bus_ab_quota, bus_ib_quota);
-   break;
-
-   default:
-   DPU_ERROR("invalid client type:%d\n", curr_client_type);
-   break;
-   }
return ret;
 }
 
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 3889e4a7dfbc..605da85bb53f 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -1265,11 +1265,7 @@ static int dpu_bind(struct device *dev, struct device 
*master, void *data)
goto clk_rate_error;
}
 
-   ret = dpu_power_resource_init(pdev, _kms->phandle);
-   if (ret) {
-   pr_err("dpu power resource init failed\n");
-   goto power_init_fail;
-   }
+   dpu_power_resource_init(pdev, _kms->phandle);
 
platform_set_drvdata(pdev, dpu_kms);
 
@@ -1283,7 +1279,6 @@ static int dpu_bind(struct device *dev, struct device 
*master, void *data)
priv->kms = _kms->base;
return ret;
 
-power_init_fail:
 clk_rate_error:
msm_dss_put_clk(mp->clk_config, mp->num_clk);
 clk_get_error:
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 f997bd9e109c..a68f1249388c 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_power_handle.c
@@ -24,132 +24,6 @@
 #include "dpu_power_handle.h"
 #include "dpu_trace.h"
 
-#ifdef CONFIG_QCOM_BUS_SCALING
-#include 
-#include 
-
-#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,
-

[Freedreno] [DPU PATCH 2/6] drm/msm: Alphabetize dpu files in Makefile

2018-06-28 Thread Sean Paul
See subject.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 2604ccfd0653..3624b5af5ecd 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -70,11 +70,11 @@ msm-y := \
disp/dpu1/dpu_irq.o \
disp/dpu1/dpu_kms.o \
disp/dpu1/dpu_kms_utils.o \
+   disp/dpu1/dpu_mdss.o \
disp/dpu1/dpu_plane.o \
+   disp/dpu1/dpu_power_handle.o \
disp/dpu1/dpu_rm.o \
disp/dpu1/dpu_vbif.o \
-   disp/dpu1/dpu_mdss.o \
-   disp/dpu1/dpu_power_handle.o \
msm_atomic.o \
msm_debugfs.o \
msm_drv.o \
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 1/6] drm/msm: Remove DPU_DBG->pr_err ifdef gate

2018-06-28 Thread Sean Paul
It's pretty easy to just s/debug/err/

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h | 4 
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h
index 773b52e71a22..bc07381d7429 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_io_util.h
@@ -17,11 +17,7 @@
 #include 
 #include 
 
-#ifdef DEBUG
-#define DEV_DBG(fmt, args...)   pr_err(fmt, ##args)
-#else
 #define DEV_DBG(fmt, args...)   pr_debug(fmt, ##args)
-#endif
 #define DEV_INFO(fmt, args...)  pr_info(fmt, ##args)
 #define DEV_WARN(fmt, args...)  pr_warn(fmt, ##args)
 #define DEV_ERR(fmt, args...)   pr_err(fmt, ##args)
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 5/6] drm/msm: Fix dpu compile when CONFIG_DEBUG_FS !defined

2018-06-28 Thread Sean Paul
Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/Makefile| 4 ++--
 drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 3624b5af5ecd..1639ea8c0d13 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -49,7 +49,6 @@ msm-y := \
disp/dpu1/dpu_core_irq.o \
disp/dpu1/dpu_core_perf.o \
disp/dpu1/dpu_crtc.o \
-   disp/dpu1/dpu_dbg.o \
disp/dpu1/dpu_encoder.o \
disp/dpu1/dpu_encoder_phys_cmd.o \
disp/dpu1/dpu_encoder_phys_vid.o \
@@ -92,7 +91,8 @@ msm-y := \
msm_ringbuffer.o \
msm_submitqueue.o
 
-msm-$(CONFIG_DEBUG_FS) += adreno/a5xx_debugfs.o
+msm-$(CONFIG_DEBUG_FS) += adreno/a5xx_debugfs.o \
+ disp/dpu1/dpu_dbg.o
 
 msm-$(CONFIG_DRM_FBDEV_EMULATION) += msm_fbdev.o
 msm-$(CONFIG_COMMON_CLK) += disp/mdp4/mdp4_lvds_pll.o
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
index 05504e676f6a..89edf2526aca 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_dbg.h
@@ -98,11 +98,11 @@ static inline void dpu_dbg_destroy(void)
 }
 
 static inline void dpu_dbg_dump(bool queue_work, const char *name,
-   bool dump_dbgbus_dpu, bool dump_dbgbus_vbif_rt);
+   bool dump_dbgbus_dpu, bool dump_dbgbus_vbif_rt)
 {
 }
 
-void dpu_dbg_set_dpu_top_offset(u32 blk_off)
+static inline void dpu_dbg_set_dpu_top_offset(u32 blk_off)
 {
 }
 
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


Re: [Freedreno] [DPU PATCH 04/15] drm/msm: Remove more dpu-related code from msm_drv

2018-06-28 Thread Sean Paul
On Thu, Jun 28, 2018 at 4:10 PM Jordan Crouse  wrote:
>
> On Thu, Jun 28, 2018 at 02:28:55PM -0400, Sean Paul wrote:
> > This time the iomap/iounmap helper functions. Move map into dpu and
> > refactor it to reflect their actual use. iounmap wasn't useful, so
> > delete it and call iounmap directly.
> >
> > Signed-off-by: Sean Paul 
> > ---
> >  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 38 +---
> >  drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c | 13 ++--
> >  drivers/gpu/drm/msm/msm_drv.c| 23 --
> >  drivers/gpu/drm/msm/msm_drv.h|  2 --
> >  4 files changed, 38 insertions(+), 38 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
> > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > index 0b813a089cba..beba919a6ef6 100644
> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> > @@ -77,6 +77,25 @@ bool dpu_is_custom_client(void)
> >   return dpucustom;
> >  }
> >
> > +static unsigned long dpu_iomap_size(struct platform_device *pdev,
> > + const char *name)
> > +{
> > + struct resource *res;
> > +
> > + if (!name) {
> > + DRM_ERROR("Resource name unspecified\n");
> > + return 0;
> > + }
>
> Maybe Just a WARN instead - a custom string isn't needed for a case that will
> never happen outside of developer error.
>

Hmm, yeah, this was lifted direct from msm_kms, so I didn't think too
much about it. This is one of those "check for NULL even if it'll
never be NULL" checks that is prevalent across dpu. I think I'll just
remove the check so it falls over if name is NULL.

Sean

> 
>
> --
> The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> a Linux Foundation Collaborative Project
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


Re: [Freedreno] [DPU PATCH 04/15] drm/msm: Remove more dpu-related code from msm_drv

2018-06-28 Thread Jordan Crouse
On Thu, Jun 28, 2018 at 02:28:55PM -0400, Sean Paul wrote:
> This time the iomap/iounmap helper functions. Move map into dpu and
> refactor it to reflect their actual use. iounmap wasn't useful, so
> delete it and call iounmap directly.
> 
> Signed-off-by: Sean Paul 
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 38 +---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c | 13 ++--
>  drivers/gpu/drm/msm/msm_drv.c| 23 --
>  drivers/gpu/drm/msm/msm_drv.h|  2 --
>  4 files changed, 38 insertions(+), 38 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index 0b813a089cba..beba919a6ef6 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -77,6 +77,25 @@ bool dpu_is_custom_client(void)
>   return dpucustom;
>  }
>  
> +static unsigned long dpu_iomap_size(struct platform_device *pdev,
> + const char *name)
> +{
> + struct resource *res;
> +
> + if (!name) {
> + DRM_ERROR("Resource name unspecified\n");
> + return 0;
> + }

Maybe Just a WARN instead - a custom string isn't needed for a case that will
never happen outside of developer error.



-- 
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


[Freedreno] [DPU PATCH 14/15] drm/msm: Remove atomic_check() from msm_kms

2018-06-28 Thread Sean Paul
It's never called since we use the atomic helpers

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 26 -
 drivers/gpu/drm/msm/msm_kms.h   |  3 ---
 2 files changed, 29 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index edb5d40f9160..4011525e1d7e 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -773,31 +773,6 @@ static void dpu_kms_preclose(struct msm_kms *kms, struct 
drm_file *file)
dpu_crtc_cancel_pending_flip(priv->crtcs[i], file);
 }
 
-static int dpu_kms_atomic_check(struct msm_kms *kms,
-   struct drm_atomic_state *state)
-{
-   struct dpu_kms *dpu_kms;
-   struct drm_device *dev;
-   int ret;
-
-   if (!kms || !state)
-   return -EINVAL;
-
-   dpu_kms = to_dpu_kms(kms);
-   dev = dpu_kms->dev;
-
-   if (dpu_kms_is_suspend_blocked(dev)) {
-   DPU_DEBUG("suspended, skip atomic_check\n");
-   return -EBUSY;
-   }
-
-   ret = drm_atomic_helper_check(dev, state);
-   if (ret)
-   return ret;
-
-   return 0;
-}
-
 static int dpu_kms_pm_suspend(struct device *dev)
 {
struct drm_device *ddev;
@@ -962,7 +937,6 @@ static const struct msm_kms_funcs kms_funcs = {
.enable_vblank   = dpu_kms_enable_vblank,
.disable_vblank  = dpu_kms_disable_vblank,
.check_modified_format = dpu_format_check_modified_format,
-   .atomic_check = dpu_kms_atomic_check,
.get_format  = dpu_get_msm_format,
.round_pixclk= dpu_kms_round_pixclk,
.pm_suspend  = dpu_kms_pm_suspend,
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index e275cc42ecd3..93e46d75bf56 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -60,9 +60,6 @@ struct msm_kms_funcs {
const struct msm_format *msm_fmt,
const struct drm_mode_fb_cmd2 *cmd,
struct drm_gem_object **bos);
-   /* perform complete atomic check of given atomic state */
-   int (*atomic_check)(struct msm_kms *kms,
-   struct drm_atomic_state *state);
/* misc: */
long (*round_pixclk)(struct msm_kms *kms, unsigned long rate,
struct drm_encoder *encoder);
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 08/15] drm/msm: dpu: Do debugfs init in the debugfs_init() hook

2018-06-28 Thread Sean Paul
This allows us to remove postinit, which was added with dpu support.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 13 ++---
 drivers/gpu/drm/msm/msm_drv.c   |  9 -
 drivers/gpu/drm/msm/msm_kms.h   |  1 -
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 61eecae15ab3..1f2163430caf 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -323,11 +323,6 @@ static void _dpu_debugfs_destroy(struct dpu_kms *dpu_kms)
}
 }
 #else
-static int _dpu_debugfs_init(struct dpu_kms *dpu_kms)
-{
-   return 0;
-}
-
 static void _dpu_debugfs_destroy(struct dpu_kms *dpu_kms)
 {
 }
@@ -991,7 +986,8 @@ void dpu_kms_fbo_unreference(struct dpu_kms_fbo *fbo)
}
 }
 
-static int dpu_kms_postinit(struct msm_kms *kms)
+#ifdef CONFIG_DEBUG_FS
+static int dpu_kms_debugfs_init(struct msm_kms *kms, struct drm_minor *minor)
 {
struct dpu_kms *dpu_kms = to_dpu_kms(kms);
struct drm_device *dev;
@@ -1010,6 +1006,7 @@ static int dpu_kms_postinit(struct msm_kms *kms)
 
return rc;
 }
+#endif
 
 static long dpu_kms_round_pixclk(struct msm_kms *kms, unsigned long rate,
struct drm_encoder *encoder)
@@ -1289,7 +1286,6 @@ void _dpu_kms_set_encoder_mode(struct msm_kms *kms,
 
 static const struct msm_kms_funcs kms_funcs = {
.hw_init = dpu_kms_hw_init,
-   .postinit= dpu_kms_postinit,
.irq_preinstall  = dpu_irq_preinstall,
.irq_postinstall = dpu_irq_postinstall,
.irq_uninstall   = dpu_irq_uninstall,
@@ -1311,6 +1307,9 @@ static const struct msm_kms_funcs kms_funcs = {
.destroy = dpu_kms_destroy,
.get_address_space = _dpu_kms_get_address_space,
.set_encoder_mode = _dpu_kms_set_encoder_mode,
+#ifdef CONFIG_DEBUG_FS
+   .debugfs_init= dpu_kms_debugfs_init,
+#endif
 };
 
 /* the caller api needs to turn on clock before calling it */
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index bcd001603768..1e8d67381b5a 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -593,15 +593,6 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
if (ret)
goto fail;
 
-   /* perform subdriver post initialization */
-   if (kms && kms->funcs && kms->funcs->postinit) {
-   ret = kms->funcs->postinit(kms);
-   if (ret) {
-   pr_err("kms post init failed: %d\n", ret);
-   goto fail;
-   }
-   }
-
drm_kms_helper_poll_init(ddev);
 
return 0;
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index 3a583ee2f27a..2f1c9702b820 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -34,7 +34,6 @@
 struct msm_kms_funcs {
/* hw initialization: */
int (*hw_init)(struct msm_kms *kms);
-   int (*postinit)(struct msm_kms *kms);
/* irq handling: */
void (*irq_preinstall)(struct msm_kms *kms);
int (*irq_postinstall)(struct msm_kms *kms);
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 07/15] drm/msm: Remove _dpu_format_calc_offset_linear()

2018-06-28 Thread Sean Paul
It's unused.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c | 32 -
 1 file changed, 32 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
index 12dc6a9d3b25..44fefc97e1b3 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c
@@ -1092,38 +1092,6 @@ int dpu_format_populate_layout(
return ret;
 }
 
-static void _dpu_format_calc_offset_linear(struct dpu_hw_fmt_layout *source,
-   u32 x, u32 y)
-{
-   if ((x == 0) && (y == 0))
-   return;
-
-   source->plane_addr[0] += y * source->plane_pitch[0];
-
-   if (source->num_planes == 1) {
-   source->plane_addr[0] += x * source->format->bpp;
-   } else {
-   uint32_t xoff, yoff;
-   uint32_t v_subsample = 1;
-   uint32_t h_subsample = 1;
-
-   _dpu_get_v_h_subsample_rate(source->format->chroma_sample,
-   _subsample, _subsample);
-
-   xoff = x / h_subsample;
-   yoff = y / v_subsample;
-
-   source->plane_addr[0] += x;
-   source->plane_addr[1] += xoff +
-   (yoff * source->plane_pitch[1]);
-   if (source->num_planes == 2) /* pseudo planar */
-   source->plane_addr[1] += xoff;
-   else /* planar */
-   source->plane_addr[2] += xoff +
-   (yoff * source->plane_pitch[2]);
-   }
-}
-
 int dpu_format_check_modified_format(
const struct msm_kms *kms,
const struct msm_format *msm_fmt,
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 13/15] drm/msm: Reduce dpu_crtc_atomic_check frame size

2018-06-28 Thread Sean Paul
Allocate pstates from the heap to avoid the following warning when
building with an arm target.

warning: the frame size of 1080 bytes is larger than 1024 bytes 
[-Wframe-larger-than=]

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index c70b609aa7f2..d17128222f45 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -1737,7 +1737,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
struct drm_crtc_state *state)
 {
struct dpu_crtc *dpu_crtc;
-   struct plane_state pstates[DPU_STAGE_MAX * 4];
+   struct plane_state *pstates;
struct dpu_crtc_state *cstate;
 
const struct drm_plane_state *pstate;
@@ -1757,6 +1757,8 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
return -EINVAL;
}
 
+   pstates = kzalloc(sizeof(*pstates) * DPU_STAGE_MAX * 4, GFP_KERNEL);
+
dpu_crtc = to_dpu_crtc(crtc);
cstate = to_dpu_crtc_state(state);
 
@@ -1792,7 +1794,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
dpu_crtc->name, plane->base.id, rc);
goto end;
}
-   if (cnt >= ARRAY_SIZE(pstates))
+   if (cnt >= DPU_STAGE_MAX * 4)
continue;
 
pstates[cnt].dpu_pstate = to_dpu_plane_state(pstate);
@@ -1959,6 +1961,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc,
 
 end:
_dpu_crtc_rp_free_unused(>rp);
+   kfree(pstates);
return rc;
 }
 
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 10/15] drm/msm: Remove dpu_kms_fbo and associated functions

2018-06-28 Thread Sean Paul
It's not used anywhere and it lets us revert the changes to msm_fb
to match upstream.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 279 
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |  69 --
 drivers/gpu/drm/msm/msm_drv.h   |   3 -
 drivers/gpu/drm/msm/msm_fb.c|   4 +-
 4 files changed, 3 insertions(+), 352 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 30da3e047384..ddba0873466b 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -698,134 +698,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
return ret;
 }
 
-/**
- * struct dpu_kms_fbo_fb - framebuffer creation list
- * @list: list of framebuffer attached to framebuffer object
- * @fb: Pointer to framebuffer attached to framebuffer object
- */
-struct dpu_kms_fbo_fb {
-   struct list_head list;
-   struct drm_framebuffer *fb;
-};
-
-struct drm_framebuffer *dpu_kms_fbo_create_fb(struct drm_device *dev,
-   struct dpu_kms_fbo *fbo)
-{
-   struct drm_framebuffer *fb = NULL;
-   struct dpu_kms_fbo_fb *fbo_fb;
-   struct drm_mode_fb_cmd2 mode_cmd = {0};
-   u32 base_offset = 0;
-   int i, ret;
-
-   if (!dev) {
-   DPU_ERROR("invalid drm device node\n");
-   return NULL;
-   }
-
-   fbo_fb = kzalloc(sizeof(struct dpu_kms_fbo_fb), GFP_KERNEL);
-   if (!fbo_fb)
-   return NULL;
-
-   mode_cmd.pixel_format = fbo->pixel_format;
-   mode_cmd.width = fbo->width;
-   mode_cmd.height = fbo->height;
-   mode_cmd.flags = fbo->flags;
-
-   for (i = 0; i < fbo->nplane; i++) {
-   mode_cmd.offsets[i] = base_offset;
-   mode_cmd.pitches[i] = fbo->layout.plane_pitch[i];
-   mode_cmd.modifier[i] = fbo->modifier[i];
-   base_offset += fbo->layout.plane_size[i];
-   DPU_DEBUG("offset[%d]:%x\n", i, mode_cmd.offsets[i]);
-   }
-
-   fb = msm_framebuffer_init(dev, _cmd, fbo->bo);
-   if (IS_ERR(fb)) {
-   ret = PTR_ERR(fb);
-   fb = NULL;
-   DPU_ERROR("failed to allocate fb %d\n", ret);
-   goto fail;
-   }
-
-   /* need to take one reference for gem object */
-   for (i = 0; i < fbo->nplane; i++)
-   drm_gem_object_get(fbo->bo[i]);
-
-   DPU_DEBUG("register private fb:%d\n", fb->base.id);
-
-   INIT_LIST_HEAD(_fb->list);
-   fbo_fb->fb = fb;
-   drm_framebuffer_get(fbo_fb->fb);
-   list_add_tail(_fb->list, >fb_list);
-
-   return fb;
-
-fail:
-   kfree(fbo_fb);
-   return NULL;
-}
-
-static void dpu_kms_fbo_destroy(struct dpu_kms_fbo *fbo)
-{
-   struct msm_drm_private *priv;
-   struct dpu_kms *dpu_kms;
-   struct drm_device *dev;
-   struct dpu_kms_fbo_fb *curr, *next;
-   int i;
-
-   if (!fbo) {
-   DPU_ERROR("invalid drm device node\n");
-   return;
-   }
-   dev = fbo->dev;
-
-   if (!dev || !dev->dev_private) {
-   DPU_ERROR("invalid drm device node\n");
-   return;
-   }
-   priv = dev->dev_private;
-
-   if (!priv->kms) {
-   DPU_ERROR("invalid kms handle\n");
-   return;
-   }
-   dpu_kms = to_dpu_kms(priv->kms);
-
-   DPU_DEBUG("%dx%d@%c%c%c%c/%llx/%x\n", fbo->width, fbo->height,
-   fbo->pixel_format >> 0, fbo->pixel_format >> 8,
-   fbo->pixel_format >> 16, fbo->pixel_format >> 24,
-   fbo->modifier[0], fbo->flags);
-
-   list_for_each_entry_safe(curr, next, >fb_list, list) {
-   DPU_DEBUG("unregister private fb:%d\n", curr->fb->base.id);
-   drm_framebuffer_unregister_private(curr->fb);
-   drm_framebuffer_put(curr->fb);
-   list_del(>list);
-   kfree(curr);
-   }
-
-   for (i = 0; i < fbo->layout.num_planes; i++) {
-   if (fbo->bo[i]) {
-   mutex_lock(>struct_mutex);
-   drm_gem_object_put(fbo->bo[i]);
-   mutex_unlock(>struct_mutex);
-   fbo->bo[i] = NULL;
-   }
-   }
-
-   if (fbo->dma_buf) {
-   dma_buf_put(fbo->dma_buf);
-   fbo->dma_buf = NULL;
-   }
-
-#ifdef CONFIG_ION
-   if (dpu_kms->iclient && fbo->ihandle) {
-   ion_free(dpu_kms->iclient, fbo->ihandle);
-   fbo->ihandle = NULL;
-   }
-#endif
-}
-
 #ifdef CONFIG_ION
 static void dpu_kms_set_gem_flags(struct msm_gem_object *msm_obj,
uint32_t flags)
@@ -835,157 +707,6 @@ static void dpu_kms_set_gem_flags(struct msm_gem_object 
*msm_obj,
 }
 #endif
 
-struct dpu_kms_fbo *dpu_kms_fbo_alloc(struct drm_device *dev, u32 width,
-   u32 height, u32 pixel_format, u64 

[Freedreno] [DPU PATCH 12/15] drm/msm: Remove unused backpointers from dpu_crtc

2018-06-28 Thread Sean Paul
Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 2 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h | 4 
 2 files changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index 52f3e0667c33..c70b609aa7f2 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -2241,12 +2241,10 @@ static int dpu_crtc_debugfs_state_show(struct seq_file 
*s, void *v)
 {
struct drm_crtc *crtc = (struct drm_crtc *) s->private;
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
-   struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
struct dpu_crtc_res *res;
struct dpu_crtc_respool *rp;
int i;
 
-   seq_printf(s, "num_connectors: %d\n", cstate->num_connectors);
seq_printf(s, "client type: %d\n", dpu_crtc_get_client_type(crtc));
seq_printf(s, "intf_mode: %d\n", dpu_crtc_get_intf_mode(crtc));
seq_printf(s, "core_clk_rate: %llu\n",
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
index 7147dcb2be16..1284e991f686 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
@@ -297,8 +297,6 @@ struct dpu_crtc_respool {
 /**
  * struct dpu_crtc_state - dpu container for atomic crtc state
  * @base: Base drm crtc state structure
- * @connectors: Currently associated drm connectors
- * @num_connectors: Number of associated drm connectors
  * @is_ppsplit: Whether current topology requires PPSplit special handling
  * @bw_control: true if bw/clk controlled by core bw/clk properties
  * @bw_split_vote : true if bw controlled by llcc/dram bw properties
@@ -312,8 +310,6 @@ struct dpu_crtc_respool {
 struct dpu_crtc_state {
struct drm_crtc_state base;
 
-   struct drm_connector *connectors[MAX_CONNECTORS];
-   int num_connectors;
bool bw_control;
bool bw_split_vote;
 
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 15/15] drm/msm: Remove wait_for_tx_complete() from msm_kms

2018-06-28 Thread Sean Paul
It's not called anywhere.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c   | 44 ---
 drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h |  4 ---
 drivers/gpu/drm/msm/msm_kms.h |  3 --
 3 files changed, 51 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 4011525e1d7e..a3bc4c694c0e 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -319,49 +319,6 @@ static void dpu_kms_disable_vblank(struct msm_kms *kms, 
struct drm_crtc *crtc)
dpu_crtc_vblank(crtc, false);
 }
 
-static void dpu_kms_wait_for_frame_transfer_complete(struct msm_kms *kms,
-   struct drm_crtc *crtc)
-{
-   struct drm_encoder *encoder;
-   struct drm_device *dev;
-   int ret;
-
-   if (!kms || !crtc || !crtc->state || !crtc->dev) {
-   DPU_ERROR("invalid params\n");
-   return;
-   }
-
-   if (!crtc->state->enable) {
-   DPU_DEBUG("[crtc:%d] not enable\n", crtc->base.id);
-   return;
-   }
-
-   if (!crtc->state->active) {
-   DPU_DEBUG("[crtc:%d] not active\n", crtc->base.id);
-   return;
-   }
-
-   dev = crtc->dev;
-
-   list_for_each_entry(encoder, >mode_config.encoder_list, head) {
-   if (encoder->crtc != crtc)
-   continue;
-   /*
-* Video Mode - Wait for VSYNC
-* Cmd Mode   - Wait for PP_DONE. Will be no-op if transfer is
-*  complete
-*/
-   trace_dpu_kms_wait_for_frame_transfer(DRMID(crtc));
-   ret = dpu_encoder_wait_for_event(encoder, MSM_ENC_TX_COMPLETE);
-   if (ret && ret != -EWOULDBLOCK) {
-   DPU_ERROR(
-   "[crtc: %d][enc: %d] wait for commit done returned 
%d\n",
-   crtc->base.id, encoder->base.id, ret);
-   break;
-   }
-   }
-}
-
 static void dpu_kms_prepare_commit(struct msm_kms *kms,
struct drm_atomic_state *state)
 {
@@ -933,7 +890,6 @@ static const struct msm_kms_funcs kms_funcs = {
.commit  = dpu_kms_commit,
.complete_commit = dpu_kms_complete_commit,
.wait_for_crtc_commit_done = dpu_kms_wait_for_commit_done,
-   .wait_for_tx_complete = dpu_kms_wait_for_frame_transfer_complete,
.enable_vblank   = dpu_kms_enable_vblank,
.disable_vblank  = dpu_kms_disable_vblank,
.check_modified_format = dpu_format_check_modified_format,
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
index 1924c6662362..76efc690cce3 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
@@ -307,10 +307,6 @@ DEFINE_EVENT(dpu_drm_obj_template, 
dpu_crtc_complete_commit,
TP_PROTO(uint32_t drm_id),
TP_ARGS(drm_id)
 );
-DEFINE_EVENT(dpu_drm_obj_template, dpu_kms_wait_for_frame_transfer,
-   TP_PROTO(uint32_t drm_id),
-   TP_ARGS(drm_id)
-);
 DEFINE_EVENT(dpu_drm_obj_template, dpu_kms_enc_enable,
TP_PROTO(uint32_t drm_id),
TP_ARGS(drm_id)
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index 93e46d75bf56..6b5535270276 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -48,9 +48,6 @@ struct msm_kms_funcs {
/* functions to wait for atomic commit completed on each CRTC */
void (*wait_for_crtc_commit_done)(struct msm_kms *kms,
struct drm_crtc *crtc);
-   /* function pointer to wait for pixel transfer to panel to complete*/
-   void (*wait_for_tx_complete)(struct msm_kms *kms,
-   struct drm_crtc *crtc);
/* get msm_format w/ optional format modifiers from drm_mode_fb_cmd2 */
const struct msm_format *(*get_format)(struct msm_kms *kms,
const uint32_t format,
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 11/15] drm/msm: Remove dpu module parameters

2018-06-28 Thread Sean Paul
We don't use dpucustom, and the suspend blanking should be done by
userspace instead of in kernel.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c   | 51 ---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h   |  7 
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 12 --
 3 files changed, 70 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index ddba0873466b..edb5d40f9160 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -55,27 +55,8 @@ static const char * const iommu_ports[] = {
 #define DPU_DEBUGFS_DIR "msm_dpu"
 #define DPU_DEBUGFS_HWMASKNAME "hw_log_mask"
 
-/**
- * dpucustom - enable certain driver customizations for dpu clients
- * Enabling this modifies the standard DRM behavior slightly and assumes
- * that the clients have specific knowledge about the modifications that
- * are involved, so don't enable this unless you know what you're doing.
- *
- * Parts of the driver that are affected by this setting may be located by
- * searching for invocations of the 'dpu_is_custom_client()' function.
- *
- * This is disabled by default.
- */
-static bool dpucustom;
-module_param(dpucustom, bool, 0400);
-MODULE_PARM_DESC(dpucustom, "Enable customizations for dpu clients");
-
 static int dpu_kms_hw_init(struct msm_kms *kms);
 static int _dpu_kms_mmu_destroy(struct dpu_kms *dpu_kms);
-bool dpu_is_custom_client(void)
-{
-   return dpucustom;
-}
 
 static unsigned long dpu_iomap_size(struct platform_device *pdev,
const char *name)
@@ -606,10 +587,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
int primary_planes_idx = 0, i, ret;
int max_crtc_count;
 
-   u32 sspp_id[MAX_PLANES];
-   u32 master_plane_id[MAX_PLANES];
-   u32 num_virt_planes = 0;
-
if (!dpu_kms || !dpu_kms->dev || !dpu_kms->dev->dev) {
DPU_ERROR("invalid dpu_kms\n");
return -EINVAL;
@@ -646,27 +623,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
 
if (primary)
primary_planes[primary_planes_idx++] = plane;
-
-   if (dpu_hw_sspp_multirect_enabled(>sspp[i]) &&
-   dpu_is_custom_client()) {
-   int priority =
-   catalog->sspp[i].sblk->smart_dma_priority;
-   sspp_id[priority - 1] = catalog->sspp[i].id;
-   master_plane_id[priority - 1] = plane->base.id;
-   num_virt_planes++;
-   }
-   }
-
-   /* Initialize smart DMA virtual planes */
-   for (i = 0; i < num_virt_planes; i++) {
-   plane = dpu_plane_init(dev, sspp_id[i], false,
-   (1UL << max_crtc_count) - 1, master_plane_id[i]);
-   if (IS_ERR(plane)) {
-   DPU_ERROR("dpu_plane for virtual SSPP init failed\n");
-   ret = PTR_ERR(plane);
-   goto fail;
-   }
-   priv->planes[priv->num_planes++] = plane;
}
 
max_crtc_count = min(max_crtc_count, primary_planes_idx);
@@ -681,13 +637,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
priv->crtcs[priv->num_crtcs++] = crtc;
}
 
-   if (dpu_is_custom_client()) {
-   /* All CRTCs are compatible with all planes */
-   for (i = 0; i < priv->num_planes; i++)
-   priv->planes[i]->possible_crtcs =
-   (1 << priv->num_crtcs) - 1;
-   }
-
/* All CRTCs are compatible with all encoders */
for (i = 0; i < priv->num_encoders; i++)
priv->encoders[i]->possible_crtcs = (1 << priv->num_crtcs) - 1;
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index 6308bd84e6a9..3437598ceef1 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -163,13 +163,6 @@ struct vsync_info {
 
 #define to_dpu_kms(x) container_of(x, struct dpu_kms, base)
 
-/**
- * dpu_is_custom_client - whether or not to enable non-standard customizations
- *
- * Return: Whether or not the 'dpuclient' module parameter was set on boot up
- */
-bool dpu_is_custom_client(void);
-
 /**
  * dpu_kms_is_suspend_state - whether or not the system is pm suspended
  * @dev: Pointer to drm device
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index c2088a3bfba7..ae05d4d002a9 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -31,14 +31,6 @@
 #include "dpu_vbif.h"
 #include "dpu_plane.h"
 
-static bool suspend_blank = true;
-module_param(suspend_blank, bool, 0400);
-MODULE_PARM_DESC(suspend_blank,
-   "If set, active 

[Freedreno] [DPU PATCH 03/15] drm/msm: Move dpu_dbg init/destroy into dpu_kms

2018-06-28 Thread Sean Paul
No need to have this in msm_drv, so move it into dpu. While we're at
it, remove the other CONFIG_DRM_MSM_DPU ifdef gates.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 18 ++-
 drivers/gpu/drm/msm/msm_drv.c   | 41 -
 2 files changed, 17 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 3003176e731d..0b813a089cba 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -279,6 +279,12 @@ static int _dpu_debugfs_init(struct dpu_kms *dpu_kms)
if (!debugfs_root)
return -EINVAL;
 
+   rc = dpu_dbg_debugfs_register(debugfs_root);
+   if (rc) {
+   DRM_ERROR("failed to reg dpu dbg debugfs: %d\n", rc);
+   return rc;
+   }
+
/* allow debugfs_root to be NULL */
debugfs_create_x32(DPU_DEBUGFS_HWMASKNAME, 0600, debugfs_root, p);
 
@@ -1072,6 +1078,8 @@ static void dpu_kms_destroy(struct msm_kms *kms)
}
 
dpu_kms = to_dpu_kms(kms);
+
+   dpu_dbg_destroy();
_dpu_kms_hw_destroy(dpu_kms);
 }
 
@@ -1401,10 +1409,16 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
goto end;
}
 
+   rc = dpu_dbg_init(_kms->pdev->dev);
+   if (rc) {
+   DRM_ERROR("failed to init dpu dbg: %d\n", rc);
+   goto end;
+   }
+
priv = dev->dev_private;
if (!priv) {
DPU_ERROR("invalid private data\n");
-   goto end;
+   goto dbg_destroy;
}
 
dpu_kms->mmio = msm_ioremap(dpu_kms->pdev, "mdp_phys", "mdp_phys");
@@ -1592,6 +1606,8 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
pm_runtime_put_sync(_kms->pdev->dev);
 error:
_dpu_kms_hw_destroy(dpu_kms);
+dbg_destroy:
+   dpu_dbg_destroy();
 end:
return rc;
 }
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 51d6b310ca33..6177b3f18912 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -26,9 +26,6 @@
 #include "msm_fence.h"
 #include "msm_gpu.h"
 #include "msm_kms.h"
-#ifdef CONFIG_DRM_MSM_DPU
-#include "dpu_dbg.h"
-#endif
 
 /*
  * MSM driver version:
@@ -307,10 +304,6 @@ static int msm_drm_uninit(struct device *dev)
 
component_unbind_all(dev, ddev);
 
-#ifdef CONFIG_DRM_MSM_DPU
-   dpu_dbg_destroy();
-#endif
-
debugfs_remove_recursive(priv->debug_root);
 
if (mdss && mdss->funcs)
@@ -485,14 +478,6 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
 
drm_mode_config_init(ddev);
 
-#ifdef CONFIG_DRM_MSM_DPU
-   ret = dpu_dbg_init(>dev);
-   if (ret) {
-   dev_err(dev, "failed to init dpu dbg: %d\n", ret);
-   goto dbg_init_fail;
-   }
-#endif
-
msm_gem_shrinker_init(ddev);
 
ret = msm_init_vram(ddev);
@@ -511,11 +496,9 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
case KMS_MDP5:
kms = mdp5_kms_init(ddev);
break;
-#ifdef CONFIG_DRM_MSM_DPU
case KMS_DPU:
kms = dpu_kms_init(ddev);
break;
-#endif
default:
kms = ERR_PTR(-ENODEV);
break;
@@ -665,14 +648,6 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
goto fail;
}
 
-#ifdef CONFIG_DRM_MSM_DPU
-   ret = dpu_dbg_debugfs_register(priv->debug_root);
-   if (ret) {
-   dev_err(dev, "failed to reg dpu dbg debugfs: %d\n", ret);
-   goto fail;
-   }
-#endif
-
/* perform subdriver post initialization */
if (kms && kms->funcs && kms->funcs->postinit) {
ret = kms->funcs->postinit(kms);
@@ -690,10 +665,6 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
msm_drm_uninit(dev);
return ret;
 bind_fail:
-#ifdef CONFIG_DRM_MSM_DPU
-   dpu_dbg_destroy();
-dbg_init_fail:
-#endif
if (mdss && mdss->funcs)
mdss->funcs->destroy(ddev);
 mdss_init_fail:
@@ -1413,9 +1384,7 @@ static int msm_pdev_remove(struct platform_device *pdev)
 static const struct of_device_id dt_match[] = {
{ .compatible = "qcom,mdp4", .data = (void *)KMS_MDP4 },
{ .compatible = "qcom,mdss", .data = (void *)KMS_MDP5 },
-#ifdef CONFIG_DRM_MSM_DPU
{ .compatible = "qcom,dpu-mdss", .data = (void *)KMS_DPU },
-#endif
{}
 };
 MODULE_DEVICE_TABLE(of, dt_match);
@@ -1430,16 +1399,6 @@ static struct platform_driver msm_platform_driver = {
},
 };
 
-#ifdef CONFIG_QCOM_KGSL
-void __init adreno_register(void)
-{
-}
-
-void __exit adreno_unregister(void)
-{
-}
-#endif
-
 static int __init msm_drm_register(void)
 {
if (!modeset)
-- 
Sean Paul, Software Engineer, Google / Chromium OS

___

[Freedreno] [DPU PATCH 05/15] drm/msm: More cleanup in msm_drv

2018-06-28 Thread Sean Paul
Revert the component_bind function back to upstream.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/msm_drv.c | 30 +-
 1 file changed, 5 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 561617db7338..5181f997f071 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -380,26 +380,6 @@ static int msm_init_vram(struct drm_device *dev)
return ret;
 }
 
-#ifdef CONFIG_OF
-static int msm_component_bind_all(struct device *dev,
-   struct drm_device *drm_dev)
-{
-   int ret;
-
-   ret = component_bind_all(dev, drm_dev);
-   if (ret)
-   DRM_ERROR("component_bind_all failed: %d\n", ret);
-
-   return ret;
-}
-#else
-static int msm_component_bind_all(struct device *dev,
-   struct drm_device *drm_dev)
-{
-   return 0;
-}
-#endif
-
 static int msm_drm_init(struct device *dev, struct drm_driver *drv)
 {
struct platform_device *pdev = to_platform_device(dev);
@@ -455,16 +435,16 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
 
drm_mode_config_init(ddev);
 
-   msm_gem_shrinker_init(ddev);
+   /* Bind all our sub-components: */
+   ret = component_bind_all(dev, ddev);
+   if (ret)
+   goto bind_fail;
 
ret = msm_init_vram(ddev);
if (ret)
goto fail;
 
-   /* Bind all our sub-components: */
-   ret = msm_component_bind_all(dev, ddev);
-   if (ret)
-   goto bind_fail;
+   msm_gem_shrinker_init(ddev);
 
switch (get_mdp_ver(pdev)) {
case KMS_MDP4:
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 09/15] drm/msm: Remove get_address_space msm_kms hook

2018-06-28 Thread Sean Paul
It's unused.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 8 
 drivers/gpu/drm/msm/msm_kms.h   | 4 
 2 files changed, 12 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 1f2163430caf..30da3e047384 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -1128,13 +1128,6 @@ static int dpu_kms_atomic_check(struct msm_kms *kms,
return 0;
 }
 
-static struct msm_gem_address_space*
-_dpu_kms_get_address_space(struct msm_kms *kms,
-   unsigned int domain)
-{
-   return kms->aspace;
-}
-
 static int dpu_kms_pm_suspend(struct device *dev)
 {
struct drm_device *ddev;
@@ -1305,7 +1298,6 @@ static const struct msm_kms_funcs kms_funcs = {
.pm_suspend  = dpu_kms_pm_suspend,
.pm_resume   = dpu_kms_pm_resume,
.destroy = dpu_kms_destroy,
-   .get_address_space = _dpu_kms_get_address_space,
.set_encoder_mode = _dpu_kms_set_encoder_mode,
 #ifdef CONFIG_DEBUG_FS
.debugfs_init= dpu_kms_debugfs_init,
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index 2f1c9702b820..e275cc42ecd3 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -82,10 +82,6 @@ struct msm_kms_funcs {
int (*pm_resume)(struct device *dev);
/* cleanup: */
void (*destroy)(struct msm_kms *kms);
-   /* get address space */
-   struct msm_gem_address_space *(*get_address_space)(
-   struct msm_kms *kms,
-   unsigned int domain);
 #ifdef CONFIG_DEBUG_FS
/* debugfs: */
int (*debugfs_init)(struct msm_kms *kms, struct drm_minor *minor);
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 06/15] drm/msm: Move debugfs root tracking to dpu

2018-06-28 Thread Sean Paul
We don't use it for anything else, so hide it in dpu. A few other
whitespace/trivial fixes to revert dpu changes in msm.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 37 ++---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |  1 +
 drivers/gpu/drm/msm/msm_drv.c   | 13 -
 drivers/gpu/drm/msm/msm_drv.h   |  8 +-
 4 files changed, 17 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index beba919a6ef6..61eecae15ab3 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -272,46 +272,38 @@ void *dpu_debugfs_create_regset32(const char *name, 
umode_t mode,
regset, _fops_regset32);
 }
 
-void *dpu_debugfs_get_root(struct dpu_kms *dpu_kms)
-{
-   struct msm_drm_private *priv;
-
-   if (!dpu_kms || !dpu_kms->dev || !dpu_kms->dev->dev_private)
-   return NULL;
-
-   priv = dpu_kms->dev->dev_private;
-   return priv->debug_root;
-}
-
 static int _dpu_debugfs_init(struct dpu_kms *dpu_kms)
 {
void *p;
int rc;
-   void *debugfs_root;
 
p = dpu_hw_util_get_log_mask_ptr();
 
if (!dpu_kms || !p)
return -EINVAL;
 
-   debugfs_root = dpu_debugfs_get_root(dpu_kms);
-   if (!debugfs_root)
-   return -EINVAL;
+   dpu_kms->debugfs_root = debugfs_create_dir("debug",
+  dpu_kms->dev->primary->debugfs_root);
+   if (IS_ERR_OR_NULL(dpu_kms->debugfs_root)) {
+   DRM_ERROR("debugfs create_dir failed %ld\n",
+ PTR_ERR(dpu_kms->debugfs_root));
+   return PTR_ERR(dpu_kms->debugfs_root);
+   }
 
-   rc = dpu_dbg_debugfs_register(debugfs_root);
+   rc = dpu_dbg_debugfs_register(dpu_kms->debugfs_root);
if (rc) {
DRM_ERROR("failed to reg dpu dbg debugfs: %d\n", rc);
return rc;
}
 
-   /* allow debugfs_root to be NULL */
-   debugfs_create_x32(DPU_DEBUGFS_HWMASKNAME, 0600, debugfs_root, p);
+   /* allow root to be NULL */
+   debugfs_create_x32(DPU_DEBUGFS_HWMASKNAME, 0600, dpu_kms->debugfs_root, 
p);
 
-   (void) dpu_debugfs_danger_init(dpu_kms, debugfs_root);
-   (void) dpu_debugfs_vbif_init(dpu_kms, debugfs_root);
-   (void) dpu_debugfs_core_irq_init(dpu_kms, debugfs_root);
+   (void) dpu_debugfs_danger_init(dpu_kms, dpu_kms->debugfs_root);
+   (void) dpu_debugfs_vbif_init(dpu_kms, dpu_kms->debugfs_root);
+   (void) dpu_debugfs_core_irq_init(dpu_kms, dpu_kms->debugfs_root);
 
-   rc = dpu_core_perf_debugfs_init(_kms->perf, debugfs_root);
+   rc = dpu_core_perf_debugfs_init(_kms->perf, dpu_kms->debugfs_root);
if (rc) {
DPU_ERROR("failed to init perf %d\n", rc);
return rc;
@@ -327,6 +319,7 @@ static void _dpu_debugfs_destroy(struct dpu_kms *dpu_kms)
dpu_debugfs_vbif_destroy(dpu_kms);
dpu_debugfs_danger_destroy(dpu_kms);
dpu_debugfs_core_irq_destroy(dpu_kms);
+   debugfs_remove_recursive(dpu_kms->debugfs_root);
}
 }
 #else
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
index fb4ae84a388a..4f86a51affdc 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h
@@ -153,6 +153,7 @@ struct dpu_kms {
struct dpu_power_event *power_event;
 
/* directory entry for debugfs */
+   struct dentry *debugfs_root;
struct dentry *debugfs_danger;
struct dentry *debugfs_vbif;
 
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 5181f997f071..bcd001603768 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -16,7 +16,6 @@
  * this program.  If not, see .
  */
 
-#include 
 #include 
 #include 
 #include 
@@ -281,8 +280,6 @@ static int msm_drm_uninit(struct device *dev)
 
component_unbind_all(dev, ddev);
 
-   debugfs_remove_recursive(priv->debug_root);
-
if (mdss && mdss->funcs)
mdss->funcs->destroy(ddev);
 
@@ -596,15 +593,6 @@ static int msm_drm_init(struct device *dev, struct 
drm_driver *drv)
if (ret)
goto fail;
 
-   priv->debug_root = debugfs_create_dir("debug",
-   ddev->primary->debugfs_root);
-   if (IS_ERR_OR_NULL(priv->debug_root)) {
-   pr_err("debugfs_root create_dir fail, error %ld\n",
-  PTR_ERR(priv->debug_root));
-   priv->debug_root = NULL;
-   goto fail;
-   }
-
/* perform subdriver post initialization */
if (kms && kms->funcs && kms->funcs->postinit) {
ret = kms->funcs->postinit(kms);
@@ -1091,7 +1079,6 @@ static int 

[Freedreno] [DPU PATCH 04/15] drm/msm: Remove more dpu-related code from msm_drv

2018-06-28 Thread Sean Paul
This time the iomap/iounmap helper functions. Move map into dpu and
refactor it to reflect their actual use. iounmap wasn't useful, so
delete it and call iounmap directly.

Signed-off-by: Sean Paul 
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  | 38 +---
 drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c | 13 ++--
 drivers/gpu/drm/msm/msm_drv.c| 23 --
 drivers/gpu/drm/msm/msm_drv.h|  2 --
 4 files changed, 38 insertions(+), 38 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 0b813a089cba..beba919a6ef6 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -77,6 +77,25 @@ bool dpu_is_custom_client(void)
return dpucustom;
 }
 
+static unsigned long dpu_iomap_size(struct platform_device *pdev,
+   const char *name)
+{
+   struct resource *res;
+
+   if (!name) {
+   DRM_ERROR("Resource name unspecified\n");
+   return 0;
+   }
+
+   res = platform_get_resource_byname(pdev, IORESOURCE_MEM, name);
+   if (!res) {
+   DRM_ERROR("failed to get memory resource: %s\n", name);
+   return 0;
+   }
+
+   return resource_size(res);
+}
+
 #ifdef CONFIG_DEBUG_FS
 static int _dpu_danger_signal_status(struct seq_file *s,
bool danger_status)
@@ -1056,15 +1075,15 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms)
dpu_kms->core_client = NULL;
 
if (dpu_kms->vbif[VBIF_NRT])
-   msm_iounmap(dpu_kms->pdev, dpu_kms->vbif[VBIF_NRT]);
+   devm_iounmap(_kms->pdev->dev, dpu_kms->vbif[VBIF_NRT]);
dpu_kms->vbif[VBIF_NRT] = NULL;
 
if (dpu_kms->vbif[VBIF_RT])
-   msm_iounmap(dpu_kms->pdev, dpu_kms->vbif[VBIF_RT]);
+   devm_iounmap(_kms->pdev->dev, dpu_kms->vbif[VBIF_RT]);
dpu_kms->vbif[VBIF_RT] = NULL;
 
if (dpu_kms->mmio)
-   msm_iounmap(dpu_kms->pdev, dpu_kms->mmio);
+   devm_iounmap(_kms->pdev->dev, dpu_kms->mmio);
dpu_kms->mmio = NULL;
 }
 
@@ -1429,7 +1448,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
goto error;
}
DRM_DEBUG("mapped dpu address space @%pK\n", dpu_kms->mmio);
-   dpu_kms->mmio_len = msm_iomap_size(dpu_kms->pdev, "mdp_phys");
+   dpu_kms->mmio_len = dpu_iomap_size(dpu_kms->pdev, "mdp_phys");
 
dpu_kms->vbif[VBIF_RT] = msm_ioremap(dpu_kms->pdev, "vbif_phys",
"vbif_phys");
@@ -1439,16 +1458,15 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
dpu_kms->vbif[VBIF_RT] = NULL;
goto error;
}
-   dpu_kms->vbif_len[VBIF_RT] = msm_iomap_size(dpu_kms->pdev,
-   "vbif_phys");
+   dpu_kms->vbif_len[VBIF_RT] = dpu_iomap_size(dpu_kms->pdev, "vbif_phys");
dpu_kms->vbif[VBIF_NRT] = msm_ioremap(dpu_kms->pdev, "vbif_nrt_phys",

"vbif_nrt_phys");
if (IS_ERR(dpu_kms->vbif[VBIF_NRT])) {
dpu_kms->vbif[VBIF_NRT] = NULL;
DPU_DEBUG("VBIF NRT is not defined");
} else {
-   dpu_kms->vbif_len[VBIF_NRT] = msm_iomap_size(dpu_kms->pdev,
-   "vbif_nrt_phys");
+   dpu_kms->vbif_len[VBIF_NRT] = dpu_iomap_size(dpu_kms->pdev,
+"vbif_nrt_phys");
}
 
dpu_kms->reg_dma = msm_ioremap(dpu_kms->pdev, "regdma_phys",
@@ -1457,8 +1475,8 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
dpu_kms->reg_dma = NULL;
DPU_DEBUG("REG_DMA is not defined");
} else {
-   dpu_kms->reg_dma_len = msm_iomap_size(dpu_kms->pdev,
-   "regdma_phys");
+   dpu_kms->reg_dma_len = dpu_iomap_size(dpu_kms->pdev,
+ "regdma_phys");
}
 
dpu_kms->core_client = dpu_power_client_create(_kms->phandle,
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
index 5c69c2cc5d10..5191c77cd907 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c
@@ -162,7 +162,7 @@ static void dpu_mdss_destroy(struct drm_device *dev)
devm_kfree(>dev, mp->clk_config);
 
if (dpu_mdss->mmio)
-   msm_iounmap(pdev, dpu_mdss->mmio);
+   devm_iounmap(>dev, dpu_mdss->mmio);
dpu_mdss->mmio = NULL;
 
pm_runtime_disable(dev->dev);
@@ -179,6 +179,7 @@ int dpu_mdss_init(struct drm_device *dev)
 {
struct platform_device *pdev = to_platform_device(dev->dev);
struct 

[Freedreno] [DPU PATCH 01/15] drm/msm: Remove more dpu changes from msm core

2018-06-28 Thread Sean Paul
This patch is removing a bunch more dpu changes that
touch msm core.

Signed-off-by: Sean Paul 

Change-Id: I1c82454ad372b34ca5b0d6db2af1b513a5ba2fe1
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c |  77 +--
 drivers/gpu/drm/msm/msm_atomic.c |   3 +-
 drivers/gpu/drm/msm/msm_drv.c| 246 ++-
 drivers/gpu/drm/msm/msm_drv.h| 154 +-
 drivers/gpu/drm/msm/msm_kms.h|   8 +-
 drivers/gpu/drm/msm/msm_rd.c |  55 +
 include/drm/drm_mipi_dsi.h   |   4 -
 include/linux/msm_ext_display.h  | 182 -
 include/uapi/drm/msm_drm.h   |  78 ---
 9 files changed, 47 insertions(+), 760 deletions(-)
 delete mode 100644 include/linux/msm_ext_display.h

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
index 86ed8cb45cee..52f3e0667c33 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
@@ -563,12 +563,6 @@ void dpu_crtc_res_put(struct drm_crtc_state *state, u32 
type, u64 tag)
_dpu_crtc_rp_put(rp, type, tag);
 }
 
-static void _dpu_crtc_deinit_events(struct dpu_crtc *dpu_crtc)
-{
-   if (!dpu_crtc)
-   return;
-}
-
 static void dpu_crtc_destroy(struct drm_crtc *crtc)
 {
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
@@ -578,7 +572,6 @@ static void dpu_crtc_destroy(struct drm_crtc *crtc)
if (!crtc)
return;
 
-   _dpu_crtc_deinit_events(dpu_crtc);
dpu_crtc->phandle = NULL;
 
drm_crtc_cleanup(crtc);
@@ -842,47 +835,6 @@ static void dpu_crtc_vblank_cb(void *data)
trace_dpu_crtc_vblank_cb(DRMID(crtc));
 }
 
-/* _dpu_crtc_idle_notify - signal idle timeout to client */
-static void _dpu_crtc_idle_notify(struct dpu_crtc *dpu_crtc)
-{
-   struct drm_crtc *crtc;
-   struct drm_event event;
-   int ret = 0;
-
-   if (!dpu_crtc) {
-   DPU_ERROR("invalid dpu crtc\n");
-   return;
-   }
-
-   crtc = _crtc->base;
-   event.type = DRM_EVENT_IDLE_NOTIFY;
-   event.length = sizeof(u32);
-   msm_mode_object_event_notify(>base, crtc->dev, ,
-   (u8 *));
-
-   DPU_DEBUG("crtc:%d idle timeout notified\n", crtc->base.id);
-}
-
-/*
- * dpu_crtc_handle_event - crtc frame event handle.
- * This API must manage only non-IRQ context events.
- */
-static bool _dpu_crtc_handle_event(struct dpu_crtc *dpu_crtc, u32 event)
-{
-   bool event_processed = false;
-
-   /**
-* idle events are originated from commit thread and can be processed
-* in same context
-*/
-   if (event & DPU_ENCODER_FRAME_EVENT_IDLE) {
-   _dpu_crtc_idle_notify(dpu_crtc);
-   event_processed = true;
-   }
-
-   return event_processed;
-}
-
 static void dpu_crtc_frame_event_work(struct kthread_work *work)
 {
struct msm_drm_private *priv;
@@ -977,23 +929,22 @@ static void dpu_crtc_frame_event_cb(void *data, u32 event)
struct dpu_crtc_frame_event *fevent;
unsigned long flags;
u32 crtc_id;
-   bool event_processed = false;
 
if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
DPU_ERROR("invalid parameters\n");
return;
}
+
+   /* Nothing to do on idle event */
+   if (event & DPU_ENCODER_FRAME_EVENT_IDLE)
+   return;
+
dpu_crtc = to_dpu_crtc(crtc);
priv = crtc->dev->dev_private;
crtc_id = drm_crtc_index(crtc);
 
trace_dpu_crtc_frame_event_cb(DRMID(crtc), event);
 
-   /* try to process the event in caller context */
-   event_processed = _dpu_crtc_handle_event(dpu_crtc, event);
-   if (event_processed)
-   return;
-
spin_lock_irqsave(_crtc->spin_lock, flags);
fevent = list_first_entry_or_null(_crtc->frame_event_list,
struct dpu_crtc_frame_event, list);
@@ -1665,8 +1616,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
struct drm_display_mode *mode;
struct drm_encoder *encoder;
struct msm_drm_private *priv;
-   struct drm_event event;
-   u32 power_on;
int ret;
 
if (!crtc || !crtc->dev || !crtc->dev->dev_private || !crtc->state) {
@@ -1685,13 +1634,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
 
mutex_lock(_crtc->crtc_lock);
 
-   /* update color processing on suspend */
-   event.type = DRM_EVENT_CRTC_POWER;
-   event.length = sizeof(u32);
-   power_on = 0;
-   msm_mode_object_event_notify(>base, crtc->dev, ,
-   (u8 *)_on);
-
/* wait for frame_event_done completion */
if (_dpu_crtc_wait_for_frame_done(crtc))
DPU_ERROR("crtc%d wait for frame done failed;frame_pending%d\n",
@@ -1745,8 +1687,6 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,

[Freedreno] [DPU PATCH 02/15] video: Remove LF copyright in mipi_display.h

2018-06-28 Thread Sean Paul
It's the only change in that file, so... remove it.

Signed-off-by: Sean Paul 
---
 include/video/mipi_display.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/video/mipi_display.h b/include/video/mipi_display.h
index c83f8a35d765..49a53ef8da96 100644
--- a/include/video/mipi_display.h
+++ b/include/video/mipi_display.h
@@ -4,7 +4,6 @@
  *
  * Copyright (C) 2010 Guennadi Liakhovetski 
  * Copyright (C) 2006 Nokia Corporation
- * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
  * Author: Imre Deak 
  *
  * This program is free software; you can redistribute it and/or modify
-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


[Freedreno] [DPU PATCH 00/15] drm/msm: dpu cleanup in msm

2018-06-28 Thread Sean Paul
Same old thing here, more cleanup patches to reduce the amount of dpu
code leaking into msm core. Most of this has already been squashed into
for-next, because it should be (mostly) uncontraversial and (mostly)
code removal.

Sean

Sean Paul (15):
  drm/msm: Remove more dpu changes from msm core
  video: Remove LF copyright in mipi_display.h
  drm/msm: Move dpu_dbg init/destroy into dpu_kms
  drm/msm: Remove more dpu-related code from msm_drv
  drm/msm: More cleanup in msm_drv
  drm/msm: Move debugfs root tracking to dpu
  drm/msm: Remove _dpu_format_calc_offset_linear()
  drm/msm: dpu: Do debugfs init in the debugfs_init() hook
  drm/msm: Remove get_address_space msm_kms hook
  drm/msm: Remove dpu_kms_fbo and associated functions
  drm/msm: Remove dpu module parameters
  drm/msm: Remove unused backpointers from dpu_crtc
  drm/msm: Reduce dpu_crtc_atomic_check frame size
  drm/msm: Remove atomic_check() from msm_kms
  drm/msm: Remove wait_for_tx_complete() from msm_kms

 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c|  86 +---
 drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h|   4 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_formats.c |  32 --
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 508 +++-
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h |  77 +--
 drivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c|  13 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c   |  12 -
 drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h   |   4 -
 drivers/gpu/drm/msm/msm_atomic.c|   3 +-
 drivers/gpu/drm/msm/msm_drv.c   | 362 ++
 drivers/gpu/drm/msm/msm_drv.h   | 165 +--
 drivers/gpu/drm/msm/msm_fb.c|   4 +-
 drivers/gpu/drm/msm/msm_kms.h   |  19 +-
 drivers/gpu/drm/msm/msm_rd.c|  55 +--
 include/drm/drm_mipi_dsi.h  |   4 -
 include/linux/msm_ext_display.h | 182 ---
 include/uapi/drm/msm_drm.h  |  78 ---
 include/video/mipi_display.h|   1 -
 18 files changed, 134 insertions(+), 1475 deletions(-)
 delete mode 100644 include/linux/msm_ext_display.h

-- 
Sean Paul, Software Engineer, Google / Chromium OS

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


Re: [Freedreno] [PATCH v2 0/9] drm: Third attempt at fixing the fb-helper .best_encoder() mess

2018-06-28 Thread Ville Syrjälä
On Thu, Jun 28, 2018 at 04:13:06PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Changes from the previous version mainly involve Danoie's suggestion

Can't type today either: "Daniel's"

> of hiding the drm_encoder_find() in the iterator macro. I also polished
> the msm and tilcdc cases a bit more with another small helper.
> 
> Cc: Alex Deucher 
> Cc: amd-...@lists.freedesktop.org
> Cc: Ben Skeggs 
> Cc: "Christian König" 
> Cc: Daniel Vetter 
> Cc: "David (ChunMing) Zhou" 
> Cc: Dhinakaran Pandiyan 
> Cc: freedreno@lists.freedesktop.org
> Cc: Harry Wentland 
> Cc: Jyri Sarha 
> Cc: linux-arm-...@vger.kernel.org
> Cc: nouv...@lists.freedesktop.org
> Cc: Rob Clark 
> Cc: Tomi Valkeinen 
> 
> Ville Syrjälä (9):
>   drm/fb-helper: Eliminate the .best_encoder() usage
>   drm/i915: Nuke intel_mst_best_encoder()
>   drm: Add drm_connector_for_each_possible_encoder()
>   drm/amdgpu: Use drm_connector_for_each_possible_encoder()
>   drm/nouveau: Use drm_connector_for_each_possible_encoder()
>   drm/radeon: Use drm_connector_for_each_possible_encoder()
>   drm: Add drm_connector_has_possible_encoder()
>   drm/msm: Use drm_connector_has_possible_encoder()
>   drm/tilcdc: Use drm_connector_has_possible_encoder()
> 
>  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 81 ++-
>  drivers/gpu/drm/amd/amdgpu/dce_virtual.c   | 15 ++---
>  drivers/gpu/drm/drm_connector.c| 44 +
>  drivers/gpu/drm/drm_fb_helper.c| 34 +-
>  drivers/gpu/drm/drm_probe_helper.c | 10 +--
>  drivers/gpu/drm/i915/intel_dp_mst.c| 10 ---
>  drivers/gpu/drm/msm/dsi/dsi_manager.c  |  8 +--
>  drivers/gpu/drm/nouveau/nouveau_connector.c| 21 +-
>  drivers/gpu/drm/radeon/radeon_connectors.c | 90 
> --
>  drivers/gpu/drm/tilcdc/tilcdc_external.c   |  9 ++-
>  include/drm/drm_connector.h| 16 +
>  11 files changed, 128 insertions(+), 210 deletions(-)
> 
> -- 
> 2.16.4

-- 
Ville Syrjälä
Intel
___
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno


[Freedreno] [PATCH v2 8/9] drm/msm: Use drm_connector_has_possible_encoder()

2018-06-28 Thread Ville Syrjala
From: Ville Syrjälä 

Use drm_connector_has_possible_encoder() for checking
whether the encoder has an associated connector.

v2: Replace the drm_for_each_connector_encoder_ids() loop
with a simple drm_connector_has_possible_encoder() call

Cc: Rob Clark 
Cc: linux-arm-...@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/msm/dsi/dsi_manager.c | 8 ++--
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c 
b/drivers/gpu/drm/msm/dsi/dsi_manager.c
index 4cb1cb68878b..4beba3f7d067 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
@@ -751,12 +751,8 @@ struct drm_connector *msm_dsi_manager_ext_bridge_init(u8 
id)
connector_list = >mode_config.connector_list;
 
list_for_each_entry(connector, connector_list, head) {
-   int i;
-
-   for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
-   if (connector->encoder_ids[i] == encoder->base.id)
-   return connector;
-   }
+   if (drm_connector_has_possible_encoder(connector, encoder))
+   return connector;
}
 
return ERR_PTR(-ENODEV);
-- 
2.16.4

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


[Freedreno] [PATCH v2 0/9] drm: Third attempt at fixing the fb-helper .best_encoder() mess

2018-06-28 Thread Ville Syrjala
From: Ville Syrjälä 

Changes from the previous version mainly involve Danoie's suggestion
of hiding the drm_encoder_find() in the iterator macro. I also polished
the msm and tilcdc cases a bit more with another small helper.

Cc: Alex Deucher 
Cc: amd-...@lists.freedesktop.org
Cc: Ben Skeggs 
Cc: "Christian König" 
Cc: Daniel Vetter 
Cc: "David (ChunMing) Zhou" 
Cc: Dhinakaran Pandiyan 
Cc: freedreno@lists.freedesktop.org
Cc: Harry Wentland 
Cc: Jyri Sarha 
Cc: linux-arm-...@vger.kernel.org
Cc: nouv...@lists.freedesktop.org
Cc: Rob Clark 
Cc: Tomi Valkeinen 

Ville Syrjälä (9):
  drm/fb-helper: Eliminate the .best_encoder() usage
  drm/i915: Nuke intel_mst_best_encoder()
  drm: Add drm_connector_for_each_possible_encoder()
  drm/amdgpu: Use drm_connector_for_each_possible_encoder()
  drm/nouveau: Use drm_connector_for_each_possible_encoder()
  drm/radeon: Use drm_connector_for_each_possible_encoder()
  drm: Add drm_connector_has_possible_encoder()
  drm/msm: Use drm_connector_has_possible_encoder()
  drm/tilcdc: Use drm_connector_has_possible_encoder()

 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 81 ++-
 drivers/gpu/drm/amd/amdgpu/dce_virtual.c   | 15 ++---
 drivers/gpu/drm/drm_connector.c| 44 +
 drivers/gpu/drm/drm_fb_helper.c| 34 +-
 drivers/gpu/drm/drm_probe_helper.c | 10 +--
 drivers/gpu/drm/i915/intel_dp_mst.c| 10 ---
 drivers/gpu/drm/msm/dsi/dsi_manager.c  |  8 +--
 drivers/gpu/drm/nouveau/nouveau_connector.c| 21 +-
 drivers/gpu/drm/radeon/radeon_connectors.c | 90 --
 drivers/gpu/drm/tilcdc/tilcdc_external.c   |  9 ++-
 include/drm/drm_connector.h| 16 +
 11 files changed, 128 insertions(+), 210 deletions(-)

-- 
2.16.4

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