Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1886516pxp; Mon, 21 Mar 2022 07:05:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEWN7y+q+M9a+LetRxfeU0+xOrPEa/U8XPE2/KQyhNnXOgRrrHSaKViqdK9OZraNGqKQCy X-Received: by 2002:a05:6402:35d0:b0:416:cee9:53d9 with SMTP id z16-20020a05640235d000b00416cee953d9mr23059567edc.82.1647871529598; Mon, 21 Mar 2022 07:05:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647871529; cv=none; d=google.com; s=arc-20160816; b=skjJzVtqBPFjzaOH+QUiUPGTozZAUWFfrJCQUlK4+Ukj39aT0qYnkrsQ4ufvxQ6QEb nC53ap40w1A07PCQkA7iXZfU9pz4f8FjvCcLXGmsiZDZzk8pqR+BxW6tZ727yvaOnfki uYSI1sFsn2WC0utgVp8k7IcCXQEBJWoafrmtQOalPZdtCyfLFtlvLej4oVO/zt/YyGaW NOXaop5PI41XZy2K3/fC9CO4oJTNz6PXePdnev4qE7xERAu0CyOhjanXiX/NVZa/aGCi zsUmdRtwOBfH4VlFdS/eHAQ5/X8masjEPBW8naNIVFij5gfS/dUQ+s5qOFFqIVpkGOmc 7qvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature; bh=cSpAkQcpZl1r+KOri4OxZe/WhPfToGZ+McCIKqW74Wc=; b=GHtow7CjXfNjRX0B3+aTP4luVawFeJHdQuCr7oELvf11B/f09wF7pXlOdjjELNjysj L8CEjuixA13VjpV8o9zv/mtbGBKw9y+y7ZQyRf+llnSV0AZCHhG5tDQZ90NQuDAdLtKw 6j6av49z92feBmAzosPdCMTezD5mPJPbniuaECBQfNwj1SosUIjlOJT7NGns6giz6g7D DgRyBplesIC5dgSbKNUT21t3p5CkN5pk/gPVfq8XhSnODOo0SLkBKj0zYSt3WmzueUfr U4wp+tsTqhlhPWtlbEvg/a3uBNWB98U892kK50+qWHJOKUSU95V1V7A+lBJUebP7h1AY QSsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FJMqL4o+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x15-20020a50f18f000000b00418c2b5be2csi10992996edl.270.2022.03.21.07.05.00; Mon, 21 Mar 2022 07:05:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=FJMqL4o+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243451AbiCSPUn (ORCPT + 99 others); Sat, 19 Mar 2022 11:20:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230497AbiCSPUk (ORCPT ); Sat, 19 Mar 2022 11:20:40 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65C77227C4A; Sat, 19 Mar 2022 08:19:19 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 1D9A5B801BE; Sat, 19 Mar 2022 15:19:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 44030C340EC; Sat, 19 Mar 2022 15:19:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1647703156; bh=voeVY0dquz3eQPqFCqVamA7LalOvjToF8Z2pWGbtxWg=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=FJMqL4o+aFjBGTHdCCYF1S/NQGb0Dsrj2eI6ODOAvQ1JfsYarwk4lPbmw0PHuruSt k/6XGWaOFPTC8PKJ4X8sEyVzSObOX4uHVHGN0JMmGSC3Dm8WqLfd0dZ+X96ZZ0/mD4 wWdxlMZbihplQ8L7P5QBNVwvXD6vLCqTz/COUx71j70iUTbfe54UsbxS71Jit6/XVe vy1BNaPABNkWTLg3hP/MrTAz+CJennOnZHMe3mG7r9K52Q4rh8eLI6IIk2H4Yf1XVW BJcj7TzQGLJ1xLfN4xnfNnuL5Vi16mLazDUngjplgDeagHJVTY1dUow5Ndq39X1qdi DtRUATMPF4djA== Date: Sat, 19 Mar 2022 15:26:41 +0000 From: Jonathan Cameron To: Stephen Boyd Cc: Lars-Peter Clausen , linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org, Gwendal Grignou Subject: Re: [PATCH] iio:proximity:sx9324: Fix hardware gain read/write Message-ID: <20220319152641.49d8b3e1@jic23-huawei> In-Reply-To: <20220318204808.3404542-1-swboyd@chromium.org> References: <20220318204808.3404542-1-swboyd@chromium.org> X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 On Fri, 18 Mar 2022 13:48:08 -0700 Stephen Boyd wrote: Hi Stephen, > There are four possible gain values according to sx9324_gain_vals[]: 1, > 2, 4, and 8. When writing and reading the register the values are off by > one. > The bits should be set according to this equation: > > ilog2() + 1 > > so that a gain of 8 is 0x3 in the register field and a gain of 4 is 0x2 > in the register field, etc. Fix up the functions. So is the 0 value reserved? I can't find an sx9324 datasheet but he 9320 is online and that seems to be the case there. If so please state that in this description as well. > > Fixes: 4c18a890dff8 ("iio:proximity:sx9324: Add SX9324 support") > Cc: Gwendal Grignou > Signed-off-by: Stephen Boyd > --- > drivers/iio/proximity/sx9324.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/proximity/sx9324.c b/drivers/iio/proximity/sx9324.c > index 0d9bbbb50cb4..a3c8e02f5a56 100644 > --- a/drivers/iio/proximity/sx9324.c > +++ b/drivers/iio/proximity/sx9324.c > @@ -379,7 +379,10 @@ static int sx9324_read_gain(struct sx_common_data *data, > if (ret) > return ret; > > - *val = 1 << FIELD_GET(SX9324_REG_PROX_CTRL0_GAIN_MASK, regval); > + regval = FIELD_GET(SX9324_REG_PROX_CTRL0_GAIN_MASK, regval); > + if (regval) If 0 is reserved then I'd return and error code here to indicate we don't know what the gain is rather than carrying on regardless. Or is this going to cause problems as it will be an ABI change (error return possible when it wasn't really before)? > + regval--; > + *val = 1 << regval; > > return IIO_VAL_INT; > } > @@ -725,7 +728,7 @@ static int sx9324_write_gain(struct sx_common_data *data, > unsigned int gain, reg; > int ret; > > - gain = ilog2(val); > + gain = ilog2(val) + 1; > reg = SX9324_REG_PROX_CTRL0 + chan->channel / 2; > gain = FIELD_PREP(SX9324_REG_PROX_CTRL0_GAIN_MASK, gain); > > > base-commit: a8ee3b32f5da6c77a5ccc0e42c2250d61ba54fe0