diff mbox

drm/exynos: use drm_plane_force_disable

Message ID 1428562478-29076-1-git-send-email-jy0922.shim@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonyoung Shim April 9, 2015, 6:54 a.m. UTC
Don't call directly disable callback of plane helper, we need to
disconnect the plane from the fb and crtc after disable callback.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_crtc.c    | 5 +----
 drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
 2 files changed, 2 insertions(+), 5 deletions(-)

Comments

Gustavo Padovan April 9, 2015, 8:25 p.m. UTC | #1
Hi Joonyoung,

2015-04-09 Joonyoung Shim <jy0922.shim@samsung.com>:

> Don't call directly disable callback of plane helper, we need to
> disconnect the plane from the fb and crtc after disable callback.
> 
> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_crtc.c    | 5 +----
>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
>  2 files changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> index 519c569..50c830e 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> @@ -48,7 +48,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
>  {
>  	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
>  	struct drm_plane *plane;
> -	int ret;
>  
>  	if (!exynos_crtc->enabled)
>  		return;
> @@ -69,9 +68,7 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
>  		if (plane->crtc != crtc)
>  			continue;
>  
> -		ret = plane->funcs->disable_plane(plane);
> -		if (ret)
> -			DRM_ERROR("Failed to disable plane %d\n", ret);
> +		drm_plane_force_disable(plane);
>  	}

Which tree did you based this code? I've removed all this code in atomic.
These two pieces of code makes no sense in atomic modesetting, disable would
be called from the drm atomic core there.

	Gustavo
Inki Dae April 10, 2015, 2:16 a.m. UTC | #2
On 2015? 04? 10? 05:25, Gustavo Padovan wrote:
> Hi Joonyoung,
> 
> 2015-04-09 Joonyoung Shim <jy0922.shim@samsung.com>:
> 
>> Don't call directly disable callback of plane helper, we need to
>> disconnect the plane from the fb and crtc after disable callback.
>>
>> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_crtc.c    | 5 +----
>>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
>>  2 files changed, 2 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
>> index 519c569..50c830e 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
>> @@ -48,7 +48,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
>>  {
>>  	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
>>  	struct drm_plane *plane;
>> -	int ret;
>>  
>>  	if (!exynos_crtc->enabled)
>>  		return;
>> @@ -69,9 +68,7 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
>>  		if (plane->crtc != crtc)
>>  			continue;
>>  
>> -		ret = plane->funcs->disable_plane(plane);
>> -		if (ret)
>> -			DRM_ERROR("Failed to disable plane %d\n", ret);
>> +		drm_plane_force_disable(plane);
>>  	}
> 
> Which tree did you based this code? I've removed all this code in atomic.
> These two pieces of code makes no sense in atomic modesetting, disable would
> be called from the drm atomic core there.

Mr. Gustavo,

Could you check if you have other codes not posted? At least, it seems
that the codes you posted are same as above.

Thanks,
Inki Dae

> 
> 	Gustavo
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
Gustavo Padovan April 10, 2015, 6:59 p.m. UTC | #3
Hi Inki,

2015-04-10 Inki Dae <inki.dae@samsung.com>:

> On 2015? 04? 10? 05:25, Gustavo Padovan wrote:
> > Hi Joonyoung,
> > 
> > 2015-04-09 Joonyoung Shim <jy0922.shim@samsung.com>:
> > 
> >> Don't call directly disable callback of plane helper, we need to
> >> disconnect the plane from the fb and crtc after disable callback.
> >>
> >> Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
> >> ---
> >>  drivers/gpu/drm/exynos/exynos_drm_crtc.c    | 5 +----
> >>  drivers/gpu/drm/exynos/exynos_drm_encoder.c | 2 +-
> >>  2 files changed, 2 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> >> index 519c569..50c830e 100644
> >> --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> >> +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> >> @@ -48,7 +48,6 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
> >>  {
> >>  	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
> >>  	struct drm_plane *plane;
> >> -	int ret;
> >>  
> >>  	if (!exynos_crtc->enabled)
> >>  		return;
> >> @@ -69,9 +68,7 @@ static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
> >>  		if (plane->crtc != crtc)
> >>  			continue;
> >>  
> >> -		ret = plane->funcs->disable_plane(plane);
> >> -		if (ret)
> >> -			DRM_ERROR("Failed to disable plane %d\n", ret);
> >> +		drm_plane_force_disable(plane);
> >>  	}
> > 
> > Which tree did you based this code? I've removed all this code in atomic.
> > These two pieces of code makes no sense in atomic modesetting, disable would
> > be called from the drm atomic core there.
> 
> Mr. Gustavo,
> 
> Could you check if you have other codes not posted? At least, it seems
> that the codes you posted are same as above.

In fact there was one patch not post. In my head it was just a simple clean up
so I've delayed but I've looked to them again and it exactly the patch you may
need here.

	Gustavo
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
index 519c569..50c830e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
@@ -48,7 +48,6 @@  static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
 {
 	struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
 	struct drm_plane *plane;
-	int ret;
 
 	if (!exynos_crtc->enabled)
 		return;
@@ -69,9 +68,7 @@  static void exynos_drm_crtc_disable(struct drm_crtc *crtc)
 		if (plane->crtc != crtc)
 			continue;
 
-		ret = plane->funcs->disable_plane(plane);
-		if (ret)
-			DRM_ERROR("Failed to disable plane %d\n", ret);
+		drm_plane_force_disable(plane);
 	}
 }
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
index 0648ba4..3ca266d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
@@ -90,7 +90,7 @@  static void exynos_drm_encoder_disable(struct drm_encoder *encoder)
 	/* all planes connected to this encoder should be also disabled. */
 	drm_for_each_legacy_plane(plane, &dev->mode_config.plane_list) {
 		if (plane->crtc && (plane->crtc == encoder->crtc))
-			plane->funcs->disable_plane(plane);
+			drm_plane_force_disable(plane);
 	}
 }