From patchwork Wed Jan 22 14:35:28 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 3523471 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 440799F2D6 for ; Wed, 22 Jan 2014 14:36:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 316DE20173 for ; Wed, 22 Jan 2014 14:36:32 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 2FB9B20170 for ; Wed, 22 Jan 2014 14:36:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 701BDFBA63; Wed, 22 Jan 2014 06:36:27 -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 88F1BFBA61 for ; Wed, 22 Jan 2014 06:36:19 -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 <0MZT0057U4KHM170@mailout1.w1.samsung.com> for dri-devel@lists.freedesktop.org; Wed, 22 Jan 2014 14:36:17 +0000 (GMT) X-AuditID: cbfec7f5-b7fc96d000004885-2b-52dfd76076ab Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 33.A2.18565.067DFD25; Wed, 22 Jan 2014 14:36:16 +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 <0MZT00JHK4K8L3B0@eusync2.samsung.com>; Wed, 22 Jan 2014 14:36:16 +0000 (GMT) From: Andrzej Hajda To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 2/9] drm/exynos: delay fbdev initialization until an output is connected Date: Wed, 22 Jan 2014 15:35:28 +0100 Message-id: <1390401336-22915-3-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.8.3.2 In-reply-to: <1390401336-22915-1-git-send-email-a.hajda@samsung.com> References: <1390401336-22915-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHLMWRmVeSWpSXmKPExsVy+t/xK7oJ1+8HGWzcKWNxa905Vov5R4DE la/v2Sz63yxktTjwZwejxblXKxktJt2fwGJxtukNu8WM8/uYLJZev8hkMWH6WhaL1r1H2C3W z3jNYvFz1zwWBz6PNfPWMHpc7utl8tg56y67x8rlX9g8Nq3qZPO4c20Pm8f97uNMHn1bVjF6 fN4kF8AZxWWTkpqTWZZapG+XwJXRtqSRqWC/SMXEjmbWBsYtgl2MnBwSAiYSHb83s0PYYhIX 7q1n62Lk4hASWMoo8ebMF2YIp49JYuOdSWwgVWwCmhJ/N98Es0UElCX+TlzFCFLELPCOWWLr qrNgCWGBOIm1Nz+xgtgsAqoS57fvYASxeQWcJR41bGeBWKcgsezLWmYQm1PARaJt/S6wGiGg muVrl7NPYORdwMiwilE0tTS5oDgpPddIrzgxt7g0L10vOT93EyMkjL/uYFx6zOoQowAHoxIP b8Cue0FCrIllxZW5hxglOJiVRHhTL98PEuJNSaysSi3Kjy8qzUktPsTIxMEp1cBols0s692/ 3r5Nj6Gs/MXW4xISwbJKV+e7i3sXfkmb/lnccN7higXrT/lw8FxWDzPpP15tcy5uYm9d6g7L B0un+EnWHV1WE/7rTbnj4rMGF6e/No1l8Hc+bO7RPVn6YHfx3V3ZG/tSb2T93uur9d5wx93A D5oeDvf+a3zvlZj479zne/N2RGUqsRRnJBpqMRcVJwIAQpZe6kECAAA= 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 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=-4.8 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 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 cbb53a3..4dc9f0d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -107,22 +107,10 @@ 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; 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;