Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp935376ybl; Fri, 6 Dec 2019 08:34:02 -0800 (PST) X-Google-Smtp-Source: APXvYqzDqVKDK9WT2nAT38kXctWnS8lzA2dWkK9p42pNwKKMK1ozi9aGh9en/k9QnSfim5KEMxRy X-Received: by 2002:a9d:eea:: with SMTP id 97mr10040073otj.177.1575650042214; Fri, 06 Dec 2019 08:34:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575650042; cv=none; d=google.com; s=arc-20160816; b=Js7KKD+9FfU4ytjniLxbEsaAIhiAFdxwhgVD55UzwSQ4lbEAO+eJ8MN2+JuY0zDMXZ MjcU6xmfhUHumj5ZIYZ7JsF0Sj3ipetZOctJOabaCpbJ/7LgFHA442k4wv0AqoU3Eyp2 KiwyMx4lLpsthbklGDXsZ0B6valFI9GaIwzSp5XnQIeXd7xy1vuxx9QFnNg+SSV0bWKb jS0JxJosexKU1CDkftBBOZuA/BNZv/zljaHIN8qH2S9fs+HRQEPCCV0nYS4Nlim4Xjho cKUsUmBocXwKfTe3UJhamVHZb3g1mU0CCisWv9H5jV988FTSRCssiNk7X05bwRBg/qCg GkwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=2vpWJiC8kV9K33ntgnR02q1QISXRmrjrko6e5ymyWl0=; b=Ca4WEHpcWYFS6kfHTkh5PwM2qRYg+kMdVcac6DruK0f/2tVHes8PGrnKWojJVjsD0L AnJPIGzxfmULI6kwJhnI997ji9k/KBDUolvMuQQKITYA7YE0BRM2d8KraL/VHs+oYxjN MgNnG3qBaYH24wZC3D5W39DxMGzDUxqi9PE603M06LZI0c23KOtusy3aPcW3fCV92jqq Mmy0fXBWKOn3oDfy3UXr0rIL6oW7+fvXezgcHImCEc9ReWJLWGxJjP1u9tfFsKjZiGYF OWLZPTLqI2t1hNJ2e2bieRujc8rlCnQdFPAnuWsGR/aO00bYkyYzW2LJL5avuvzbRWKG TIpg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x24si7805744otk.188.2019.12.06.08.33.50; Fri, 06 Dec 2019 08:34:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726480AbfLFQdQ (ORCPT + 99 others); Fri, 6 Dec 2019 11:33:16 -0500 Received: from relmlor1.renesas.com ([210.160.252.171]:55948 "EHLO relmlie5.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726258AbfLFQdP (ORCPT ); Fri, 6 Dec 2019 11:33:15 -0500 X-IronPort-AV: E=Sophos;i="5.69,285,1571670000"; d="scan'208";a="33693114" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 07 Dec 2019 01:33:14 +0900 Received: from fabrizio-dev.ree.adwin.renesas.com (unknown [10.226.36.196]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 74A80400D4D7; Sat, 7 Dec 2019 01:33:09 +0900 (JST) From: Fabrizio Castro To: Laurent Pinchart , Geert Uytterhoeven , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland , Thierry Reding , Maarten Lankhorst , Maxime Ripard , Sean Paul , Andrzej Hajda Cc: Fabrizio Castro , Sam Ravnborg , Simon Horman , Magnus Damm , Kieran Bingham , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Chris Paterson , Biju Das , Laurent Pinchart , Jacopo Mondi , ebiharaml@si-linux.co.jp Subject: [PATCH v4 2/7] drm: rcar-du: lvds: Improve identification of panels Date: Fri, 6 Dec 2019 16:32:49 +0000 Message-Id: <1575649974-31472-3-git-send-email-fabrizio.castro@bp.renesas.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1575649974-31472-1-git-send-email-fabrizio.castro@bp.renesas.com> References: <1575649974-31472-1-git-send-email-fabrizio.castro@bp.renesas.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dual-LVDS panels are mistakenly identified as bridges, this commit replaces the current logic with a call to drm_of_find_panel_or_bridge to sort that out. Signed-off-by: Fabrizio Castro --- v3->v4: * New patch extracted from patch: "drm: rcar-du: lvds: Add dual-LVDS panels support" --- drivers/gpu/drm/rcar-du/rcar_lvds.c | 45 +++++++++---------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c index 8c6c172..3cb0a83 100644 --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -705,10 +706,7 @@ static int rcar_lvds_parse_dt_companion(struct rcar_lvds *lvds) static int rcar_lvds_parse_dt(struct rcar_lvds *lvds) { struct device_node *local_output = NULL; - struct device_node *remote_input = NULL; struct device_node *remote = NULL; - struct device_node *node; - bool is_bridge = false; int ret = 0; local_output = of_graph_get_endpoint_by_regs(lvds->dev->of_node, 1, 0); @@ -736,45 +734,22 @@ static int rcar_lvds_parse_dt(struct rcar_lvds *lvds) goto done; } - remote_input = of_graph_get_remote_endpoint(local_output); - - for_each_endpoint_of_node(remote, node) { - if (node != remote_input) { - /* - * We've found one endpoint other than the input, this - * must be a bridge. - */ - is_bridge = true; - of_node_put(node); - break; - } - } - - if (is_bridge) { - lvds->next_bridge = of_drm_find_bridge(remote); - if (!lvds->next_bridge) { - ret = -EPROBE_DEFER; - goto done; - } + ret = drm_of_find_panel_or_bridge(lvds->dev->of_node, 1, 0, + &lvds->panel, &lvds->next_bridge); + if (ret) + goto done; - if (lvds->info->quirks & RCAR_LVDS_QUIRK_DUAL_LINK) - lvds->dual_link = lvds->next_bridge->timings - ? lvds->next_bridge->timings->dual_link - : false; - } else { - lvds->panel = of_drm_find_panel(remote); - if (IS_ERR(lvds->panel)) { - ret = PTR_ERR(lvds->panel); - goto done; - } - } + if ((lvds->info->quirks & RCAR_LVDS_QUIRK_DUAL_LINK) && + lvds->next_bridge) + lvds->dual_link = lvds->next_bridge->timings + ? lvds->next_bridge->timings->dual_link + : false; if (lvds->dual_link) ret = rcar_lvds_parse_dt_companion(lvds); done: of_node_put(local_output); - of_node_put(remote_input); of_node_put(remote); /* -- 2.7.4