From patchwork Wed Jun 21 18:28:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 9802621 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 01D296038C for ; Wed, 21 Jun 2017 18:29:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EDA2022701 for ; Wed, 21 Jun 2017 18:29:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E161C28521; Wed, 21 Jun 2017 18:29:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2900D22701 for ; Wed, 21 Jun 2017 18:29:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D1A5D6E56F; Wed, 21 Jun 2017 18:28:37 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 211C76E567 for ; Wed, 21 Jun 2017 18:28:36 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id k67so644028wrc.1 for ; Wed, 21 Jun 2017 11:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dLM84SmDH83dKFST6eNuOI1hg0DuHq7UlwXoXWIaMvs=; b=MXMnMFD9dgRBeOjA3OQhPJDGrgIFuMiU+LGogqSDuEaCU8Ts+jUT0DmtTRrpLuiQz+ ysypezug5Etesy7upmvBHbqjuRSdGv7Zf5RCuA1rG+wP76IhU9aoqHHvJ68cFvJk/R3R O/D81GI/xtiE0hZqWOPV7FvNQlTGacLtwQ5KM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dLM84SmDH83dKFST6eNuOI1hg0DuHq7UlwXoXWIaMvs=; b=jdS8fSqHRZZH9280wo+jnnObU7yyfuX6qsc1AAebAJ3oTPNAmvhYmm+iHPw19qLmEz cb3PSUEpSDSN+N/IGKJNALNNQm5H9rl3EoegPzbnFavu0P8ot8z6ou5qI6r/FKPFrIg2 Wy/XTd+QJ6jkToO1Ah4eitzqqAwguFUWoIzdnR0Lm0L0jrH9KKVlNnJgrjlEtHkzR4Sy FY8H8+OnP6nQXiOUaidUh/u2+5abdkExvCWWmTPBJrVW+kDs1jQ/cUMc2sfUjWnHX65c t6PqBRzGX5EpnMhiuIeXk4xmMWwMcppkKmy5eJ1HmJz4/6OCESFkcCZfav8WzMIIXpa5 nqwA== X-Gm-Message-State: AKS2vOyHmq+1pBTB0tBWtFikqYY8HG2vPAV60rlVdKpTHAidE42n1Elv 58AmNngVmeLJuVNg2Cs= X-Received: by 10.80.170.209 with SMTP id r17mr26519310edc.113.1498069714797; Wed, 21 Jun 2017 11:28:34 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:5640:0:960b:2678:e223:c1c6]) by smtp.gmail.com with ESMTPSA id f48sm8272021ede.45.2017.06.21.11.28.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Jun 2017 11:28:33 -0700 (PDT) From: Daniel Vetter To: DRI Development Date: Wed, 21 Jun 2017 20:28:14 +0200 Message-Id: <20170621182815.14602-12-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170621182815.14602-1-daniel.vetter@ffwll.ch> References: <20170621182815.14602-1-daniel.vetter@ffwll.ch> Cc: Joonyoung Shim , Daniel Vetter , Intel Graphics Development , Seung-Woo Kim , Inki Dae , Kyungmin Park , Thierry Reding Subject: [Intel-gfx] [PATCH 11/12] drm/exynos: Remove custom FB helper deferred setup X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Virus-Scanned: ClamAV using ClamSMTP From: Thierry Reding The FB helper core now supports deferred setup, so the driver's custom implementation can be removed. v2: Drop NULL check, drm_fb_helper_hotplug_event handles that already. Cc: Inki Dae Cc: Joonyoung Shim Cc: Seung-Woo Kim Cc: Kyungmin Park Signed-off-by: Thierry Reding (v1) Signed-off-by: Daniel Vetter --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 6 ++++-- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 26 +------------------------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 35a8dfc93836..cab9e12d7846 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -395,8 +395,9 @@ static int exynos_drm_bind(struct device *dev) /* init kms poll for handling hpd */ drm_kms_helper_poll_init(drm); - /* force connectors detection */ - drm_helper_hpd_irq_event(drm); + ret = exynos_drm_fbdev_init(drm); + if (ret) + goto err_cleanup_poll; /* register the DRM device */ ret = drm_dev_register(drm, 0); @@ -407,6 +408,7 @@ static int exynos_drm_bind(struct device *dev) err_cleanup_fbdev: exynos_drm_fbdev_fini(drm); +err_cleanup_poll: drm_kms_helper_poll_fini(drm); exynos_drm_device_subdrv_remove(drm); err_unbind_all: diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c index 641531243e04..c3a068409b48 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c @@ -183,24 +183,6 @@ static const struct drm_fb_helper_funcs exynos_drm_fb_helper_funcs = { .fb_probe = exynos_drm_fbdev_create, }; -static bool exynos_drm_fbdev_is_anything_connected(struct drm_device *dev) -{ - struct drm_connector *connector; - bool ret = false; - - mutex_lock(&dev->mode_config.mutex); - list_for_each_entry(connector, &dev->mode_config.connector_list, head) { - if (connector->status != connector_status_connected) - continue; - - ret = true; - break; - } - mutex_unlock(&dev->mode_config.mutex); - - return ret; -} - int exynos_drm_fbdev_init(struct drm_device *dev) { struct exynos_drm_fbdev *fbdev; @@ -211,9 +193,6 @@ int exynos_drm_fbdev_init(struct drm_device *dev) if (!dev->mode_config.num_crtc || !dev->mode_config.num_connector) return 0; - if (!exynos_drm_fbdev_is_anything_connected(dev)) - return 0; - fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL); if (!fbdev) return -ENOMEM; @@ -304,8 +283,5 @@ void exynos_drm_output_poll_changed(struct drm_device *dev) struct exynos_drm_private *private = dev->dev_private; struct drm_fb_helper *fb_helper = private->fb_helper; - if (fb_helper) - drm_fb_helper_hotplug_event(fb_helper); - else - exynos_drm_fbdev_init(dev); + drm_fb_helper_hotplug_event(fb_helper); }