drm/exynos: change callback argument of sub driver with device
Sean Paul
seanpaul at chromium.org
Mon Oct 28 15:53:54 CET 2013
On Mon, Oct 28, 2013 at 9:35 AM, Inki Dae <inki.dae at samsung.com> 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 at samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> ---
> 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list