#include <drm/drmP.h>
 
 #include "sun4i_backend.h"
-#include "sun4i_drv.h"
 #include "sun4i_layer.h"
 
 struct sun4i_plane_desc {
 };
 
 static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm,
+                                               struct sun4i_backend *backend,
                                                const struct sun4i_plane_desc *plane)
 {
-       struct sun4i_drv *drv = drm->dev_private;
        struct sun4i_layer *layer;
        int ret;
 
 
        drm_plane_helper_add(&layer->plane,
                             &sun4i_backend_layer_helper_funcs);
-       layer->backend = drv->backend;
+       layer->backend = backend;
 
        return layer;
 }
 
-struct sun4i_layer **sun4i_layers_init(struct drm_device *drm)
+struct sun4i_layer **sun4i_layers_init(struct drm_device *drm,
+                                      struct sun4i_backend *backend)
 {
-       struct sun4i_drv *drv = drm->dev_private;
        struct sun4i_layer **layers;
        int i;
 
                const struct sun4i_plane_desc *plane = &sun4i_backend_planes[i];
                struct sun4i_layer *layer;
 
-               layer = sun4i_layer_init_one(drm, plane);
+               layer = sun4i_layer_init_one(drm, backend, plane);
                if (IS_ERR(layer)) {
                        dev_err(drm->dev, "Couldn't initialize %s plane\n",
                                i ? "overlay" : "primary");
 
                DRM_DEBUG_DRIVER("Assigning %s plane to pipe %d\n",
                                 i ? "overlay" : "primary", plane->pipe);
-               regmap_update_bits(drv->backend->regs, SUN4I_BACKEND_ATTCTL_REG0(i),
+               regmap_update_bits(backend->regs, SUN4I_BACKEND_ATTCTL_REG0(i),
                                   SUN4I_BACKEND_ATTCTL_REG0_LAY_PIPESEL_MASK,
                                   SUN4I_BACKEND_ATTCTL_REG0_LAY_PIPESEL(plane->pipe));