From patchwork Mon Oct 28 13:35:30 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Inki Dae X-Patchwork-Id: 3102171 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id C1D8CBF924 for ; Mon, 28 Oct 2013 14:21:40 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 376B92020E for ; Mon, 28 Oct 2013 14:21:38 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 9C2162020A for ; Mon, 28 Oct 2013 14:21:34 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A3A3DE5D08 for ; Mon, 28 Oct 2013 07:21:31 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by gabe.freedesktop.org (Postfix) with ESMTP id C9AD5E6740 for ; Mon, 28 Oct 2013 06:35:34 -0700 (PDT) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MVD00FRESF9CCP0@mailout4.samsung.com> for dri-devel@lists.freedesktop.org; Mon, 28 Oct 2013 22:35:33 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.116]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 32.80.07052.4286E625; Mon, 28 Oct 2013 22:35:33 +0900 (KST) X-AuditID: cbfee691-b7f866d000001b8c-2e-526e682479a9 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id EC.B0.08134.4286E625; Mon, 28 Oct 2013 22:35:32 +0900 (KST) Received: from daeinki-desktop.10.32.193.11 ([10.252.75.62]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MVD008CBSF8WD70@mmp2.samsung.com>; Mon, 28 Oct 2013 22:35:32 +0900 (KST) From: Inki Dae To: airlied@linux.ie, dri-devel@lists.freedesktop.org Subject: drm/exynos: change callback argument of sub driver with device Date: Mon, 28 Oct 2013 22:35:30 +0900 Message-id: <1382967331-6243-1-git-send-email-inki.dae@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsWyRsSkRFc1Iy/IYM1SdovecyeZLK58fc9m Men+BBaLs01v2B1YPLZ/e8Dqcb/7OJNH35ZVjAHMUVw2Kak5mWWpRfp2CVwZH26JFRzYzFSx 95Z1A+OBRqYuRk4OCQETiY+/FzNC2GISF+6tZ+ti5OIQEljKKNF17DJc0fTVs1ghEtMZJW59 /AFV1c0k8fjIa7AqNgFViYkr7rOB2CICphIdk5aygNjMAn4SJ86vBLOFBdwlOp80MoPYLED1 HSd3gq3mFXCW2Pj0BlANB9A2BYk5k2xA5ksI3GeTOLdvNRtEvYDEt8mHoGpkJTYdYIY4TlLi 4IobLBMYBRcwMqxiFE0tSC4oTkovMtUrTswtLs1L10vOz93ECAzD0/+eTdzBeP+A9SHGZKBx E5mlRJPzgWGcVxJvaGxmZGFqYmpsZG5pRpqwkjhv+qOkICGB9MSS1OzU1ILUovii0pzU4kOM TBycUg2Myky/DT96eOrt2/Dl8c15m+Omr0k3nbrs3DTetapyPJe+bdn27obG25unFq547LOO K0J/TaZd3fK1kTfdc5KvKy65u3B+Su91h/W9XkKPdLzdJ99Y7SZ15W1zqhnTaaUpfLoxaVw/ l9doTvUMCDp5+Lc0h7rv2lsHHXuKV7lv3aYc7NPOvFVnghJLcUaioRZzUXEiAM7urkpZAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsVy+t9jQV2VjLwgg6aJxha9504yWVz5+p7N YtL9CSwWZ5vesDuweGz/9oDV4373cSaPvi2rGAOYoxoYbTJSE1NSixRS85LzUzLz0m2VvIPj neNNzQwMdQ0tLcyVFPISc1NtlVx8AnTdMnOA9ikplCXmlAKFAhKLi5X07TBNCA1x07WAaYzQ 9Q0JgusxMkADCWsYMz7cEis4sJmpYu8t6wbGA41MXYycHBICJhLTV89ihbDFJC7cW8/WxcjF ISQwnVHi1scfUE43k8TjI6/BOtgEVCUmrrjPBmKLCJhKdExaygJiMwv4SZw4vxLMFhZwl+h8 0sgMYrMA1Xec3MkIYvMKOEtsfHoDqIYDaJuCxJxJNhMYuRcwMqxiFE0tSC4oTkrPNdIrTswt Ls1L10vOz93ECA7yZ9I7GFc1WBxiFOBgVOLh3bA2N0iINbGsuDL3EKMEB7OSCO/UuLwgId6U xMqq1KL8+KLSnNTiQ4zJQMsnMkuJJucDIzCvJN7Q2MTMyNLI3NDCyNicNGElcd6DrdaBQgLp iSWp2ampBalFMFuYODilGhi1fOf62dzqnnmYr9+w+8r/ukNmk7Z84cjtnCerlGZl9FRm8Z0P YUr2Cb9fd3Z8ElhooN7EeXhfk6Mpw1odtyla8+O62H98dz+RfdZn7onPbQfFlWtN//tvrHXx nbvuccqZrsNbzVV+LC9/zr310IrST+JfzizxEZR5fPd9nPa7C+E80x5yy3ApsRRnJBpqMRcV JwIA/ZnpurYCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: Kyungmin Park X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org Errors-To: dri-devel-bounces+patchwork-dri-devel=patchwork.kernel.org@lists.freedesktop.org X-Spam-Status: No, score=-4.7 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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. Signed-off-by: Inki Dae Signed-off-by: Kyungmin Park --- 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);