Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp680921ybi; Fri, 2 Aug 2019 02:31:14 -0700 (PDT) X-Google-Smtp-Source: APXvYqyy2x+yPAlZ+eoittFRo4CZZj4GjXES/Os0KMEE8UuLgQTdkWxoXm/AL/wd9wMpc7D/jc1F X-Received: by 2002:a63:7b18:: with SMTP id w24mr122935273pgc.328.1564738274709; Fri, 02 Aug 2019 02:31:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564738274; cv=none; d=google.com; s=arc-20160816; b=uIZPkdWPvvKZ/rz724AjCP21X5LZozj9K1/+2DZpVU3C2OynVtL4HZlBojsaEi73BD /asYo732x9wGwO5UhnbFKcTvIWK5PqmPa/o7YaKuXTXtj24u8NroCl7WEQHHi64DygK9 d7tBQ62dqwFegm2Ffn1QGN2tGeiyA9Qk9KU7gr/iWW7h2dEvRgRvCg5H71RYOkXV7v9i iup6iIaFJMHQWbS98+20iNmbIPT2nnrWLrsChL0PP+hCasQWq0+wsRFW7X5nYKTR1DqB xRhBeSYtbHOx9nS2xF+4ddEu58nSqMo1t+xITgql2Yiu1r1l0qa7RXngmvGeKA5I5Zuk fXBQ== 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=6EIFsi9Qw1n8pJyEJbnMKxc7ntpuQXFI+xsTPm9osHY=; b=Uw9NoBqtDFSOZ9L+2qAh7zf3jYOZvxs2D+YZnbFKT8Fuyo4el2aaPq8jLtEUcOcPlM kH5zLobRAH1PgpLgCY44rSDW7LOQfNyDEXx2Y0e8RI2W/S9Gc8mMZVpwsSN3XywLvYMA 7XinOQXv4F4rspqY0Pyk9t2CZVyQvkLmjcbZ+m6eHnPNrw3SgIgsMqxF0+gFoOEuKFAf 0gRbsL9uDaHFvEsT7Hr7WjIjEe+AIg4hnJ7kmxuHsr4pLVv2klEgK7bq6ZMJ+XRKd3d9 imBgQ8x13LfrqTB4rXegTcxEg3vebOVskkHikUdXNKJvAdQdu+Z2rP1YFRgPQYM0vKbq sZMQ== 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 x9si27946172plv.182.2019.08.02.02.30.59; Fri, 02 Aug 2019 02:31:14 -0700 (PDT) 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 S2389894AbfHBHfG (ORCPT + 99 others); Fri, 2 Aug 2019 03:35:06 -0400 Received: from relmlor2.renesas.com ([210.160.252.172]:12517 "EHLO relmlie6.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389759AbfHBHfF (ORCPT ); Fri, 2 Aug 2019 03:35:05 -0400 X-IronPort-AV: E=Sophos;i="5.64,337,1559487600"; d="scan'208";a="22931978" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 02 Aug 2019 16:35:03 +0900 Received: from fabrizio-dev.ree.adwin.renesas.com (unknown [10.226.36.196]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 308E94007528; Fri, 2 Aug 2019 16:34:59 +0900 (JST) From: Fabrizio Castro To: Laurent Pinchart , Kieran Bingham , Jacopo Mondi , David Airlie , Daniel Vetter Cc: Fabrizio Castro , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Simon Horman , Geert Uytterhoeven , Chris Paterson , Biju Das Subject: [PATCH/RFC 06/12] drm: rcar-du: lvds: Do not look at ports for identifying bridges Date: Fri, 2 Aug 2019 08:34:03 +0100 Message-Id: <1564731249-22671-7-git-send-email-fabrizio.castro@bp.renesas.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1564731249-22671-1-git-send-email-fabrizio.castro@bp.renesas.com> References: <1564731249-22671-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 We may be connected to a dual LVDS display, therefore checking if node != remote_input for identifying bridges is not going to work anymore. We could try to match the ports on the remote end to the LVDS encoders, however the companion LVDS encoder instance doesn't hold a reference to the primary LVDS encoder instance. We know we could be connected to either a bridge, or a panel, therefore look through the registered bridges and panels, until we have a match. Signed-off-by: Fabrizio Castro --- drivers/gpu/drm/rcar-du/rcar_lvds.c | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/rcar-du/rcar_lvds.c b/drivers/gpu/drm/rcar-du/rcar_lvds.c index c306fab..2d54ae5 100644 --- a/drivers/gpu/drm/rcar-du/rcar_lvds.c +++ b/drivers/gpu/drm/rcar-du/rcar_lvds.c @@ -711,10 +711,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); @@ -742,27 +739,8 @@ 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; - } - + lvds->next_bridge = of_drm_find_bridge(remote); + if (lvds->next_bridge) { if (lvds->info->quirks & RCAR_LVDS_QUIRK_DUAL_LINK) lvds->dual_link = lvds->next_bridge->timings ? lvds->next_bridge->timings->dual_link @@ -770,7 +748,7 @@ static int rcar_lvds_parse_dt(struct rcar_lvds *lvds) } else { lvds->panel = of_drm_find_panel(remote); if (IS_ERR(lvds->panel)) { - ret = PTR_ERR(lvds->panel); + ret = -EPROBE_DEFER; goto done; } } @@ -784,7 +762,6 @@ static int rcar_lvds_parse_dt(struct rcar_lvds *lvds) done: of_node_put(local_output); - of_node_put(remote_input); of_node_put(remote); switch (ret) { -- 2.7.4