From patchwork Wed Feb 12 11:31:09 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 3637371 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 F18B5BF13A for ; Wed, 12 Feb 2014 11:32:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9C0FC2020A for ; Wed, 12 Feb 2014 11:32:27 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 2EAB1201CD for ; Wed, 12 Feb 2014 11:32:22 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B0A5FAE18; Wed, 12 Feb 2014 03:32:18 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by gabe.freedesktop.org (Postfix) with ESMTP id C1F52FAE10 for ; Wed, 12 Feb 2014 03:32:12 -0800 (PST) Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N0V00HTWS1MH3A0@mailout1.w1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 12 Feb 2014 11:32:10 +0000 (GMT) X-AuditID: cbfec7f5-b7fc96d000004885-ae-52fb5bb83933 Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 9E.8D.18565.8BB5BF25; Wed, 12 Feb 2014 11:32:08 +0000 (GMT) Received: from AMDC1061.digital.local ([106.116.147.88]) by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01 (7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0N0V00CLBS14OO70@eusync2.samsung.com>; Wed, 12 Feb 2014 11:32:08 +0000 (GMT) From: Andrzej Hajda To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH v2 02/21] drm/exynos: delay fbdev initialization until an output is connected Date: Wed, 12 Feb 2014 12:31:09 +0100 Message-id: <1392204688-4591-3-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.8.3.2 In-reply-to: <1392204688-4591-1-git-send-email-a.hajda@samsung.com> References: <1392204688-4591-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrBLMWRmVeSWpSXmKPExsVy+t/xK7o7on8HGXzptLa4te4cq8X8I0Di ytf3bBb9bxayWhz4s4PR4tyrlYwWZ5vesFvMOL+PyWLtkbvsFkuvX2SymDB9LYtF694j7BZ3 N5xldOD1WDNvDaPH7IaLLB6X+3qZPFYu/8LmsWlVJ5vHnWt72Dzudx9n8ujbsorR4/MmuQDO KC6blNSczLLUIn27BK6MpVemsxZ8EqmYOu0cewPjfcEuRk4OCQETiVU/77NC2GISF+6tZ+ti 5OIQEljKKHF232NGCKePSWLmnPksIFVsApoSfzffZAOxRQSUJf5OXAVWxCxwhlni2tsJYAlh gWSJ+zMWMYLYLAKqEkdffwaL8wo4Sfw+OJ8RYp2CxLIva5m7GDk4OAWcJQ5364CEhYBKtk6/ xziBkXcBI8MqRtHU0uSC4qT0XCO94sTc4tK8dL3k/NxNjJDQ/bqDcekxq0OMAhyMSjy8DJ6/ goRYE8uKK3MPMUpwMCuJ8AZF/Q4S4k1JrKxKLcqPLyrNSS0+xMjEwSnVwCjbutijc47Y3azm RbsX596yzNXO+/ouzZy7f9bUhn2aS/5aH+kr/zHDeFJijy6b7MxEITsRZu4umSMTmASqWjU0 zvPlhgTP+NZon1+/6MVRvU1qa1JsNWStnhks8M2+nzX1zczL+V/iJ8mLzJcqvc4ne8HcLL8i pWsd67sXP2pqZ24RCG8xV2Ipzkg01GIuKk4EAIijAIw7AgAA Cc: Mark Rutland , devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Pawel Moll , Ian Campbell , Andrzej Hajda , Kyungmin Park , Rob Herring , Kumar Gala , Grant Likely , Marek Szyprowski 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@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,KHOP_BIG_TO_CC, 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 In case fbdev is initialized before any output is connected, fb resolution defaults to 1024x768. After that any output with bigger resolution is ignored and fbdev is not displayed. The patch postpones fbdev initialization to avoid such situation. Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 12 ------------ drivers/gpu/drm/exynos/exynos_drm_fb.c | 3 +++ drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 4 +++- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index c8869de..0ef46fe 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -109,24 +109,12 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags) /* setup possible_clones. */ exynos_drm_encoder_setup(dev); - /* - * create and configure fb helper and also exynos specific - * fbdev object. - */ - ret = exynos_drm_fbdev_init(dev); - if (ret) { - DRM_ERROR("failed to initialize drm fbdev\n"); - goto err_drm_device; - } - drm_vblank_offdelay = VBLANK_OFF_DELAY; platform_set_drvdata(dev->platformdev, dev); return 0; -err_drm_device: - exynos_drm_device_unregister(dev); err_vblank: drm_vblank_cleanup(dev); err_display_cleanup: diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c index c7c08d0..65a22ca 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fb.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c @@ -20,6 +20,7 @@ #include "exynos_drm_drv.h" #include "exynos_drm_fb.h" +#include "exynos_drm_fbdev.h" #include "exynos_drm_gem.h" #include "exynos_drm_iommu.h" #include "exynos_drm_crtc.h" @@ -300,6 +301,8 @@ static void exynos_drm_output_poll_changed(struct drm_device *dev) if (fb_helper) drm_fb_helper_hotplug_event(fb_helper); + else + exynos_drm_fbdev_init(dev); } static const struct drm_mode_config_funcs exynos_drm_mode_config_funcs = { diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index e7c2f2d..9a5ec83 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -249,8 +249,10 @@ int exynos_drm_fbdev_init(struct drm_device *dev) return 0; fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL); - if (!fbdev) + if (!fbdev) { + DRM_ERROR("failed to allocate fbdev.\n"); return -ENOMEM; + } private->fb_helper = helper = &fbdev->drm_fb_helper; helper->funcs = &exynos_drm_fb_helper_funcs;