From patchwork Tue Jun 13 09:34:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matti Vaittinen X-Patchwork-Id: 13278179 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65FEAC88CB4 for ; Tue, 13 Jun 2023 09:35:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237090AbjFMJfh (ORCPT ); Tue, 13 Jun 2023 05:35:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53070 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240727AbjFMJeo (ORCPT ); Tue, 13 Jun 2023 05:34:44 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FC3310C6; Tue, 13 Jun 2023 02:34:42 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f5f728c4aaso6180723e87.0; Tue, 13 Jun 2023 02:34:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686648881; x=1689240881; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=o6Psb5RzioVdv/upXxW5xP0CZJnFju9Mn7noJG9metU=; b=U0qFk2NHmdFHLVYK1fC29dJoOLEi5nDNoxvVWPiYdXeeJcOK6yjfONOq90JJ95jKis NKPJtFtJzZwCSdiR4kcOVURutAlHbK3eStqyD9xMpChTMmjlpxIvmEshZS941a78iPBw 1SKkileQ/L4oOiDbM24gdHR5PeapqxGzJB64mnMd29sja9F3qpjZVY+CIEFQnVg7YJLG mq+0uUzvwPuC1TkHZFX13EAQME75E5FnJ9B5SNoIH8YlHH2z3Lmve13S0vLFSJFIWquQ 2E/k7eFT9tJXimdIl/dQG1EihPnlhf+MR0i/+Wyf55boBoqh8tgN8CgyEi1oqGNQ2ymz tW5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686648881; x=1689240881; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=o6Psb5RzioVdv/upXxW5xP0CZJnFju9Mn7noJG9metU=; b=BaemCsn4vnIUWskAOcyPaPkcBDViz0adpeVoDUOHdqauvjl51yNO5lCY1GU4Ns4PKQ O7C9ZnQhr4pXeK7iJA9NNgBw4vrne21MERBQtQueGdDjGRHhIZoqAT5/DgteOHcZyaXU dNUpVP6eQzpVEe5T0CEq2GRY3zvt/5UUmE3wMvWmcSQez3pV39MpzCwAVfnsj96F83U8 xB5QgazxK6YqjYc9tmMFI9P6+731a5Ow0mwVSfJ5//UByflzRP/WCOjrYfgSNfxH8RDO Nd7QUQr3lhDLGlktvHqKuo3ixDrlVU5GvVyxwjK0JDCF5013lPnxIOPOlzSZ1RS4xW3f su3g== X-Gm-Message-State: AC+VfDwxXbPTbZans3QZ3xe6864R1pgfb2/wz3aX1f5EnFaU42bg6nZX 1QFd8vwrKX7ScyuAzgVU26A= X-Google-Smtp-Source: ACHHUZ4DvdS43yV7tz2knsJSxTI8isfz/lmehbyv4sDn9SZb2UJ6w/yaUUDhDu6nTh9DrolxDEKvhw== X-Received: by 2002:a19:4f15:0:b0:4f6:5473:7bf0 with SMTP id d21-20020a194f15000000b004f654737bf0mr3802608lfb.21.1686648880585; Tue, 13 Jun 2023 02:34:40 -0700 (PDT) Received: from dc78bmyyyyyyyyyyyyyyt-3.rev.dnainternet.fi (dc78bmyyyyyyyyyyyyyyt-3.rev.dnainternet.fi. [2001:14ba:16f8:1500::1]) by smtp.gmail.com with ESMTPSA id o14-20020a056512050e00b004f517c21ef0sm1722501lfb.82.2023.06.13.02.34.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 02:34:39 -0700 (PDT) Date: Tue, 13 Jun 2023 12:34:36 +0300 From: Matti Vaittinen To: Matti Vaittinen , Matti Vaittinen Cc: Matti Vaittinen , Jonathan Cameron , Lars-Peter Clausen , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] iio: light: bu27034: Fix scale format Message-ID: <5369117315cf05b88cf0ccb87373fd77190f6ca2.1686648422.git.mazziesaccount@gmail.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org The driver is expecting accuracy of NANOs for intensity scale in raw_write. The IIO core is however defaulting to MICROs. This leads the raw-write of smallest scales to never succeed as correct selector(s) are not found. Fix this by implementing the .write_raw_get_fmt callback to use NANO accuracy for writes of IIO_CHAN_INFO_SCALE. Signed-off-by: Matti Vaittinen Fixes: e52afbd61039 ("iio: light: ROHM BU27034 Ambient Light Sensor") --- drivers/iio/light/rohm-bu27034.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/drivers/iio/light/rohm-bu27034.c b/drivers/iio/light/rohm-bu27034.c index 846c3d43aa34..f737d62bdf92 100644 --- a/drivers/iio/light/rohm-bu27034.c +++ b/drivers/iio/light/rohm-bu27034.c @@ -572,7 +572,7 @@ static int bu27034_set_scale(struct bu27034_data *data, int chan, return -EINVAL; if (chan == BU27034_CHAN_ALS) { - if (val == 0 && val2 == 1000) + if (val == 0 && val2 == 1000000) return 0; return -EINVAL; @@ -584,7 +584,7 @@ static int bu27034_set_scale(struct bu27034_data *data, int chan, goto unlock_out; ret = iio_gts_find_gain_sel_for_scale_using_time(&data->gts, time_sel, - val, val2 * 1000, &gain_sel); + val, val2, &gain_sel); if (ret) { /* * Could not support scale with given time. Need to change time. @@ -621,7 +621,7 @@ static int bu27034_set_scale(struct bu27034_data *data, int chan, /* Can we provide requested scale with this time? */ ret = iio_gts_find_gain_sel_for_scale_using_time( - &data->gts, new_time_sel, val, val2 * 1000, + &data->gts, new_time_sel, val, val2, &gain_sel); if (ret) continue; @@ -1213,6 +1213,21 @@ static int bu27034_read_raw(struct iio_dev *idev, } } +static int bu27034_write_raw_get_fmt(struct iio_dev *indio_dev, + struct iio_chan_spec const *chan, + long mask) +{ + + switch (mask) { + case IIO_CHAN_INFO_SCALE: + return IIO_VAL_INT_PLUS_NANO; + case IIO_CHAN_INFO_INT_TIME: + return IIO_VAL_INT_PLUS_MICRO; + default: + return -EINVAL; + } +} + static int bu27034_write_raw(struct iio_dev *idev, struct iio_chan_spec const *chan, int val, int val2, long mask) @@ -1260,6 +1275,7 @@ static int bu27034_read_avail(struct iio_dev *idev, static const struct iio_info bu27034_info = { .read_raw = &bu27034_read_raw, .write_raw = &bu27034_write_raw, + .write_raw_get_fmt = &bu27034_write_raw_get_fmt, .read_avail = &bu27034_read_avail, };