Received: by 2002:a05:7412:6592:b0:d7:7d3a:4fe2 with SMTP id m18csp1153672rdg; Fri, 11 Aug 2023 11:24:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHiEtwKwNy8u92gdO2EQ4JxrIXX3LgRcdQ0TTgMKpiwekQ/TN/dq8ZdpLWceEV3Bg2u9oit X-Received: by 2002:a17:907:7634:b0:992:6064:f32b with SMTP id jy20-20020a170907763400b009926064f32bmr2344974ejc.46.1691778284366; Fri, 11 Aug 2023 11:24:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691778284; cv=none; d=google.com; s=arc-20160816; b=Z13jiHi1MsSRRS+5GycjPnz77D+hWC8eqxmd+BCmy/Oo5nZhoecl6ozMkmfHpOFsai cdJ9vw6d5iN3MPSa+1SSagFHqQb2IG3YpJh+Rlsg5auoes9lIsvFF+/CsSRNItmO+sip ivkhHRz8oCnJPP7Q3onHyf17is8Gqr1Eadt/Lpb/ERrslDn+8UqKSMiHfHOCxwnMyuKK 4FAGwklPcBSxDgDGKkzOb+SSXSujV9umWzrfOouOr9QW5MMxDMXRLwqk0Xp/s9RvwCLu hnNhNkyyFVKx42zYOGzEyu6nJ2LuzVmYsd+Znr3URS9RVpDZbyRTvypYP9LbpfHwtfkp Bu5w== 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=EqXYn1ppGt3moRC8rckrU8+Vg4tspq9IiH2IQ5aagXs=; fh=3QbqESXJnchgYeOzdjIBlGxddfyGojmAihSJsrm+GQA=; b=a7NdV8VVu19173AzZXncb7BN8IyTxAcAF1QR+IjlRMmL4xa5IfwHIPXzfOETE6Anxo vCuBeP7kjH38sFokh/hTuai9ntU3cNa/XeLt2w0Kk+ttL6KTEVSs/5R2RF2d857xxokh Y5iaDUSF2R0Z4yVi9ik5SkavC97iVEL/1xzCO5VwfF9gd+M2oHuDjKcB5x8Gui6b7prN DGh+9x1sCfjD9QgK/mW4mKivH+L35d+3ObIiRZk0+GHoSOpzvCZFrMkp764WceUpUyn0 1fRjK0meJsuOHdi6z9rrjzHqla2z3DDQkBgVeOECMcJ2zNb6MkBkgaduWSOQB5UACRZf ZL2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=cxnPXWaE; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id va30-20020a17090711de00b0098871664f55si3699069ejb.800.2023.08.11.11.24.19; Fri, 11 Aug 2023 11:24:44 -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 header.i=@gmail.com header.s=20221208 header.b=cxnPXWaE; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235935AbjHKQmI (ORCPT + 99 others); Fri, 11 Aug 2023 12:42:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235893AbjHKQmH (ORCPT ); Fri, 11 Aug 2023 12:42:07 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D975E65 for ; Fri, 11 Aug 2023 09:42:06 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id 2adb3069b0e04-4fe48d0ab0fso3423345e87.1 for ; Fri, 11 Aug 2023 09:42:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691772125; x=1692376925; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=EqXYn1ppGt3moRC8rckrU8+Vg4tspq9IiH2IQ5aagXs=; b=cxnPXWaEJyjFnjHvktdv4p03V4t1UaB57LvJjjG2Az4j1cTYlBHbiB1KHNovGnbIg6 9MZ4ZzOlyMNXNoVVTvOdy7DoUGSMpA3Ovb99wZ8urJnV9D1tucCYguj5xPbBD+/IM84F DcOkKI18GIPWOiP9CTcu0uP2xxUBhxgUsvACSxq/rToFF6amA07w/hRLiqI0Xu7K0F+L yP2jmSrkpxUGAkbXUaS1IV1vpdQLkN93NLbxxnSm6674kgqjsmcqtZLwI2JqfoxAlxEm NGpyhsz1i8u3lDAR1cpqzfrGyEHrVImK0sd0QsPYA7mYZCbZiJHkUe2TIdAEtWBVuR6y cdfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691772125; x=1692376925; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EqXYn1ppGt3moRC8rckrU8+Vg4tspq9IiH2IQ5aagXs=; b=hmV+bBxuDLPiQWKk3+90Q23MjobtoDjXyi/vO9XxndipJux7xOeDiOrDc/kzNEcJAB 3FW2cU8KR3Lqa9gyx11O+oXKTy+lhlOP+zd+Y1JaM8VEIBf4DHsUSOeVozmcKBpSP+oA pVSzlmRd3zNJlw80XojVo3njWR/w8AgLRcWdq4wofVijEXGNiNM3Ga1PskTSpOCeVjxw 4E6m7vEKM3zgCyBY9KBw7UtDy4cinZR+63BaKXzAvRnHetefHLOGdNe+OOgNVyQUgXKa MuTfGxpuVSZW4ZNPIkrgXj0Q2Aodf8pywaF0LpHrFWw18utVqNLzMnZFmHUgav8qJduJ TY+w== X-Gm-Message-State: AOJu0YxuJ2vky/CPpK/JBOBIFEP9c50zLd/c/yNMLAEGcbQ0kGq/SJJN zUVXT5QTOY6pIUbITKil7kI= X-Received: by 2002:a05:6512:695:b0:4fe:711:2931 with SMTP id t21-20020a056512069500b004fe07112931mr2672090lfe.22.1691772124482; Fri, 11 Aug 2023 09:42:04 -0700 (PDT) Received: from [10.0.0.100] (host-85-29-92-32.kaisa-laajakaista.fi. [85.29.92.32]) by smtp.gmail.com with ESMTPSA id s6-20020a19ad46000000b004fe951827easm400815lfd.196.2023.08.11.09.42.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 11 Aug 2023 09:42:04 -0700 (PDT) Message-ID: Date: Fri, 11 Aug 2023 19:44:06 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 11/11] drm/bridge: tc358768: Add DRM_BRIDGE_ATTACH_NO_CONNECTOR support Content-Language: en-US To: Tomi Valkeinen , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Francesco Dolcini Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Aradhya Bhatia References: <20230804-tc358768-v1-0-1afd44b7826b@ideasonboard.com> <20230804-tc358768-v1-11-1afd44b7826b@ideasonboard.com> From: =?UTF-8?Q?P=C3=A9ter_Ujfalusi?= In-Reply-To: <20230804-tc358768-v1-11-1afd44b7826b@ideasonboard.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 On 04/08/2023 13:44, Tomi Valkeinen wrote: I would rather have a commit message than a blank one. > Signed-off-by: Tomi Valkeinen > --- > drivers/gpu/drm/bridge/tc358768.c | 64 +++++++++++++++++++++++++++------------ > 1 file changed, 45 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c > index ea19de5509ed..a567f136ddc7 100644 > --- a/drivers/gpu/drm/bridge/tc358768.c > +++ b/drivers/gpu/drm/bridge/tc358768.c > @@ -131,8 +131,17 @@ static const char * const tc358768_supplies[] = { > > struct tc358768_dsi_output { > struct mipi_dsi_device *dev; > + > + /* Legacy field if DRM_BRIDGE_ATTACH_NO_CONNECTOR is not used */ > struct drm_panel *panel; > - struct drm_bridge *bridge; > + > + /* > + * If DRM_BRIDGE_ATTACH_NO_CONNECTOR is not used and a panel is attached > + * to tc358768, 'next_bridge' contains the bridge the driver created > + * with drm_panel_bridge_add_typed(). Otherwise 'next_bridge' contains > + * the next bridge the driver found. > + */ > + struct drm_bridge *next_bridge; why it is better to call it next_bridge than just bridge? Is there a prev_bridge also? > }; > > struct tc358768_priv { > @@ -391,8 +400,6 @@ static int tc358768_dsi_host_attach(struct mipi_dsi_host *host, > struct mipi_dsi_device *dev) > { > struct tc358768_priv *priv = dsi_host_to_tc358768(host); > - struct drm_bridge *bridge; > - struct drm_panel *panel; > struct device_node *ep; > int ret; > > @@ -420,21 +427,7 @@ static int tc358768_dsi_host_attach(struct mipi_dsi_host *host, > return -ENOTSUPP; > } > > - ret = drm_of_find_panel_or_bridge(host->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); > - } > - > priv->output.dev = dev; > - priv->output.bridge = bridge; > - priv->output.panel = panel; > > priv->dsi_lanes = dev->lanes; > priv->dsi_bpp = mipi_dsi_pixel_format_to_bpp(dev->format); > @@ -463,7 +456,7 @@ static int tc358768_dsi_host_detach(struct mipi_dsi_host *host, > > drm_bridge_remove(&priv->bridge); > if (priv->output.panel) > - drm_panel_bridge_remove(priv->output.bridge); > + drm_panel_bridge_remove(priv->output.next_bridge); > > return 0; > } > @@ -544,7 +537,40 @@ static int tc358768_bridge_attach(struct drm_bridge *bridge, > return -ENOTSUPP; > } > > - return drm_bridge_attach(bridge->encoder, priv->output.bridge, bridge, > + 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); > + } > + > + priv->output.next_bridge = bridge; > + priv->output.panel = panel; > + } > + > + return drm_bridge_attach(bridge->encoder, priv->output.next_bridge, bridge, > flags); > } > > -- Péter