Re: drm/exynos: change callback argument of sub driver with device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 28, 2013 at 9:35 AM, Inki Dae <inki.dae@xxxxxxxxxxx> wrote:
> This patch makes callback funtions of each sub driver to be called
> with device object instead of display and manager.
>
> Exynos drm framework doesn't need to pass a manager or a display
> when calling callback function of each sub driver, and each sub
> driver can get its own context from device object. So this patch
> hides sub driver's context from framework.
>

Inki,
The reason I don't like this patch is that it moves us further away
from a flat drm driver. When I originally wrote the code for these
hooks to accept exynos_drm_manager/exynos_drm_display, it's because
they convert almost 1:1 to drm_crtc/drm_[encoder|connector]. The
drm_crtc_funcs/drm_encoder_funcs/drm_connector_funcs all take
drm_crtc/drm_encoder/drm_connector directly, not a device pointer.

Another benefit of keeping it as-is is that the managers and displays
need not necessarily be their own device drivers, they could easily be
something like ptn3460 where they just hang off the root drm driver.

Sean


> Signed-off-by: Inki Dae <inki.dae@xxxxxxxxxxx>
> Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_connector.c |   10 +--
>  drivers/gpu/drm/exynos/exynos_drm_core.c      |    8 +-
>  drivers/gpu/drm/exynos/exynos_drm_crtc.c      |   23 ++---
>  drivers/gpu/drm/exynos/exynos_drm_drv.h       |   62 +++++++-------
>  drivers/gpu/drm/exynos/exynos_drm_encoder.c   |   10 +--
>  drivers/gpu/drm/exynos/exynos_drm_fimd.c      |  114 ++++++++++++-------------
>  drivers/gpu/drm/exynos/exynos_hdmi.c          |   64 +++++++-------
>  drivers/gpu/drm/exynos/exynos_mixer.c         |   70 +++++++--------
>  8 files changed, 177 insertions(+), 184 deletions(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> index 9a16dbe..d13f637 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c
> @@ -46,7 +46,7 @@ static int exynos_drm_connector_get_modes(struct drm_connector *connector)
>          * because lcd panel has only one mode.
>          */
>         if (display->ops->get_edid) {
> -               edid = display->ops->get_edid(display, connector);
> +               edid = display->ops->get_edid(display->dev, connector);
>                 if (IS_ERR_OR_NULL(edid)) {
>                         ret = PTR_ERR(edid);
>                         edid = NULL;
> @@ -70,7 +70,7 @@ static int exynos_drm_connector_get_modes(struct drm_connector *connector)
>                 }
>
>                 if (display->ops->get_panel)
> -                       panel = display->ops->get_panel(display);
> +                       panel = display->ops->get_panel(display->dev);
>                 else {
>                         drm_mode_destroy(connector->dev, mode);
>                         return 0;
> @@ -105,7 +105,7 @@ static int exynos_drm_connector_mode_valid(struct drm_connector *connector,
>         DRM_DEBUG_KMS("%s\n", __FILE__);
>
>         if (display->ops->check_mode)
> -               if (!display->ops->check_mode(display, mode))
> +               if (!display->ops->check_mode(display->dev, mode))
>                         ret = MODE_OK;
>
>         return ret;
> @@ -155,7 +155,7 @@ static int exynos_drm_connector_fill_modes(struct drm_connector *connector,
>          * resolution then get max width and height from that driver.
>          */
>         if (display->ops->get_max_resol)
> -               display->ops->get_max_resol(display, &width, &height);
> +               display->ops->get_max_resol(display->dev, &width, &height);
>
>         return drm_helper_probe_single_connector_modes(connector, width,
>                                                         height);
> @@ -171,7 +171,7 @@ exynos_drm_connector_detect(struct drm_connector *connector, bool force)
>         enum drm_connector_status status = connector_status_disconnected;
>
>         if (display->ops->is_connected) {
> -               if (display->ops->is_connected(display))
> +               if (display->ops->is_connected(display->dev))
>                         status = connector_status_connected;
>                 else
>                         status = connector_status_disconnected;
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c
> index 0e11754..d59691d 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_core.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
> @@ -103,7 +103,7 @@ int exynos_drm_initialize_managers(struct drm_device *dev)
>
>         list_for_each_entry(manager, &exynos_drm_manager_list, list) {
>                 if (manager->ops->initialize) {
> -                       ret = manager->ops->initialize(manager, dev, pipe);
> +                       ret = manager->ops->initialize(manager->dev, dev, pipe);
>                         if (ret) {
>                                 DRM_ERROR("Mgr init [%d] failed with %d\n",
>                                                 manager->type, ret);
> @@ -148,7 +148,7 @@ int exynos_drm_initialize_displays(struct drm_device *dev)
>
>         list_for_each_entry(display, &exynos_drm_display_list, list) {
>                 if (display->ops->initialize) {
> -                       ret = display->ops->initialize(display, dev);
> +                       ret = display->ops->initialize(display->dev, dev);
>                         if (ret) {
>                                 DRM_ERROR("Display init [%d] failed with %d\n",
>                                                 display->type, ret);
> @@ -233,7 +233,7 @@ int exynos_drm_manager_register(struct exynos_drm_manager *manager)
>  int exynos_drm_manager_unregister(struct exynos_drm_manager *manager)
>  {
>         if (manager->ops->remove)
> -               manager->ops->remove(manager);
> +               manager->ops->remove(manager->dev);
>
>         list_del(&manager->list);
>         return 0;
> @@ -249,7 +249,7 @@ int exynos_drm_display_register(struct exynos_drm_display *display)
>  int exynos_drm_display_unregister(struct exynos_drm_display *display)
>  {
>         if (display->ops->remove)
> -               display->ops->remove(display);
> +               display->ops->remove(display->dev);
>
>         list_del(&display->list);
>         return 0;
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> index 100a561..f2f232e 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c
> @@ -75,7 +75,7 @@ static void exynos_drm_crtc_dpms(struct drm_crtc *crtc, int mode)
>         }
>
>         if (manager->ops->dpms)
> -               manager->ops->dpms(manager, mode);
> +               manager->ops->dpms(manager->dev, mode);
>
>         exynos_crtc->dpms = mode;
>  }
> @@ -95,7 +95,7 @@ static void exynos_drm_crtc_commit(struct drm_crtc *crtc)
>         exynos_plane_commit(exynos_crtc->plane);
>
>         if (manager->ops->commit)
> -               manager->ops->commit(manager);
> +               manager->ops->commit(manager->dev);
>
>         exynos_plane_dpms(exynos_crtc->plane, DRM_MODE_DPMS_ON);
>  }
> @@ -109,7 +109,8 @@ exynos_drm_crtc_mode_fixup(struct drm_crtc *crtc,
>         struct exynos_drm_manager *manager = exynos_crtc->manager;
>
>         if (manager->ops->mode_fixup)
> -               return manager->ops->mode_fixup(manager, mode, adjusted_mode);
> +               return manager->ops->mode_fixup(manager->dev, mode,
> +                                               adjusted_mode);
>
>         return true;
>  }
> @@ -136,7 +137,7 @@ exynos_drm_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode,
>         crtc_h = crtc->fb->height - y;
>
>         if (manager->ops->mode_set)
> -               manager->ops->mode_set(manager, &crtc->mode);
> +               manager->ops->mode_set(manager->dev, &crtc->mode);
>
>         ret = exynos_plane_mode_set(plane, crtc, crtc->fb, 0, 0, crtc_w, crtc_h,
>                                     x, y, crtc_w, crtc_h);
> @@ -390,7 +391,7 @@ int exynos_drm_crtc_enable_vblank(struct drm_device *dev, int pipe)
>                 return -EPERM;
>
>         if (manager->ops->enable_vblank)
> -               manager->ops->enable_vblank(manager);
> +               manager->ops->enable_vblank(manager->dev);
>
>         return 0;
>  }
> @@ -406,7 +407,7 @@ void exynos_drm_crtc_disable_vblank(struct drm_device *dev, int pipe)
>                 return;
>
>         if (manager->ops->disable_vblank)
> -               manager->ops->disable_vblank(manager);
> +               manager->ops->disable_vblank(manager->dev);
>  }
>
>  void exynos_drm_crtc_finish_pageflip(struct drm_device *dev, int pipe)
> @@ -441,7 +442,7 @@ void exynos_drm_crtc_plane_mode_set(struct drm_crtc *crtc,
>         struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager;
>
>         if (manager->ops->win_mode_set)
> -               manager->ops->win_mode_set(manager, overlay);
> +               manager->ops->win_mode_set(manager->dev, overlay);
>  }
>
>  void exynos_drm_crtc_plane_commit(struct drm_crtc *crtc, int zpos)
> @@ -449,7 +450,7 @@ void exynos_drm_crtc_plane_commit(struct drm_crtc *crtc, int zpos)
>         struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager;
>
>         if (manager->ops->win_commit)
> -               manager->ops->win_commit(manager, zpos);
> +               manager->ops->win_commit(manager->dev, zpos);
>  }
>
>  void exynos_drm_crtc_plane_enable(struct drm_crtc *crtc, int zpos)
> @@ -457,7 +458,7 @@ void exynos_drm_crtc_plane_enable(struct drm_crtc *crtc, int zpos)
>         struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager;
>
>         if (manager->ops->win_enable)
> -               manager->ops->win_enable(manager, zpos);
> +               manager->ops->win_enable(manager->dev, zpos);
>  }
>
>  void exynos_drm_crtc_plane_disable(struct drm_crtc *crtc, int zpos)
> @@ -465,7 +466,7 @@ void exynos_drm_crtc_plane_disable(struct drm_crtc *crtc, int zpos)
>         struct exynos_drm_manager *manager = to_exynos_crtc(crtc)->manager;
>
>         if (manager->ops->win_disable)
> -               manager->ops->win_disable(manager, zpos);
> +               manager->ops->win_disable(manager->dev, zpos);
>  }
>
>  void exynos_drm_crtc_complete_scanout(struct drm_framebuffer *fb)
> @@ -487,6 +488,6 @@ void exynos_drm_crtc_complete_scanout(struct drm_framebuffer *fb)
>                  *      real hardware.
>                  */
>                 if (manager->ops->wait_for_vblank)
> -                       manager->ops->wait_for_vblank(manager);
> +                       manager->ops->wait_for_vblank(manager->dev);
>         }
>  }
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.h b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> index 97bdfcc..d92c9f9 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.h
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.h
> @@ -137,26 +137,22 @@ struct exynos_drm_overlay {
>   */
>  struct exynos_drm_display;
>  struct exynos_drm_display_ops {
> -       int (*initialize)(struct exynos_drm_display *display,
> +       int (*initialize)(struct device *dev,
>                                 struct drm_device *drm_dev);
> -       void (*remove)(struct exynos_drm_display *display);
> -       bool (*is_connected)(struct exynos_drm_display *display);
> -       void (*get_max_resol)(struct exynos_drm_display *display,
> -                               unsigned int *width,
> +       void (*remove)(struct device *dev);
> +       bool (*is_connected)(struct device *dev);
> +       void (*get_max_resol)(struct device *dev, unsigned int *width,
>                                 unsigned int *height);
> -       struct edid *(*get_edid)(struct exynos_drm_display *display,
> +       struct edid *(*get_edid)(struct device *dev,
>                                 struct drm_connector *connector);
> -       void *(*get_panel)(struct exynos_drm_display *display);
> -       void (*mode_fixup)(struct exynos_drm_display *display,
> -                               struct drm_connector *connector,
> +       void *(*get_panel)(struct device *dev);
> +       void (*mode_fixup)(struct device *dev, struct drm_connector *connector,
>                                 const struct drm_display_mode *mode,
>                                 struct drm_display_mode *adjusted_mode);
> -       void (*mode_set)(struct exynos_drm_display *display,
> -                               struct drm_display_mode *mode);
> -       int (*check_mode)(struct exynos_drm_display *display,
> -                               struct drm_display_mode *mode);
> -       void (*dpms)(struct exynos_drm_display *display, int mode);
> -       void (*commit)(struct exynos_drm_display *display);
> +       void (*mode_set)(struct device *dev, struct drm_display_mode *mode);
> +       int (*check_mode)(struct device *dev, struct drm_display_mode *mode);
> +       void (*dpms)(struct device *dev, int mode);
> +       void (*commit)(struct device *dev);
>  };
>
>  /*
> @@ -167,7 +163,7 @@ struct exynos_drm_display_ops {
>   * @encoder: encoder object this display maps to
>   * @connector: connector object this display maps to
>   * @ops: pointer to callbacks for exynos drm specific functionality
> - * @ctx: A pointer to the display's implementation specific context
> + * @dev: device object of display device driver
>   */
>  struct exynos_drm_display {
>         struct list_head list;
> @@ -175,7 +171,7 @@ struct exynos_drm_display {
>         struct drm_encoder *encoder;
>         struct drm_connector *connector;
>         struct exynos_drm_display_ops *ops;
> -       void *ctx;
> +       struct device *dev;
>  };
>
>  /*
> @@ -198,24 +194,24 @@ struct exynos_drm_display {
>   */
>  struct exynos_drm_manager;
>  struct exynos_drm_manager_ops {
> -       int (*initialize)(struct exynos_drm_manager *mgr,
> -                               struct drm_device *drm_dev, int pipe);
> -       void (*remove)(struct exynos_drm_manager *mgr);
> -       void (*dpms)(struct exynos_drm_manager *mgr, int mode);
> -       bool (*mode_fixup)(struct exynos_drm_manager *mgr,
> +       int (*initialize)(struct device *dev, struct drm_device *drm_dev,
> +                               int pipe);
> +       void (*remove)(struct device *dev);
> +       void (*dpms)(struct device *dev, int mode);
> +       bool (*mode_fixup)(struct device *dev,
>                                 const struct drm_display_mode *mode,
>                                 struct drm_display_mode *adjusted_mode);
> -       void (*mode_set)(struct exynos_drm_manager *mgr,
> +       void (*mode_set)(struct device *dev,
>                                 const struct drm_display_mode *mode);
> -       void (*commit)(struct exynos_drm_manager *mgr);
> -       int (*enable_vblank)(struct exynos_drm_manager *mgr);
> -       void (*disable_vblank)(struct exynos_drm_manager *mgr);
> -       void (*wait_for_vblank)(struct exynos_drm_manager *mgr);
> -       void (*win_mode_set)(struct exynos_drm_manager *mgr,
> +       void (*commit)(struct device *dev);
> +       int (*enable_vblank)(struct device *dev);
> +       void (*disable_vblank)(struct device *dev);
> +       void (*wait_for_vblank)(struct device *dev);
> +       void (*win_mode_set)(struct device *dev,
>                                 struct exynos_drm_overlay *overlay);
> -       void (*win_commit)(struct exynos_drm_manager *mgr, int zpos);
> -       void (*win_enable)(struct exynos_drm_manager *mgr, int zpos);
> -       void (*win_disable)(struct exynos_drm_manager *mgr, int zpos);
> +       void (*win_commit)(struct device *dev, int zpos);
> +       void (*win_enable)(struct device *dev, int zpos);
> +       void (*win_disable)(struct device *dev, int zpos);
>  };
>
>  /*
> @@ -226,7 +222,7 @@ struct exynos_drm_manager_ops {
>   * @drm_dev: pointer to the drm device
>   * @pipe: the pipe number for this crtc/manager
>   * @ops: pointer to callbacks for exynos drm specific functionality
> - * @ctx: A pointer to the manager's implementation specific context
> + * @dev: device object of manager device driver
>   */
>  struct exynos_drm_manager {
>         struct list_head list;
> @@ -234,7 +230,7 @@ struct exynos_drm_manager {
>         struct drm_device *drm_dev;
>         int pipe;
>         struct exynos_drm_manager_ops *ops;
> -       void *ctx;
> +       struct device *dev;
>  };
>
>  struct exynos_drm_g2d_private {
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_encoder.c b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> index bfa2f17..5a7342c 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_encoder.c
> @@ -41,7 +41,7 @@ static void exynos_drm_encoder_dpms(struct drm_encoder *encoder, int mode)
>         DRM_DEBUG_KMS("encoder dpms: %d\n", mode);
>
>         if (display->ops->dpms)
> -               display->ops->dpms(display, mode);
> +               display->ops->dpms(display->dev, mode);
>  }
>
>  static bool
> @@ -59,7 +59,7 @@ exynos_drm_encoder_mode_fixup(struct drm_encoder *encoder,
>                         continue;
>
>                 if (display->ops->mode_fixup)
> -                       display->ops->mode_fixup(display, connector, mode,
> +                       display->ops->mode_fixup(display->dev, connector, mode,
>                                         adjusted_mode);
>         }
>
> @@ -74,7 +74,7 @@ static void exynos_drm_encoder_mode_set(struct drm_encoder *encoder,
>         struct exynos_drm_display *display = exynos_encoder->display;
>
>         if (display->ops->mode_set)
> -               display->ops->mode_set(display, adjusted_mode);
> +               display->ops->mode_set(display->dev, adjusted_mode);
>  }
>
>  static void exynos_drm_encoder_prepare(struct drm_encoder *encoder)
> @@ -88,10 +88,10 @@ static void exynos_drm_encoder_commit(struct drm_encoder *encoder)
>         struct exynos_drm_display *display = exynos_encoder->display;
>
>         if (display->ops->dpms)
> -               display->ops->dpms(display, DRM_MODE_DPMS_ON);
> +               display->ops->dpms(display->dev, DRM_MODE_DPMS_ON);
>
>         if (display->ops->commit)
> -               display->ops->commit(display);
> +               display->ops->commit(display->dev);
>  }
>
>  static void exynos_drm_encoder_disable(struct drm_encoder *encoder)
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> index 03657b2..384e53b 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
> @@ -62,7 +62,7 @@
>  /* FIMD has totally five hardware windows. */
>  #define WINDOWS_NR     5
>
> -#define get_fimd_manager(mgr)  platform_get_drvdata(to_platform_device(dev))
> +#define get_fimd_context(dev)  platform_get_drvdata(to_platform_device(dev))
>
>  struct fimd_driver_data {
>         unsigned int timing_base;
> @@ -158,22 +158,21 @@ static inline struct fimd_driver_data *drm_fimd_get_driver_data(
>         return (struct fimd_driver_data *)of_id->data;
>  }
>
> -static bool fimd_display_is_connected(struct exynos_drm_display *display)
> +static bool fimd_display_is_connected(struct device *dev)
>  {
>         /* TODO. */
>
>         return true;
>  }
>
> -static void *fimd_get_panel(struct exynos_drm_display *display)
> +static void *fimd_get_panel(struct device *dev)
>  {
> -       struct fimd_context *ctx = display->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>
>         return &ctx->panel;
>  }
>
> -static int fimd_check_mode(struct exynos_drm_display *display,
> -                       struct drm_display_mode *mode)
> +static int fimd_check_mode(struct device *dev, struct drm_display_mode *mode)
>  {
>         /* TODO. */
>
> @@ -191,10 +190,10 @@ static struct exynos_drm_display fimd_display = {
>         .ops = &fimd_display_ops,
>  };
>
> -static void fimd_win_mode_set(struct exynos_drm_manager *mgr,
> -                       struct exynos_drm_overlay *overlay)
> +static void fimd_win_mode_set(struct device *dev,
> +                               struct exynos_drm_overlay *overlay)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int win;
>         unsigned long offset;
> @@ -337,9 +336,9 @@ static void fimd_shadow_protect_win(struct fimd_context *ctx,
>         writel(val, ctx->regs + reg);
>  }
>
> -static void fimd_win_commit(struct exynos_drm_manager *mgr, int zpos)
> +static void fimd_win_commit(struct device *dev, int zpos)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int win = zpos;
>         unsigned long val, alpha, size;
> @@ -463,9 +462,9 @@ static void fimd_win_commit(struct exynos_drm_manager *mgr, int zpos)
>         win_data->enabled = true;
>  }
>
> -static void fimd_win_disable(struct exynos_drm_manager *mgr, int zpos)
> +static void fimd_win_disable(struct device *dev, int zpos)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int win = zpos;
>         u32 val;
> @@ -504,10 +503,10 @@ static void fimd_win_disable(struct exynos_drm_manager *mgr, int zpos)
>         win_data->enabled = false;
>  }
>
> -static int fimd_mgr_initialize(struct exynos_drm_manager *mgr,
> -                       struct drm_device *drm_dev, int pipe)
> +static int fimd_mgr_initialize(struct device *dev, struct drm_device *drm_dev,
> +                               int pipe)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>
>         ctx->drm_dev = drm_dev;
>         ctx->pipe = pipe;
> @@ -536,9 +535,9 @@ static int fimd_mgr_initialize(struct exynos_drm_manager *mgr,
>         return 0;
>  }
>
> -static void fimd_mgr_remove(struct exynos_drm_manager *mgr)
> +static void fimd_mgr_remove(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>
>         if (is_drm_iommu_supported(ctx->drm_dev))
>                 drm_iommu_detach_device(ctx->drm_dev, ctx->dev);
> @@ -556,9 +555,9 @@ static u32 fimd_calc_clkdiv(struct fimd_context *ctx,
>         return (clkdiv < 0x100) ? clkdiv : 0xff;
>  }
>
> -static bool fimd_mode_fixup(struct exynos_drm_manager *mgr,
> -               const struct drm_display_mode *mode,
> -               struct drm_display_mode *adjusted_mode)
> +static bool fimd_mode_fixup(struct device *dev,
> +                               const struct drm_display_mode *mode,
> +                               struct drm_display_mode *adjusted_mode)
>  {
>         if (adjusted_mode->vrefresh == 0)
>                 adjusted_mode->vrefresh = FIMD_DEFAULT_FRAMERATE;
> @@ -566,10 +565,10 @@ static bool fimd_mode_fixup(struct exynos_drm_manager *mgr,
>         return true;
>  }
>
> -static void fimd_mode_set(struct exynos_drm_manager *mgr,
> +static void fimd_mode_set(struct device *dev,
>                 const struct drm_display_mode *in_mode)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_mode_data *mode = &ctx->mode;
>         int hblank, vblank;
>
> @@ -590,9 +589,9 @@ static void fimd_mode_set(struct exynos_drm_manager *mgr,
>         mode->clkdiv = fimd_calc_clkdiv(ctx, in_mode);
>  }
>
> -static void fimd_commit(struct exynos_drm_manager *mgr)
> +static void fimd_commit(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_mode_data *mode = &ctx->mode;
>         struct fimd_driver_data *driver_data;
>         u32 val;
> @@ -649,24 +648,24 @@ static void fimd_commit(struct exynos_drm_manager *mgr)
>         writel(val, ctx->regs + VIDCON0);
>  }
>
> -static void fimd_apply(struct exynos_drm_manager *mgr)
> +static void fimd_apply(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int i;
>
>         for (i = 0; i < WINDOWS_NR; i++) {
>                 win_data = &ctx->win_data[i];
>                 if (win_data->enabled)
> -                       fimd_win_commit(mgr, i);
> +                       fimd_win_commit(dev, i);
>         }
>
> -       fimd_commit(mgr);
> +       fimd_commit(dev);
>  }
>
> -static int fimd_enable_vblank(struct exynos_drm_manager *mgr)
> +static int fimd_enable_vblank(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         u32 val;
>
>         if (ctx->suspended)
> @@ -689,9 +688,9 @@ static int fimd_enable_vblank(struct exynos_drm_manager *mgr)
>         return 0;
>  }
>
> -static void fimd_disable_vblank(struct exynos_drm_manager *mgr)
> +static void fimd_disable_vblank(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         u32 val;
>
>         if (ctx->suspended)
> @@ -707,9 +706,9 @@ static void fimd_disable_vblank(struct exynos_drm_manager *mgr)
>         }
>  }
>
> -static void fimd_wait_for_vblank(struct exynos_drm_manager *mgr)
> +static void fimd_wait_for_vblank(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>
>         if (ctx->suspended)
>                 return;
> @@ -726,9 +725,9 @@ static void fimd_wait_for_vblank(struct exynos_drm_manager *mgr)
>                 DRM_DEBUG_KMS("vblank wait timed out.\n");
>  }
>
> -static void fimd_window_suspend(struct exynos_drm_manager *mgr)
> +static void fimd_window_suspend(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int i;
>
> @@ -736,14 +735,14 @@ static void fimd_window_suspend(struct exynos_drm_manager *mgr)
>                 win_data = &ctx->win_data[i];
>                 win_data->resume = win_data->enabled;
>                 if (win_data->enabled)
> -                       fimd_win_disable(mgr, i);
> +                       fimd_win_disable(dev, i);
>         }
> -       fimd_wait_for_vblank(mgr);
> +       fimd_wait_for_vblank(dev);
>  }
>
> -static void fimd_window_resume(struct exynos_drm_manager *mgr)
> +static void fimd_window_resume(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         struct fimd_win_data *win_data;
>         int i;
>
> @@ -754,9 +753,9 @@ static void fimd_window_resume(struct exynos_drm_manager *mgr)
>         }
>  }
>
> -static int fimd_poweron(struct exynos_drm_manager *mgr)
> +static int fimd_poweron(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>         int ret;
>
>         if (!ctx->suspended)
> @@ -780,16 +779,16 @@ static int fimd_poweron(struct exynos_drm_manager *mgr)
>
>         /* if vblank was enabled status, enable it again. */
>         if (test_and_clear_bit(0, &ctx->irq_flags)) {
> -               ret = fimd_enable_vblank(mgr);
> +               ret = fimd_enable_vblank(dev);
>                 if (ret) {
>                         DRM_ERROR("Failed to re-enable vblank [%d]\n", ret);
>                         goto enable_vblank_err;
>                 }
>         }
>
> -       fimd_window_resume(mgr);
> +       fimd_window_resume(dev);
>
> -       fimd_apply(mgr);
> +       fimd_apply(dev);
>
>         return 0;
>
> @@ -802,9 +801,9 @@ bus_clk_err:
>         return ret;
>  }
>
> -static int fimd_poweroff(struct exynos_drm_manager *mgr)
> +static int fimd_poweroff(struct device *dev)
>  {
> -       struct fimd_context *ctx = mgr->ctx;
> +       struct fimd_context *ctx = get_fimd_context(dev);
>
>         if (ctx->suspended)
>                 return 0;
> @@ -814,7 +813,7 @@ static int fimd_poweroff(struct exynos_drm_manager *mgr)
>          * suspend that connector. Otherwise we might try to scan from
>          * a destroyed buffer later.
>          */
> -       fimd_window_suspend(mgr);
> +       fimd_window_suspend(dev);
>
>         clk_disable_unprepare(ctx->lcd_clk);
>         clk_disable_unprepare(ctx->bus_clk);
> @@ -825,18 +824,18 @@ static int fimd_poweroff(struct exynos_drm_manager *mgr)
>         return 0;
>  }
>
> -static void fimd_dpms(struct exynos_drm_manager *mgr, int mode)
> +static void fimd_dpms(struct device *dev, int mode)
>  {
>         DRM_DEBUG_KMS("%s, %d\n", __FILE__, mode);
>
>         switch (mode) {
>         case DRM_MODE_DPMS_ON:
> -               fimd_poweron(mgr);
> +               fimd_poweron(dev);
>                 break;
>         case DRM_MODE_DPMS_STANDBY:
>         case DRM_MODE_DPMS_SUSPEND:
>         case DRM_MODE_DPMS_OFF:
> -               fimd_poweroff(mgr);
> +               fimd_poweroff(dev);
>                 break;
>         default:
>                 DRM_DEBUG_KMS("unspecified mode %d\n", mode);
> @@ -985,12 +984,12 @@ static int fimd_probe(struct platform_device *pdev)
>         DRM_INIT_WAITQUEUE(&ctx->wait_vsync_queue);
>         atomic_set(&ctx->wait_vsync_event, 0);
>
> -       platform_set_drvdata(pdev, &fimd_manager);
> +       platform_set_drvdata(pdev, ctx);
>
> -       fimd_manager.ctx = ctx;
> +       fimd_manager.dev = dev;
>         exynos_drm_manager_register(&fimd_manager);
>
> -       fimd_display.ctx = ctx;
> +       fimd_display.dev = dev;
>         exynos_drm_display_register(&fimd_display);
>
>         /*
> @@ -1010,12 +1009,13 @@ static int fimd_probe(struct platform_device *pdev)
>
>  static int fimd_remove(struct platform_device *pdev)
>  {
> -       struct exynos_drm_manager *mgr = platform_get_drvdata(pdev);
> +       struct device *dev = &pdev->dev;
> +       struct fimd_context *ctx = platform_get_drvdata(pdev);
>
>         exynos_drm_display_unregister(&fimd_display);
>         exynos_drm_manager_unregister(&fimd_manager);
>
> -       fimd_dpms(mgr, DRM_MODE_DPMS_OFF);
> +       fimd_dpms(dev, DRM_MODE_DPMS_OFF);
>
>         pm_runtime_disable(&pdev->dev);
>
> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
> index 130b109..32ce9a6 100644
> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
> @@ -45,7 +45,7 @@
>
>  #define MAX_WIDTH              1920
>  #define MAX_HEIGHT             1080
> -#define get_hdmi_display(dev)  platform_get_drvdata(to_platform_device(dev))
> +#define get_hdmi_context(dev)  platform_get_drvdata(to_platform_device(dev))
>
>  /* AVI header and aspect ratio */
>  #define HDMI_AVI_VERSION               0x02
> @@ -739,28 +739,27 @@ static void hdmi_reg_infoframe(struct hdmi_context *hdata,
>         }
>  }
>
> -static int hdmi_initialize(struct exynos_drm_display *display,
> -                       struct drm_device *drm_dev)
> +static int hdmi_initialize(struct device *dev, struct drm_device *drm_dev)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>
>         hdata->drm_dev = drm_dev;
>
>         return 0;
>  }
>
> -static bool hdmi_is_connected(struct exynos_drm_display *display)
> +static bool hdmi_is_connected(struct device *dev)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>
>         return hdata->hpd;
>  }
>
> -static struct edid *hdmi_get_edid(struct exynos_drm_display *display,
> -                       struct drm_connector *connector)
> +static struct edid *hdmi_get_edid(struct device *dev,
> +                                       struct drm_connector *connector)
>  {
>         struct edid *raw_edid;
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>
>         if (!hdata->ddc_port)
>                 return ERR_PTR(-ENODEV);
> @@ -799,10 +798,10 @@ static int hdmi_find_phy_conf(struct hdmi_context *hdata, u32 pixel_clock)
>         return -EINVAL;
>  }
>
> -static int hdmi_check_mode(struct exynos_drm_display *display,
> +static int hdmi_check_mode(struct device *dev,
>                         struct drm_display_mode *mode)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>         int ret;
>
>         DRM_DEBUG_KMS("xres=%d, yres=%d, refresh=%d, intl=%d clock=%d\n",
> @@ -820,8 +819,7 @@ static int hdmi_check_mode(struct exynos_drm_display *display,
>         return 0;
>  }
>
> -static void hdmi_mode_fixup(struct exynos_drm_display *display,
> -                               struct drm_connector *connector,
> +static void hdmi_mode_fixup(struct device *dev, struct drm_connector *connector,
>                                 const struct drm_display_mode *mode,
>                                 struct drm_display_mode *adjusted_mode)
>  {
> @@ -832,7 +830,7 @@ static void hdmi_mode_fixup(struct exynos_drm_display *display,
>
>         drm_mode_set_crtcinfo(adjusted_mode, 0);
>
> -       mode_ok = hdmi_check_mode(display, adjusted_mode);
> +       mode_ok = hdmi_check_mode(dev, adjusted_mode);
>
>         /* just return if user desired mode exists. */
>         if (mode_ok == 0)
> @@ -843,7 +841,7 @@ static void hdmi_mode_fixup(struct exynos_drm_display *display,
>          * to adjusted_mode.
>          */
>         list_for_each_entry(m, &connector->modes, head) {
> -               mode_ok = hdmi_check_mode(display, m);
> +               mode_ok = hdmi_check_mode(dev, m);
>
>                 if (mode_ok == 0) {
>                         DRM_INFO("desired mode doesn't exist so\n");
> @@ -1683,10 +1681,9 @@ static void hdmi_v14_mode_set(struct hdmi_context *hdata,
>         hdmi_set_reg(tg->tg_3d, 1, 0x0);
>  }
>
> -static void hdmi_mode_set(struct exynos_drm_display *display,
> -                       struct drm_display_mode *mode)
> +static void hdmi_mode_set(struct device *dev, struct drm_display_mode *mode)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>         struct drm_display_mode *m = mode;
>
>         DRM_DEBUG_KMS("xres=%d, yres=%d, refresh=%d, intl=%s\n",
> @@ -1700,16 +1697,16 @@ static void hdmi_mode_set(struct exynos_drm_display *display,
>                 hdmi_v14_mode_set(hdata, mode);
>  }
>
> -static void hdmi_get_max_resol(struct exynos_drm_display *display,
> -                       unsigned int *width, unsigned int *height)
> +static void hdmi_get_max_resol(struct device *dev, unsigned int *width,
> +                               unsigned int *height)
>  {
>         *width = MAX_WIDTH;
>         *height = MAX_HEIGHT;
>  }
>
> -static void hdmi_commit(struct exynos_drm_display *display)
> +static void hdmi_commit(struct device *dev)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>
>         mutex_lock(&hdata->hdmi_mutex);
>         if (!hdata->powered) {
> @@ -1721,9 +1718,9 @@ static void hdmi_commit(struct exynos_drm_display *display)
>         hdmi_conf_apply(hdata);
>  }
>
> -static void hdmi_poweron(struct exynos_drm_display *display)
> +static void hdmi_poweron(struct device *dev)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>         struct hdmi_resources *res = &hdata->res;
>
>         mutex_lock(&hdata->hdmi_mutex);
> @@ -1744,12 +1741,12 @@ static void hdmi_poweron(struct exynos_drm_display *display)
>         clk_prepare_enable(res->sclk_hdmi);
>
>         hdmiphy_poweron(hdata);
> -       hdmi_commit(display);
> +       hdmi_commit(dev);
>  }
>
> -static void hdmi_poweroff(struct exynos_drm_display *display)
> +static void hdmi_poweroff(struct device *dev)
>  {
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>         struct hdmi_resources *res = &hdata->res;
>
>         mutex_lock(&hdata->hdmi_mutex);
> @@ -1776,18 +1773,18 @@ out:
>         mutex_unlock(&hdata->hdmi_mutex);
>  }
>
> -static void hdmi_dpms(struct exynos_drm_display *display, int mode)
> +static void hdmi_dpms(struct device *dev, int mode)
>  {
>         DRM_DEBUG_KMS("mode %d\n", mode);
>
>         switch (mode) {
>         case DRM_MODE_DPMS_ON:
> -               hdmi_poweron(display);
> +               hdmi_poweron(dev);
>                 break;
>         case DRM_MODE_DPMS_STANDBY:
>         case DRM_MODE_DPMS_SUSPEND:
>         case DRM_MODE_DPMS_OFF:
> -               hdmi_poweroff(display);
> +               hdmi_poweroff(dev);
>                 break;
>         default:
>                 DRM_DEBUG_KMS("unknown dpms mode: %d\n", mode);
> @@ -1956,7 +1953,7 @@ static int hdmi_probe(struct platform_device *pdev)
>
>         mutex_init(&hdata->hdmi_mutex);
>
> -       platform_set_drvdata(pdev, &hdmi_display);
> +       platform_set_drvdata(pdev, hdata);
>
>         match = of_match_node(hdmi_match_types, dev->of_node);
>         if (!match)
> @@ -2027,7 +2024,7 @@ static int hdmi_probe(struct platform_device *pdev)
>                 goto err_hdmiphy;
>         }
>
> -       hdmi_display.ctx = hdata;
> +       hdmi_display.dev = dev;
>         exynos_drm_display_register(&hdmi_display);
>
>         return 0;
> @@ -2042,8 +2039,7 @@ err_ddc:
>  static int hdmi_remove(struct platform_device *pdev)
>  {
>         struct device *dev = &pdev->dev;
> -       struct exynos_drm_display *display = get_hdmi_display(dev);
> -       struct hdmi_context *hdata = display->ctx;
> +       struct hdmi_context *hdata = get_hdmi_context(dev);
>
>         put_device(&hdata->hdmiphy_port->dev);
>         put_device(&hdata->ddc_port->dev);
> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
> index 985391d..2e8c0e8 100644
> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
> @@ -39,7 +39,7 @@
>  #include "exynos_drm_iommu.h"
>  #include "exynos_mixer.h"
>
> -#define get_mixer_manager(dev) platform_get_drvdata(to_platform_device(dev))
> +#define get_mixer_context(dev) platform_get_drvdata(to_platform_device(dev))
>
>  #define MIXER_WIN_NR           3
>  #define MIXER_DEFAULT_WIN      0
> @@ -687,10 +687,10 @@ static void mixer_win_reset(struct mixer_context *ctx)
>         spin_unlock_irqrestore(&res->reg_slock, flags);
>  }
>
> -static int mixer_initialize(struct exynos_drm_manager *mgr,
> -                       struct drm_device *drm_dev, int pipe)
> +static int mixer_initialize(struct device *dev, struct drm_device *drm_dev,
> +                               int pipe)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>
>         mixer_ctx->drm_dev = drm_dev;
>         mixer_ctx->pipe = pipe;
> @@ -701,17 +701,17 @@ static int mixer_initialize(struct exynos_drm_manager *mgr,
>         return drm_iommu_attach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
>  }
>
> -static void mixer_mgr_remove(struct exynos_drm_manager *mgr)
> +static void mixer_mgr_remove(struct device *dev)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>
>         if (is_drm_iommu_supported(mixer_ctx->drm_dev))
>                 drm_iommu_detach_device(mixer_ctx->drm_dev, mixer_ctx->dev);
>  }
>
> -static int mixer_enable_vblank(struct exynos_drm_manager *mgr)
> +static int mixer_enable_vblank(struct device *dev)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>         struct mixer_resources *res = &mixer_ctx->mixer_res;
>
>         if (!mixer_ctx->powered) {
> @@ -726,19 +726,19 @@ static int mixer_enable_vblank(struct exynos_drm_manager *mgr)
>         return 0;
>  }
>
> -static void mixer_disable_vblank(struct exynos_drm_manager *mgr)
> +static void mixer_disable_vblank(struct device *dev)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>         struct mixer_resources *res = &mixer_ctx->mixer_res;
>
>         /* disable vsync interrupt */
>         mixer_reg_writemask(res, MXR_INT_EN, 0, MXR_INT_EN_VSYNC);
>  }
>
> -static void mixer_win_mode_set(struct exynos_drm_manager *mgr,
> +static void mixer_win_mode_set(struct device *dev,
>                         struct exynos_drm_overlay *overlay)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>         struct hdmi_win_data *win_data;
>         int win;
>
> @@ -787,9 +787,9 @@ static void mixer_win_mode_set(struct exynos_drm_manager *mgr,
>         win_data->scan_flags = overlay->scan_flag;
>  }
>
> -static void mixer_win_commit(struct exynos_drm_manager *mgr, int zpos)
> +static void mixer_win_commit(struct device *dev, int zpos)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>         int win = zpos == DEFAULT_ZPOS ? MIXER_DEFAULT_WIN : zpos;
>
>         DRM_DEBUG_KMS("win: %d\n", win);
> @@ -809,9 +809,9 @@ static void mixer_win_commit(struct exynos_drm_manager *mgr, int zpos)
>         mixer_ctx->win_data[win].enabled = true;
>  }
>
> -static void mixer_win_disable(struct exynos_drm_manager *mgr, int zpos)
> +static void mixer_win_disable(struct device *dev, int zpos)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>         struct mixer_resources *res = &mixer_ctx->mixer_res;
>         int win = zpos == DEFAULT_ZPOS ? MIXER_DEFAULT_WIN : zpos;
>         unsigned long flags;
> @@ -837,9 +837,9 @@ static void mixer_win_disable(struct exynos_drm_manager *mgr, int zpos)
>         mixer_ctx->win_data[win].enabled = false;
>  }
>
> -static void mixer_wait_for_vblank(struct exynos_drm_manager *mgr)
> +static void mixer_wait_for_vblank(struct device *dev)
>  {
> -       struct mixer_context *mixer_ctx = mgr->ctx;
> +       struct mixer_context *mixer_ctx = get_mixer_context(dev);
>
>         mutex_lock(&mixer_ctx->mixer_mutex);
>         if (!mixer_ctx->powered) {
> @@ -860,23 +860,23 @@ static void mixer_wait_for_vblank(struct exynos_drm_manager *mgr)
>                 DRM_DEBUG_KMS("vblank wait timed out.\n");
>  }
>
> -static void mixer_window_suspend(struct exynos_drm_manager *mgr)
> +static void mixer_window_suspend(struct device *dev)
>  {
> -       struct mixer_context *ctx = mgr->ctx;
> +       struct mixer_context *ctx = get_mixer_context(dev);
>         struct hdmi_win_data *win_data;
>         int i;
>
>         for (i = 0; i < MIXER_WIN_NR; i++) {
>                 win_data = &ctx->win_data[i];
>                 win_data->resume = win_data->enabled;
> -               mixer_win_disable(mgr, i);
> +               mixer_win_disable(dev, i);
>         }
> -       mixer_wait_for_vblank(mgr);
> +       mixer_wait_for_vblank(dev);
>  }
>
> -static void mixer_window_resume(struct exynos_drm_manager *mgr)
> +static void mixer_window_resume(struct device *dev)
>  {
> -       struct mixer_context *ctx = mgr->ctx;
> +       struct mixer_context *ctx = get_mixer_context(dev);
>         struct hdmi_win_data *win_data;
>         int i;
>
> @@ -885,13 +885,13 @@ static void mixer_window_resume(struct exynos_drm_manager *mgr)
>                 win_data->enabled = win_data->resume;
>                 win_data->resume = false;
>                 if (win_data->enabled)
> -                       mixer_win_commit(mgr, i);
> +                       mixer_win_commit(dev, i);
>         }
>  }
>
> -static void mixer_poweron(struct exynos_drm_manager *mgr)
> +static void mixer_poweron(struct device *dev)
>  {
> -       struct mixer_context *ctx = mgr->ctx;
> +       struct mixer_context *ctx = get_mixer_context(dev);
>         struct mixer_resources *res = &ctx->mixer_res;
>
>         mutex_lock(&ctx->mixer_mutex);
> @@ -913,12 +913,12 @@ static void mixer_poweron(struct exynos_drm_manager *mgr)
>         mixer_reg_write(res, MXR_INT_EN, ctx->int_en);
>         mixer_win_reset(ctx);
>
> -       mixer_window_resume(mgr);
> +       mixer_window_resume(dev);
>  }
>
> -static void mixer_poweroff(struct exynos_drm_manager *mgr)
> +static void mixer_poweroff(struct device *dev)
>  {
> -       struct mixer_context *ctx = mgr->ctx;
> +       struct mixer_context *ctx = get_mixer_context(dev);
>         struct mixer_resources *res = &ctx->mixer_res;
>
>         mutex_lock(&ctx->mixer_mutex);
> @@ -926,7 +926,7 @@ static void mixer_poweroff(struct exynos_drm_manager *mgr)
>                 goto out;
>         mutex_unlock(&ctx->mixer_mutex);
>
> -       mixer_window_suspend(mgr);
> +       mixer_window_suspend(dev);
>
>         ctx->int_en = mixer_reg_read(res, MXR_INT_EN);
>
> @@ -945,16 +945,16 @@ out:
>         mutex_unlock(&ctx->mixer_mutex);
>  }
>
> -static void mixer_dpms(struct exynos_drm_manager *mgr, int mode)
> +static void mixer_dpms(struct device *dev, int mode)
>  {
>         switch (mode) {
>         case DRM_MODE_DPMS_ON:
> -               mixer_poweron(mgr);
> +               mixer_poweron(dev);
>                 break;
>         case DRM_MODE_DPMS_STANDBY:
>         case DRM_MODE_DPMS_SUSPEND:
>         case DRM_MODE_DPMS_OFF:
> -               mixer_poweroff(mgr);
> +               mixer_poweroff(dev);
>                 break;
>         default:
>                 DRM_DEBUG_KMS("unknown dpms mode: %d\n", mode);
> @@ -1235,7 +1235,7 @@ static int mixer_probe(struct platform_device *pdev)
>                 }
>         }
>
> -       mixer_manager.ctx = ctx;
> +       mixer_manager.dev = ctx->dev;
>         platform_set_drvdata(pdev, &mixer_manager);
>         exynos_drm_manager_register(&mixer_manager);
>
> --
> 1.7.9.5
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux