uint32_t handle, uint32_t width, uint32_t height)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = (struct mga_device *)dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        struct drm_gem_object *obj;
        struct drm_gem_vram_object *gbo = NULL;
        int ret;
 
 int mgag200_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
 {
-       struct mga_device *mdev = (struct mga_device *)crtc->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(crtc->dev);
 
        /* Our origin is at (64,64) */
        x += 64;
 
                               struct drm_device *dev,
                               struct drm_mode_create_dumb *args)
 {
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        unsigned long pg_align;
 
        if (WARN_ONCE(!dev->vram_mm, "VRAM MM not initialized"))
 
        struct drm_encoder encoder;
 };
 
+static inline struct mga_device *to_mga_device(struct drm_device *dev)
+{
+       return dev->dev_private;
+}
+
 static inline enum mga_type
 mgag200_type_from_driver_data(kernel_ulong_t driver_data)
 {
 
 static void mga_gpio_setsda(void *data, int state)
 {
        struct mga_i2c_chan *i2c = data;
-       struct mga_device *mdev = i2c->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(i2c->dev);
        mga_i2c_set(mdev, i2c->data, state);
 }
 
 static void mga_gpio_setscl(void *data, int state)
 {
        struct mga_i2c_chan *i2c = data;
-       struct mga_device *mdev = i2c->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(i2c->dev);
        mga_i2c_set(mdev, i2c->clock, state);
 }
 
 static int mga_gpio_getsda(void *data)
 {
        struct mga_i2c_chan *i2c = data;
-       struct mga_device *mdev = i2c->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(i2c->dev);
        return (mga_i2c_read_gpio(mdev) & i2c->data) ? 1 : 0;
 }
 
 static int mga_gpio_getscl(void *data)
 {
        struct mga_i2c_chan *i2c = data;
-       struct mga_device *mdev = i2c->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(i2c->dev);
        return (mga_i2c_read_gpio(mdev) & i2c->clock) ? 1 : 0;
 }
 
 struct mga_i2c_chan *mgag200_i2c_create(struct drm_device *dev)
 {
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        struct mga_i2c_chan *i2c;
        int ret;
        int data, clock;
 
 static int mgag200_device_init(struct drm_device *dev,
                               uint32_t flags)
 {
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        int ret, option;
 
        mdev->flags = mgag200_flags_from_driver_data(flags);
 
 void mgag200_driver_unload(struct drm_device *dev)
 {
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
 
        if (mdev == NULL)
                return;
 
 static void mga_crtc_load_lut(struct drm_crtc *crtc)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        struct drm_framebuffer *fb = crtc->primary->fb;
        u16 *r_ptr, *g_ptr, *b_ptr;
        int i;
 
 static void mga_g200wb_prepare(struct drm_crtc *crtc)
 {
-       struct mga_device *mdev = crtc->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(crtc->dev);
        u8 tmp;
        int iter_max;
 
 static void mga_g200wb_commit(struct drm_crtc *crtc)
 {
        u8 tmp;
-       struct mga_device *mdev = crtc->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(crtc->dev);
 
        /* 1- The first step is to ensure that the vrsten and hrsten are set */
        WREG8(MGAREG_CRTCEXT_INDEX, 1);
  */
 static void mga_set_start_address(struct drm_crtc *crtc, unsigned offset)
 {
-       struct mga_device *mdev = crtc->dev->dev_private;
+       struct mga_device *mdev = to_mga_device(crtc->dev);
        u32 addr;
        int count;
        u8 crtcext0;
                                int x, int y, struct drm_framebuffer *old_fb)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        const struct drm_framebuffer *fb = crtc->primary->fb;
        int hdisplay, hsyncstart, hsyncend, htotal;
        int vdisplay, vsyncstart, vsyncend, vtotal;
 static void mga_crtc_dpms(struct drm_crtc *crtc, int mode)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        u8 seq1 = 0, crtcext1 = 0;
 
        switch (mode) {
 static void mga_crtc_prepare(struct drm_crtc *crtc)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        u8 tmp;
 
        /*      mga_resume(crtc);*/
 static void mga_crtc_commit(struct drm_crtc *crtc)
 {
        struct drm_device *dev = crtc->dev;
-       struct mga_device *mdev = dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
        u8 tmp;
 
                                 struct drm_display_mode *mode)
 {
        struct drm_device *dev = connector->dev;
-       struct mga_device *mdev = (struct mga_device*)dev->dev_private;
+       struct mga_device *mdev = to_mga_device(dev);
        int bpp = 32;
 
        if (IS_G200_SE(mdev)) {