From patchwork Wed Feb 2 16:04:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 1845 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 1FE913F03E for ; Wed, 2 Feb 2022 17:04:28 +0100 (CET) Received: by mail-pj1-f71.google.com with SMTP id s9-20020a17090aad8900b001b82d1e4dc8sf1398229pjq.6 for ; Wed, 02 Feb 2022 08:04:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1643817866; cv=pass; d=google.com; s=arc-20160816; b=OlWBQK3NZuvMGpO50b2qP18o21q8DV8tr62WjdTq/30WP7y7Vsa7nkloK/Mf6tePHW fimoOZlocSBGjeOC9zlcOhRJ68AZM78IaZHbdNLbRx0OP2ajNyMmpatXzdro4re2JPWa +zJ+jH35RS+VBk7RwLbmiWhfDV3auQxtMaSOiYbDMmpYMy84dn3Y9dofkxOWar0U8DXL 1PfqMJp2YuIawSkrPmBRGuHoinkNWcDYD/xco1h63h6iVckeYFTfN1QT8IPMEaN1kuHp zub8JEFeAnQQzRBskkaJ4vkbKL2aqpyk4xwJH+jGqOjrfCLA9L9st2IIuMmXi42f6gic 7xig== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:message-id:date:subject:cc:to :from:dkim-signature; bh=2vtqzNoPT2ZJjlaO+rj+8P4WNBN/Eb7rSySqQLHZpRM=; b=Uvl/VVPdzK/4v0d6FE8eSRp6SuKjHDDGCOcqp3ID0il0YaD4kVZc+RkPkqjIAAznvO wQAzSbfIvr07uCHYrUoytmkJCj3X+3ibLxtBcsmcZCh7cUQ2i+4aoJp/3KAEgfCSuM0d Y/Vj7WRmn8VwI6XdUxMnlSbqsR2EV5gHv5zCyhiv6uYsni+LhHv/XQue9bKepCdjfCDI EPce+OXkVyX5Sb1w/XYIARjKwgoUT0OjczzdRd+ImerIYmJFUP5vFRyZMqtr9AQ7CgpN kBB4eBYsdv0Her4XH7hMbtUVPrAxAmuIqMp+Nt+hcmCJ8gRmAaMVNSzENbmmnT5RaapG pC5Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=T6w0s4UD; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=from:to:cc:subject:date:message-id:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=2vtqzNoPT2ZJjlaO+rj+8P4WNBN/Eb7rSySqQLHZpRM=; b=rGV6mTV7wUeoPVthTpSCU5H8OKVMKS4D8eC6wyx544u2TwdowSySU+X2lB3FohNyCl p3Ikf/8l8TWTKAiHbaY5st1UsWj3Z5H/DFYKOvvTbydbufhF1NdaWoTTSEgF+1T22CHt NY7c99k6peZ2L8u2kKr7GkP1Ue52WGpDyaPjk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :x-original-sender:x-original-authentication-results:precedence :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help :list-archive:list-unsubscribe; bh=2vtqzNoPT2ZJjlaO+rj+8P4WNBN/Eb7rSySqQLHZpRM=; b=D6XB1NpUx82nk8Ei3ViZ5BcKlSy1iPbZtYQTetkSQNSkdr/tXqqh+RPq8x07Rvt0lW 2G0U1kBzXbnoPx2D+D0hbk/uXoHqjdQJ7NkH0lkgfVrDuewi+2tgsFanbPbV7/EhVeGa 9vtvg4JMIJNgAKXuShZVvxcATyftpTRWKgt9UPqyFCfoaVZO/t7jAhBDF4OElfrAQInq 18iPsf1PVWfjTmDbkRvFqiKGuHt9E43/E1ftK+wDIsANlUe4FtR2gQyvegkGKWOfY2Ff 3Ku2v91knFz1UzGFauiEkg6ij2qf4fPQoA/kBQAz8QtRtr0gX7CsPmfeJWNHlaiVJ/Og hjRA== X-Gm-Message-State: AOAM531lRTBJZrOI10gcjd+Jc3vQhRXTyFQfWCo0OQBvak0IixuI0q+k bLHrRW1VMvoQqE5+rAdaykH8392z X-Google-Smtp-Source: ABdhPJxw0Z++0ln96hlmgMvty9KwJtqgFWCMhwWvkbYeq2Qzd09351txygc3jQ5O53NixpQMrGm07Q== X-Received: by 2002:a63:214f:: with SMTP id s15mr2029102pgm.442.1643817866751; Wed, 02 Feb 2022 08:04:26 -0800 (PST) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:90b:38cc:: with SMTP id nn12ls3755463pjb.1.canary-gmail; Wed, 02 Feb 2022 08:04:26 -0800 (PST) X-Received: by 2002:a17:902:780d:: with SMTP id p13mr5545815pll.32.1643817865937; Wed, 02 Feb 2022 08:04:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643817865; cv=none; d=google.com; s=arc-20160816; b=HFzgChs7EnQqNtpprvk4znTeJRjS+QNaQmMCs5sNQcPu8oRs4PD/qqH8QZx7fHnVTs 2CgzeJpfWDe6z8n+U0SQi2FgzkBgZ7fCgm00+0mXro5BzbaoDXLmULgC2TXS7DWTs+9P iAie3msvghFXx3EDriaLpEH8LUQNj3WZUzMCMkA4+vYKbtLzK7n9gPTO7b+wP9v4xe1u s3os7b8eQbpp4W5xvU5zsY58BSIqzaZ+P0ZSamnZ470RXDFLyt1+7QAg93iQF5V6avQ9 gdPYwD/wuuVDTKheWnp5W3zFmUCh8KfRHJglaWtuYj+2BQ1hN7B6zTq7FSRC5d4KrAtl XOdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature; bh=Vdt15RbKeINjdAxS0uwzQxpkDqN0hKXbL17QnOjs/Kk=; b=r1YQ7tFU4LaD0xKJIewoZJrFjdSI7yphHKhCd15pODDfm0agksM/qaq7AV6CxpxHmR dVWKZIA17wR4mhY4AAuNs2+pvfqlf2nfBA2q3fLD4uBiK6X0DrqLX+Zh4JkNAwN/Awxu zphjuIfbLbD82oa98yHz0xdyYY3ErxRBYAnV1ukKv/vizFZD3kprm8EPDc5v8Se07UgF c+p9rzRrAY5IlbQqCXswMZxsp4iBn9QEshjiedoJNuS8yuL9+rYaFAth1NbC+q0XMD1H Lbk4p6wi6YkMJI23sr6WmvEN/D6anU8XsAFj6kDvQTV1jbTh1swqIL9p96LjArh2HG0b nOpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=T6w0s4UD; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id l190sor9677272pfd.84.2022.02.02.08.04.25 for (Google Transport Security); Wed, 02 Feb 2022 08:04:25 -0800 (PST) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a63:7103:: with SMTP id m3mr24610194pgc.501.1643817865392; Wed, 02 Feb 2022 08:04:25 -0800 (PST) Received: from localhost.localdomain ([2405:201:c00a:a0a9:748c:1a4e:b1bf:e19f]) by smtp.gmail.com with ESMTPSA id z7sm26489344pfe.49.2022.02.02.08.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 02 Feb 2022 08:04:24 -0800 (PST) From: Jagan Teki To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Laurent Pinchart , Linus Walleij , Andrzej Hajda , Marek Szyprowski Cc: dri-devel@lists.freedesktop.or, linux-amarula@amarulasolutions.com, Jagan Teki Subject: [PATCH v4] drm: of: Lookup if child node has panel or bridge Date: Wed, 2 Feb 2022 21:34:14 +0530 Message-Id: <20220202160414.16493-1-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=T6w0s4UD; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Devices can also be child nodes when we also control that device through the upstream device (ie, MIPI-DCS for a MIPI-DSI device). drm_of_find_panel_or_bridge can lookup panel or bridge for a given device has port and endpoint and it fails to lookup if the device has a child nodes. This patch add support to lookup for a child node of the given parent that isn't either port or ports. Example OF graph representation of DSI host, which has port but not has ports and has child panel node. dsi { compatible = "allwinner,sun6i-a31-mipi-dsi"; #address-cells = <1>; #size-cells = <0>; port { dsi_in_tcon0: endpoint { remote-endpoint = ; }; panel@0 { reg = <0>; }; }; Example OF graph representation of DSI host, which has ports but not has port and has child panel node. dsi { compatible = "samsung,exynos5433-mipi-dsi"; #address-cells = <1>; #size-cells = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; dsi_to_mic: endpoint { remote-endpoint = <&mic_to_dsi>; }; }; }; panel@0 { reg = <0>; }; }; Example OF graph representation of DSI host, which has neither a port nor a ports but has child panel node. dsi0 { compatible = "ste,mcde-dsi"; #address-cells = <1>; #size-cells = <0>; panel@0 { reg = <0>; }; }; Signed-off-by: Jagan Teki Reviewed-by: Linus Walleij --- Changes for v4: - update comments and commit message Changes for v3: - updated based on other usecase where 'ports' used along with child Changes for v2: - drop of helper https://patchwork.kernel.org/project/dri-devel/cover/20211207054747.461029-1-jagan@amarulasolutions.com/ - support 'port' alone OF graph - updated comments - added simple code drivers/gpu/drm/drm_of.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/gpu/drm/drm_of.c b/drivers/gpu/drm/drm_of.c index 59d368ea006b..9d90cd75c457 100644 --- a/drivers/gpu/drm/drm_of.c +++ b/drivers/gpu/drm/drm_of.c @@ -249,6 +249,21 @@ int drm_of_find_panel_or_bridge(const struct device_node *np, if (panel) *panel = NULL; + /** + * Devices can also be child nodes when we also control that device + * through the upstream device (ie, MIPI-DCS for a MIPI-DSI device). + * + * Lookup for a child node of the given parent that isn't either port + * or ports. + */ + for_each_available_child_of_node(np, remote) { + if (of_node_name_eq(remote, "port") || + of_node_name_eq(remote, "ports")) + continue; + + goto of_find_panel_or_bridge; + } + /* * of_graph_get_remote_node() produces a noisy error message if port * node isn't found and the absence of the port is a legit case here, @@ -259,6 +274,8 @@ int drm_of_find_panel_or_bridge(const struct device_node *np, return -ENODEV; remote = of_graph_get_remote_node(np, port, endpoint); + +of_find_panel_or_bridge: if (!remote) return -ENODEV;