Received: by 2002:a05:7412:6592:b0:d7:7d3a:4fe2 with SMTP id m18csp2596541rdg; Mon, 14 Aug 2023 07:33:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHJYfakzcaByROgPUO/r5j1z947BGz1lhyFkICnxYBell3YrMDgkgTV6UBp+v+ZAyf/Nh0v X-Received: by 2002:a17:90a:3e44:b0:268:d716:4b62 with SMTP id t4-20020a17090a3e4400b00268d7164b62mr6798712pjm.0.1692023587456; Mon, 14 Aug 2023 07:33:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1692023587; cv=none; d=google.com; s=arc-20160816; b=hCfeLSQjZI/c/Qkh8JtcBBquKfGi2hOrMjOJP+8u/LONB4TLFbMzMXY7bbgQLlurTA c0x2q9xVxOgq2oMro6sf0vbgwOxvbKKMaQS4Q5rgJJx7rX/nt3+6Q0dQf3WsdBXIvf/J 8L3h9mngR3eydFEfq42fec+qxRONz64Utzr5DxKqEgrpGxfAhD9l9/X9Zz+sKUPg4k1Z 93ZT1RJIw0ckpZ8uJGvQGzlLoxyYkYH+MIcwBs+lhTjYz1OvaD8/vsv45x3j7UXd3mMC 2KOgSl00INwZna+5kl9BFkXgLfPh/L/o1nXbBJTBszo9AnVSCR0lzXnMWT63IZqwO8wo 5oTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=Dhd+jPF0GrLVmk18IH7PyG4p1FkTEHljWWQHW1SO9UE=; fh=wsh1XragK0ts5Eb33sFCm5PRSgL7+8AB3VYn3BJmVwg=; b=YITPjzJglAGl3anmbtC+tRbaiAMyCMwJMbjSbSCdey5ZLng2YGf+/fZaok7HT9X3n6 0RJ4tPVyrlctEMmjki8olAPJwZFAcIM2UD1qzLV+rakVk9NQUaxHfzG2ExabJz0TJ5OT 9CClTNTK6mfB/xwduqFsHdE5YA+LJecp1snHyrNbcYcsDUGtSe8BUoJ0qUxhxwmLaQDb wLtj/CFF/HvDRaqUbiD/Ku1M0A1UPXt7cz/hlxm0HnoRtKuiQWKK6MyUzBFoh0R+1ol5 sBptzNRq/1hcGHQ5uS9GogtJ3I0/TY8vtUg5UKkrtPrmW5a8Ub9FgMLc3fBlc9Md/Luh Rufg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="gP42c/v+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l8-20020a17090a850800b0026b53f17c72si2209577pjn.75.2023.08.14.07.32.55; Mon, 14 Aug 2023 07:33:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b="gP42c/v+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231297AbjHNN3o (ORCPT + 99 others); Mon, 14 Aug 2023 09:29:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231393AbjHNN33 (ORCPT ); Mon, 14 Aug 2023 09:29:29 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96376ED for ; Mon, 14 Aug 2023 06:29:28 -0700 (PDT) Received: from [192.168.88.20] (91-154-35-171.elisa-laajakaista.fi [91.154.35.171]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 6FDEBD51; Mon, 14 Aug 2023 15:28:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1692019695; bh=BmzEZgZVXN+6fGTllLHO5VdMx+53GoPnZExdNymjSxw=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=gP42c/v+sIW71Yevxqalg1Gf5bZBSQokEVSQ6DOwdYTbj3iKzy6W2pr5NYMDbLtzP PVf3nkEYAegdIO78dD9lIfvYeU4M1ENh4gEcdoQYM/uWeT0rKNF7a80YLW6TIiek5t ixey1YBnlJoYqKjeDzdq7E6efsKVGLgSVG/4mqUQ= Message-ID: Date: Mon, 14 Aug 2023 16:29:22 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [PATCH 11/11] drm/bridge: tc358768: Add DRM_BRIDGE_ATTACH_NO_CONNECTOR support Content-Language: en-US To: Sam Ravnborg Cc: Maxim Schwalm , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , =?UTF-8?Q?P=c3=a9ter_Ujfalusi?= , Francesco Dolcini , Dmitry Osipenko , Thierry Reding , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Aradhya Bhatia References: <20230804-tc358768-v1-0-1afd44b7826b@ideasonboard.com> <20230804-tc358768-v1-11-1afd44b7826b@ideasonboard.com> <0855d804-3ba3-4f29-32b1-bab3b999e506@ideasonboard.com> <20230814101041.GA277347@ravnborg.org> From: Tomi Valkeinen In-Reply-To: <20230814101041.GA277347@ravnborg.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Sam, On 14/08/2023 13:10, Sam Ravnborg wrote: > Hi Tomi, > >> From c13c691bd8826b978325575be9a87f577b83b86b Mon Sep 17 00:00:00 2001 >> From: Tomi Valkeinen >> Date: Mon, 14 Aug 2023 13:02:23 +0300 >> Subject: [PATCH] drm/bridge: tc358768: fix 'Add DRM_BRIDGE_ATTACH_NO_CONNECTOR >> support' >> >> Signed-off-by: Tomi Valkeinen >> --- >> drivers/gpu/drm/bridge/tc358768.c | 56 +++++++++++++------------------ >> 1 file changed, 24 insertions(+), 32 deletions(-) >> >> diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c >> index 82ea4d9a814a..9705ce1bd028 100644 >> --- a/drivers/gpu/drm/bridge/tc358768.c >> +++ b/drivers/gpu/drm/bridge/tc358768.c >> @@ -455,8 +455,6 @@ static int tc358768_dsi_host_detach(struct mipi_dsi_host *host, >> struct tc358768_priv *priv = dsi_host_to_tc358768(host); >> >> drm_bridge_remove(&priv->bridge); >> - if (priv->output.panel) >> - drm_panel_bridge_remove(priv->output.next_bridge); >> >> return 0; >> } >> @@ -531,49 +529,42 @@ static int tc358768_bridge_attach(struct drm_bridge *bridge, >> enum drm_bridge_attach_flags flags) >> { >> struct tc358768_priv *priv = bridge_to_tc358768(bridge); >> + struct drm_bridge *next_bridge; >> + struct drm_panel *panel; >> + int ret; >> >> if (!drm_core_check_feature(bridge->dev, DRIVER_ATOMIC)) { >> dev_err(priv->dev, "needs atomic updates support\n"); >> return -ENOTSUPP; >> } >> >> - if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { >> - struct device_node *node; >> - >> - /* Get the next bridge, connected to port@1. */ >> - node = of_graph_get_remote_node(priv->dev->of_node, 1, -1); >> - if (!node) >> - return -ENODEV; >> - >> - priv->output.next_bridge = of_drm_find_bridge(node); >> - of_node_put(node); >> - if (!priv->output.next_bridge) >> - return -EPROBE_DEFER; >> - } else { >> - struct drm_bridge *bridge; >> - struct drm_panel *panel; >> - int ret; >> - >> - ret = drm_of_find_panel_or_bridge(priv->dev->of_node, 1, 0, >> - &panel, &bridge); >> - if (ret) >> - return ret; >> - >> - if (panel) { >> - bridge = drm_panel_bridge_add_typed(panel, >> - DRM_MODE_CONNECTOR_DSI); >> - if (IS_ERR(bridge)) >> - return PTR_ERR(bridge); >> - } >> + ret = drm_of_find_panel_or_bridge(priv->dev->of_node, 1, -1, &panel, >> + &next_bridge); > > I think the right way is to wrap the panel in a bridge, > so something like: > > next_bridge = devm_drm_of_get_bridge(dev, priv->dev->of_node, 1, -1) > > if (IS_ERR(next_bridge)) > return ... > priv->output.next_bridge = next_bridge; I tried that, but I had trouble with the cleanup side. In the fixup patch I attached in my reply to Maxim I used drm_of_find_panel_or_bridge() + drm_panel_bridge_add_typed(), and on bridge_detach callback I used drm_panel_bridge_remove() (if there is a panel). This worked for me, but it does feel like a bit too much work for a driver to do. Tomi