gpiod_set_value(ili->enable_gpio, 0);
 
-       drm_panel_init(&ili->base, dev, &ili9882t_funcs,
-                      DRM_MODE_CONNECTOR_DSI);
        err = of_drm_get_panel_orientation(dev->of_node, &ili->orientation);
        if (err < 0) {
                dev_err(dev, "%pOF: failed to get orientation %d\n", dev->of_node, err);
        int ret;
        const struct panel_desc *desc;
 
-       ili = devm_kzalloc(&dsi->dev, sizeof(*ili), GFP_KERNEL);
-       if (!ili)
-               return -ENOMEM;
+       ili = devm_drm_panel_alloc(&dsi->dev, __typeof(*ili), base,
+                                  &ili9882t_funcs, DRM_MODE_CONNECTOR_DSI);
+
+       if (IS_ERR(ili))
+               return PTR_ERR(ili);
 
        desc = of_device_get_match_data(&dsi->dev);
        dsi->lanes = desc->lanes;