From: <VenkataRajesh.Kalakodima@in.bosch.com> To: <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> Cc: kalakodima venkata rajesh <venkatarajesh.kalakodima@in.bosch.com>, Harsha M M <harsha.manjulamallikarjun@in.bosch.com> Subject: [PATCH 7/8] drm: rcar-du: update gamma and ctm properties in commit tail Date: Wed, 3 Apr 2019 18:44:43 +0530 [thread overview] Message-ID: <1554297284-14009-8-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> (raw) In-Reply-To: <1554297284-14009-1-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> From: kalakodima venkata rajesh <venkatarajesh.kalakodima@in.bosch.com> Update gamma and ctm properties if there is a change. Signed-off-by: Harsha M M <harsha.manjulamallikarjun@in.bosch.com> - 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 <venkatarajesh.kalakodima@in.bosch.com> --- 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); 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. + */ +#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 -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: <VenkataRajesh.Kalakodima@in.bosch.com> To: 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 Cc: kalakodima venkata rajesh <venkatarajesh.kalakodima@in.bosch.com>, Harsha M M <harsha.manjulamallikarjun@in.bosch.com> Subject: [PATCH 7/8] drm: rcar-du: update gamma and ctm properties in commit tail Date: Wed, 3 Apr 2019 18:44:43 +0530 [thread overview] Message-ID: <1554297284-14009-8-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> (raw) In-Reply-To: <1554297284-14009-1-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com> From: kalakodima venkata rajesh <venkatarajesh.kalakodima@in.bosch.com> Update gamma and ctm properties if there is a change. Signed-off-by: Harsha M M <harsha.manjulamallikarjun@in.bosch.com> - 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 <venkatarajesh.kalakodima@in.bosch.com> --- 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); 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. + */ +#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 -- 2.7.4
next prev parent reply other threads:[~2019-04-03 13:25 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-03 13:14 [PATCH 0/8] v4.19.0 Added Color Management Module VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-03 13:14 ` [PATCH 1/8] drm: Add DU CMM support functions VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-04 10:09 ` Laurent Pinchart 2019-04-04 10:09 ` Laurent Pinchart 2019-04-03 13:14 ` [PATCH 2/8] drm: Add DU CMM support boot and clk changes VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-04 10:12 ` Laurent Pinchart 2019-04-03 13:14 ` [PATCH 3/8] drm: rcar-du: Give a name to clu table samples VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-04 10:15 ` Laurent Pinchart 2019-04-03 13:14 ` [PATCH 4/8] drm: rcar-du: Refactor the code with new functions VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-03 13:14 ` [PATCH 5/8] drm: rcar-du: Implement interfaces to set clu and lut using drm data structures VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-04 7:50 ` Daniel Vetter 2019-04-04 15:40 ` Ville Syrjälä 2019-04-05 8:39 ` Harsha Manjula Mallikarjun (RBEI/ECF3) 2019-04-05 8:39 ` Harsha Manjula Mallikarjun (RBEI/ECF3) 2019-04-03 13:14 ` [PATCH 6/8] drm: rcar-du: Implement atomic_check to check for gamma and ctm properties VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima [this message] 2019-04-03 13:14 ` [PATCH 7/8] drm: rcar-du: update gamma and ctm properties in commit tail VenkataRajesh.Kalakodima 2019-04-04 10:19 ` Laurent Pinchart 2019-04-04 10:19 ` Laurent Pinchart 2019-04-03 13:14 ` [PATCH 8/8] drm: rcar-du: Add shutdown callback function in platform_driver VenkataRajesh.Kalakodima 2019-04-03 13:14 ` VenkataRajesh.Kalakodima 2019-04-04 7:47 ` Daniel Vetter 2019-04-04 7:47 ` Daniel Vetter 2019-04-04 10:26 ` Laurent Pinchart 2019-04-04 10:26 ` Laurent Pinchart 2019-04-04 9:45 ` [PATCH 0/8] v4.19.0 Added Color Management Module Laurent Pinchart 2019-04-04 9:45 ` Laurent Pinchart 2019-04-04 9:46 ` Laurent Pinchart 2019-04-04 9:46 ` Laurent Pinchart
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1554297284-14009-8-git-send-email-VenkataRajesh.Kalakodima@in.bosch.com \ --to=venkatarajesh.kalakodima@in.bosch.com \ --cc=devicetree@vger.kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=harsha.manjulamallikarjun@in.bosch.com \ --cc=linux-clk@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.