From: CK Hu <ck.hu@mediatek.com>
To: Bibby Hsieh <bibby.hsieh@mediatek.com>
Cc: David Airlie <airlied@linux.ie>,
Matthias Brugger <matthias.bgg@gmail.com>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
<dri-devel@lists.freedesktop.org>,
<linux-mediatek@lists.infradead.org>,
Philipp Zabel <p.zabel@pengutronix.de>,
YT Shen <yt.shen@mediatek.com>,
Thierry Reding <thierry.reding@gmail.com>,
<linux-arm-kernel@lists.infradead.org>, <tfiga@chromium.org>,
<drinkcat@chromium.org>, <linux-kernel@vger.kernel.org>,
<srv_heupstream@mediatek.com>
Subject: Re: [PATCH v1 2/6] drm/mediatek: use DRM core's atomic commit helper
Date: Mon, 2 Dec 2019 14:07:18 +0800 [thread overview]
Message-ID: <1575266838.26513.0.camel@mtksdaap41> (raw)
In-Reply-To: <20191128024238.9399-3-bibby.hsieh@mediatek.com>
Hi, Bibby:
On Thu, 2019-11-28 at 10:42 +0800, Bibby Hsieh wrote:
> The DRM core atomic helper now supports asynchronous commits natively.
> The custom drm implementation isn't needed anymore, remove it.
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Regards,
CK
>
> Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
> ---
> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 86 ++------------------------
> drivers/gpu/drm/mediatek/mtk_drm_drv.h | 7 ---
> 2 files changed, 5 insertions(+), 88 deletions(-)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> index 6588dc6dd5e3..16e5771d182e 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -36,89 +36,14 @@
> #define DRIVER_MAJOR 1
> #define DRIVER_MINOR 0
>
> -static void mtk_atomic_schedule(struct mtk_drm_private *private,
> - struct drm_atomic_state *state)
> -{
> - private->commit.state = state;
> - schedule_work(&private->commit.work);
> -}
> -
> -static void mtk_atomic_complete(struct mtk_drm_private *private,
> - struct drm_atomic_state *state)
> -{
> - struct drm_device *drm = private->drm;
> -
> - drm_atomic_helper_wait_for_fences(drm, state, false);
> -
> - /*
> - * Mediatek drm supports runtime PM, so plane registers cannot be
> - * written when their crtc is disabled.
> - *
> - * The comment for drm_atomic_helper_commit states:
> - * For drivers supporting runtime PM the recommended sequence is
> - *
> - * drm_atomic_helper_commit_modeset_disables(dev, state);
> - * drm_atomic_helper_commit_modeset_enables(dev, state);
> - * drm_atomic_helper_commit_planes(dev, state,
> - * DRM_PLANE_COMMIT_ACTIVE_ONLY);
> - *
> - * See the kerneldoc entries for these three functions for more details.
> - */
> - drm_atomic_helper_commit_modeset_disables(drm, state);
> - drm_atomic_helper_commit_modeset_enables(drm, state);
> - drm_atomic_helper_commit_planes(drm, state,
> - DRM_PLANE_COMMIT_ACTIVE_ONLY);
> -
> - drm_atomic_helper_wait_for_vblanks(drm, state);
> -
> - drm_atomic_helper_cleanup_planes(drm, state);
> - drm_atomic_state_put(state);
> -}
> -
> -static void mtk_atomic_work(struct work_struct *work)
> -{
> - struct mtk_drm_private *private = container_of(work,
> - struct mtk_drm_private, commit.work);
> -
> - mtk_atomic_complete(private, private->commit.state);
> -}
> -
> -static int mtk_atomic_commit(struct drm_device *drm,
> - struct drm_atomic_state *state,
> - bool async)
> -{
> - struct mtk_drm_private *private = drm->dev_private;
> - int ret;
> -
> - ret = drm_atomic_helper_prepare_planes(drm, state);
> - if (ret)
> - return ret;
> -
> - mutex_lock(&private->commit.lock);
> - flush_work(&private->commit.work);
> -
> - ret = drm_atomic_helper_swap_state(state, true);
> - if (ret) {
> - mutex_unlock(&private->commit.lock);
> - drm_atomic_helper_cleanup_planes(drm, state);
> - return ret;
> - }
> -
> - drm_atomic_state_get(state);
> - if (async)
> - mtk_atomic_schedule(private, state);
> - else
> - mtk_atomic_complete(private, state);
> -
> - mutex_unlock(&private->commit.lock);
> -
> - return 0;
> -}
> +static const struct drm_mode_config_helper_funcs mtk_drm_mode_config_helpers = {
> + .atomic_commit_tail = drm_atomic_helper_commit_tail_rpm,
> +};
>
> static const struct drm_mode_config_funcs mtk_drm_mode_config_funcs = {
> .fb_create = mtk_drm_mode_fb_create,
> .atomic_check = drm_atomic_helper_check,
> - .atomic_commit = mtk_atomic_commit,
> + .atomic_commit = drm_atomic_helper_commit,
> };
>
> static const enum mtk_ddp_comp_id mt2701_mtk_ddp_main[] = {
> @@ -265,6 +190,7 @@ static int mtk_drm_kms_init(struct drm_device *drm)
> drm->mode_config.max_width = 4096;
> drm->mode_config.max_height = 4096;
> drm->mode_config.funcs = &mtk_drm_mode_config_funcs;
> + drm->mode_config.helper_private = &mtk_drm_mode_config_helpers;
>
> ret = component_bind_all(drm->dev, drm);
> if (ret)
> @@ -540,8 +466,6 @@ static int mtk_drm_probe(struct platform_device *pdev)
> if (!private)
> return -ENOMEM;
>
> - mutex_init(&private->commit.lock);
> - INIT_WORK(&private->commit.work, mtk_atomic_work);
> private->data = of_device_get_match_data(dev);
>
> mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.h b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> index b6a82728d563..9f4ce60174f6 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.h
> @@ -46,13 +46,6 @@ struct mtk_drm_private {
> struct device_node *comp_node[DDP_COMPONENT_ID_MAX];
> struct mtk_ddp_comp *ddp_comp[DDP_COMPONENT_ID_MAX];
> const struct mtk_mmsys_driver_data *data;
> -
> - struct {
> - struct drm_atomic_state *state;
> - struct work_struct work;
> - struct mutex lock;
> - } commit;
> -
> struct drm_atomic_state *suspend_state;
>
> bool dma_parms_allocated;
next prev parent reply other threads:[~2019-12-02 6:07 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-28 2:42 [PATCH v1 0/6] drm/mediatek: fix cursor issue and apply CMDQ in Bibby Hsieh
2019-11-28 2:42 ` [PATCH v1 1/6] drm/mediatek: put "event" in critical section Bibby Hsieh
2019-11-28 2:42 ` [PATCH v1 2/6] drm/mediatek: use DRM core's atomic commit helper Bibby Hsieh
2019-12-02 6:07 ` CK Hu [this message]
2019-11-28 2:42 ` [PATCH v1 3/6] drm/mediatek: handle events when enabling/disabling crtc Bibby Hsieh
2019-12-02 6:43 ` CK Hu
2019-11-28 2:42 ` [PATCH v1 4/6] drm/mediatek: update cursors by using async atomic update Bibby Hsieh
2019-12-02 9:51 ` CK Hu
2019-11-28 2:42 ` [PATCH v1 5/6] drm/mediatek: support CMDQ interface in ddp component Bibby Hsieh
2019-12-03 2:56 ` CK Hu
2019-12-03 3:34 ` CK Hu
2019-11-28 2:42 ` [PATCH v1 6/6] drm/mediatek: apply CMDQ control flow Bibby Hsieh
2019-12-03 1:38 ` CK Hu
2019-12-03 5:58 ` Bibby Hsieh
2019-12-03 6:17 ` CK Hu
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=1575266838.26513.0.camel@mtksdaap41 \
--to=ck.hu@mediatek.com \
--cc=airlied@linux.ie \
--cc=bibby.hsieh@mediatek.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=drinkcat@chromium.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=p.zabel@pengutronix.de \
--cc=srv_heupstream@mediatek.com \
--cc=tfiga@chromium.org \
--cc=thierry.reding@gmail.com \
--cc=yt.shen@mediatek.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox