Received: by 10.223.176.5 with SMTP id f5csp2371722wra; Sun, 28 Jan 2018 19:07:48 -0800 (PST) X-Google-Smtp-Source: AH8x226hPruKOE9F/KY/UYiT5fvk+5nbj/qz1p1d7TMETmgOezz3ckgR1L0qEXoApK86F6PWaTTJ X-Received: by 2002:a17:902:6c0c:: with SMTP id q12-v6mr12610627plk.51.1517195268869; Sun, 28 Jan 2018 19:07:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517195268; cv=none; d=google.com; s=arc-20160816; b=MHV88Yai0jZHrAP7lBhg7u5WokI/HG7S1Jbe4SEjv99DZTc6YHg5hSncJtafKCWxGX H2nxfC9LqF+A9CuAO6oLbSp5S9axPCXOX1lRfmPcNNvkjaNXE6rEukiC3rAI1cM/tIzS 9IGoPm9PZc9D0mrz4i1GrCM71aQxESsRKpaCbfQsw43+B72ZBMew6K8Wt6cnceMTnCou xHP19sfyAyHh6wf4OMQXgHLInpK68dihX96t+osj9QEX0RruzjZJl5iKF7+fiPnq94BT FhBKUZ3MJKBFAMHFsWcsBZnP/xK77+NDthRGEBBncIXoS650nHxQLgerZuoh1FilDnfS FnCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:arc-authentication-results; bh=52HzitdSBQxUTBDNj2VArPLyLLEaDPZ//+XKH19b108=; b=GRRRZTIDLVvS961EyzEi3zEAJ89QHw5055DlRCb34Aq9NPHTYR9QykQiFK3TZE5ag4 a3tKcjnMyfRL03jdPWTy66ELUeV9TIh1KDm2zkbDUv21JOoJSqcIa3+W7u+Pd6hNlHtS WOEeC+8l7ReKQQpsyld0zdhXbLB/yhPz4YVyINstd2ivK6fpzMyBHamVofTMHxiprQKU l99F7Jyg58m9iaaUwkEb5f96+JFVqK+YHpLPq8/U0MGqI43Z3vBemsOT4Tmos376ik0l ZAph7EdRYh0cgmTIvwC1bU20hG1lmCmFYjB6std0NDObzxNt+HsC7yZkR/e85GY5VetM DP+g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a35-v6si396037pli.173.2018.01.28.19.07.34; Sun, 28 Jan 2018 19:07:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753880AbeA2CBY (ORCPT + 99 others); Sun, 28 Jan 2018 21:01:24 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:51500 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751941AbeA2CBX (ORCPT ); Sun, 28 Jan 2018 21:01:23 -0500 Received: by mail-wm0-f65.google.com with SMTP id r71so11211847wmd.1 for ; Sun, 28 Jan 2018 18:01:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=52HzitdSBQxUTBDNj2VArPLyLLEaDPZ//+XKH19b108=; b=jFushc76SCbCBvrxhI4ACNnb4hBSEkq0vOgxY1PxZWRVdjQ5TNRg8W8C13oHEFqmqp JdSTH/3qWkdCV+zPcNepVEW3ZSQmCwXxwb97mUeG47jsHRAWh+C9KxfwYqpnkq+asPBU EG1nUNIq3//3XUwY5qQtSUythzFicVW92TRSMGUMBtKYjZaYnocFQnxc6jeD0uSjZ7N0 paC1nua/d3WVG959R/v/sZyr//HxSPL7SfGCCk5TF8gUqWSXwc+1/B5/GtQRseEKiReL N+UsKvvyjT1uZgYYklOLZwfXQnvYL6kykiYrRKrUnN7UGoKuCDD+mwqVggLTMHZxUMIu 4qlg== X-Gm-Message-State: AKwxytfC1A+WCpYa2DeeceCaRobA1xeqyrLy/EW9TuXKyy2AS52N1Yj3 W0OoNz/S5zUlkKfUpH+4RqSp/PwD X-Received: by 10.80.148.111 with SMTP id q44mr45046765eda.41.1517191281885; Sun, 28 Jan 2018 18:01:21 -0800 (PST) Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com. [74.125.82.51]) by smtp.gmail.com with ESMTPSA id n2sm1380874edl.74.2018.01.28.18.01.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 28 Jan 2018 18:01:21 -0800 (PST) Received: by mail-wm0-f51.google.com with SMTP id j21so34293084wmh.1 for ; Sun, 28 Jan 2018 18:01:21 -0800 (PST) X-Received: by 10.28.158.208 with SMTP id h199mr16132166wme.17.1517191281041; Sun, 28 Jan 2018 18:01:21 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.160.88 with HTTP; Sun, 28 Jan 2018 18:01:00 -0800 (PST) In-Reply-To: References: From: Chen-Yu Tsai Date: Mon, 29 Jan 2018 10:01:00 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 14/19] drm/sun4i: backend: Add support for zpos To: Maxime Ripard Cc: Daniel Vetter , Jani Nikula , Sean Paul , dri-devel , linux-kernel , linux-arm-kernel , thomas@vitsch.nl Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jan 22, 2018 at 6:35 PM, Maxime Ripard wrote: > Our various planes have a configurable zpos, that combined with the pipes > allow to configure the composition. > > Since the interaction between the pipes, zpos and alphas framebuffers are ^^^ is > not trivials, let's just enable the zpos as an immutable property for now, ^^^^^^^ trivial > and use that zpos in our atomic_update part. > > Signed-off-by: Maxime Ripard > --- > drivers/gpu/drm/sun4i/sun4i_backend.c | 15 +++++++++++++++ > drivers/gpu/drm/sun4i/sun4i_backend.h | 2 ++ > drivers/gpu/drm/sun4i/sun4i_framebuffer.c | 4 ++++ > drivers/gpu/drm/sun4i/sun4i_layer.c | 3 +++ > 4 files changed, 24 insertions(+) > > diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.c b/drivers/gpu/drm/sun4i/sun4i_backend.c > index a18c86a15748..c4986054909b 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_backend.c > +++ b/drivers/gpu/drm/sun4i/sun4i_backend.c > @@ -272,6 +272,21 @@ int sun4i_backend_update_layer_buffer(struct sun4i_backend *backend, > return 0; > } > > +int sun4i_backend_update_layer_zpos(struct sun4i_backend *backend, int layer, > + struct drm_plane *plane) > +{ > + struct drm_plane_state *state = plane->state; > + unsigned int priority = state->normalized_zpos; > + > + DRM_DEBUG_DRIVER("Setting layer %d priority to %d\n", layer, priority); You might want to make the statement less ambiguous, like "Setting layer %d's priority ..." Otherwise, Reviewed-by: Chen-Yu Tsai > + > + regmap_update_bits(backend->engine.regs, SUN4I_BACKEND_ATTCTL_REG0(layer), > + SUN4I_BACKEND_ATTCTL_REG0_LAY_PRISEL_MASK, > + SUN4I_BACKEND_ATTCTL_REG0_LAY_PRISEL(priority)); > + > + return 0; > +} > + > static bool sun4i_backend_plane_uses_scaler(struct drm_plane_state *state) > { > u16 src_h = state->src_h >> 16; > diff --git a/drivers/gpu/drm/sun4i/sun4i_backend.h b/drivers/gpu/drm/sun4i/sun4i_backend.h > index 1ca8b7db6807..04a4f11b87a8 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_backend.h > +++ b/drivers/gpu/drm/sun4i/sun4i_backend.h > @@ -182,5 +182,7 @@ int sun4i_backend_update_layer_buffer(struct sun4i_backend *backend, > int layer, struct drm_plane *plane); > int sun4i_backend_update_layer_frontend(struct sun4i_backend *backend, > int layer, uint32_t in_fmt); > +int sun4i_backend_update_layer_zpos(struct sun4i_backend *backend, > + int layer, struct drm_plane *plane); > > #endif /* _SUN4I_BACKEND_H_ */ > diff --git a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c > index e68004844abe..5b3986437a50 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_framebuffer.c > +++ b/drivers/gpu/drm/sun4i/sun4i_framebuffer.c > @@ -35,6 +35,10 @@ static int sun4i_de_atomic_check(struct drm_device *dev, > if (ret) > return ret; > > + ret = drm_atomic_normalize_zpos(dev, state); > + if (ret) > + return ret; > + > return drm_atomic_helper_check_planes(dev, state); > } > > diff --git a/drivers/gpu/drm/sun4i/sun4i_layer.c b/drivers/gpu/drm/sun4i/sun4i_layer.c > index 03549646528a..fbf25d59cf88 100644 > --- a/drivers/gpu/drm/sun4i/sun4i_layer.c > +++ b/drivers/gpu/drm/sun4i/sun4i_layer.c > @@ -115,6 +115,7 @@ static void sun4i_backend_layer_atomic_update(struct drm_plane *plane, > } > > sun4i_backend_update_layer_coord(backend, layer->id, plane); > + sun4i_backend_update_layer_zpos(backend, layer->id, plane); > sun4i_backend_layer_enable(backend, layer->id, true); > } > > @@ -237,6 +238,8 @@ struct drm_plane **sun4i_layers_init(struct drm_device *drm, > return ERR_CAST(layer); > }; > > + drm_plane_create_zpos_immutable_property(&layer->plane, i); > + > DRM_DEBUG_DRIVER("Assigning %s plane to pipe %d\n", > i ? "overlay" : "primary", plane->pipe); > regmap_update_bits(engine->regs, SUN4I_BACKEND_ATTCTL_REG0(i), > -- > git-series 0.9.1