[PATCH v2 02/10] drm/exynos: use helper to set possible crtcs

Inki Dae inki.dae at samsung.com
Fri Aug 25 02:42:21 UTC 2017



2017년 08월 24일 22:33에 Andrzej Hajda 이(가) 쓴 글:
> All encoders share the same code to set encoders possible_crtcs field.
> The patch creates helper to abstract out this code.
> 
> Signed-off-by: Andrzej Hajda <a.hajda at samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_dp.c       | 15 +++++----------
>  drivers/gpu/drm/exynos/exynos_drm_core.c |  1 +
>  drivers/gpu/drm/exynos/exynos_drm_crtc.c | 21 ++++++++++++++++++---
>  drivers/gpu/drm/exynos/exynos_drm_crtc.h | 10 +++++++---
>  drivers/gpu/drm/exynos/exynos_drm_dpi.c  | 12 ++++--------
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c  | 13 ++++---------
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c | 15 +++++----------
>  drivers/gpu/drm/exynos/exynos_hdmi.c     | 25 +++++++++----------------
>  8 files changed, 53 insertions(+), 59 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_dp.c b/drivers/gpu/drm/exynos/exynos_dp.c
> index 385537b..39629e7 100644
> --- a/drivers/gpu/drm/exynos/exynos_dp.c
> +++ b/drivers/gpu/drm/exynos/exynos_dp.c
> @@ -155,7 +155,7 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data)
>  	struct exynos_dp_device *dp = dev_get_drvdata(dev);
>  	struct drm_encoder *encoder = &dp->encoder;
>  	struct drm_device *drm_dev = data;
> -	int pipe, ret;
> +	int ret;
>  
>  	/*
>  	 * Just like the probe function said, we don't need the
> @@ -179,20 +179,15 @@ static int exynos_dp_bind(struct device *dev, struct device *master, void *data)
>  			return ret;
>  	}
>  
> -	pipe = exynos_drm_crtc_get_pipe_from_type(drm_dev,
> -						  EXYNOS_DISPLAY_TYPE_LCD);
> -	if (pipe < 0)
> -		return pipe;
> -
> -	encoder->possible_crtcs = 1 << pipe;
> -
> -	DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
> -
>  	drm_encoder_init(drm_dev, encoder, &exynos_dp_encoder_funcs,
>  			 DRM_MODE_ENCODER_TMDS, NULL);
>  
>  	drm_encoder_helper_add(encoder, &exynos_dp_encoder_helper_funcs);
>  
> +	ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD);
> +	if (ret < 0)
> +		return ret;
> +
>  	dp->plat_data.encoder = encoder;
>  
>  	return analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data);
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c
> index edbd98f..b0c0621 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_core.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
> @@ -13,6 +13,7 @@
>   */
>  
>  #include <drm/drmP.h>
> +
>  #include "exynos_drm_drv.h"
>  #include "exynos_drm_crtc.h"
>  
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> index c37078f..ac544de 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> @@ -16,6 +16,7 @@
>  #include <drm/drm_crtc_helper.h>
>  #include <drm/drm_atomic.h>
>  #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_encoder.h>
>  
>  #include "exynos_drm_crtc.h"
>  #include "exynos_drm_drv.h"
> @@ -191,16 +192,30 @@ struct exynos_drm_crtc *exynos_drm_crtc_create(struct drm_device *drm_dev,
>  	return ERR_PTR(ret);
>  }
>  
> -int exynos_drm_crtc_get_pipe_from_type(struct drm_device *drm_dev,
> +struct exynos_drm_crtc *exynos_drm_crtc_get_by_type(struct drm_device *drm_dev,

You don't have to modify this function because no user to use this function here.
Moving this change to actual user, patch 4, would be better. Anyway trivial thing so I will merge it as-is.


Thanks,
Inki Dae


More information about the dri-devel mailing list