struct rm692e5_panel *ctx;
        int ret;
 
-       ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
-       if (!ctx)
-               return -ENOMEM;
+       ctx = devm_drm_panel_alloc(dev, struct rm692e5_panel, panel,
+                                  &rm692e5_panel_funcs,
+                                  DRM_MODE_CONNECTOR_DSI);
+       if (IS_ERR(ctx))
+               return PTR_ERR(ctx);
 
        ctx->supplies[0].supply = "vddio";
        ctx->supplies[1].supply = "dvdd";
        dsi->mode_flags = MIPI_DSI_MODE_NO_EOT_PACKET |
                          MIPI_DSI_CLOCK_NON_CONTINUOUS;
 
-       drm_panel_init(&ctx->panel, dev, &rm692e5_panel_funcs,
-                      DRM_MODE_CONNECTOR_DSI);
        ctx->panel.prepare_prev_first = true;
 
        ctx->panel.backlight = rm692e5_create_backlight(dsi);