Received: by 2002:ab2:3319:0:b0:1ef:7a0f:c32d with SMTP id i25csp104693lqc; Thu, 7 Mar 2024 11:33:47 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCW2nLeony6GMOGL+P42xKHcgU/3Ug5gyE0HV0+owP869J5odQa+VPX0bYleswbm302L6DeYefyR4kb8SaIr0z5LCfBsLKAsD/spWfh49w== X-Google-Smtp-Source: AGHT+IHCP8JSjv6lfMfq2z2fI2zd/M+cRC+QxyQVXNg6TVqasFPQaSHvhWxo0D7jht9cuLzS/yOA X-Received: by 2002:a05:6a21:8cc5:b0:1a1:47cb:9709 with SMTP id ta5-20020a056a218cc500b001a147cb9709mr10469066pzb.44.1709840027395; Thu, 07 Mar 2024 11:33:47 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709840027; cv=pass; d=google.com; s=arc-20160816; b=N3dzZxLRMPxFpPUA+RhuS5myUT0VHyA4nJ+hY4gbA5AwEfgDxe+7U+sPGK+o5dRyvF KtWQPkRBbRQIlHkejDZF61Q/14Cq5TFZxA+2tAZ/GA9XmQjC8TTTvSLrOoL+qRH4csOY TmUUW55Y1YtKWvm6X3bUqc8WyKsAvXuLDMiptS+sXiT+DZqUT5u3+WFuyq6COm5UB0TI XLDPPJiRGjKqrXkWGKFCW5J1yT3RgckmGGPVtv0HVXtVauBN2NlTJDwgPFxBHcgFlFCV 5Z/76vyqs9CGlS8klC5P+MyJKdQhtV3DWqJFaj+Dj5CmMntiR6hloGctHL/rkkgp5+d3 Ebgg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :dkim-signature; bh=PCETR6xATNNqCCnkCbkWB2goU+g4Ke4A3ZOjvnBM1l4=; fh=Z9WeS8z5XbEwXCuGKMi0eXoOa/C6A9rRC242En11RQU=; b=rpoAn46froK32aNSvJ5fh3NEkcw7zIOT2PhSWEz6iaDFyN1OX+G6aFQvxO3nlG5+Xx FpxGO4IsSUNn6KaRe2TRrFRNCibwGgp4hADZxX+uVsc7t7wkb72gMKS/nMMkiFPjSfoe 9ZZSdaMbCUVxxFCepmrGTdstm038kiA3Gt6otQihVnE1+JuALz8FqiEUIeg3cvSMXQtA jd11A6/P3HGbEqtDCgv7M8HacJ1xc80/Jku94KatuDBZl2qy8OOCv2tnFs6TNXBcmeFT RFEr1gvgG0WQAHwG4nl6a1nrTaqwQfIVVuRJdajwNabdEfLIi8g2j626idWoe1/3Gjph vGBA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="n6Jhcrs/"; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-96109-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-96109-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id u12-20020a65670c000000b005dc4912432csi14893556pgf.577.2024.03.07.11.33.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Mar 2024 11:33:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-96109-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="n6Jhcrs/"; arc=pass (i=1 spf=pass spfdomain=linaro.org dkim=pass dkdomain=linaro.org dmarc=pass fromdomain=linaro.org); spf=pass (google.com: domain of linux-kernel+bounces-96109-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-96109-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 896FDB22F46 for ; Thu, 7 Mar 2024 19:31:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 078F7137C25; Thu, 7 Mar 2024 19:31:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="n6Jhcrs/" Received: from mail-yw1-f177.google.com (mail-yw1-f177.google.com [209.85.128.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 412E61369BD for ; Thu, 7 Mar 2024 19:31:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709839881; cv=none; b=Ao5YwW3YjuH4B17VI3WN0xd9R2uSYenEPm9owuQzOoSmqO/dH/x2fDYVo7HqIuLsWDYOgbo2ycXBqI/gl7u2QCQh0D7oqGhXb+newgPE0qHq40l2+bzpWhdax3qOe5uOHlBiirPOgYmd4amUPWx8b0dWYgpVQSMmT4igIs8KSOk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709839881; c=relaxed/simple; bh=wjHLIsIjsz5YtE4R2c+azsfc9D2Q1R8pthpsCOBRyQI=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=iVwJtQ/3ahUuyfD0VvA1ZBPaCbxWIetN4TULvuNKlx0KS//OM6ao2MFJLoUg+ea8+yHRrOq7N3LtbfsWSfByOxPzSCnt6a0sQ3pXYlRZFeW6rW9uY+ttFaAmDxsksZBnV8ex2alCAYr8Fmu7xNUJJUFTc2ubGAl7LZRcqZA3akg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=n6Jhcrs/; arc=none smtp.client-ip=209.85.128.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-yw1-f177.google.com with SMTP id 00721157ae682-60982a6d8a7so1686667b3.0 for ; Thu, 07 Mar 2024 11:31:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1709839878; x=1710444678; 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=PCETR6xATNNqCCnkCbkWB2goU+g4Ke4A3ZOjvnBM1l4=; b=n6Jhcrs/39KJnnbv+P+CCcbTmX3xxQPDlFvubXjNMRwMWe74Vekma7zMlQq9KhvTVm LYUGx3hn/2z9+b20FZS+MnRIPzGaJAuRQzYZCzWpA0knFeD3u7UtCR5ZzXKVekc7N4pP JNw2kH+yP8ilNm8IUW/nsoVjSQ3h3rV3zB4CxhLI3KNCbG2jSWH5/C42wJj8eyjSbCUa IDqAJ8CtXAYeh9STcwudKi5W4n/JMQvoopU2oAT/jZS5y0qZEMR+RdVz5CvaTSujet/D U9g0z8cpIoFCjuyNkoDf/nVlKkxIcUBpOtFIn3uNDae95HxIq8ijukUU1tyUeuihGUCH +ZzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709839878; x=1710444678; 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=PCETR6xATNNqCCnkCbkWB2goU+g4Ke4A3ZOjvnBM1l4=; b=e+pOcLWXmKjzML9nHhsw2C7iNE1YXZvp1FtIa5DRGIvtdAIMeZPSgQu3Og9yiWncbx bCk2xubk6Jjd6OL+TKDIdNsTHg7cpKA+478HwDMlGuzVB4Hkfnap87gUhxEF5fo9PtGB oY/6nkiqN2RASe0noeYxt6ptyKig/o4bt5GReka6rU2Q9pN1E1evw629Sd+sNnIvu4kU t5ejQeKV+hhW46sIk5xUjH/66sP8aRIDa68a3B0n1AwY4PM6mQZS67/Pe8KTmDnwUw5N w/iPttqnc2jTyu6zTRXb8CV00imn5kioZ0RHwTRPLRo4NQhzoGM3R3Fsud3wagwR4zLU zd4A== X-Forwarded-Encrypted: i=1; AJvYcCUgzYfYTnBO/VrcMz6HLLxL2p9PV3Afqzj0jacv2D2aT5wR+9USuiyHjJYYNAlUKFsyO+jz3RvJzCyf8/Yyc4REbFv3IuFCWst+0tld X-Gm-Message-State: AOJu0YxNK3IZXhjQo6vqc7YCFiiF9iRJtiJVde2U7v+EfiGQ51UVVkVl shuJ22xwlHeQdaG2zQazTo9bbgv/LybqHFCgF7VQ4oZpj2pNuwHz90UqKGzQYrAwxborPTgfn/A 2ybN8CXCeVyDwMjE0WMZ3JF/3y3NNPD6Lo3cA/A== X-Received: by 2002:a0d:f6c3:0:b0:609:8719:b935 with SMTP id g186-20020a0df6c3000000b006098719b935mr20208837ywf.8.1709839878122; Thu, 07 Mar 2024 11:31:18 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240307172334.1753343-1-sui.jingfeng@linux.dev> <20240307172334.1753343-5-sui.jingfeng@linux.dev> In-Reply-To: <20240307172334.1753343-5-sui.jingfeng@linux.dev> From: Dmitry Baryshkov Date: Thu, 7 Mar 2024 21:31:06 +0200 Message-ID: Subject: Re: [PATCH v2 4/4] drm-bridge: it66121: Use fwnode API to acquire device properties To: Sui Jingfeng Cc: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Phong LE , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" On Thu, 7 Mar 2024 at 19:24, Sui Jingfeng wrote: > > Make this driver less DT-dependent by calling the freshly created helpers, > should be no functional changes for DT based systems. But open the door for > otherwise use cases. Even though there is no user emerged yet, this still > do no harms. In fact, we reduce some boilerplate across drm bridge drivers. > > Signed-off-by: Sui Jingfeng > --- > drivers/gpu/drm/bridge/ite-it66121.c | 63 ++++++++++++++++------------ > 1 file changed, 36 insertions(+), 27 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c > index 1c3433b5e366..a2cf2be86065 100644 > --- a/drivers/gpu/drm/bridge/ite-it66121.c > +++ b/drivers/gpu/drm/bridge/ite-it66121.c > @@ -15,7 +15,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -1480,7 +1479,7 @@ static int it66121_audio_codec_init(struct it66121_ctx *ctx, struct device *dev) > > dev_dbg(dev, "%s\n", __func__); > > - if (!of_property_read_bool(dev->of_node, "#sound-dai-cells")) { > + if (!fwnode_property_present(dev_fwnode(dev), "#sound-dai-cells")) { > dev_info(dev, "No \"#sound-dai-cells\", no audio\n"); > return 0; > } > @@ -1503,13 +1502,37 @@ static const char * const it66121_supplies[] = { > "vcn33", "vcn18", "vrf12" > }; > > +static int it66121_read_bus_width(struct fwnode_handle *fwnode, u32 port, > + u32 *bus_width) > +{ > + struct fwnode_handle *endpoint; > + u32 val; > + int ret; > + > + endpoint = fwnode_graph_get_endpoint_by_id(fwnode, port, 0, 0); > + if (!endpoint) > + return -EINVAL; > + > + ret = fwnode_property_read_u32(endpoint, "bus-width", &val); > + fwnode_handle_put(endpoint); > + if (ret) > + return ret; > + > + if (val != 12 && val != 24) > + return -EINVAL; > + > + *bus_width = val; > + > + return 0; > +} > + > static int it66121_probe(struct i2c_client *client) > { > u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; > - struct device_node *ep; > int ret; > struct it66121_ctx *ctx; > struct device *dev = &client->dev; > + struct fwnode_handle *fwnode = dev_fwnode(dev); > > if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { > dev_err(dev, "I2C check functionality failed.\n"); > @@ -1520,37 +1543,23 @@ static int it66121_probe(struct i2c_client *client) > if (!ctx) > return -ENOMEM; > > - ep = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0); > - if (!ep) > - return -EINVAL; > - > ctx->dev = dev; > ctx->client = client; > ctx->info = i2c_get_match_data(client); > > - of_property_read_u32(ep, "bus-width", &ctx->bus_width); > - of_node_put(ep); > - > - if (ctx->bus_width != 12 && ctx->bus_width != 24) > - return -EINVAL; > - > - ep = of_graph_get_remote_node(dev->of_node, 1, -1); > - if (!ep) { > - dev_err(ctx->dev, "The endpoint is unconnected\n"); > - return -EINVAL; > - } > - > - if (!of_device_is_available(ep)) { > - of_node_put(ep); > - dev_err(ctx->dev, "The remote device is disabled\n"); > - return -ENODEV; > - } > + /* Endpoint of port@0 contains the bus-width property */ > + ret = it66121_read_bus_width(fwnode, 0, &ctx->bus_width); There is no need to pass port as an argument to that function. > + if (ret) > + return ret; > > - ctx->next_bridge = of_drm_find_bridge(ep); > - of_node_put(ep); > + ctx->next_bridge = drm_bridge_find_next_bridge_by_fwnode(fwnode, 1); > if (!ctx->next_bridge) { > dev_dbg(ctx->dev, "Next bridge not found, deferring probe\n"); > return -EPROBE_DEFER; > + } else if (IS_ERR(ctx->next_bridge)) { > + ret = PTR_ERR(ctx->next_bridge); > + dev_err(dev, "Error in founding the next bridge: %d\n", ret); > + return ret; Nit: I'd usually expect this part to be in a different order: first check for error, then check for absence. But that's a minor thing. > } > > i2c_set_clientdata(client, ctx); > @@ -1584,9 +1593,9 @@ static int it66121_probe(struct i2c_client *client) > } > > ctx->bridge.funcs = &it66121_bridge_funcs; > - ctx->bridge.of_node = dev->of_node; > ctx->bridge.type = DRM_MODE_CONNECTOR_HDMIA; > ctx->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_HPD; > + drm_bridge_set_node(&ctx->bridge, fwnode); > > ret = devm_request_threaded_irq(dev, client->irq, NULL, it66121_irq_threaded_handler, > IRQF_ONESHOT, dev_name(dev), ctx); > -- > 2.34.1 > -- With best wishes Dmitry