From patchwork Sat Oct 1 08:06:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2403 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id F06403F06D for ; Sat, 1 Oct 2022 10:07:50 +0200 (CEST) Received: by mail-pl1-f199.google.com with SMTP id z7-20020a170903018700b0017835863686sf4772189plg.11 for ; Sat, 01 Oct 2022 01:07:50 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1664611669; cv=pass; d=google.com; s=arc-20160816; b=Ti39vUDNxg747sWhRlyNJXSVfytq59CxcOBceujx7S61hwJlj7ATGF93FkEXVV0cT/ sYehdMKulEWB9cghoT5GyQUc57Ouv+Q2oUR5jHagowkWOWo+t6wO5hU7+76+E2vjfp2S EOdF9Sy5KgJCiWXTfHUO9ikiE1/pcJpEwgXlH7MYcSIqOg0jVZ6QDQg8qbWu1GUb8Ucv uyB09M38Y3v5vXzX2uhm+m93+g8f2Jynl0RLK3wLVtz9FmjnnNHWGLHF+INWEtuEIT5G UVlhC0eGxWYy8s0JDTaWYwVbdyES/CN524JNyQJ2S3F1fV0aOAUELWNBUSWzSLOwAYh1 eLMA== 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=aVoBBS4hxDgiH8uqu8d7M5fNVw0L/GCGQxlL6z/imIw=; b=mtfyn4vL+wfNpe954g/8VK1KepdBWo8LY6bBBiM+Z43yAgmLvfuxVJe9sSpdczl2Su p+tzuUq1EDR1TEOsWLfB00IhnWzs3/EsG64xaGDEBercX11xHD9MlbVOjOjI33cXvjFS DPYjCwmpMfcrzjHu6I2noa2wdSlcdtsq5/hYvsQf2jOu2VoWNDPVhrYRP2EGwMUTNC56 v3dueRI8+4kX/mN9pi8KS0XeJ1tyrNK5yQIBCESaS/AQeqn84WvGpxWEvMN+J2mo6cKX KFv2mvbW15SYo2OzqAi0rlUWZX0Apt6rclOZGu0RJTOaFyNhsjO869lgImVMKNPMdzaU ZGJQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=fvWn4rIB; 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=aVoBBS4hxDgiH8uqu8d7M5fNVw0L/GCGQxlL6z/imIw=; b=RnRRIg2azbLnrXxStSaTZL2auzoFoBldF2LPL0Da34UTKl/i/SEsH48z7yQxjYnRVl DabHcnNJ+jESmEumrDj1AJ4wLfz/vG+Q1t+oawSYOjCEXnTxXsaJGwdX7sqPWLmPV2ma 1YtY9M+sPGL4u2cw5tgzzd3XtXkSo/qWefsy4= 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=aVoBBS4hxDgiH8uqu8d7M5fNVw0L/GCGQxlL6z/imIw=; b=arXQ81Lq65bBxvbJZNFiD9qMe2yuAWmG7rL6uea0bidg5hTKFPXbnwQtqqGwa5nMbA hywj7jabMUxuDU7Z9t23fVo+03pMJkB4Jb2RzoYIwEk+8Bemxl+UL4oWMVUOztzmK1Fb tZI+bQBcM70sqpmb5eW5Vr1kHjwFPPivD3SKfWeQu4wx2PaozUw1molPBgdWWdqrR1Jm 1eO6/TZS0Udw0gRuTgaxfZgkZrrq1WXEouKMiMCtfmxfAlctaRWT0j7mEDT6UONVzuN7 cDP9AyIQwQsfwAi+XeWufgF+UiTWri5zd8TGoZ9341t/lc/u2ubOPcbPU6/pN6H9Vg+J rS7A== X-Gm-Message-State: ACrzQf2azZKbzG8x7Pcr+RJTaIMZADbEnpavFI0bgmTu3VbjYjsxnT9E NK5WMdBJTxapqcYa6rFNhNDxMvnH X-Google-Smtp-Source: AMsMyM4FsPFfeI3NFyLQ2mH/8IdSrTIZDQPP8qRb757GJqRThxVXPs0C7rVXVIejL8+hL1g0kS1hcA== X-Received: by 2002:a17:902:724c:b0:177:5080:cbeb with SMTP id c12-20020a170902724c00b001775080cbebmr12706221pll.67.1664611669673; Sat, 01 Oct 2022 01:07:49 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:f081:b0:178:3881:c7e3 with SMTP id p1-20020a170902f08100b001783881c7e3ls5707470pla.11.-pod-prod-gmail; Sat, 01 Oct 2022 01:07:49 -0700 (PDT) X-Received: by 2002:a17:90a:1096:b0:202:c5a9:bf1e with SMTP id c22-20020a17090a109600b00202c5a9bf1emr2308523pja.3.1664611668801; Sat, 01 Oct 2022 01:07:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664611668; cv=none; d=google.com; s=arc-20160816; b=Y8ZQwHKoW6FXHMUJupS3RLteIzK+8DiwiE8uLCqbiRcUsxkC1fLTzENq9VcA20z+Zt J7zKFo7LnNJ1IQxvA+PXEvU3dhOMlIlH2MxD3Ze6tg9JNQ5A44gsTbSjJnHCBHWp9R/B q7I+HkLMX6ucIindb7xsnuDHS5DpvIelRZ5+Er5HwfNu6fSoYcQxBs2b0Ku7J+ssvpCP aMZmd6e5IN0dXHrrCTKiNCXc1IK88xXOxxLugFbLIJNGfhU7uxYFX8Rdt77owpHmK/GV TEuGuj3nsjJE5wIg/+Uv5t+jR8uvHtjqYu3LsNHabyU3zUDbfohXlJg1RDgdS2qJJDLM ZW4Q== 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=tVRN+SsBdMvLqk2xiEJ4U+qCZXLzKyUiTAK/FAHSFm8=; b=m4G5K2qJBDlulyaticP0ftBKLi4qUrDcwSJrIxdDINPrbPtiRJLyNKM9aY6kfUc/Ss LIVvsLYvqTIMXfqE678V+pQ5WGO1iWQGGbOxO5lt7yZLX16w4U4Ovt+4N+BntEMzcVRp hXS1Vunv9cuhgFY+1fxCTMinfEld1DG2MZPuU1kLw5TNv3BGPqsgXwIggfvcYxSUjiLD z7fo6gQHySqs0YVp0bsFzRtZyAD52W2h22FDIGsyJbukED/B6TGRXi22dxzgLGMsUVQ+ m7FmDt5i1sx+1kxtYdGC8OtTvdmQFYtP0X9hS+H68am7/EF7TqaCYALB9RlOeBOc+AQq oE7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=fvWn4rIB; 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 n6-20020a1709026a8600b00174bf160ae8sor2164830plk.159.2022.10.01.01.07.48 for (Google Transport Security); Sat, 01 Oct 2022 01:07:48 -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:a17:902:db0a:b0:178:2636:b6de with SMTP id m10-20020a170902db0a00b001782636b6demr12925881plx.58.1664611668496; Sat, 01 Oct 2022 01:07:48 -0700 (PDT) Received: from localhost.localdomain ([2405:201:c00a:a073:7254:4392:bc7c:c69]) by smtp.gmail.com with ESMTPSA id c194-20020a624ecb000000b005409c9d2d41sm3167041pfb.62.2022.10.01.01.07.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Oct 2022 01:07:48 -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 v6 02/10] drm: bridge: samsung-dsim: Lookup OF-graph or Child node devices Date: Sat, 1 Oct 2022 13:36:42 +0530 Message-Id: <20221001080650.1007043-3-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221001080650.1007043-1-jagan@amarulasolutions.com> References: <20221001080650.1007043-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=fvWn4rIB; 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. 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 73dcd825c654..e41b6eeef622 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);