Re: [PATCH 1/5] drm/mgag200: Convert struct drm_device to struct mga_device with macro

2020-05-06 Thread Daniel Vetter
On Tue, May 05, 2020 at 06:36:29PM +0200, Sam Ravnborg wrote:
> Hi Thomas.
> 
> On Tue, May 05, 2020 at 11:56:45AM +0200, Thomas Zimmermann wrote:
> > Mgag200 used dev_private to look up struct mga_device for instances
> > of struct drm_device. Use of dev_private is deprecated, so hide it in
> > the macro to_mga_device().
> > 
> > Signed-off-by: Thomas Zimmermann 
> Reviewed-by: Sam Ravnborg 
> 
> But one nit below.
> 
>   Sam
> 
> > ---
> >  drivers/gpu/drm/mgag200/mgag200_cursor.c |  4 ++--
> >  drivers/gpu/drm/mgag200/mgag200_drv.c|  2 +-
> >  drivers/gpu/drm/mgag200/mgag200_drv.h|  1 +
> >  drivers/gpu/drm/mgag200/mgag200_i2c.c| 10 +-
> >  drivers/gpu/drm/mgag200/mgag200_main.c   |  4 ++--
> >  drivers/gpu/drm/mgag200/mgag200_mode.c   | 18 +-
> >  6 files changed, 20 insertions(+), 19 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c 
> > b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> > index d491edd317ff3..aebc9ce43d551 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> > @@ -260,7 +260,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, 
> > struct drm_file *file_priv,
> > 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;
> > @@ -307,7 +307,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, 
> > struct drm_file *file_priv,
> >  
> >  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;
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c 
> > b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > index 3298b7ef18b03..c2f0e4b40b052 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> > @@ -120,7 +120,7 @@ int mgag200_driver_dumb_create(struct drm_file *file,
> >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"))
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h 
> > b/drivers/gpu/drm/mgag200/mgag200_drv.h
> > index 9691252d6233f..632bbb50465c9 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_drv.h
> > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
> > @@ -96,6 +96,7 @@
> >  
> >  #define to_mga_crtc(x) container_of(x, struct mga_crtc, base)
> >  #define to_mga_connector(x) container_of(x, struct mga_connector, base)
> > +#define to_mga_device(x) ((struct mga_device *)(x)->dev_private)
> A inline function would have been better, as this provide no typecheck.
> But we assume that it is always a drm_device *.
> We would most likely catch it as no one else has a ->dev_prvate.

Once we're using container_of it's fully typesafe, so not sure it's worth
the interim bother.
-Daniel

> 
> >  
> >  struct mga_crtc {
> > struct drm_crtc base;
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_i2c.c 
> > b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> > index 9f4635916d322..09731e614e46d 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_i2c.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> > @@ -61,34 +61,34 @@ static inline void mga_i2c_set(struct mga_device *mdev, 
> > int mask, int state)
> >  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 

Re: [PATCH 1/5] drm/mgag200: Convert struct drm_device to struct mga_device with macro

2020-05-05 Thread Sam Ravnborg
Hi Thomas.

On Tue, May 05, 2020 at 11:56:45AM +0200, Thomas Zimmermann wrote:
> Mgag200 used dev_private to look up struct mga_device for instances
> of struct drm_device. Use of dev_private is deprecated, so hide it in
> the macro to_mga_device().
> 
> Signed-off-by: Thomas Zimmermann 
Reviewed-by: Sam Ravnborg 

But one nit below.

Sam

> ---
>  drivers/gpu/drm/mgag200/mgag200_cursor.c |  4 ++--
>  drivers/gpu/drm/mgag200/mgag200_drv.c|  2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.h|  1 +
>  drivers/gpu/drm/mgag200/mgag200_i2c.c| 10 +-
>  drivers/gpu/drm/mgag200/mgag200_main.c   |  4 ++--
>  drivers/gpu/drm/mgag200/mgag200_mode.c   | 18 +-
>  6 files changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c 
> b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> index d491edd317ff3..aebc9ce43d551 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> @@ -260,7 +260,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
> drm_file *file_priv,
>   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;
> @@ -307,7 +307,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
> drm_file *file_priv,
>  
>  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;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c 
> b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 3298b7ef18b03..c2f0e4b40b052 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -120,7 +120,7 @@ int mgag200_driver_dumb_create(struct drm_file *file,
>  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"))
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h 
> b/drivers/gpu/drm/mgag200/mgag200_drv.h
> index 9691252d6233f..632bbb50465c9 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.h
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
> @@ -96,6 +96,7 @@
>  
>  #define to_mga_crtc(x) container_of(x, struct mga_crtc, base)
>  #define to_mga_connector(x) container_of(x, struct mga_connector, base)
> +#define to_mga_device(x) ((struct mga_device *)(x)->dev_private)
A inline function would have been better, as this provide no typecheck.
But we assume that it is always a drm_device *.
We would most likely catch it as no one else has a ->dev_prvate.

>  
>  struct mga_crtc {
>   struct drm_crtc base;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_i2c.c 
> b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> index 9f4635916d322..09731e614e46d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_i2c.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> @@ -61,34 +61,34 @@ static inline void mga_i2c_set(struct mga_device *mdev, 
> int mask, int state)
>  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;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c 
> b/drivers/gpu/drm/mgag200/mgag200_main.c
> index b680cf47cbb94..b705b7776d2fc 

Re: [PATCH 1/5] drm/mgag200: Convert struct drm_device to struct mga_device with macro

2020-05-05 Thread Daniel Vetter
On Tue, May 05, 2020 at 11:56:45AM +0200, Thomas Zimmermann wrote:
> Mgag200 used dev_private to look up struct mga_device for instances
> of struct drm_device. Use of dev_private is deprecated, so hide it in
> the macro to_mga_device().
> 
> Signed-off-by: Thomas Zimmermann 

Reviewed-by: Daniel Vetter 

> ---
>  drivers/gpu/drm/mgag200/mgag200_cursor.c |  4 ++--
>  drivers/gpu/drm/mgag200/mgag200_drv.c|  2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.h|  1 +
>  drivers/gpu/drm/mgag200/mgag200_i2c.c| 10 +-
>  drivers/gpu/drm/mgag200/mgag200_main.c   |  4 ++--
>  drivers/gpu/drm/mgag200/mgag200_mode.c   | 18 +-
>  6 files changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c 
> b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> index d491edd317ff3..aebc9ce43d551 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
> @@ -260,7 +260,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
> drm_file *file_priv,
>   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;
> @@ -307,7 +307,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
> drm_file *file_priv,
>  
>  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;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c 
> b/drivers/gpu/drm/mgag200/mgag200_drv.c
> index 3298b7ef18b03..c2f0e4b40b052 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -120,7 +120,7 @@ int mgag200_driver_dumb_create(struct drm_file *file,
>  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"))
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h 
> b/drivers/gpu/drm/mgag200/mgag200_drv.h
> index 9691252d6233f..632bbb50465c9 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.h
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
> @@ -96,6 +96,7 @@
>  
>  #define to_mga_crtc(x) container_of(x, struct mga_crtc, base)
>  #define to_mga_connector(x) container_of(x, struct mga_connector, base)
> +#define to_mga_device(x) ((struct mga_device *)(x)->dev_private)
>  
>  struct mga_crtc {
>   struct drm_crtc base;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_i2c.c 
> b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> index 9f4635916d322..09731e614e46d 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_i2c.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_i2c.c
> @@ -61,34 +61,34 @@ static inline void mga_i2c_set(struct mga_device *mdev, 
> int mask, int state)
>  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;
> diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c 
> b/drivers/gpu/drm/mgag200/mgag200_main.c
> index b680cf47cbb94..b705b7776d2fc 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_main.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_main.c
> @@ -92,7 +92,7 @@ static int mga_vram_init(struct mga_device *mdev)
>  static int mgag200_device_init(struct drm_device *dev,
> 

[PATCH 1/5] drm/mgag200: Convert struct drm_device to struct mga_device with macro

2020-05-05 Thread Thomas Zimmermann
Mgag200 used dev_private to look up struct mga_device for instances
of struct drm_device. Use of dev_private is deprecated, so hide it in
the macro to_mga_device().

Signed-off-by: Thomas Zimmermann 
---
 drivers/gpu/drm/mgag200/mgag200_cursor.c |  4 ++--
 drivers/gpu/drm/mgag200/mgag200_drv.c|  2 +-
 drivers/gpu/drm/mgag200/mgag200_drv.h|  1 +
 drivers/gpu/drm/mgag200/mgag200_i2c.c| 10 +-
 drivers/gpu/drm/mgag200/mgag200_main.c   |  4 ++--
 drivers/gpu/drm/mgag200/mgag200_mode.c   | 18 +-
 6 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/mgag200/mgag200_cursor.c 
b/drivers/gpu/drm/mgag200/mgag200_cursor.c
index d491edd317ff3..aebc9ce43d551 100644
--- a/drivers/gpu/drm/mgag200/mgag200_cursor.c
+++ b/drivers/gpu/drm/mgag200/mgag200_cursor.c
@@ -260,7 +260,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
drm_file *file_priv,
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;
@@ -307,7 +307,7 @@ int mgag200_crtc_cursor_set(struct drm_crtc *crtc, struct 
drm_file *file_priv,
 
 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;
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c 
b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 3298b7ef18b03..c2f0e4b40b052 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -120,7 +120,7 @@ int mgag200_driver_dumb_create(struct drm_file *file,
   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"))
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h 
b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 9691252d6233f..632bbb50465c9 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -96,6 +96,7 @@
 
 #define to_mga_crtc(x) container_of(x, struct mga_crtc, base)
 #define to_mga_connector(x) container_of(x, struct mga_connector, base)
+#define to_mga_device(x) ((struct mga_device *)(x)->dev_private)
 
 struct mga_crtc {
struct drm_crtc base;
diff --git a/drivers/gpu/drm/mgag200/mgag200_i2c.c 
b/drivers/gpu/drm/mgag200/mgag200_i2c.c
index 9f4635916d322..09731e614e46d 100644
--- a/drivers/gpu/drm/mgag200/mgag200_i2c.c
+++ b/drivers/gpu/drm/mgag200/mgag200_i2c.c
@@ -61,34 +61,34 @@ static inline void mga_i2c_set(struct mga_device *mdev, int 
mask, int state)
 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;
diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c 
b/drivers/gpu/drm/mgag200/mgag200_main.c
index b680cf47cbb94..b705b7776d2fc 100644
--- a/drivers/gpu/drm/mgag200/mgag200_main.c
+++ b/drivers/gpu/drm/mgag200/mgag200_main.c
@@ -92,7 +92,7 @@ static int mga_vram_init(struct mga_device *mdev)
 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);
@@ -195,7