From patchwork Mon Mar 17 10:27:17 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrzej Hajda X-Patchwork-Id: 3842751 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 A558FBF560 for ; Mon, 17 Mar 2014 10:28:09 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 2105B20213 for ; Mon, 17 Mar 2014 10:28:08 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id B9A1B2022D for ; Mon, 17 Mar 2014 10:28:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AAC8B4A63C; Mon, 17 Mar 2014 03:28:04 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com [210.118.77.13]) by gabe.freedesktop.org (Postfix) with ESMTP id 377D48AD12 for ; Mon, 17 Mar 2014 03:28:02 -0700 (PDT) Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N2K00EYMT2O9230@mailout3.w1.samsung.com> for dri-devel@lists.freedesktop.org; Mon, 17 Mar 2014 10:28:00 +0000 (GMT) X-AuditID: cbfec7f5-b7fc96d000004885-08-5326ce2f2f67 Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 79.53.18565.F2EC6235; Mon, 17 Mar 2014 10:27:59 +0000 (GMT) Received: from AMDC1061.digital.local ([106.116.147.88]) by eusync3.samsung.com (Oracle Communications Messaging Server 7u4-23.01 (7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0N2K00HBWT2JYZB0@eusync3.samsung.com>; Mon, 17 Mar 2014 10:27:59 +0000 (GMT) From: Andrzej Hajda To: dri-devel@lists.freedesktop.org Subject: [PATCH 1/9] drm/exynos: delay fbdev initialization until an output is connected Date: Mon, 17 Mar 2014 11:27:17 +0100 Message-id: <1395052045-23848-2-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.8.3.2 In-reply-to: <1395052045-23848-1-git-send-email-a.hajda@samsung.com> References: <1395052045-23848-1-git-send-email-a.hajda@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGLMWRmVeSWpSXmKPExsVy+t/xq7r659SCDXYvMrS4te4cq8W8VROZ LeYfAbKufH3PZtH/ZiGrxYE/Oxgtzr1ayWgx6f4EFouzTW/YLWac38dksfbIXXaLpdcvMllM mL6WxaJ17xF2i7sbzjI68HusmbeG0WN2w0UWj8t9vUweM5a8YPRYufwLm8emVZ1sHneu7WHz uN99nMmjb8sqRo/Pm+QCuKK4bFJSczLLUov07RK4Mp7+Ws1a8EewYtuko2wNjHP5uxg5OSQE TCS+/P/DBGGLSVy4t56ti5GLQ0hgKaPE75P/oZw+JoknZ6+yglSxCWhK/N18kw3EFhFQlvg7 cRUjSBGzwEQWiRlrrwMlODiEBaIk/n/gBqlhEVCVOPJtAwuIzSvgLHF2wxJGiG0KEsu+rGUG sTkFXCQOrfnCCtIqBFSz5p//BEbeBYwMqxhFU0uTC4qT0nON9IoTc4tL89L1kvNzNzFCwvrr Dsalx6wOMQpwMCrx8E5QVgsWYk0sK67MPcQowcGsJMJ7+gBQiDclsbIqtSg/vqg0J7X4ECMT B6dUA+Nsry4xRu4oX0e1u4+vfTLzDX6xMlTucoubwSWNVVW5Ty9sXSndkay0/s2ZzN8rZU98 221Yu+3qrne7msPdz39PytVW+vJ2z6r2U/LWG89fWOP758Py/4rHd15++73TKUpTqumglcjE MwWvXMMSGr/b/PrveFrtayWHq4dW+T/Wtwln57rOyvNVYinOSDTUYi4qTgQAD5OaR0kCAAA= 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 , Denis Carikli , Marek Szyprowski X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_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 | 16 ++++------------ drivers/gpu/drm/exynos/exynos_drm_fb.c | 3 +++ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index c8869de..25f45b8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -109,24 +109,15 @@ 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); + /* force connectors detection */ + drm_helper_hpd_irq_event(dev); + return 0; -err_drm_device: - exynos_drm_device_unregister(dev); err_vblank: drm_vblank_cleanup(dev); err_display_cleanup: @@ -571,6 +562,7 @@ out_hdmi: platform_driver_unregister(&fimd_driver); out_fimd: #endif + #ifdef CONFIG_DRM_EXYNOS_DP platform_driver_unregister(&dp_driver); out_dp: 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 = {