From patchwork Wed Oct 5 15:13:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2419 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-io1-f70.google.com (mail-io1-f70.google.com [209.85.166.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 241FA3F330 for ; Wed, 5 Oct 2022 17:13:25 +0200 (CEST) Received: by mail-io1-f70.google.com with SMTP id x22-20020a6bda16000000b006a123cb02besf11190914iob.18 for ; Wed, 05 Oct 2022 08:13:25 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1664982804; cv=pass; d=google.com; s=arc-20160816; b=Ba/CNCroWQedmCisgAmt6Wv6PhKwUJwb/8QN5JxXM46FETM3tXvrdSh+EF0XEchjZu eZ0GPcjifqE6V0gqBjYN60TCOpKKsvTUbbXOj9/26q0QjuR++nq+rj6/oCFojAysLoBi QGAgAk1Oo54Tmfi45pzIVSxwzV8jA6TcJcYUDnq761hyspU6OZWTzNK2iKUgVxi4qMaB XzSVf5jCg5b0C0KOVG1INFkDi4RxKk0Jzy1pLalD27kZGN8NmLNbRMlOWowTLiSEQxyQ 9pUMxyqWRBNPg7xOzhWHquEmILrGbMRQpvWydkV6Bo4C2Zg7RCxgHgM3Acu17mWrIUyB yjcA== 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:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=ysvY26Zleg1C7fxEFv5QLr3pzGoDAWcD9n8MKg/NkVY=; b=A4RSENwXw6fnEM2GujjB0PlAzsmpgZ3W5iuZ6ZckpCcOfD8+611033/LDkspJq4NwQ oszrQxA/kr8DnLr0y2mGslXptu6XuDckk1m812QOmaVvg+OUiKdH2nTMiaaPt5ncuHY2 PEBNXYBXmwHBUTkDinfDVFpblpLpsCnhqQokpo+asy8U5o4hCi2UxO+nFkZTW46tDin3 kokyJW3QAN9YDGGP+z0azgcG4xLx12sU7lyAkDUWlldm3Yicq0oZyRi87XZDFaYHOSF2 +fBKTGogwHzZbEYEYIbGCIUZXMe9T6wiXMq6CSm5ZKCFPW4qnRKL0yd19KGwj+Q2dq5+ Z4lA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=CycY5tvq; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date; bh=ysvY26Zleg1C7fxEFv5QLr3pzGoDAWcD9n8MKg/NkVY=; b=j2cYMEs5vLxGjnVPYJM4u6P5ncuuGkzbsarzj6ns7xwT+aUxCkPEbkWK7xGLLQSWee BcdX0arqiZTz12aSqEkJS+xkeV3pcvxZIW6DvwnKV3GYfIufyCoyJFGNMCopli/U8atT atpa44ZbcVKYtIpmx/4X1vJjB1FDQJuTDyJfk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date; bh=ysvY26Zleg1C7fxEFv5QLr3pzGoDAWcD9n8MKg/NkVY=; b=kCFLt9IOITrFJNLh/zSdksvhj3hvm5Fg6aDY1TmfYrXsnbY2pUwXzh/YesK1gyH+XY pIEvzAnKE6yd1LSNpGUubjlHkJCa0b0kBAb0C6u3Yk/lmnhltxY8omaMFLJBm35nWmCc r5UuON3IZWfEqyyry9FfDX5FHd99FN/Fz2Ye+4F5HD0E7MeqgIrCsUR3OTm7/otTgna4 SeZAqw/IuUqdU1RFcAoB3HHfA+5oVEucbnLzvSZpcQSBTBDscDgMRUUAXJn4XDpi3g9F +6Ngxh0U3KZgJV1w2qZcPKdYacwVCLIOgYCl+PRWLXyMLXDPW96M731ESmmDZ5qalG2B 2zxw== X-Gm-Message-State: ACrzQf23tjKy44fZ7PORAgpd8HwJp7Phg2+6KfeIYa+klhZ6WpdfqqiU LZtRcHNVvHJPoj12swauWJQK0t93 X-Google-Smtp-Source: AMsMyM5BAO7JvXXpDtMX/mYSn8SFlhV2D3Xgs75cCgWSZnIlh5rrahNr6/vZL7huP9IEeKj+HLKkGw== X-Received: by 2002:a05:6638:1407:b0:35a:4d1c:10ef with SMTP id k7-20020a056638140700b0035a4d1c10efmr49230jad.119.1664982804141; Wed, 05 Oct 2022 08:13:24 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a02:862f:0:b0:35e:234b:8f1d with SMTP id e44-20020a02862f000000b0035e234b8f1dls3819257jai.9.-pod-prod-gmail; Wed, 05 Oct 2022 08:13:23 -0700 (PDT) X-Received: by 2002:a05:6638:4984:b0:362:f8f7:9537 with SMTP id cv4-20020a056638498400b00362f8f79537mr61453jab.200.1664982803596; Wed, 05 Oct 2022 08:13:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664982803; cv=none; d=google.com; s=arc-20160816; b=vUywklF13EmBSkoAziOTnWFKJoQyl4H4fxlTKefRn3ImRXAF/EP89FCW09rPFjGiR/ 9lmq5B8Vh9Bf6R0gV5YsPaPrX8dl0nR2MMiRtXCtbZuRiEwrNS1n5AwDZEnICptKRHqD MjEfgR2EpWksopksra3qwuzqainne7OSR70spvFE4VjuMLM+qIHUqlk9Obu9xn5DzCnF wBS4QU54IWT476ZBRgUHEs539yxa//CI1TW+0iPo9YTU/7qfYSVL6lTO/FwT0HT6hzpP BUQDePuumHAZj/o/rAVSATW/mlw0x//iX6oasmeMtIevdX+pImWn9GlYvG4vFjeOcEOi rQgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=oZKBZ/Poq4qIDgukJ06pdFkyQHbBE5/VJ3pRiELlmgY=; b=iJGf0NNEoA319gIy0jPnqRxfTanjXUMhtjwAysJXWxGVPI1g7seNUaJNU+7O2lwVxl TidwHzb3plmtk1rYNa+a/yxM6rucUpfjiwHn8sjJsTDZdv4psbtHHIH5oVL1A79QzUrx t3zQejr+w+poqyjXChF6L6c++uh43XfpAUCRocNcjRV3iukfVJsXDOiKT4BTKDQAFHK3 ImGFlC0kA9DuspnPE7UBOlYBs2d2cfKCSFCTWqt/A9kkd4yV0OHC++xiFZj/58YjD6zG EZZoFgT51s/cDw275UTOUXkDNuCzncMCYqwysUcUPfotsz/1o1fEtWV7oaMUav4/wXKP QLlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=CycY5tvq; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=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 r21-20020a02aa15000000b003501edb77d8sor4419022jam.123.2022.10.05.08.13.23 for (Google Transport Security); Wed, 05 Oct 2022 08:13:23 -0700 (PDT) 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:a02:9f88:0:b0:362:74f6:6215 with SMTP id a8-20020a029f88000000b0036274f66215mr67503jam.2.1664982803307; Wed, 05 Oct 2022 08:13:23 -0700 (PDT) Received: from j-ThinkPad-E14-Gen-2.stthomas.edu ([140.209.96.21]) by smtp.gmail.com with ESMTPSA id w15-20020a056602034f00b0068a235db030sm7089276iou.27.2022.10.05.08.13.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Oct 2022 08:13:22 -0700 (PDT) From: Jagan Teki To: Andrzej Hajda , Inki Dae , Marek Szyprowski , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Frieder Schrempf , Fancy Fang , Tim Harvey , Michael Nazzareno Trimarchi , Adam Ford , Neil Armstrong , Robert Foss , Laurent Pinchart , Tommaso Merciai , Marek Vasut Cc: Matteo Lisi , dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula , Jagan Teki Subject: [PATCH v7 02/10] drm: bridge: samsung-dsim: Lookup OF-graph or Child node devices Date: Wed, 5 Oct 2022 20:43:01 +0530 Message-Id: <20221005151309.7278-3-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221005151309.7278-1-jagan@amarulasolutions.com> References: <20221005151309.7278-1-jagan@amarulasolutions.com> 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=CycY5tvq; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=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: , The child devices in MIPI DSI can be binding with OF-graph and also via child nodes. The OF-graph interface represents the child devices via remote and associated endpoint numbers like dsi { compatible = "fsl,imx8mm-mipi-dsim"; ports { port@0 { reg = <0>; dsi_in_lcdif: endpoint@0 { reg = <0>; remote-endpoint = <&lcdif_out_dsi>; }; }; port@1 { reg = <1>; dsi_out_bridge: endpoint { remote-endpoint = <&bridge_in_dsi>; }; }; }; The child node interface represents the child devices via conventional child nodes on given DSI parent like dsi { compatible = "samsung,exynos5433-mipi-dsi"; ports { port@0 { reg = <0>; dsi_to_mic: endpoint { remote-endpoint = <&mic_to_dsi>; }; }; }; panel@0 { reg = <0>; }; }; As Samsung DSIM bridge is common DSI IP across all Exynos DSI and NXP i.MX8M host controllers, this patch adds support to lookup the child devices whether its bindings on the associated host represent OF-graph or child node interfaces. v7, v6, v5, v4, v3: * none v2: * new patch Signed-off-by: Jagan Teki --- drivers/gpu/drm/bridge/samsung-dsim.c | 38 +++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c index 07563d00a420..c34c6abac815 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1356,18 +1356,52 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host *host, struct samsung_dsim *dsi = host_to_dsi(host); const struct samsung_dsim_plat_data *pdata = dsi->plat_data; struct device *dev = dsi->dev; + struct device_node *np = dev->of_node; + struct device_node *remote; struct drm_panel *panel; int ret; - panel = of_drm_find_panel(device->dev.of_node); + /** + * 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, + * so at first we silently check whether graph presents in the + * device-tree node. + */ + if (!of_graph_is_present(np)) + return -ENODEV; + + remote = of_graph_get_remote_node(np, 1, 0); + +of_find_panel_or_bridge: + if (!remote) + return -ENODEV; + + panel = of_drm_find_panel(remote); if (!IS_ERR(panel)) { dsi->out_bridge = devm_drm_panel_bridge_add(dev, panel); } else { - dsi->out_bridge = of_drm_find_bridge(device->dev.of_node); + dsi->out_bridge = of_drm_find_bridge(remote); if (!dsi->out_bridge) dsi->out_bridge = ERR_PTR(-EINVAL); } + of_node_put(remote); + if (IS_ERR(dsi->out_bridge)) { ret = PTR_ERR(dsi->out_bridge); DRM_DEV_ERROR(dev, "failed to find the bridge: %d\n", ret);