Add support for the drm_panic module, which displays a user-friendly
message to the screen when a kernel panic occurs.

v7:
 * use drm_panic_gem_get_scanout_buffer() helper

v8:
 * Replace get_scanout_buffer() logic with drm_panic_set_buffer()

v9:
 * Revert to using get_scanout_buffer() (Sima)
 * move get_scanout_buffer() to plane helper functions

Signed-off-by: Jocelyn Falempe <jfale...@redhat.com>
---
 drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c 
b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
index dade8b59feae..3e21d2a1a124 100644
--- a/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-plane.c
@@ -772,6 +772,12 @@ static const struct drm_plane_helper_funcs 
ipu_plane_helper_funcs = {
        .atomic_disable = ipu_plane_atomic_disable,
        .atomic_update = ipu_plane_atomic_update,
 };
+static const struct drm_plane_helper_funcs ipu_primary_plane_helper_funcs = {
+       .atomic_check = ipu_plane_atomic_check,
+       .atomic_disable = ipu_plane_atomic_disable,
+       .atomic_update = ipu_plane_atomic_update,
+       .get_scanout_buffer = drm_panic_gem_get_scanout_buffer,
+};
 
 bool ipu_plane_atomic_update_pending(struct drm_plane *plane)
 {
@@ -916,7 +922,10 @@ struct ipu_plane *ipu_plane_init(struct drm_device *dev, 
struct ipu_soc *ipu,
        ipu_plane->dma = dma;
        ipu_plane->dp_flow = dp;
 
-       drm_plane_helper_add(&ipu_plane->base, &ipu_plane_helper_funcs);
+       if (type == DRM_PLANE_TYPE_PRIMARY)
+               drm_plane_helper_add(&ipu_plane->base, 
&ipu_primary_plane_helper_funcs);
+       else
+               drm_plane_helper_add(&ipu_plane->base, &ipu_plane_helper_funcs);
 
        if (dp == IPU_DP_FLOW_SYNC_BG || dp == IPU_DP_FLOW_SYNC_FG)
                ret = drm_plane_create_zpos_property(&ipu_plane->base, zpos, 0,
-- 
2.43.2

Reply via email to