Received: by 2002:a05:7412:b101:b0:e2:908c:2ebd with SMTP id az1csp3256508rdb; Thu, 16 Nov 2023 05:01:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0e1ZC0BDH+Nb1J+2avuAVaPqS4r9jJN3a8SInhE+3WuuTAzYKY23i/VNBQtZyyMw5JTOg X-Received: by 2002:a05:6a21:32a0:b0:163:9f1d:b464 with SMTP id yt32-20020a056a2132a000b001639f1db464mr15346922pzb.5.1700139688572; Thu, 16 Nov 2023 05:01:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700139688; cv=none; d=google.com; s=arc-20160816; b=EYON+ID3l5ucD8tQ1bkJZm26gYPA4m8Q4YbObnPw/qBaFasZlNkD/inYIG/tjAh6ZC gKXZOrVH8ItXe5/gPMm5XCOnhUf8kBx5nJ7QD9CktghqrX9hEYZmqr4EWPkM7JvybcWd 6e3Q8sDFVDLhfZJy8xT0zx9S0xlNV7QR6SxiN7Hp7DXcWHbIiydwfOYaFUc0kVQvnS8H 7Dx472Gi2LKntbu4HaJiiJsJvkqeGJwpiNNuZgVT0f4kAHVwiND9OnMwLtL0okgxi85B HcQugy0EisLMtm19D89YyfFbLFNrIH5wYc4VLNiMzzGvgkmblTbGK/LgrN4LiucyAYPz bEFw== 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=U/PXn3eeHS/wDgkaVCJ1lURblbDajIyUVP8u15N5ho8=; fh=PUK5fDm3R4Vh8/ugS67Ou2J04C3xQTxos56K5jZd8tw=; b=HmqmJdS5bbXPKICTBNSg5DPb1+l+5tTucwpmNt7mVPMcr7wqZkagTe8q8x5ZTKMPkT S2sx6+FfaL7uviyCt0s9YPUR13sagTmes2RvMKp3fJsMmSoEHLG2DKIj9nUK6ERvLFeT 2oo+DvysPTZAcqIL229t9Uh8PT3BHh0r/jEkSrBFRS2fEXbvDh/V2kDnVAadgV5nHUQR dhgoDNbfk7PSCvzU/Rwzy7qVw3BbSDrObGYPymMuS0gCRjVXQz3eX0IXlW6Yq3703qdA 2Nb/s+GR0TazOQu+fxC3F+6Bn+5XNnQSZBjl5md8+gRqZ1SSxRLNyeDLWOoDB4sdDAdU olMQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VLKd1rzi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id j8-20020a056a00130800b006be0857ab24si12318877pfu.19.2023.11.16.05.01.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Nov 2023 05:01:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=VLKd1rzi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 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 lipwig.vger.email (Postfix) with ESMTP id 68C3F818450E; Thu, 16 Nov 2023 05:01:24 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230220AbjKPNBO (ORCPT + 99 others); Thu, 16 Nov 2023 08:01:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229749AbjKPNBM (ORCPT ); Thu, 16 Nov 2023 08:01:12 -0500 Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B7357AD for ; Thu, 16 Nov 2023 05:01:08 -0800 (PST) Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-daf26d84100so728894276.3 for ; Thu, 16 Nov 2023 05:01:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700139668; x=1700744468; 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=U/PXn3eeHS/wDgkaVCJ1lURblbDajIyUVP8u15N5ho8=; b=VLKd1rzidkcUsMtXXbc6NGzD4ONpuL6C56G79STasElpsLMRvkAKwe9EUg3bjobfrB 03Gq7E3qjIR9qUQYupahdhVec9a5uP5svoXRpiFNUcx+pTFmw79IWKhSmFICtpnS86sQ l1g+BW8sPinkgaXtSYGRW4Yyf8XaxgmtEwOGoJZOM/CKFsK7rzAfXDl10+SMfoqSo0NL wGxsslT5yKLOwtT6aqzQuTeSeOcrbhw3UKSCT+6LcD87burBuRlhrLsXkGrU2LeeojtX chT8RNfCcn7afwJOJJZordfsaxg/Ly35Z+YGWMXvPs3jE3SFH7JBOizd36OqHtRMLYXQ V8CQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700139668; x=1700744468; 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=U/PXn3eeHS/wDgkaVCJ1lURblbDajIyUVP8u15N5ho8=; b=lHK4spd6KXtEPMD/YNeRg4OLHcPk5t8unUSnSVIYm6Io4YcGfrWkkkMdfhKO6yJkTo HGAHfSFwZavoPJ9ejQXgm7b78cxWlkQph+5mW3AvdI9VRShDCnDIJpMAFGfk2zuku8hZ 4vUxHh3aElcVU0IzEobOJrmBwviodbHT1lgJCk0G6cILMQz9N7avZc7cSH4Mi0kb7O6U eT6JeO4ty0nKUeghKHgAgD1LAaWO2qXDmyA39lpkUKaH5j7rVxm+rsfdGmLPXsiDX2uS GSC8qIc2wTJKcWC+Aa5fFBxjveBvUdkvc5QyQmCpjTITdT//oc4sQUZORedITKHPAZD1 qNSw== X-Gm-Message-State: AOJu0YzuNz3H1DlVp4IdmidziKveX4fRcS2ixzYhFwyD4Bw4dEWIazN8 THZitMnzI1vzT9qmpfvEBsMk2XmS0+ghn0PEIh6vh/xuR8rGq5fF X-Received: by 2002:a05:6902:1149:b0:da0:5346:f32b with SMTP id p9-20020a056902114900b00da05346f32bmr18485222ybu.53.1700139667560; Thu, 16 Nov 2023 05:01:07 -0800 (PST) MIME-Version: 1.0 References: <20231114150130.497915-1-sui.jingfeng@linux.dev> <20231114150130.497915-6-sui.jingfeng@linux.dev> <7602cd83-0e05-4e11-9bd1-10eb1d48a507@linux.dev> In-Reply-To: <7602cd83-0e05-4e11-9bd1-10eb1d48a507@linux.dev> From: Dmitry Baryshkov Date: Thu, 16 Nov 2023 15:00:55 +0200 Message-ID: Subject: Re: [PATCH 5/8] drm/bridge: it66121: Add a helper function to read chip id 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=-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 autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.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 (lipwig.vger.email [0.0.0.0]); Thu, 16 Nov 2023 05:01:24 -0800 (PST) On Thu, 16 Nov 2023 at 14:18, Sui Jingfeng wrote: > > Hi, > > > On 2023/11/15 00:06, Dmitry Baryshkov wrote: > > On Tue, 14 Nov 2023 at 17:09, Sui Jingfeng wrote: > >> From: Sui Jingfeng > >> > >> Read the required chip id data back by calling regmap_bulk_read() once, > >> reduce the number of local variables needed in it66121_probe() function. > >> And store its values into struct it66121_ctx, as it will be used latter. > >> > >> Signed-off-by: Sui Jingfeng > >> --- > >> drivers/gpu/drm/bridge/ite-it66121.c | 47 ++++++++++++++++++++-------- > >> 1 file changed, 34 insertions(+), 13 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c > >> index 7e473beefc79..f36d05331f25 100644 > >> --- a/drivers/gpu/drm/bridge/ite-it66121.c > >> +++ b/drivers/gpu/drm/bridge/ite-it66121.c > >> @@ -313,6 +313,9 @@ struct it66121_ctx { > >> bool auto_cts; > >> } audio; > >> const struct it66121_chip_info *info; > >> + u16 vender_id; > >> + u16 device_id; > >> + u8 revision; > > There is no need to store them, they are not used by the driver anywhere. > > > >> }; > >> > >> static inline struct it66121_ctx *bridge_to_it66121(struct drm_bridge *bridge) > >> @@ -399,6 +402,30 @@ static void it66121_hw_reset(struct it66121_ctx *ctx) > >> gpiod_set_value(ctx->gpio_reset, 0); > >> } > >> > >> +static int it66121_read_chip_id(struct it66121_ctx *ctx, bool verbose) > >> +{ > >> + u8 id[4]; > >> + int ret; > >> + > >> + ret = regmap_bulk_read(ctx->regmap, IT66121_VENDOR_ID0_REG, id, 4); > >> + if (ret < 0) { > >> + dev_err(ctx->dev, "Failed to read chip ID: %d\n", ret); > >> + return ret; > >> + } > >> + > >> + ctx->vender_id = (u16)id[1] << 8 | id[0]; > >> + ctx->device_id = ((u16)(id[3] & IT66121_DEVICE_ID1_MASK) << 8 | id[2]); > >> + /* Revision is shared with DEVICE_ID1 */ > >> + ctx->revision = FIELD_GET(IT66121_REVISION_MASK, id[3]); > >> + > >> + if (verbose) { > >> + dev_info(ctx->dev, "Found ITE66121: 0x%x%x, revision: %u\n", > >> + ctx->vender_id, ctx->device_id, ctx->revision); > >> + } > >> + > >> + return 0; > >> +} > >> + > >> static inline int it66121_preamble_ddc(struct it66121_ctx *ctx) > >> { > >> return regmap_write(ctx->regmap, IT66121_MASTER_SEL_REG, IT66121_MASTER_SEL_HOST); > >> @@ -1561,7 +1588,6 @@ static const char * const it66121_supplies[] = { > >> > >> static int it66121_probe(struct i2c_client *client) > >> { > >> - u32 revision_id, vendor_ids[2] = { 0 }, device_ids[2] = { 0 }; > >> int ret; > >> struct it66121_ctx *ctx; > >> struct device *dev = &client->dev; > >> @@ -1603,19 +1629,13 @@ static int it66121_probe(struct i2c_client *client) > >> if (IS_ERR(ctx->regmap)) > >> return PTR_ERR(ctx->regmap); > >> > >> - regmap_read(ctx->regmap, IT66121_VENDOR_ID0_REG, &vendor_ids[0]); > >> - regmap_read(ctx->regmap, IT66121_VENDOR_ID1_REG, &vendor_ids[1]); > >> - regmap_read(ctx->regmap, IT66121_DEVICE_ID0_REG, &device_ids[0]); > >> - regmap_read(ctx->regmap, IT66121_DEVICE_ID1_REG, &device_ids[1]); > >> - > >> - /* Revision is shared with DEVICE_ID1 */ > >> - revision_id = FIELD_GET(IT66121_REVISION_MASK, device_ids[1]); > >> - device_ids[1] &= IT66121_DEVICE_ID1_MASK; > >> + ret = it66121_read_chip_id(ctx, false); > >> + if (ret) > >> + return ret; > >> > >> - if ((vendor_ids[1] << 8 | vendor_ids[0]) != ctx->info->vid || > >> - (device_ids[1] << 8 | device_ids[0]) != ctx->info->pid) { > >> + if (ctx->vender_id != ctx->info->vid || > >> + ctx->device_id != ctx->info->pid) > > Q: There is no need to store them, they are not used by the driver anywhere. > > A: Here it is used, it is also used by the 0007-patch to get the entity(instance)-specific data. And the patch 7 will be changed once you have proper i2c client struct registered. > > > Since it6610 was introduced, this is used for chip identifying. > It can also be used with in debugfs context, to show who I am. I'd say, there is little point in whoami debugfs files. Debugfs is for the useful information. > > > >> return -ENODEV; > >> - } > >> > >> ctx->bridge.funcs = &it66121_bridge_funcs; > >> ctx->bridge.of_node = dev->of_node; > >> @@ -1633,7 +1653,8 @@ static int it66121_probe(struct i2c_client *client) > >> > >> drm_bridge_add(&ctx->bridge); > >> > >> - dev_info(dev, "IT66121 revision %d probed\n", revision_id); > >> + dev_info(dev, "IT66121 probed, chip id: 0x%x:0x%x, revision: %u\n", > >> + ctx->vender_id, ctx->device_id, ctx->revision); > >> > >> return 0; > >> } > >> -- > >> 2.34.1 > >> > > -- With best wishes Dmitry