Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp744441pxj; Tue, 18 May 2021 13:09:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxV36tMDLE3JvB41rid9vGXsSSfLv4on2SLkftbLzHUCwMak1+e8eKwUI5ImwS0asBsGYf1 X-Received: by 2002:a05:6402:2550:: with SMTP id l16mr8999714edb.249.1621368548371; Tue, 18 May 2021 13:09:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621368548; cv=none; d=google.com; s=arc-20160816; b=Imx1DsWnQVj8gw0q6W5GhF57TWpExT5VHqVntO5rbUGVgS5mx2zpevCZhYQYOQ68OK MRrnuI8GSuB4vzuUP/DonxAWgS1KY6K0ZR0OKo06xkCBSOF5jXlXWPDTWk/IRnaN5ESa krYL9aP5bd+nXF3RPGY9EoeXzNdT8f24APMSj9f+32Fe/4zdsUUxasX5vY2/7G1cZ+1f hcoeOWIwJh1FMnjmVpqm5qa06MbD95R+wdN1rE9QLNM3NbZFReGNlLfKDcpCQ47/es37 7EvhMcAV6dnisCN9SPOlZ79D0fR/u54c0oY+rsMex+WeEXnDHbG5aEWY30gICx2kprgc grfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:cc:to:subject:from:date; bh=xRXRogLJgSN2Z2vyP6pFKryN74zSam3frFN3SJP10gQ=; b=pkTZNNETvlGgjZ3C98pcbfAaP1RGxhEzjJqIcNwtzru5S79G8ni8tvMkoZvm6HaR+z R5oCavgLF62QLQ10T9ucskWszQ/tbInTaAy9VDiFYD/ZbyWHdYt1NAXNX9bfKK1t919v u7KhM45CGDMoE7S3uELqEHheJ8LRGKtUqphyjF2bf7c3zNO6Ed7qvuKs6x3j06FJM/sb UvK9Y2oxFN0fAfZ/Ybk7g1WTTHddQ2KkxlifsprwE+2uGggtU5v8UlEQ/bRM1mquBteT vt1JNQxJMFI6riKpbYBxKZyjxicJbE06VcyfqyGJ2O/x5SrxizD8GAnh4Eess8TaA0kT 5FCQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g4si546079ejo.421.2021.05.18.13.08.37; Tue, 18 May 2021 13:09:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240183AbhEQQuE convert rfc822-to-8bit (ORCPT + 99 others); Mon, 17 May 2021 12:50:04 -0400 Received: from aposti.net ([89.234.176.197]:49728 "EHLO aposti.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240137AbhEQQtj (ORCPT ); Mon, 17 May 2021 12:49:39 -0400 Date: Mon, 17 May 2021 17:48:09 +0100 From: Paul Cercueil Subject: Re: [PATCH 1/2] drm: xlnx: add is_layer_vid() to simplify the code To: quanyang.wang@windriver.com Cc: Hyun Kwon , Laurent Pinchart , David Airlie , Daniel Vetter , Michal Simek , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Message-Id: <90G9TQ.H0YO8VGDCBTU@crapouillou.net> In-Reply-To: <20210513114540.1241122-2-quanyang.wang@windriver.com> References: <20210513114540.1241122-1-quanyang.wang@windriver.com> <20210513114540.1241122-2-quanyang.wang@windriver.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Quanyang, Le jeu., mai 13 2021 at 19:45:39 +0800, quanyang.wang@windriver.com a ?crit : > From: Quanyang Wang > > Add a new function is_layer_vid() to simplify the code that > judges if a layer is the video layer. > > Signed-off-by: Quanyang Wang > --- > drivers/gpu/drm/xlnx/zynqmp_disp.c | 39 > +++++++++++++++++------------- > 1 file changed, 22 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/xlnx/zynqmp_disp.c > b/drivers/gpu/drm/xlnx/zynqmp_disp.c > index 109d627968ac..c55e24412f8c 100644 > --- a/drivers/gpu/drm/xlnx/zynqmp_disp.c > +++ b/drivers/gpu/drm/xlnx/zynqmp_disp.c > @@ -434,30 +434,35 @@ static void zynqmp_disp_avbuf_write(struct > zynqmp_disp_avbuf *avbuf, > writel(val, avbuf->base + reg); > } > > +static bool is_layer_vid(struct zynqmp_disp_layer *layer) 'layer' should be const. > +{ > + return (layer->id == ZYNQMP_DISP_LAYER_VID) ? true : false; return layer->id == ZYNQMP_DISP_LAYER_VID; The rest looks good. With these fixed: Acked-by: Paul Cercueil Cheers, -Paul > +} > + > /** > * zynqmp_disp_avbuf_set_format - Set the input format for a layer > * @avbuf: Audio/video buffer manager > - * @layer: The layer ID > + * @layer: The layer > * @fmt: The format information > * > * Set the video buffer manager format for @layer to @fmt. > */ > static void zynqmp_disp_avbuf_set_format(struct zynqmp_disp_avbuf > *avbuf, > - enum zynqmp_disp_layer_id layer, > + struct zynqmp_disp_layer *layer, > const struct zynqmp_disp_format *fmt) > { > unsigned int i; > u32 val; > > val = zynqmp_disp_avbuf_read(avbuf, ZYNQMP_DISP_AV_BUF_FMT); > - val &= layer == ZYNQMP_DISP_LAYER_VID > + val &= is_layer_vid(layer) > ? ~ZYNQMP_DISP_AV_BUF_FMT_NL_VID_MASK > : ~ZYNQMP_DISP_AV_BUF_FMT_NL_GFX_MASK; > val |= fmt->buf_fmt; > zynqmp_disp_avbuf_write(avbuf, ZYNQMP_DISP_AV_BUF_FMT, val); > > for (i = 0; i < ZYNQMP_DISP_AV_BUF_NUM_SF; i++) { > - unsigned int reg = layer == ZYNQMP_DISP_LAYER_VID > + unsigned int reg = is_layer_vid(layer) > ? ZYNQMP_DISP_AV_BUF_VID_COMP_SF(i) > : ZYNQMP_DISP_AV_BUF_GFX_COMP_SF(i); > > @@ -573,19 +578,19 @@ static void > zynqmp_disp_avbuf_disable_audio(struct zynqmp_disp_avbuf *avbuf) > /** > * zynqmp_disp_avbuf_enable_video - Enable a video layer > * @avbuf: Audio/video buffer manager > - * @layer: The layer ID > + * @layer: The layer > * @mode: Operating mode of layer > * > * Enable the video/graphics buffer for @layer. > */ > static void zynqmp_disp_avbuf_enable_video(struct zynqmp_disp_avbuf > *avbuf, > - enum zynqmp_disp_layer_id layer, > + struct zynqmp_disp_layer *layer, > enum zynqmp_disp_layer_mode mode) > { > u32 val; > > val = zynqmp_disp_avbuf_read(avbuf, ZYNQMP_DISP_AV_BUF_OUTPUT); > - if (layer == ZYNQMP_DISP_LAYER_VID) { > + if (is_layer_vid(layer)) { > val &= ~ZYNQMP_DISP_AV_BUF_OUTPUT_VID1_MASK; > if (mode == ZYNQMP_DISP_LAYER_NONLIVE) > val |= ZYNQMP_DISP_AV_BUF_OUTPUT_VID1_MEM; > @@ -605,17 +610,17 @@ static void > zynqmp_disp_avbuf_enable_video(struct zynqmp_disp_avbuf *avbuf, > /** > * zynqmp_disp_avbuf_disable_video - Disable a video layer > * @avbuf: Audio/video buffer manager > - * @layer: The layer ID > + * @layer: The layer > * > * Disable the video/graphics buffer for @layer. > */ > static void zynqmp_disp_avbuf_disable_video(struct zynqmp_disp_avbuf > *avbuf, > - enum zynqmp_disp_layer_id layer) > + struct zynqmp_disp_layer *layer) > { > u32 val; > > val = zynqmp_disp_avbuf_read(avbuf, ZYNQMP_DISP_AV_BUF_OUTPUT); > - if (layer == ZYNQMP_DISP_LAYER_VID) { > + if (is_layer_vid(layer)) { > val &= ~ZYNQMP_DISP_AV_BUF_OUTPUT_VID1_MASK; > val |= ZYNQMP_DISP_AV_BUF_OUTPUT_VID1_NONE; > } else { > @@ -807,7 +812,7 @@ static void > zynqmp_disp_blend_layer_set_csc(struct zynqmp_disp_blend *blend, > } > } > > - if (layer->id == ZYNQMP_DISP_LAYER_VID) > + if (is_layer_vid(layer)) > reg = ZYNQMP_DISP_V_BLEND_IN1CSC_COEFF(0); > else > reg = ZYNQMP_DISP_V_BLEND_IN2CSC_COEFF(0); > @@ -818,7 +823,7 @@ static void > zynqmp_disp_blend_layer_set_csc(struct zynqmp_disp_blend *blend, > zynqmp_disp_blend_write(blend, reg + 8, coeffs[i + swap[2]]); > } > > - if (layer->id == ZYNQMP_DISP_LAYER_VID) > + if (is_layer_vid(layer)) > reg = ZYNQMP_DISP_V_BLEND_IN1CSC_OFFSET(0); > else > reg = ZYNQMP_DISP_V_BLEND_IN2CSC_OFFSET(0); > @@ -1025,7 +1030,7 @@ zynqmp_disp_layer_find_format(struct > zynqmp_disp_layer *layer, > */ > static void zynqmp_disp_layer_enable(struct zynqmp_disp_layer *layer) > { > - zynqmp_disp_avbuf_enable_video(&layer->disp->avbuf, layer->id, > + zynqmp_disp_avbuf_enable_video(&layer->disp->avbuf, layer, > ZYNQMP_DISP_LAYER_NONLIVE); > zynqmp_disp_blend_layer_enable(&layer->disp->blend, layer); > > @@ -1046,7 +1051,7 @@ static void zynqmp_disp_layer_disable(struct > zynqmp_disp_layer *layer) > for (i = 0; i < layer->drm_fmt->num_planes; i++) > dmaengine_terminate_sync(layer->dmas[i].chan); > > - zynqmp_disp_avbuf_disable_video(&layer->disp->avbuf, layer->id); > + zynqmp_disp_avbuf_disable_video(&layer->disp->avbuf, layer); > zynqmp_disp_blend_layer_disable(&layer->disp->blend, layer); > } > > @@ -1067,7 +1072,7 @@ static void zynqmp_disp_layer_set_format(struct > zynqmp_disp_layer *layer, > layer->disp_fmt = zynqmp_disp_layer_find_format(layer, > info->format); > layer->drm_fmt = info; > > - zynqmp_disp_avbuf_set_format(&layer->disp->avbuf, layer->id, > + zynqmp_disp_avbuf_set_format(&layer->disp->avbuf, layer, > layer->disp_fmt); > > /* > @@ -1244,8 +1249,8 @@ static int zynqmp_disp_create_planes(struct > zynqmp_disp *disp) > drm_formats[j] = layer->info->formats[j].drm_fmt; > > /* Graphics layer is primary, and video layer is overlay. */ > - type = i == ZYNQMP_DISP_LAYER_GFX > - ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; > + type = is_layer_vid(layer) > + ? DRM_PLANE_TYPE_OVERLAY : DRM_PLANE_TYPE_PRIMARY; > ret = drm_universal_plane_init(disp->drm, &layer->plane, 0, > &zynqmp_disp_plane_funcs, > drm_formats,