On Wed, 4 Mar 2020 at 17:28, Xinliang Liu <xinliang.liu@xxxxxxxxxx> wrote: > > On Wed, 4 Mar 2020 at 00:32, John Stultz <john.stultz@xxxxxxxxxx> wrote: > > > > This reverts commit ff57c6513820efe945b61863cf4a51b79f18b592. > > > > With the commit ff57c6513820 ("drm: kirin: Fix for hikey620 > > display offset problem") we added support for handling LDI > > overflows by resetting the hardware. > > > > However, its been observed that when we do hit the LDI overflow > > condition, the irq seems to be screaming, and we do nothing but > > stream: > > [drm:ade_irq_handler [kirin_drm]] *ERROR* LDI underflow! > > over and over to the screen > > > > I've tried a few appraoches to avoid this, but none has yet > > been successful and the cure here is worse then the original > > disease, so revert this for now. > > Sorry to hear that. Then it seems such underflow errors can't be > recovered via reset. > Anyway, for this patch > Acked-by: Xinliang Liu <z.liuxinliang@xxxxxxxxxxxxx> Sorry , should be: Acked-by: Xinliang Liu <xinliang.liu@xxxxxxxxxx> > > And applied to drm-misc . > > -xinliang > > > > > Cc: Xinliang Liu <xinliang.liu@xxxxxxxxxx> > > Cc: Rongrong Zou <zourongrong@xxxxxxxxx> > > Cc: Xinwei Kong <kong.kongxinwei@xxxxxxxxxxxxx> > > Cc: Chen Feng <puck.chen@xxxxxxxxxxxxx> > > Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> > > Cc: David Airlie <airlied@xxxxxxxx> > > Cc: Daniel Vetter <daniel@xxxxxxxx> > > Cc: dri-devel <dri-devel@xxxxxxxxxxxxxxxxxxxxx> > > Fixes: ff57c6513820 ("drm: kirin: Fix for hikey620 display offset problem") > > Signed-off-by: John Stultz <john.stultz@xxxxxxxxxx> > > --- > > .../gpu/drm/hisilicon/kirin/kirin_ade_reg.h | 1 - > > .../gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 20 ------------------- > > 2 files changed, 21 deletions(-) > > > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h > > index 0da860200410..e2ac09894a6d 100644 > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_ade_reg.h > > @@ -83,7 +83,6 @@ > > #define VSIZE_OFST 20 > > #define LDI_INT_EN 0x741C > > #define FRAME_END_INT_EN_OFST 1 > > -#define UNDERFLOW_INT_EN_OFST 2 > > #define LDI_CTRL 0x7420 > > #define BPP_OFST 3 > > #define DATA_GATE_EN BIT(2) > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > index 73cd28a6ea07..86000127d4ee 100644 > > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > > @@ -46,7 +46,6 @@ struct ade_hw_ctx { > > struct clk *media_noc_clk; > > struct clk *ade_pix_clk; > > struct reset_control *reset; > > - struct work_struct display_reset_wq; > > bool power_on; > > int irq; > > > > @@ -136,7 +135,6 @@ static void ade_init(struct ade_hw_ctx *ctx) > > */ > > ade_update_bits(base + ADE_CTRL, FRM_END_START_OFST, > > FRM_END_START_MASK, REG_EFFECTIVE_IN_ADEEN_FRMEND); > > - ade_update_bits(base + LDI_INT_EN, UNDERFLOW_INT_EN_OFST, MASK(1), 1); > > } > > > > static bool ade_crtc_mode_fixup(struct drm_crtc *crtc, > > @@ -304,17 +302,6 @@ static void ade_crtc_disable_vblank(struct drm_crtc *crtc) > > MASK(1), 0); > > } > > > > -static void drm_underflow_wq(struct work_struct *work) > > -{ > > - struct ade_hw_ctx *ctx = container_of(work, struct ade_hw_ctx, > > - display_reset_wq); > > - struct drm_device *drm_dev = ctx->crtc->dev; > > - struct drm_atomic_state *state; > > - > > - state = drm_atomic_helper_suspend(drm_dev); > > - drm_atomic_helper_resume(drm_dev, state); > > -} > > - > > static irqreturn_t ade_irq_handler(int irq, void *data) > > { > > struct ade_hw_ctx *ctx = data; > > @@ -331,12 +318,6 @@ static irqreturn_t ade_irq_handler(int irq, void *data) > > MASK(1), 1); > > drm_crtc_handle_vblank(crtc); > > } > > - if (status & BIT(UNDERFLOW_INT_EN_OFST)) { > > - ade_update_bits(base + LDI_INT_CLR, UNDERFLOW_INT_EN_OFST, > > - MASK(1), 1); > > - DRM_ERROR("LDI underflow!"); > > - schedule_work(&ctx->display_reset_wq); > > - } > > > > return IRQ_HANDLED; > > } > > @@ -919,7 +900,6 @@ static void *ade_hw_ctx_alloc(struct platform_device *pdev, > > if (ret) > > return ERR_PTR(-EIO); > > > > - INIT_WORK(&ctx->display_reset_wq, drm_underflow_wq); > > ctx->crtc = crtc; > > > > return ctx; > > -- > > 2.17.1 > > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel