struct drm_crtc_state *old_state)
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
-       struct sun4i_drv *drv = scrtc->drv;
        struct drm_pending_vblank_event *event = crtc->state->event;
 
        DRM_DEBUG_DRIVER("Committing plane changes\n");
 
-       sun4i_backend_commit(drv->backend);
+       sun4i_backend_commit(scrtc->backend);
 
        if (event) {
                crtc->state->event = NULL;
 static void sun4i_crtc_disable(struct drm_crtc *crtc)
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
-       struct sun4i_drv *drv = scrtc->drv;
 
        DRM_DEBUG_DRIVER("Disabling the CRTC\n");
 
-       sun4i_tcon_disable(drv->tcon);
+       sun4i_tcon_disable(scrtc->tcon);
 
        if (crtc->state->event && !crtc->state->active) {
                spin_lock_irq(&crtc->dev->event_lock);
 static void sun4i_crtc_enable(struct drm_crtc *crtc)
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
-       struct sun4i_drv *drv = scrtc->drv;
 
        DRM_DEBUG_DRIVER("Enabling the CRTC\n");
 
-       sun4i_tcon_enable(drv->tcon);
+       sun4i_tcon_enable(scrtc->tcon);
 }
 
 static const struct drm_crtc_helper_funcs sun4i_crtc_helper_funcs = {
 static int sun4i_crtc_enable_vblank(struct drm_crtc *crtc)
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
-       struct sun4i_drv *drv = scrtc->drv;
 
        DRM_DEBUG_DRIVER("Enabling VBLANK on crtc %p\n", crtc);
 
-       sun4i_tcon_enable_vblank(drv->tcon, true);
+       sun4i_tcon_enable_vblank(scrtc->tcon, true);
 
        return 0;
 }
 static void sun4i_crtc_disable_vblank(struct drm_crtc *crtc)
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
-       struct sun4i_drv *drv = scrtc->drv;
 
        DRM_DEBUG_DRIVER("Disabling VBLANK on crtc %p\n", crtc);
 
-       sun4i_tcon_enable_vblank(drv->tcon, false);
+       sun4i_tcon_enable_vblank(scrtc->tcon, false);
 }
 
 static const struct drm_crtc_funcs sun4i_crtc_funcs = {
        scrtc = devm_kzalloc(drm->dev, sizeof(*scrtc), GFP_KERNEL);
        if (!scrtc)
                return ERR_PTR(-ENOMEM);
-       scrtc->drv = drv;
+       scrtc->backend = drv->backend;
+       scrtc->tcon = drv->tcon;
 
        /* Create our layers */
        scrtc->layers = sun4i_layers_init(drm);