Skip to content

Commit

Permalink
drm/tidss: Add printing of underflows
Browse files Browse the repository at this point in the history
Add printing of underflows the same way as we handle sync losts.

Reviewed-by: Devarsh Thakkar <devarsht@ti.com>
Reviewed-by: Aradhya Bhatia <aradhya.bhatia@linux.dev>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241021-tidss-irq-fix-v1-4-82ddaec94e4a@ideasonboard.com
  • Loading branch information
Tomi Valkeinen committed Nov 25, 2024
1 parent f8e59e6 commit 76bae5b
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
14 changes: 14 additions & 0 deletions drivers/gpu/drm/tidss/tidss_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ static irqreturn_t tidss_irq_handler(int irq, void *arg)
tidss_crtc_error_irq(crtc, irqstatus);
}

for (unsigned int i = 0; i < tidss->num_planes; ++i) {
struct drm_plane *plane = tidss->planes[i];
struct tidss_plane *tplane = to_tidss_plane(plane);

if (irqstatus & DSS_IRQ_PLANE_FIFO_UNDERFLOW(tplane->hw_plane_id))
tidss_plane_error_irq(plane, irqstatus);
}

return IRQ_HANDLED;
}

Expand Down Expand Up @@ -112,6 +120,12 @@ int tidss_irq_install(struct drm_device *ddev, unsigned int irq)
tidss->irq_mask |= DSS_IRQ_VP_FRAME_DONE(tcrtc->hw_videoport);
}

for (unsigned int i = 0; i < tidss->num_planes; ++i) {
struct tidss_plane *tplane = to_tidss_plane(tidss->planes[i]);

tidss->irq_mask |= DSS_IRQ_PLANE_FIFO_UNDERFLOW(tplane->hw_plane_id);
}

return 0;
}

Expand Down
8 changes: 8 additions & 0 deletions drivers/gpu/drm/tidss/tidss_plane.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@
#include "tidss_drv.h"
#include "tidss_plane.h"

void tidss_plane_error_irq(struct drm_plane *plane, u64 irqstatus)
{
struct tidss_plane *tplane = to_tidss_plane(plane);

dev_err_ratelimited(plane->dev->dev, "Plane%u underflow (irq %llx)\n",
tplane->hw_plane_id, irqstatus);
}

/* drm_plane_helper_funcs */

static int tidss_plane_atomic_check(struct drm_plane *plane,
Expand Down
2 changes: 2 additions & 0 deletions drivers/gpu/drm/tidss/tidss_plane.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,6 @@ struct tidss_plane *tidss_plane_create(struct tidss_device *tidss,
u32 crtc_mask, const u32 *formats,
u32 num_formats);

void tidss_plane_error_irq(struct drm_plane *plane, u64 irqstatus);

#endif

0 comments on commit 76bae5b

Please sign in to comment.