} fb_update;
 };
 
+#define to_gm12u320(__dev) container_of(__dev, struct gm12u320_device, dev)
+
 static const char cmd_data[CMD_SIZE] = {
        0x55, 0x53, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00,
        0x68, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff,
 static void gm12u320_fb_mark_dirty(struct drm_framebuffer *fb,
                                   struct drm_rect *dirty)
 {
-       struct gm12u320_device *gm12u320 = fb->dev->dev_private;
+       struct gm12u320_device *gm12u320 = to_gm12u320(fb->dev);
        struct drm_framebuffer *old_fb = NULL;
        bool wakeup = false;
 
                                 struct drm_plane_state *plane_state)
 {
        struct drm_rect rect = { 0, 0, GM12U320_USER_WIDTH, GM12U320_HEIGHT };
-       struct gm12u320_device *gm12u320 = pipe->crtc.dev->dev_private;
+       struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev);
 
        gm12u320->fb_update.draw_status_timeout = FIRST_FRAME_TIMEOUT;
        gm12u320_fb_mark_dirty(plane_state->fb, &rect);
 
 static void gm12u320_pipe_disable(struct drm_simple_display_pipe *pipe)
 {
-       struct gm12u320_device *gm12u320 = pipe->crtc.dev->dev_private;
+       struct gm12u320_device *gm12u320 = to_gm12u320(pipe->crtc.dev);
 
        gm12u320_stop_fb_update(gm12u320);
 }
        mutex_init(&gm12u320->fb_update.lock);
 
        dev = &gm12u320->dev;
-       dev->dev_private = gm12u320;
 
        ret = drmm_mode_config_init(dev);
        if (ret)
 static __maybe_unused int gm12u320_resume(struct usb_interface *interface)
 {
        struct drm_device *dev = usb_get_intfdata(interface);
-       struct gm12u320_device *gm12u320 = dev->dev_private;
+       struct gm12u320_device *gm12u320 = to_gm12u320(dev);
 
        gm12u320_set_ecomode(gm12u320);