lkml.org 
[lkml]   [2020]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 083/191] drm/mediatek: handle events when enabling/disabling crtc
    Date
    From: Bibby Hsieh <bibby.hsieh@mediatek.com>

    [ Upstream commit 411f5c1eacfebb1f6e40b653d29447cdfe7282aa ]

    The driver currently handles vblank events only when updating planes on
    an already enabled CRTC. The atomic update API however allows requesting
    an event when enabling or disabling a CRTC. This currently leads to
    event objects being leaked in the kernel and to events not being sent
    out. Fix it.

    Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
    Signed-off-by: CK Hu <ck.hu@mediatek.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    index 92ecb9bf982cf..b86ee7d25af36 100644
    --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
    @@ -308,6 +308,7 @@ err_pm_runtime_put:
    static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc)
    {
    struct drm_device *drm = mtk_crtc->base.dev;
    + struct drm_crtc *crtc = &mtk_crtc->base;
    int i;

    DRM_DEBUG_DRIVER("%s\n", __func__);
    @@ -329,6 +330,13 @@ static void mtk_crtc_ddp_hw_fini(struct mtk_drm_crtc *mtk_crtc)
    mtk_disp_mutex_unprepare(mtk_crtc->mutex);

    pm_runtime_put(drm->dev);
    +
    + if (crtc->state->event && !crtc->state->active) {
    + spin_lock_irq(&crtc->dev->event_lock);
    + drm_crtc_send_vblank_event(crtc, crtc->state->event);
    + crtc->state->event = NULL;
    + spin_unlock_irq(&crtc->dev->event_lock);
    + }
    }

    static void mtk_crtc_ddp_config(struct drm_crtc *crtc)
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-02-21 09:21    [W:4.091 / U:0.188 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site