I2C_FUNC_SMBUS_READ_I2C_BLOCK))
                return -ENODEV;
 
-       lcd = devm_kzalloc(dev, sizeof(*lcd), GFP_KERNEL);
-       if (!lcd)
-               return -ENOMEM;
+       lcd = devm_drm_panel_alloc(dev, struct lcd_olinuxino, panel,
+                                  &lcd_olinuxino_funcs,
+                                  DRM_MODE_CONNECTOR_DPI);
+       if (IS_ERR(lcd))
+               return PTR_ERR(lcd);
 
        i2c_set_clientdata(client, lcd);
        lcd->dev = dev;
        if (IS_ERR(lcd->enable_gpio))
                return PTR_ERR(lcd->enable_gpio);
 
-       drm_panel_init(&lcd->panel, dev, &lcd_olinuxino_funcs,
-                      DRM_MODE_CONNECTOR_DPI);
-
        ret = drm_panel_of_backlight(&lcd->panel);
        if (ret)
                return ret;