Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1054557yba; Thu, 4 Apr 2019 03:20:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqwVLzLnozIlX5jmGS5XnrthttZl9jsIIQJfOjrXXGl+6JqARIjLxAAmjvqMOilgkLJRFu+N X-Received: by 2002:a17:902:b10c:: with SMTP id q12mr5539292plr.254.1554373257519; Thu, 04 Apr 2019 03:20:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554373257; cv=none; d=google.com; s=arc-20160816; b=SLBoE8VlLEz+qbJqjVUb9tJmKCprEEY5ftM4TchSGgf4VuTrQkUHpc8VhqU8DdnrI1 Aoj1DTEFDskBYx4XDzf9lc849QqKUN/cmXdYUJcvXTLhdnh2OintXz4ZysycDF7pw8A4 iCXn/1yBCRhefiTOB6Yb3G6CqxJHMngnsMYVqsyiDarpAV4E1cMvL9QdjaAHy+HFLAaf 8hlD5ivw374xPSf5AehreLgCO9I445AhcQ0T5KpSTnjQnBI9fufHPSsj6bdUF+lJfkdS E/h4mhPROc68v7DxM5ZAg+JDfejVS00U2OvmxEu4TTiqTe93phLEs3tCSP1nVfsPuhFw 9N2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=jpG1Q9wV2qwU1g3CAT01GqPyRIEuKTlchsMO5QzBtUg=; b=c+iM629NY0swrsZsxajJzkkWpn2NyrjCer2poM3bByvoz1XEGsnJvibgy8rSP092Y5 YOYIVBqBBy/JA0Afawt1qoUOqCumwgIDJGgbgsBKnKAMkMj/4/R55zAhvup8cOtcag/n oFHO8NBBBb8T31PZZ0A+Slw73ZO/ieU4PGTgM4qXAGKSR3GPioUGYNhwbqEVDrePoHlv 8YJRa3Uo9Iciu/TKKS6orSjwA4MCReU5XS3CZK3vvXaG3KjP86OoVR3YOgQPR15104zu gkVGcPtYRnveCWygy6m/XCVMUqtTNyYYUzQXKHQRxZe8yEd3KNNdM0BZiVPfQjeC27le 54Dg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Dwgt1Msw; 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 o19si16242951pgh.409.2019.04.04.03.20.42; Thu, 04 Apr 2019 03:20:57 -0700 (PDT) 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; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=Dwgt1Msw; 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 S1729156AbfDDKTp (ORCPT + 99 others); Thu, 4 Apr 2019 06:19:45 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:49226 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728688AbfDDKTp (ORCPT ); Thu, 4 Apr 2019 06:19:45 -0400 Received: from pendragon.ideasonboard.com (dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 65A3954B; Thu, 4 Apr 2019 12:19:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1554373182; bh=IUDDASb58KdMz/fM/X5Q4M0oKymjbTQhEJl4K5mlLFc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Dwgt1MswSQtPfY7rq+jQvlWQH0NvGRokifFJe085M3qGJTaNtxYFsKB/GOsx0D8ZX u8KBj7zCOgNsomTTwe/PMgcAHr+aMINuB49HfEpnhZM9D7HbUS5DRoltiZGr6kX8If QbdiMNzB/bmrtNEyPKPXT51ie7dRU/Go/uNFSlQU= Date: Thu, 4 Apr 2019 13:19:23 +0300 From: Laurent Pinchart To: VenkataRajesh.Kalakodima@in.bosch.com Cc: linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, dri-devel@lists.freedesktop.org, Harsha M M Subject: Re: [PATCH 7/8] drm: rcar-du: update gamma and ctm properties in commit tail Message-ID: <20190404101923.GG5800@pendragon.ideasonboard.com> References: <1554297284-14009-1-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> <1554297284-14009-8-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1554297284-14009-8-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Kalakodima, Thank you for the patch. On Wed, Apr 03, 2019 at 06:44:43PM +0530, VenkataRajesh.Kalakodima@in.bosch.com wrote: > From: kalakodima venkata rajesh > > Update gamma and ctm properties if there is a change. > > Signed-off-by: Harsha M M > > - Fix compilation issues when for_each_crtc_in_state is not defined > - Resolved checkpatch errors > - Resolved merge conflicts according to latest version > > Signed-off-by: kalakodima venkata rajesh > --- > drivers/gpu/drm/rcar-du/rcar_du_kms.c | 25 +++++++++++++++++++++++++ > include/drm/drm_atomic.h | 25 +++++++++++++++++++++++++ > 2 files changed, 50 insertions(+) > > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_kms.c b/drivers/gpu/drm/rcar-du/rcar_du_kms.c > index f0bc7cc..4d9a19c 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c > @@ -246,6 +246,10 @@ static int rcar_du_atomic_check(struct drm_device *dev, > static void rcar_du_atomic_commit_tail(struct drm_atomic_state *old_state) > { > struct drm_device *dev = old_state->dev; > + struct drm_crtc *crtc; > + struct drm_crtc_state *crtc_state; > + struct rcar_du_crtc *rcrtc; > + int i; > > /* Apply the atomic update. */ > drm_atomic_helper_commit_modeset_disables(dev, old_state); > @@ -253,6 +257,27 @@ static void rcar_du_atomic_commit_tail(struct drm_atomic_state *old_state) > DRM_PLANE_COMMIT_ACTIVE_ONLY); > drm_atomic_helper_commit_modeset_enables(dev, old_state); > > + /* Update gamma and ctm properties for all crtc in present > + * state. Update is done only if there is a change > + */ > + for_each_crtc_in_state(old_state, crtc, crtc_state, i) { > + rcrtc = to_rcar_crtc(crtc); > + > + if (rcrtc->lut_handle) { > + rcar_du_cmm_update_lut_and_free > + (rcrtc->lut_handle, > + (struct drm_color_lut *)crtc->state->gamma_lut->data, > + (crtc->state->gamma_lut->length / > + sizeof(struct drm_color_lut))); > + rcrtc->lut_handle = NULL; > + } > + if (rcrtc->clu_handle) { > + rcar_du_cmm_update_clu_and_free > + (rcrtc->clu_handle, > + (struct drm_color_ctm *)crtc->state->ctm->data); > + rcrtc->clu_handle = NULL; > + } > + } > drm_atomic_helper_commit_hw_done(old_state); > drm_atomic_helper_wait_for_flip_done(dev, old_state); We're in the process of reworking the commit tail handler, so I expect major changes will be needed here. > > diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h > index 1e71315..d22ccd8 100644 > --- a/include/drm/drm_atomic.h > +++ b/include/drm/drm_atomic.h > @@ -693,6 +693,31 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p); > (new_connector_state) = (__state)->connectors[__i].new_state, 1)) > > /** > + * for_each_crtc_in_state - iterate over all connectors in an atomic update > + * @__state: &struct drm_atomic_state pointer > + * @crtc: &struct drm_crtc iteration cursor > + * @crtc_state: &struct drm_crtc_state iteration cursor > + * @__i: int iteration cursor, for macro-internal use > + * > + * This iterates over all CRTCs in an atomic update. Note that before the > + * software state is committed (by calling drm_atomic_helper_swap_state(), this > + * points to the new state, while afterwards it points to the old state. Due to > + * this tricky confusion this macro is deprecated. > + * > + * FIXME: > + * > + * Replace all usage of this with one of the explicit iterators below and then > + * remove this macro. Then don't add it :-) In general you should look at the code you want to upstream, this feels like it was a blind copy from a BSP without giving it much consideration. > + */ > +#define for_each_crtc_in_state(__state, crtc, crtc_state, __i) \ > + for ((__i) = 0; \ > + ((__i) < ((__state)->dev->mode_config.num_crtc)) && \ > + ((crtc) = ((__state)->crtcs[__i].ptr), \ > + (crtc_state) = ((__state)->crtcs[__i].state), 1); \ > + (__i)++) \ > + for_each_if(crtc_state) > + > +/** > * for_each_oldnew_crtc_in_state - iterate over all CRTCs in an atomic update > * @__state: &struct drm_atomic_state pointer > * @crtc: &struct drm_crtc iteration cursor -- Regards, Laurent Pinchart