Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp385593pxb; Thu, 21 Oct 2021 01:15:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzk1bKRR7bNvdibm4rbj5UnZ3kjXwc1wICiDBvNiWafDCZ19gFlTUV7azYZwMAvkBAtl0Jy X-Received: by 2002:a17:906:1456:: with SMTP id q22mr5429702ejc.291.1634804132332; Thu, 21 Oct 2021 01:15:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634804132; cv=none; d=google.com; s=arc-20160816; b=LtnD89fXpUIZumPnX3kxL341Fd7CUA3hp8xLneE49n2ruGVRWVUAX9IT+oMUHra/Nv VSq+43fwuk5pBMhOZj0eoeiBrpeLmwe2uhH7LEHSJMn4kdcBPWs8YbGgxjeOC2DXPLh/ LKdPJIk7h2sGp44oyc0+sLbA2ulbYO+Gk+HeDiswkPKAAbNRt3TCXsJxvGy35P8MSHCQ GxcxTzfFh1szzvaXTLcI3EqcrDXYDXloUnflyYSKHH+daXpGa10AIPEnuTjaoM4dU8g/ HB4MELJF0G+XS04PXHubgKkEE4aLtAFhjBXvJcFBlSHMmyHdPN7nyiPlDm969EADrJuB q9+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature :dkim-signature; bh=KU/j59qysAuk4ObDPffFyO6u0yh+Bz/yiTCCxP32cQg=; b=eFfYZgm5gqqvi4XFKHyttdUOY/iztX8bIF+YPeUjAJ6IV0tLcXZVQ03tYXasYXMvOd 3VoexhlS/LWiGRvtyN4Y5sLUcY6YGA8G4ojzekVCXdlteAURVzCx5dzM9JBERwF+/W/f oI0E+N1pvzvvq0F29IIXM5RujZYegruy1VWXhk16E2xRXRkj/fkXFrnEijYjrpEya+g7 MCASEoy5zWbrqAQA3bdM18AByHFGuESstAaYziarQSx8BcJgJdQPC0dq2wvA3KxxdTJT XKQloqyQa6FuizY896PM8UvtwauVGfe7be4f5sZ9BsfRZu+TDRGcPizE80/SeU4k3Jtz nI+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm1 header.b="WWtbjHs/"; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=d7MxuUBY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nc42si1104059ejc.299.2021.10.21.01.15.02; Thu, 21 Oct 2021 01:15:32 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@cerno.tech header.s=fm1 header.b="WWtbjHs/"; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=d7MxuUBY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cerno.tech Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231327AbhJUINH (ORCPT + 99 others); Thu, 21 Oct 2021 04:13:07 -0400 Received: from new1-smtp.messagingengine.com ([66.111.4.221]:38691 "EHLO new1-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230440AbhJUING (ORCPT ); Thu, 21 Oct 2021 04:13:06 -0400 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailnew.nyi.internal (Postfix) with ESMTP id 98EB05812C1; Thu, 21 Oct 2021 04:00:38 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Thu, 21 Oct 2021 04:00:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= date:from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=fm1; bh=KU/j59qysAuk4ObDPffFyO6u0yh +Bz/yiTCCxP32cQg=; b=WWtbjHs/uSynr6ohlccc1iMU5tLe3/2uBqPOl4Htjf6 1XAqjjrN5fTtXWN8GfERErHY3V5ZcFeVqvCTPr4Yi5ONqtUH2/OCTeci1g1BPajP gqNO9253CMYNoJwWKw+TEoUJxPgG3uOtACu5Wz9mnQn8xPFUrK3Q3xmhKUCQiFeU PdHIHc8Hc+8TJZ4VTEw7z2dUyetleyXPadhjayO0BC1gPCqcaB90tnGWA17+1UKV sEpfeCdOjgnXYhjfp9AgTCCyan02qqMX1HFriwgCU7KzlXXk1ENAgZvAUAe8Y2b7 QqGvieSLcEjHiuC9drgUGs4lzr3c3z/x7wQig9vU6sw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=KU/j59 qysAuk4ObDPffFyO6u0yh+Bz/yiTCCxP32cQg=; b=d7MxuUBYX9JBoSxpG8Xxdg 4Vm6iUK3FQqrttxwAMsqlAyCdtp3LRzn+JGnSCllmf6NIG3ME8pwrrVrNqjj6afX Ek6jonOkveAR2nkeCDBnQJX8rReta+qWlcap3Fsiz8euGkIXzYhvE0eIJY5Cz+ne vUTu4JTaXPV+SBaSuTxwm4KGkd9bA/uT1JwTVKu8xI1RTyuWtS21laW8ga4c+V4c 5CMPFJitYJnlvzuOTz//L8Ct64wuWZOT3i8V0yGNQYpNW+M5Bhhf6pvpzFwL0iDd 9nOQQMr3u8GX19SkPaHgGfaRkIRZ0Ino2wVl9FL9yPQlJ1XUjw304qtWYp+WfIQQ == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrvddvhedguddvtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpeffhffvuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrgihi mhgvucftihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrg htthgvrhhnpeeutdfgjeeuudehvefgvedvtedtudelfffgffekledtffekgedukeejueev ieegudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpe hmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 21 Oct 2021 04:00:37 -0400 (EDT) Date: Thu, 21 Oct 2021 10:00:36 +0200 From: Maxime Ripard To: Kevin Tang Cc: Maarten Lankhorst , Sean Paul , David Airlie , Daniel Vetter , Rob Herring , Mark Rutland , pony1.wu@gmail.com, Orson Zhai , Chunyan Zhang , "Linux-Kernel@Vger. Kernel. Org" , ML dri-devel , devicetree@vger.kernel.org Subject: Re: [PATCH v6 6/6] drm/sprd: add Unisoc's drm mipi dsi&dphy driver Message-ID: <20211021080036.w7xgrwggrm6lnnlz@gilmour> References: <20210813145302.3933-1-kevin3.tang@gmail.com> <20210813145302.3933-7-kevin3.tang@gmail.com> <20210917154047.leojvqjqjj2sg34l@gilmour> <20210928092805.wbc4ev3ze7a7zgqr@gilmour> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="i6g4hmj32as2fgck" Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --i6g4hmj32as2fgck Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, On Wed, Oct 20, 2021 at 06:09:32PM +0800, Kevin Tang wrote: > Maxime Ripard =E4=BA=8E2021=E5=B9=B49=E6=9C=8828=E6= =97=A5=E5=91=A8=E4=BA=8C =E4=B8=8B=E5=8D=885:28=E5=86=99=E9=81=93=EF=BC=9A > > > > > +static int sprd_dsi_find_panel(struct sprd_dsi *dsi) > > > > > +{ > > > > > + struct device *dev =3D dsi->host.dev; > > > > > + struct device_node *child, *lcds_node; > > > > > + struct drm_panel *panel; > > > > > + > > > > > + /* search /lcds child node first */ > > > > > + lcds_node =3D of_find_node_by_path("/lcds"); > > > > > + for_each_child_of_node(lcds_node, child) { > > > > > + panel =3D of_drm_find_panel(child); > > > > > + if (!IS_ERR(panel)) { > > > > > + dsi->panel =3D panel; > > > > > + return 0; > > > > > + } > > > > > + } > > > > > + > > > > > + /* > > > > > + * If /lcds child node search failed, we search > > > > > + * the child of dsi host node. > > > > > + */ > > > > > + for_each_child_of_node(dev->of_node, child) { > > > > > + panel =3D of_drm_find_panel(child); > > > > > + if (!IS_ERR(panel)) { > > > > > + dsi->panel =3D panel; > > > > > + return 0; > > > > > + } > > > > > + } > > > > > + > > > > > + drm_err(dsi->drm, "of_drm_find_panel() failed\n"); > > > > > + return -ENODEV; > > > > > +} > > > > > > > > Just use devm_drm_of_get_bridge there > > > > > > We use drm_panel_init and drm_panel_add API to add panel, so here is a > > > panel device, not a bridge. > > > > Like Sam said, the panel API is on its way out and is being superseded > > by bridge_panels. > > If get a panel by devm_drm_of_get_bridge, how to use bridge api to > access panel? You don't. You'd get a panel-bridge driver (drivers/gpu/drm/bridge/panel.c), that behaves like a bridge and will call the panel functions itself. And since it's a bridge, everything (enable, pre_enable, etc.) is called by the core framework (in drm_atomic_helper_commit_modeset_enables for enable and pre_enable). > it seems that pre_enable/enable still needs to be implemented, so we > need to add drm_bridge_func, then move the panel-related operations in > drm_encoder_helper_funcs to drm_bridge_funcs callback? You're confusing two things. Our comment wasn't that this DSI needed to be converted to a bridge itself (which is what you're talking about), but that it needs to use the bridge API instead of the panel API to deal with whatever is connected at the other end of the DSI link. Maxime --i6g4hmj32as2fgck Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCYXEeJAAKCRDj7w1vZxhR xerMAQDbIo8QFD7KUkFklmhedJmVHyFchTfLdfiE1FF1+eH9kgD/ZjeaSdS2M5UF gG3hG8RoV0DSuQhW0hjs7vqZVdfd9wc= =cWgY -----END PGP SIGNATURE----- --i6g4hmj32as2fgck--