From patchwork Fri Jan 29 17:07:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Suchanek X-Patchwork-Id: 8165071 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 3DA57BEEE5 for ; Fri, 29 Jan 2016 17:09:40 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 67C87201E4 for ; Fri, 29 Jan 2016 17:09:39 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 95C3B20328 for ; Fri, 29 Jan 2016 17:09:38 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aPCWx-0008F1-TC; Fri, 29 Jan 2016 17:08:19 +0000 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aPCWt-00087R-Jb for linux-arm-kernel@lists.infradead.org; Fri, 29 Jan 2016 17:08:16 +0000 Received: by mail-wm0-x22d.google.com with SMTP id r129so77355381wmr.0 for ; Fri, 29 Jan 2016 09:07:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=atAiCiAaVLNH+syQkSQlQqRl+WCRmOVWcG5qxutxN4w=; b=fSHW05gdJIjsdr/OCJGGc0NNDP+k+EqTVjuWc6S9diXmWHpW7euWrRcRVDdAo5JUxj W8xqE/GE7lIPWCkxI4Caz51JffCRDNuUa1P2NB6xufbHmesLhd5pHAxzVVfY6ZKBh6qQ S5rZuclYJymzIT8pEl3ApT6ZnDQmiSb+EPGSJg0+33PuQz4LKsBBvSS73SkVWEsTGecj bzWjv4MZpH3ryIYn9rWibV94ItvGsR76P0NxP5Tp9btOE8jQyxUBHaUxZc6K68EKSJO0 1+rnHrjndVGFzG01b9DYxp4+xbXLUkPE2beybCYI4RK3X3Gyekh4Evtp2Pz4txDTpDbB PQCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-type; bh=atAiCiAaVLNH+syQkSQlQqRl+WCRmOVWcG5qxutxN4w=; b=YzsnhejQR/VvFTiNSL7VYeeCtFYf5h5Lpv5gaWaJV+kBl766F+sOTxQgD8VGyzXTx6 8AM7Zj1LxjQ6Irtt2z0HtOGxuRNaYaEYh57hIogFd+BjoFg7HrMycG3DbfgYnoa2wtzT +pcwaOGrrfup25IC84nJFgNBGyBVhEmh6heUveEJBi+dbU9lzf3kIhT+S8R2o80xRARD ySehGwu81vd4q5scZjaLvohUE0WkOjiQRRusWc7OPuSUBVpGSu1IL+owKm8189rXKP1c qQDGciu8yv+pIR1IhJllDHPQjGFnU3MY6Yg46Iori3G49xUtgAWxSyCkzmDVSgjsISJR B6ig== X-Gm-Message-State: AG10YOTMadbrZJnwOJbqwrA9h2Lw2ZWo/uoiseLsH95LbqPEgJ2mk3m7WRRcT6upvhdVDvRawmW+pisBhUbykg== X-Received: by 10.194.240.66 with SMTP id vy2mr9984315wjc.28.1454087273490; Fri, 29 Jan 2016 09:07:53 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.151.167 with HTTP; Fri, 29 Jan 2016 09:07:14 -0800 (PST) From: Michal Suchanek Date: Fri, 29 Jan 2016 18:07:14 +0100 Message-ID: Subject: Exynos Snow board display regression To: Jingoo Han , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , David Airlie , Kukjin Kim , Krzysztof Kozlowski , dri-devel@lists.freedesktop.org, "linux-arm-kernel@lists.infradead.org" , linux-samsung-soc , Linux Kernel Mailing List X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160129_090815_989290_B75C6507 X-CRM114-Status: GOOD ( 13.78 ) X-Spam-Score: -2.7 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, 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 Hello, after commit a9fa852886fd5a7ccec3b7e9eff75f85072f009c display no longer works on the Snow board. The built-in panel is no longer probed. The commit *supposedly* provides for backwards compatibility and at first glance only new options for probing the panel are added. However, reverting the commit on top of 4.5-rc1 gives working display again so there is probably some subtle non-obvious catch in the logic. Any ideas what might go wrong here? Thanks Michal Author: Inki Dae Date: Thu Nov 26 21:34:18 2015 +0900 drm/exynos: dp: add of_graph dt binding support for panel This patch adds of_graph dt binding support for panel device and also keeps the backward compatibility. i.e., The dts file for Exynos5800 based peach pi board has a panel property so we need to keep the backward compatibility. Changelog v3: - bind only one of two nodes outbound - panel or bridge. Changelog v2: - return -EINVAL if getting a port node failed. Signed-off-by: Inki Dae Reviewed-by: Javier Martinez Canillas Tested-by: Michal Suchanek diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 94f02a0..60260a0 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -1392,7 +1392,7 @@ static const struct component_ops exynos_dp_ops = { static int exynos_dp_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct device_node *panel_node, *bridge_node, *endpoint; + struct device_node *panel_node = NULL, *bridge_node, *endpoint = NULL; struct exynos_dp_device *dp; int ret; @@ -1403,14 +1403,32 @@ static int exynos_dp_probe(struct platform_device *pdev) platform_set_drvdata(pdev, dp); + /* This is for the backward compatibility. */ panel_node = of_parse_phandle(dev->of_node, "panel", 0); if (panel_node) { dp->panel = of_drm_find_panel(panel_node); of_node_put(panel_node); if (!dp->panel) return -EPROBE_DEFER; + } else { + endpoint = of_graph_get_next_endpoint(dev->of_node, NULL); + if (endpoint) { + panel_node = of_graph_get_remote_port_parent(endpoint); + if (panel_node) { + dp->panel = of_drm_find_panel(panel_node); + of_node_put(panel_node); + if (!dp->panel) + return -EPROBE_DEFER; + } else { + DRM_ERROR("no port node for panel device.\n"); + return -EINVAL; + } + } } + if (endpoint) + goto out; + endpoint = of_graph_get_next_endpoint(dev->of_node, NULL); if (endpoint) { bridge_node = of_graph_get_remote_port_parent(endpoint); @@ -1423,6 +1441,7 @@ static int exynos_dp_probe(struct platform_device *pdev) return -EPROBE_DEFER; } +out: pm_runtime_enable(dev); ret = component_add(&pdev->dev, &exynos_dp_ops);