[PATCH 3/8] drm/exynos: mixer: simplify {vp_video,mixer_graph}_buffer()

Inki Dae inki.dae at samsung.com
Fri Aug 11 08:04:13 UTC 2017



2017년 08월 09일 20:48에 Tobias Jakobi 이(가) 쓴 글:
> DRM core already checks the validity of the pixelformats, so we
> can simplify the checks here. The same applies to the FB modifier,
> which is now checked in common Exynos plane code.
> 
> Also rename the booleans to reflect what true/false actually
> means.
> 
> Signed-off-by: Tobias Jakobi <tjakobi at math.uni-bielefeld.de>
> ---
>  drivers/gpu/drm/exynos/exynos_mixer.c | 31 +++++++------------------------
>  1 file changed, 7 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 4c894d97aba3..8d68de85bada 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -484,32 +484,18 @@ static void vp_video_buffer(struct mixer_context *ctx,
>  	unsigned int priority = state->base.normalized_zpos + 1;
>  	unsigned long flags;
>  	dma_addr_t luma_addr[2], chroma_addr[2];
> -	bool tiled_mode = false;
> -	bool crcb_mode = false;
> +	bool is_tiled, is_nv21;
>  	u32 val;
>  
> -	switch (fb->format->format) {
> -	case DRM_FORMAT_NV12:
> -		crcb_mode = false;
> -		break;
> -	case DRM_FORMAT_NV21:
> -		crcb_mode = true;
> -		break;
> -	default:
> -		DRM_ERROR("pixel format for vp is wrong [%d].\n",
> -				fb->format->format);
> -		return;
> -	}
> -
> -	if (fb->modifier == DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
> -		tiled_mode = true;
> +	is_nv21 = (fb->format->format == DRM_FORMAT_NV21);
> +	is_tiled = (fb->modifier == DRM_FORMAT_MOD_SAMSUNG_64_32_TILE);
>  
>  	luma_addr[0] = exynos_drm_fb_dma_addr(fb, 0);
>  	chroma_addr[0] = exynos_drm_fb_dma_addr(fb, 1);
>  
>  	if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
>  		__set_bit(MXR_BIT_INTERLACE, &ctx->flags);
> -		if (tiled_mode) {
> +		if (is_tiled) {
>  			luma_addr[1] = luma_addr[0] + 0x40;
>  			chroma_addr[1] = chroma_addr[0] + 0x40;
>  		} else {
> @@ -529,8 +515,8 @@ static void vp_video_buffer(struct mixer_context *ctx,
>  	vp_reg_writemask(res, VP_MODE, val, VP_MODE_LINE_SKIP);
>  
>  	/* setup format */
> -	val = (crcb_mode ? VP_MODE_NV21 : VP_MODE_NV12);
> -	val |= (tiled_mode ? VP_MODE_MEM_TILED : VP_MODE_MEM_LINEAR);
> +	val = (is_nv21 ? VP_MODE_NV21 : VP_MODE_NV12);
> +	val |= (is_tiled ? VP_MODE_MEM_TILED : VP_MODE_MEM_LINEAR);
>  	vp_reg_writemask(res, VP_MODE, val, VP_MODE_FMT_MASK);
>  
>  	/* setting size of input image */
> @@ -620,12 +606,9 @@ static void mixer_graph_buffer(struct mixer_context *ctx,
>  
>  	case DRM_FORMAT_XRGB8888:
>  	case DRM_FORMAT_ARGB8888:
> +	default:
>  		fmt = MXR_FORMAT_ARGB8888;
>  		break;
> -
> -	default:
> -		DRM_DEBUG_KMS("pixelformat unsupported by mixer\n");
> -		return;

This change should be made as another patch because this patch changes the behavior whether it allows wrong pixel format or not.

Thanks,
Inki Dae

>  	}
>  
>  	/* ratio is already checked by common plane code */
> 


More information about the dri-devel mailing list