Received: by 2002:a05:7412:b101:b0:e2:908c:2ebd with SMTP id az1csp3174587rdb; Thu, 16 Nov 2023 02:13:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IFpI0DeFxWdX2yyMSokppIFnvh0EwBnUA/CkQCJdeHP6f+AbIbTcA84Qf3S/HnaN5Gkra1Y X-Received: by 2002:a05:6a00:320f:b0:6c4:dc5b:5b2b with SMTP id bm15-20020a056a00320f00b006c4dc5b5b2bmr12008588pfb.20.1700129611277; Thu, 16 Nov 2023 02:13:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700129611; cv=none; d=google.com; s=arc-20160816; b=nTBOKH7zppSaugRox9WOSMEnzjpUwXrWqVF89t4hA37AXxXDGvyq+HZYHUQp37Hjec I8n7S4tpFxI/lHhUMKr5/HB6TpSXxJXSuTDTWzylWU9FpGki+oLXCt0bxzUxxjw2H1oN IFCIudWsUlOXVaTJz0B5zXm/kVIFaBtuIXeaDCyNHGqfyIvM3nhULwU2gYCktCJpwcfS lIDs7SqSrG+ttJIoT2YlbNl1Pw7doIl2X3ERTdMp0Vb95PHoSGC96YhDWnGP2sf9LIyj GxQ44mcsKZKNIHPulTrucXabRwSkXKoQU1ciLvevhdWG/G8Mm5m+rzyokcqEs9GU8mau VW0g== 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:mime-version:date :dkim-signature:message-id; bh=x2/NJA7ywSEAZY6s2t2yF+R5iHHDWkweZBt6DBgrSpM=; fh=L6MbuOTOK7FHgIF89LITj4O+NnVze0RQCyrYNOhkPmg=; b=YMB5M3bJObLGvn2GM9JNx8RXYQIlO0MoF1l+ywzVTSxxeTRX0XJQIGf4FhDLcX0iux yDLCM9C5hXLK5Gv2qLc3kHsLYuG1TlvluCPVndUAVbtdeENWWxEfoBCUerZ1qIocO+w9 fWOIR5mhxo6WBnizz8ofK0jz3B2D964cLur26aCuUIQr8N6bftCJFQM7qGJSPMJxGs4q cPl606m7vtcUvLvTdiLagdT8PqUoXGGb3uv/UXRUm3GMwAYPSFPdTgYBI54TALbuEtU2 RefO5abzF7upJmgt/+8LVR0WfO/gSnlPEbZv97XbVt4ZS9WTCiWjzDH7yIPTXnwl5lq9 z5TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=WpqHKP83; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id ck6-20020a056a02090600b005b8f24e6526si12736367pgb.234.2023.11.16.02.13.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Nov 2023 02:13:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=WpqHKP83; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 8E5B580EAD45; Thu, 16 Nov 2023 02:13:28 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230287AbjKPKNR (ORCPT + 99 others); Thu, 16 Nov 2023 05:13:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234970AbjKPKNQ (ORCPT ); Thu, 16 Nov 2023 05:13:16 -0500 Received: from out-183.mta1.migadu.com (out-183.mta1.migadu.com [95.215.58.183]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EC031AE for ; Thu, 16 Nov 2023 02:13:05 -0800 (PST) Message-ID: <121163c9-0d56-47ad-a12e-e67390fef2b4@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1700129583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=x2/NJA7ywSEAZY6s2t2yF+R5iHHDWkweZBt6DBgrSpM=; b=WpqHKP837fwO98gcuTy19uklf6Dai09g2jF6PBn/gEg65pLQO0GmUgvHiTR9jxz7WJmfxP abtp1YLBbdCNrt1nrC+Zcuqy7tNDjwGDTmWkNmms1YSFSlNVM5UjcI4VVFJozrpJkw2k6F trvriyuUB6yvfmuj6BQViRMWNu3pGv0= Date: Thu, 16 Nov 2023 18:12:55 +0800 MIME-Version: 1.0 Subject: Re: [PATCH 8/8] drm/bridge: it66121: Allow link this driver as a lib Content-Language: en-US To: Dmitry Baryshkov Cc: Phong LE , Neil Armstrong , Maxime Ripard , Sui Jingfeng , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Laurent Pinchart , Thomas Zimmermann References: <20231114150130.497915-1-sui.jingfeng@linux.dev> <20231114150130.497915-9-sui.jingfeng@linux.dev> <79301d04-c0cb-4740-8a6d-27a889b65daf@linux.dev> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Sui Jingfeng In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 16 Nov 2023 02:13:28 -0800 (PST) Hi, On 2023/11/16 17:30, Dmitry Baryshkov wrote: > On Thu, 16 Nov 2023 at 11:14, Sui Jingfeng wrote: >> Hi, >> >> Thanks a lot for reviewing! >> >> >> On 2023/11/15 00:30, Dmitry Baryshkov wrote: >>> On Tue, 14 Nov 2023 at 17:09, Sui Jingfeng wrote: >>>> From: Sui Jingfeng >>>> >>>> The it66121_create_bridge() and it66121_destroy_bridge() are added to >>>> export the core functionalities. Create a connector manually by using >>>> bridge connector helpers when link as a lib. >>>> >>>> Signed-off-by: Sui Jingfeng >>>> --- >>>> drivers/gpu/drm/bridge/ite-it66121.c | 134 +++++++++++++++++++-------- >>>> include/drm/bridge/ite-it66121.h | 17 ++++ >>>> 2 files changed, 113 insertions(+), 38 deletions(-) >>>> create mode 100644 include/drm/bridge/ite-it66121.h >>>> >>>> diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c >>>> index 8971414a2a60..f5968b679c5d 100644 >>>> --- a/drivers/gpu/drm/bridge/ite-it66121.c >>>> +++ b/drivers/gpu/drm/bridge/ite-it66121.c >>>> @@ -22,6 +22,7 @@ >>>> >>>> #include >>>> #include >>>> +#include >>>> #include >>>> #include >>>> #include >>>> @@ -703,14 +704,32 @@ static int it66121_bridge_attach(struct drm_bridge *bridge, >>>> enum drm_bridge_attach_flags flags) >>>> { >>>> struct it66121_ctx *ctx = bridge_to_it66121(bridge); >>>> + struct drm_bridge *next_bridge = ctx->next_bridge; >>>> + struct drm_encoder *encoder = bridge->encoder; >>>> int ret; >>>> >>>> - if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) >>>> - return -EINVAL; >>>> + if (next_bridge) { >>>> + if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { >>>> + WARN_ON(1); >>> Why? At least use WARN() instead >> Originally I want to >> >> >> >> >>>> + flags |= DRM_BRIDGE_ATTACH_NO_CONNECTOR; >>>> + } >>>> + ret = drm_bridge_attach(encoder, next_bridge, bridge, flags); >>>> + if (ret) >>>> + return ret; >>>> + } else { >>>> + struct drm_connector *connector; >>>> >>>> - ret = drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags); >>>> - if (ret) >>>> - return ret; >>>> + if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) >>>> + WARN_ON(1); >>> No. It is perfectly fine to create attach a bridge with no next_bridge >>> and with the DRM_BRIDGE_ATTACH_NO_CONNECTOR flag. >>> >> The document say when DRM_BRIDGE_ATTACH_NO_CONNECTOR flag is set >> the bridge shall not create a drm_connector. So I think if a display >> bridge driver don't have a next bridge attached (Currently, this is >> told by the DT), it says that this is a non-DT environment. On such >> a case, this display bridge driver(it66121.ko) should behavior like >> a *agent*. Because the upstream port of it66121 is the DVO port of >> the display controller, the downstream port of it66121 is the HDMI >> connector. it66121 is on the middle. So I think the it66121.ko should >> handle all of troubles on behalf of the display controller drivers. > No. Don't make decisions for the other drivers. They might have different needs. [...] > >> Therefore (when in non-DT use case), the display controller drivers >> side should not set DRM_BRIDGE_ATTACH_NO_CONNECTOR flag anymore. >> Which is to hint that the it66121 should totally in charge of those >> tasks (either by using bridge connector helper or create a connector >> manually). I don't understand on such a case, why bother display >> controller drivers anymore. > This is the reason why we had introduced this flag. It allows the > driver to customise the connector. It even allows the driver to > implement a connector on its own, completely ignoring the > drm_bridge_connector. I know what you said is right in the sense of the universe cases, but I think the most frequent(majority) use case is that there is only one display bridge on the middle. Therefore, I don't want to movethe connector things into device driver if there is only one display bridge(say it66121) in the middle. After all, there is no *direct physical connection* from the perspective of the hardware. I means that there is no hardware wires connectthe HDMI connector and the DVO port. So display controller drivers should not interact with anything related with the connector on a perfect abstract on the software side. Especially for such a simple use case. It probably make senses to make a decision for themost frequently use case, please also note that this patch didn't introduce any-restriction for the more advance uses cases(multiple bridges in the middle). >> >>>> + >>>> + connector = drm_bridge_connector_init(bridge->dev, encoder); >>>> + if (IS_ERR(connector)) >>>> + return PTR_ERR(connector); >>>> + >>>> + drm_connector_attach_encoder(connector, encoder); >>> This goes into your device driver. >>> >>>> + >>>> + ctx->connector = connector; >>>> + } >>>> >>>> if (ctx->info->id == ID_IT66121) { >>>> ret = regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, >>>> @@ -1632,16 +1651,13 @@ static const char * const it66121_supplies[] = { >>>> "vcn33", "vcn18", "vrf12" >>>> }; > >