* [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit
@ 2018-11-16 19:22 Jeykumar Sankaran
2018-11-16 19:22 ` [PATCH 2/2] drm/msm/dpu: add display port support in DPU Jeykumar Sankaran
[not found] ` <1542396142-19534-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
0 siblings, 2 replies; 7+ messages in thread
From: Jeykumar Sankaran @ 2018-11-16 19:22 UTC (permalink / raw)
To: dri-devel, freedreno, linux-arm-msm; +Cc: hoegsberg, seanpaul
Add encoder interface to release dpu encoder
on mode_init failures in kms.
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
---
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 12 ++++++++++--
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 6 ++++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index dd7ab85..b253165 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -422,6 +422,15 @@ void dpu_encoder_get_hw_resources(struct drm_encoder *drm_enc,
}
}
+void dpu_encoder_uninit(struct drm_encoder *drm_enc)
+{
+ struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc);
+
+ drm_encoder_cleanup(drm_enc);
+
+ kfree(dpu_enc);
+}
+
static void dpu_encoder_destroy(struct drm_encoder *drm_enc)
{
struct dpu_encoder_virt *dpu_enc = NULL;
@@ -453,10 +462,9 @@ static void dpu_encoder_destroy(struct drm_encoder *drm_enc)
dpu_enc->num_phys_encs = 0;
mutex_unlock(&dpu_enc->enc_lock);
- drm_encoder_cleanup(drm_enc);
mutex_destroy(&dpu_enc->enc_lock);
- kfree(dpu_enc);
+ dpu_encoder_uninit(drm_enc);
}
void dpu_encoder_helper_split_config(
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
index 9dbf38f..60b88bd 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
@@ -142,6 +142,12 @@ struct drm_encoder *dpu_encoder_init(
int drm_enc_mode);
/**
+ * dpu_encoder_uninit - uninitialize virtual encoder object
+ * @drm_enc: Pointer to drm encoder
+ */
+void dpu_encoder_uninit(struct drm_encoder *drm_enc);
+
+/**
* dpu_encoder_setup - setup dpu_encoder for the display probed
* @dev: Pointer to drm device structure
* @enc: Pointer to the drm_encoder
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/2] drm/msm/dpu: add display port support in DPU 2018-11-16 19:22 [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit Jeykumar Sankaran @ 2018-11-16 19:22 ` Jeykumar Sankaran 2018-11-16 20:33 ` Jordan Crouse [not found] ` <1542396142-19534-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 1 sibling, 1 reply; 7+ messages in thread From: Jeykumar Sankaran @ 2018-11-16 19:22 UTC (permalink / raw) To: dri-devel, freedreno, linux-arm-msm; +Cc: hoegsberg, seanpaul Add display port support in DPU by creating hooks for DP encoder enumeration and encoder mode initialization. This change is based on the SDM845 Display port driver changes[1]. [1] https://lwn.net/Articles/768265/ Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 49 +++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index b253165..e9c7edc6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -2048,6 +2048,9 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc, case DRM_MODE_ENCODER_DSI: intf_type = INTF_DSI; break; + case DRM_MODE_ENCODER_TMDS: + intf_type = INTF_DP; + break; default: DPU_ERROR_ENC(dpu_enc, "unsupported display interface type\n"); return -EINVAL; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 985c855..b823a37 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -473,6 +473,31 @@ static void _dpu_kms_initialize_dsi(struct drm_device *dev, } } +static void _dpu_kms_initialize_displayport(struct drm_device *dev, + struct msm_drm_private *priv, + struct dpu_kms *dpu_kms) +{ + struct drm_encoder *encoder = NULL; + int rc; + + if (!priv->dp) + return; + + encoder = dpu_encoder_init(dev, DRM_MODE_ENCODER_TMDS); + if (IS_ERR_OR_NULL(encoder)) { + DPU_ERROR("encoder init failed for dsi display\n"); + return; + } + + priv->encoders[priv->num_encoders++] = encoder; + + rc = msm_dp_modeset_init(priv->dp, dev, encoder); + if (rc) { + DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc); + dpu_encoder_uninit(encoder); + } +} + /** * _dpu_kms_setup_displays - create encoders, bridges and connectors * for underlying displays @@ -487,6 +512,8 @@ static void _dpu_kms_setup_displays(struct drm_device *dev, { _dpu_kms_initialize_dsi(dev, priv, dpu_kms); + _dpu_kms_initialize_displayport(dev, priv, dpu_kms); + /** * Extend this function to initialize other * types of displays @@ -723,13 +750,23 @@ static void _dpu_kms_set_encoder_mode(struct msm_kms *kms, info.capabilities = cmd_mode ? MSM_DISPLAY_CAP_CMD_MODE : MSM_DISPLAY_CAP_VID_MODE; - /* TODO: No support for DSI swap */ - for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) { - if (priv->dsi[i]) { - info.h_tile_instance[info.num_of_h_tiles] = i; - info.num_of_h_tiles++; + switch (info.intf_type) { + case DRM_MODE_ENCODER_DSI: + /* TODO: No support for DSI swap */ + for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) { + if (priv->dsi[i]) { + info.h_tile_instance[info.num_of_h_tiles] = i; + info.num_of_h_tiles++; + } } - } + break; + case DRM_MODE_ENCODER_TMDS: + info.num_of_h_tiles = 1; + break; + default: + DPU_ERROR("Invalid connector type\n"); + return; + }; rc = dpu_encoder_setup(encoder->dev, encoder, &info); if (rc) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] drm/msm/dpu: add display port support in DPU 2018-11-16 19:22 ` [PATCH 2/2] drm/msm/dpu: add display port support in DPU Jeykumar Sankaran @ 2018-11-16 20:33 ` Jordan Crouse 0 siblings, 0 replies; 7+ messages in thread From: Jordan Crouse @ 2018-11-16 20:33 UTC (permalink / raw) To: Jeykumar Sankaran Cc: seanpaul, linux-arm-msm, hoegsberg, freedreno, dri-devel On Fri, Nov 16, 2018 at 11:22:22AM -0800, Jeykumar Sankaran wrote: > Add display port support in DPU by creating hooks > for DP encoder enumeration and encoder mode > initialization. > > This change is based on the SDM845 Display port > driver changes[1]. > > [1] https://lwn.net/Articles/768265/ > > Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3 ++ > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 49 +++++++++++++++++++++++++---- > 2 files changed, 46 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > index b253165..e9c7edc6 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > @@ -2048,6 +2048,9 @@ static int dpu_encoder_setup_display(struct dpu_encoder_virt *dpu_enc, > case DRM_MODE_ENCODER_DSI: > intf_type = INTF_DSI; > break; > + case DRM_MODE_ENCODER_TMDS: > + intf_type = INTF_DP; > + break; > default: > DPU_ERROR_ENC(dpu_enc, "unsupported display interface type\n"); > return -EINVAL; > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index 985c855..b823a37 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -473,6 +473,31 @@ static void _dpu_kms_initialize_dsi(struct drm_device *dev, > } > } > > +static void _dpu_kms_initialize_displayport(struct drm_device *dev, > + struct msm_drm_private *priv, > + struct dpu_kms *dpu_kms) > +{ > + struct drm_encoder *encoder = NULL; > + int rc; > + > + if (!priv->dp) > + return; > + > + encoder = dpu_encoder_init(dev, DRM_MODE_ENCODER_TMDS); > + if (IS_ERR_OR_NULL(encoder)) { dpu_encoder_init() only returns valid pointer or ERR_PTR() so a Only IS_ERR() is needed. > + DPU_ERROR("encoder init failed for dsi display\n"); > + return; > + } > + > + priv->encoders[priv->num_encoders++] = encoder; > + > + rc = msm_dp_modeset_init(priv->dp, dev, encoder); > + if (rc) { > + DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc); > + dpu_encoder_uninit(encoder); > + } > +} > + > /** > * _dpu_kms_setup_displays - create encoders, bridges and connectors > * for underlying displays > @@ -487,6 +512,8 @@ static void _dpu_kms_setup_displays(struct drm_device *dev, > { > _dpu_kms_initialize_dsi(dev, priv, dpu_kms); > > + _dpu_kms_initialize_displayport(dev, priv, dpu_kms); > + > /** > * Extend this function to initialize other > * types of displays > @@ -723,13 +750,23 @@ static void _dpu_kms_set_encoder_mode(struct msm_kms *kms, > info.capabilities = cmd_mode ? MSM_DISPLAY_CAP_CMD_MODE : > MSM_DISPLAY_CAP_VID_MODE; > > - /* TODO: No support for DSI swap */ > - for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) { > - if (priv->dsi[i]) { > - info.h_tile_instance[info.num_of_h_tiles] = i; > - info.num_of_h_tiles++; > + switch (info.intf_type) { > + case DRM_MODE_ENCODER_DSI: > + /* TODO: No support for DSI swap */ > + for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) { > + if (priv->dsi[i]) { > + info.h_tile_instance[info.num_of_h_tiles] = i; > + info.num_of_h_tiles++; > + } > } > - } > + break; > + case DRM_MODE_ENCODER_TMDS: > + info.num_of_h_tiles = 1; > + break; > + default: > + DPU_ERROR("Invalid connector type\n"); > + return; > + }; This is still going to be one of two options, a simple if/else can suffice here and you don't need a log message and a default path. > > rc = dpu_encoder_setup(encoder->dev, encoder, &info); > if (rc) Jordan -- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <1542396142-19534-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>]
* Re: [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit [not found] ` <1542396142-19534-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> @ 2018-11-16 21:35 ` Sean Paul 2018-11-16 21:37 ` Sean Paul 2018-11-19 18:48 ` Jeykumar Sankaran 0 siblings, 2 replies; 7+ messages in thread From: Sean Paul @ 2018-11-16 21:35 UTC (permalink / raw) To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, robdclark-Re5JQEeQqe8AvxtiuMwx3w, seanpaul-F7+t8E8rja9g9hUCZPvPmw, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On Fri, Nov 16, 2018 at 11:22:21AM -0800, Jeykumar Sankaran wrote: > Add encoder interface to release dpu encoder > on mode_init failures in kms. > > Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 12 ++++++++++-- > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 6 ++++++ > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > index dd7ab85..b253165 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > @@ -422,6 +422,15 @@ void dpu_encoder_get_hw_resources(struct drm_encoder *drm_enc, > } > } > > +void dpu_encoder_uninit(struct drm_encoder *drm_enc) > +{ > + struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc); > + > + drm_encoder_cleanup(drm_enc); > + > + kfree(dpu_enc); > +} > + > static void dpu_encoder_destroy(struct drm_encoder *drm_enc) > { > struct dpu_encoder_virt *dpu_enc = NULL; > @@ -453,10 +462,9 @@ static void dpu_encoder_destroy(struct drm_encoder *drm_enc) > dpu_enc->num_phys_encs = 0; > mutex_unlock(&dpu_enc->enc_lock); > > - drm_encoder_cleanup(drm_enc); > mutex_destroy(&dpu_enc->enc_lock); > > - kfree(dpu_enc); > + dpu_encoder_uninit(drm_enc); > } > > void dpu_encoder_helper_split_config( > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > index 9dbf38f..60b88bd 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > @@ -142,6 +142,12 @@ struct drm_encoder *dpu_encoder_init( > int drm_enc_mode); > > /** > + * dpu_encoder_uninit - uninitialize virtual encoder object > + * @drm_enc: Pointer to drm encoder > + */ > +void dpu_encoder_uninit(struct drm_encoder *drm_enc); Just make it static? > + > +/** > * dpu_encoder_setup - setup dpu_encoder for the display probed > * @dev: Pointer to drm device structure > * @enc: Pointer to the drm_encoder > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project > -- 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] 7+ messages in thread
* Re: [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit 2018-11-16 21:35 ` [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit Sean Paul @ 2018-11-16 21:37 ` Sean Paul 2018-11-19 18:50 ` Jeykumar Sankaran 2018-11-19 18:48 ` Jeykumar Sankaran 1 sibling, 1 reply; 7+ messages in thread From: Sean Paul @ 2018-11-16 21:37 UTC (permalink / raw) To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, robdclark-Re5JQEeQqe8AvxtiuMwx3w, seanpaul-F7+t8E8rja9g9hUCZPvPmw, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On Fri, Nov 16, 2018 at 04:35:26PM -0500, Sean Paul wrote: > On Fri, Nov 16, 2018 at 11:22:21AM -0800, Jeykumar Sankaran wrote: > > Add encoder interface to release dpu encoder > > on mode_init failures in kms. > > > > Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> > > --- > > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 12 ++++++++++-- > > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 6 ++++++ > > 2 files changed, 16 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > > index dd7ab85..b253165 100644 > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > > @@ -422,6 +422,15 @@ void dpu_encoder_get_hw_resources(struct drm_encoder *drm_enc, > > } > > } > > > > +void dpu_encoder_uninit(struct drm_encoder *drm_enc) > > +{ > > + struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc); > > + > > + drm_encoder_cleanup(drm_enc); > > + > > + kfree(dpu_enc); > > +} > > + > > static void dpu_encoder_destroy(struct drm_encoder *drm_enc) > > { > > struct dpu_encoder_virt *dpu_enc = NULL; > > @@ -453,10 +462,9 @@ static void dpu_encoder_destroy(struct drm_encoder *drm_enc) > > dpu_enc->num_phys_encs = 0; > > mutex_unlock(&dpu_enc->enc_lock); > > > > - drm_encoder_cleanup(drm_enc); > > mutex_destroy(&dpu_enc->enc_lock); > > > > - kfree(dpu_enc); > > + dpu_encoder_uninit(drm_enc); > > } > > > > void dpu_encoder_helper_split_config( > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > > index 9dbf38f..60b88bd 100644 > > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > > @@ -142,6 +142,12 @@ struct drm_encoder *dpu_encoder_init( > > int drm_enc_mode); > > > > /** > > + * dpu_encoder_uninit - uninitialize virtual encoder object > > + * @drm_enc: Pointer to drm encoder > > + */ > > +void dpu_encoder_uninit(struct drm_encoder *drm_enc); > > Just make it static? I just saw YueHaibing's patch to remove the kfree entirely since dpu_enc is devm_* managed. IMO, that'd be a better solution than this. Sean > > > + > > +/** > > * dpu_encoder_setup - setup dpu_encoder for the display probed > > * @dev: Pointer to drm device structure > > * @enc: Pointer to the drm_encoder > > -- > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > > a Linux Foundation Collaborative Project > > > > -- > Sean Paul, Software Engineer, Google / Chromium OS -- 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] 7+ messages in thread
* Re: [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit 2018-11-16 21:37 ` Sean Paul @ 2018-11-19 18:50 ` Jeykumar Sankaran 0 siblings, 0 replies; 7+ messages in thread From: Jeykumar Sankaran @ 2018-11-19 18:50 UTC (permalink / raw) To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, robdclark-Re5JQEeQqe8AvxtiuMwx3w, seanpaul-F7+t8E8rja9g9hUCZPvPmw, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On 2018-11-16 13:37, Sean Paul wrote: > On Fri, Nov 16, 2018 at 04:35:26PM -0500, Sean Paul wrote: >> On Fri, Nov 16, 2018 at 11:22:21AM -0800, Jeykumar Sankaran wrote: >> > Add encoder interface to release dpu encoder >> > on mode_init failures in kms. >> > >> > Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> >> > --- >> > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 12 ++++++++++-- >> > drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 6 ++++++ >> > 2 files changed, 16 insertions(+), 2 deletions(-) >> > >> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> > index dd7ab85..b253165 100644 >> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> > @@ -422,6 +422,15 @@ void dpu_encoder_get_hw_resources(struct > drm_encoder *drm_enc, >> > } >> > } >> > >> > +void dpu_encoder_uninit(struct drm_encoder *drm_enc) >> > +{ >> > + struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc); >> > + >> > + drm_encoder_cleanup(drm_enc); >> > + >> > + kfree(dpu_enc); >> > +} >> > + >> > static void dpu_encoder_destroy(struct drm_encoder *drm_enc) >> > { >> > struct dpu_encoder_virt *dpu_enc = NULL; >> > @@ -453,10 +462,9 @@ static void dpu_encoder_destroy(struct > drm_encoder *drm_enc) >> > dpu_enc->num_phys_encs = 0; >> > mutex_unlock(&dpu_enc->enc_lock); >> > >> > - drm_encoder_cleanup(drm_enc); >> > mutex_destroy(&dpu_enc->enc_lock); >> > >> > - kfree(dpu_enc); >> > + dpu_encoder_uninit(drm_enc); >> > } >> > >> > void dpu_encoder_helper_split_config( >> > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> > index 9dbf38f..60b88bd 100644 >> > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> > @@ -142,6 +142,12 @@ struct drm_encoder *dpu_encoder_init( >> > int drm_enc_mode); >> > >> > /** >> > + * dpu_encoder_uninit - uninitialize virtual encoder object >> > + * @drm_enc: Pointer to drm encoder >> > + */ >> > +void dpu_encoder_uninit(struct drm_encoder *drm_enc); >> >> Just make it static? > > I just saw YueHaibing's patch to remove the kfree entirely since > dpu_enc > is > devm_* managed. IMO, that'd be a better solution than this. > > Sean > I still need the unint here to call drm_encoder_cleanup if the display mode_init fails. I will rebase the patch on top of https://lkml.org/lkml/2018/11/17/87 Thanks, Jeykumar S. > >> >> > + >> > +/** >> > * dpu_encoder_setup - setup dpu_encoder for the display probed >> > * @dev: Pointer to drm device structure >> > * @enc: Pointer to the drm_encoder >> > -- >> > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora > Forum, >> > a Linux Foundation Collaborative Project >> > >> >> -- >> Sean Paul, Software Engineer, Google / Chromium OS -- Jeykumar S _______________________________________________ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit 2018-11-16 21:35 ` [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit Sean Paul 2018-11-16 21:37 ` Sean Paul @ 2018-11-19 18:48 ` Jeykumar Sankaran 1 sibling, 0 replies; 7+ messages in thread From: Jeykumar Sankaran @ 2018-11-19 18:48 UTC (permalink / raw) To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, robdclark-Re5JQEeQqe8AvxtiuMwx3w, seanpaul-F7+t8E8rja9g9hUCZPvPmw, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW On 2018-11-16 13:35, Sean Paul wrote: > On Fri, Nov 16, 2018 at 11:22:21AM -0800, Jeykumar Sankaran wrote: >> Add encoder interface to release dpu encoder >> on mode_init failures in kms. >> >> Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org> >> --- >> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 12 ++++++++++-- >> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h | 6 ++++++ >> 2 files changed, 16 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> index dd7ab85..b253165 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c >> @@ -422,6 +422,15 @@ void dpu_encoder_get_hw_resources(struct > drm_encoder *drm_enc, >> } >> } >> >> +void dpu_encoder_uninit(struct drm_encoder *drm_enc) >> +{ >> + struct dpu_encoder_virt *dpu_enc = to_dpu_encoder_virt(drm_enc); >> + >> + drm_encoder_cleanup(drm_enc); >> + >> + kfree(dpu_enc); >> +} >> + >> static void dpu_encoder_destroy(struct drm_encoder *drm_enc) >> { >> struct dpu_encoder_virt *dpu_enc = NULL; >> @@ -453,10 +462,9 @@ static void dpu_encoder_destroy(struct >> drm_encoder > *drm_enc) >> dpu_enc->num_phys_encs = 0; >> mutex_unlock(&dpu_enc->enc_lock); >> >> - drm_encoder_cleanup(drm_enc); >> mutex_destroy(&dpu_enc->enc_lock); >> >> - kfree(dpu_enc); >> + dpu_encoder_uninit(drm_enc); >> } >> >> void dpu_encoder_helper_split_config( >> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h > b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> index 9dbf38f..60b88bd 100644 >> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h >> @@ -142,6 +142,12 @@ struct drm_encoder *dpu_encoder_init( >> int drm_enc_mode); >> >> /** >> + * dpu_encoder_uninit - uninitialize virtual encoder object >> + * @drm_enc: Pointer to drm encoder >> + */ >> +void dpu_encoder_uninit(struct drm_encoder *drm_enc); > > Just make it static? encoder_uninit will be called by dpu_kms in patch 2/2 in case of mode_init failures. Thanks and Regards, Jeykumar S. > >> + >> +/** >> * dpu_encoder_setup - setup dpu_encoder for the display probed >> * @dev: Pointer to drm device structure >> * @enc: Pointer to the drm_encoder >> -- >> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora > Forum, >> a Linux Foundation Collaborative Project >> -- Jeykumar S _______________________________________________ Freedreno mailing list Freedreno@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/freedreno ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-11-19 18:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-16 19:22 [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit Jeykumar Sankaran
2018-11-16 19:22 ` [PATCH 2/2] drm/msm/dpu: add display port support in DPU Jeykumar Sankaran
2018-11-16 20:33 ` Jordan Crouse
[not found] ` <1542396142-19534-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-11-16 21:35 ` [PATCH 1/2] drm/msm/dpu: add dpu encoder uninit Sean Paul
2018-11-16 21:37 ` Sean Paul
2018-11-19 18:50 ` Jeykumar Sankaran
2018-11-19 18:48 ` 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.