From patchwork Fri Sep 16 18:17:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2363 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 1F48A3F36F for ; Fri, 16 Sep 2022 20:18:44 +0200 (CEST) Received: by mail-pg1-f197.google.com with SMTP id s15-20020a63524f000000b0043891d55a30sf10964118pgl.16 for ; Fri, 16 Sep 2022 11:18:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1663352323; cv=pass; d=google.com; s=arc-20160816; b=RXybKBSI9QS9jTnBxWRCKpQ5V7qWsQTQ5KxUkd5yYWufX466jMhO+SLzkT6lhg6EC0 wLNrK+qsmWdaXOeSy9e6EPL630zxiuWpyyvTmK961mQN1bgKtfvBCuM/538R5Tjg09k/ AVPLEvFyGeE4pWgbqrj98qYWI1efAbjCLACqN/npTZGPVzux1fj0wFNNZo2x8QzOgD18 4LUfPrzvR62NIy8D3/SwK/WR4pZYug0PfDngtPvAFw/aquOt3ngu0WTwEsDs9zcbC2Ca a2gWOw2/LvJrScHRoQ7SKNfwbDpJyHCQbKwiKBFmw+5Ydnpp0iahXBHqqouKNy4gLGNr Ftww== 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=wV8PMt4BQDVfkoN6b4sSvT2zjI4GCXXqYPdxdbe1C4w=; b=wcJXXFnsshUMFmWqHbifdSgf6BrKL5yTJqjVxfhzcvuiFr9AyaNF5tQR5fR9e7Bsrs 2HHVddSnd5AMguGesx1OyuIk22q5Cb1q4UMl0iK3wlj8PMn4pNq81PCEIk5MjY8xc4i2 +00eirIux0sBGTn/+DfBP6JhV5WrMRXPMAS5W6d3xLbdEACGDIPJHgQDc6kTV4QbehE2 6jJR7uHrHxWSjUL4Qt7S3lgWMv/lTibh5Bfuie2U9/p5lwFI60ssDtGVCDHu5P4RY7TV 7Xi+lXRnomHlgMYssuU6n9qSNWMVqX/P5LwuxxDCx8mY9L8YZzh2UJKsXHZaY3CN5IdV /6ow== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=jp4epsHm; 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=wV8PMt4BQDVfkoN6b4sSvT2zjI4GCXXqYPdxdbe1C4w=; b=rKU1wvdEEawk4MkF+7PZNpRkEZLnafjdnYDXIEQqaAS+A9g33ypF4sTIelk6ttjcy0 C1D8Y1UP3K8cSlbNDulL8aXWceWYhu1Dtl7V4CK5ExhldfAhdHA40p4lPdmxComFs2yv jbLEjJxifIgyL90PqQrukqwahFp6w0mnBNU8c= 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=wV8PMt4BQDVfkoN6b4sSvT2zjI4GCXXqYPdxdbe1C4w=; b=KcLz2dy/crhcjsA0vqfG+oZZPQbThoSKwgfJ+CVW8PH1IvMebhV39R9Xgir4z3Y9Cy Hy/osomcVAsr9hKGmHNPthdBPb3GSxBbtQswZKigZWF0yPp0VTMXM/s3NAv5TyP04tX6 c5JOl4lbePVof4LnPBE1yXgt4Nc/uigthf2iLPk+fqwB0k5CLrqKNaN4+xAG4sBLAXmC i1mCxm0tKGH+YMilXXA+W+VasKSrGkyRjj6DR23axhilPyMhAuN10hpk4g/ousLaUnaG c9mP21zmWxTUgfasltzG6eWI3fPM97yiOY1zroqoD5K0Xh5CcEiZYRKsvYvenMX2AyFv VLfw== X-Gm-Message-State: ACrzQf3LxG92WpdD2s1Ii6baKsqQXwofpoxmE8V5cFfZySLUPBayjQgC ZJVdWw0wMnW57EgogTGxc6JF5498 X-Google-Smtp-Source: AMsMyM6/UnLvI2lxc2WiLPPmJWZCIDhhPV6YZ8F3o8UirgZJHBebUWkTw+OIxNNHvup8Qj4Q9vlJtw== X-Received: by 2002:a63:b59:0:b0:434:2374:6d12 with SMTP id a25-20020a630b59000000b0043423746d12mr5628200pgl.311.1663352322884; Fri, 16 Sep 2022 11:18:42 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:a406:b0:172:c963:32c with SMTP id p6-20020a170902a40600b00172c963032cls16357360plq.8.-pod-prod-gmail; Fri, 16 Sep 2022 11:18:42 -0700 (PDT) X-Received: by 2002:a17:903:2412:b0:178:796d:c694 with SMTP id e18-20020a170903241200b00178796dc694mr1129111plo.42.1663352321999; Fri, 16 Sep 2022 11:18:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663352321; cv=none; d=google.com; s=arc-20160816; b=ILQw3y/BOgOxwiuuu/B54b5elQC2gkthccNp9zk9tSEybGvxZN9bNxluzjNJnWv/jo RCsN9mH0TUOXVfq5l8H5fy4vk68xCv1D9YTn5TH/VYeHcVfg7JDyzAZDKJNrpT1Qx7PT uLN5H7kRxg/TgnZCYfBzT8/C8a8c9g3fVACvKoW2IJItUT42fR044NmMkx0RpNwhK7iw Hhnva+JUEosamQil54kdkQuV4nIK0ZYst1AcVyjO2R9Y/XedFcDjlqSkZxFjrZca3yc8 /mvIVs6vBpPy/0elway/aGE5mwJw4GXPM7DaHBJdUvRq326qvyRizj4aIgEPnrl9XLDh czYA== 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=O4ORDYv1Lr4Erp5ISyKI1IY+eX0JNrP0U9+cbOWHuzE=; b=YmW4nrzuL3BHFl9tMiMRftCi8pYpNhDLv/HcXfB+4WDmEC/Inr3aRCu445EVZjYmnF MqY5kX/Zyt/lUs7dYLSBGcNWWydkN3NlSrHXBGwTEvWk/ddk1xXItXMtA4v6TLD6YyoJ ntVFJmU+7kjjo2QHQSd7YxxxuzCGchvhZ0bdjHwkGmNBl1eANUlI/f8hNweMP1C5A7CI ugJyPHo5Qc+lE4FW6GcInWnLiGDe7wTVhOyqRcwKfK0+cl4mJBhpsuhIMSGZIi8Zdl1b QE1jN9ItfrXrVSehFNvboUETGP8a+XtzAR6Oev3b1OLgjSa2Xhpw5A8aN6lIVvQMohs0 +xeg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=jp4epsHm; 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 x191-20020a6386c8000000b0043517bc1499sor9626241pgd.0.2022.09.16.11.18.41 for (Google Transport Security); Fri, 16 Sep 2022 11:18:41 -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:a63:154b:0:b0:42c:60ce:8bd3 with SMTP id 11-20020a63154b000000b0042c60ce8bd3mr5671772pgv.372.1663352321699; Fri, 16 Sep 2022 11:18:41 -0700 (PDT) Received: from localhost.localdomain ([2405:201:c00a:a073:ae5d:6ee4:5c2f:6733]) by smtp.gmail.com with ESMTPSA id d14-20020a17090a6a4e00b002007b60e288sm1770000pjm.23.2022.09.16.11.18.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Sep 2022 11:18:41 -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 v5 03/11] drm: bridge: samsung-dsim: Lookup OF-graph or Child node devices Date: Fri, 16 Sep 2022 23:47:23 +0530 Message-Id: <20220916181731.89764-4-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220916181731.89764-1-jagan@amarulasolutions.com> References: <20220916181731.89764-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=jp4epsHm; 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. 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 ccaf87e19e81..2e79fbfe2a7d 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1340,18 +1340,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);