Received: by 2002:a05:7412:b101:b0:e2:908c:2ebd with SMTP id az1csp3156271rdb; Thu, 16 Nov 2023 01:32:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IERMZgbbzK+dMmZUytsRrqKza9h0G3GvU9F0zlqYEilIa3OTCV4GhEqWScbjYrFtK/JTOhl X-Received: by 2002:a17:903:1207:b0:1cc:1dde:8680 with SMTP id l7-20020a170903120700b001cc1dde8680mr9898007plh.45.1700127129900; Thu, 16 Nov 2023 01:32:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700127129; cv=none; d=google.com; s=arc-20160816; b=i9bJjrwVR5umbi2xmxeN0JiN11RaN0/9ebzZUFtK1cwsSZxlXC3sYsEFBuyvZlIva6 yP8a7J+y0XWBRgzGcbWFH5qGLQvDntDtvdo7qzKiqY/dRIet8vkLIPIpNsFl0ftAPQSX vFqv7axCW+wMfJcC9wmFS8FsMKPVjvMnBSqLBFWTMjXO7tqiYOGrjuvDB1i13lCQ0JI2 JLRWDA8RWc/91JtLFRuUw0Ay1xLp8sEHAFat/8YSJ3Z+YcGLdsNv6kJv/qnryt0GzrQf H3XJ1iCOTbrrTTnVdHYyn2hgdke9Bk/6gL/siEhjEjpB7qGnBVBGhL72A7EDpIPII290 HghQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=cOalNhNWON0tzgJDSNBQ7PJyNiEFmyM6jXYqhmL2sw4=; fh=PUK5fDm3R4Vh8/ugS67Ou2J04C3xQTxos56K5jZd8tw=; b=zsF8hSErcJHfA2SM1JkYd4PEfB1mSdKRd8AhWr8RjGEXCRdLBnWnTzVnxIUgpdPXDz n4047L7aXPciE6cJwWctUwYzYdxWReqn+UiQnK2iJKrNRvAYMGVZC6czMOHtEV9ox/X9 yQ2+KS3LaGi/Rq5uWrqOgE1qY9W9nqo4aEe0zm75QjDYeU5a6zSJRcUYLtzofsn2pHCV YTz/2JiDmPJYo9fKDdf4Szeql3vTASc5B9JSQ5ZWsPyhZc6eebs5fJ33REO6cSkZ1S7O 4yKehp8Gmcx7sQEblsRzxTk25pDQ61HwayU6sjlXkK4a64zP1NRcppe/dAjorRBFNtbK rQ1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LlIT1MIb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id i19-20020a170902eb5300b001c5fd2a28desi11551472pli.222.2023.11.16.01.32.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Nov 2023 01:32:09 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=LlIT1MIb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 4D01E807C857; Thu, 16 Nov 2023 01:30:55 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235656AbjKPJaw (ORCPT + 99 others); Thu, 16 Nov 2023 04:30:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229919AbjKPJau (ORCPT ); Thu, 16 Nov 2023 04:30:50 -0500 Received: from mail-yw1-x1135.google.com (mail-yw1-x1135.google.com [IPv6:2607:f8b0:4864:20::1135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B87629C for ; Thu, 16 Nov 2023 01:30:46 -0800 (PST) Received: by mail-yw1-x1135.google.com with SMTP id 00721157ae682-5a82c2eb50cso6009357b3.2 for ; Thu, 16 Nov 2023 01:30:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700127046; x=1700731846; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=cOalNhNWON0tzgJDSNBQ7PJyNiEFmyM6jXYqhmL2sw4=; b=LlIT1MIbSYQuwFF1bc2TW/MsUwfu3u/6GkxqtWV+LZFmrycZeTUXgwwV4Wgn1PWZkv GbdumcXgf/YtM/88H8DHTg3Ter9ojqG66ZrYcgJ9UoTTssNyIMUFS8hBfsnZrw+JL/qy lURyJDpzVDC67z3uKAGTM0pFu2zzqvPFjKH2N27iU7JlKt32cEh/PdVQCSGHDxoUXXq3 DKvqHVMa5g6/H3DPeiaTBApckJqqfpcbvQO1b7UA7pkftoygfMDItocNr+4lD7Xahu+8 He3xF5XEOLs8oewfS65JtJM9cUSI20lEiAEoJ3qs57yn9bYhMURgYjNxq1JUlgDGzlWk J1/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700127046; x=1700731846; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cOalNhNWON0tzgJDSNBQ7PJyNiEFmyM6jXYqhmL2sw4=; b=hBBCo7ArLMJcc9UjifesZ61jkSMUrqXzMSUmoLoRgUUGW2GNWI/VwuUn/ocR7ysK6v PH1k00hxbSr60ZBc4ntGrbzmMcdQ8/BJNkbFzdjQzst3hThvMVQzso1K3vTDlFQ7O+Gc TtK+oZznuCjfJl+7/qG+8fXkWLqSDyNz+m9EQXOdZyK0jlBIub/23dRXHnfRbt3MOF9U b6kVtGsoijpkfZmlSdBOUI+dq5C3H7oy8bMQNSMi5j9XvvcYdnr2Uglp2UWYpFY8BBpn hrYhrZxnZxp+h83Texv0zpU0oF70IgcrnrvomiQI1SvSqEO99xZee6thujDsGupZxEQp vn4g== X-Gm-Message-State: AOJu0Yx+VTij0aLoBgu6Xbet0YWv561BW3N9R7q5IuY0uXyHekyjzljU So4g0JCLh6glhB/XTJxHCz9BaLwtCfxCJZEawuQunw== X-Received: by 2002:a0d:ccc4:0:b0:5be:9d2f:2eaf with SMTP id o187-20020a0dccc4000000b005be9d2f2eafmr13881753ywd.0.1700127045878; Thu, 16 Nov 2023 01:30:45 -0800 (PST) MIME-Version: 1.0 References: <20231114150130.497915-1-sui.jingfeng@linux.dev> <20231114150130.497915-9-sui.jingfeng@linux.dev> <79301d04-c0cb-4740-8a6d-27a889b65daf@linux.dev> In-Reply-To: <79301d04-c0cb-4740-8a6d-27a889b65daf@linux.dev> From: Dmitry Baryshkov Date: Thu, 16 Nov 2023 11:30:34 +0200 Message-ID: Subject: Re: [PATCH 8/8] drm/bridge: it66121: Allow link this driver as a lib To: Sui Jingfeng Cc: Phong LE , Neil Armstrong , Maxime Ripard , Sui Jingfeng , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Laurent Pinchart , Thomas Zimmermann Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Thu, 16 Nov 2023 01:30:55 -0800 (PST) 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. > > > >> + > >> + 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" > >> }; > > -- With best wishes Dmitry