Commit 76bae5b9 authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

drm/tidss: Add printing of underflows

parent f8e59e62
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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;
}

@@ -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;
}

+8 −0
Original line number Diff line number Diff line
@@ -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,
+2 −0
Original line number Diff line number Diff line
@@ -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