From patchwork Tue Jun 13 09:34:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matti Vaittinen X-Patchwork-Id: 13278180 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 4B0A4C88CB6 for ; Tue, 13 Jun 2023 09:35:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238699AbjFMJfi (ORCPT ); Tue, 13 Jun 2023 05:35:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241941AbjFMJfE (ORCPT ); Tue, 13 Jun 2023 05:35:04 -0400 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8803610DE; Tue, 13 Jun 2023 02:35:01 -0700 (PDT) Received: by mail-lf1-x12e.google.com with SMTP id 2adb3069b0e04-4f642a24568so6432082e87.2; Tue, 13 Jun 2023 02:35:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686648900; x=1689240900; 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=oKSIUrG32f08MFv02xTotJtCAWI/Mr97EQR5Ga4cpVM=; b=B+2aL3qmIsa0vDLr8SiPBpJu3gqTyGGPDdEiyfLAm7ojIxcfDdzb99Kk56so0Eeg4E LaHsApWadMm6oFEXfO4lBw5Agao1TwdPwCCbjYdPRenb8iS8VbSa5DL3lQGkBT7r3dSZ sEYsIY82nIqPnqdu5EEFtp5aTHIjLMTuraU6hta77AHC5t4T3gZRMGJYJTRK1Rfvpy61 f5+J6diqQ3nO51s0xNXOE4jiePyf+TPWak8VEMyR1Z6wALxvIdmCuYtPRzQqxLm/7786 YpEdebJXAwPQjgA4fW2xMAinzF+ha4QqSNgAe1kmgmqxQ2vw0gqSE4bPtC325yAwpzOq f3lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686648900; x=1689240900; 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=oKSIUrG32f08MFv02xTotJtCAWI/Mr97EQR5Ga4cpVM=; b=SMV9qJwlZ0XPPvMhryPKMjYMG9sZFa2MVfjbW81mw+W9PJ88THMcCf6AoAHWrmn7jC n6hVmVtTxZAnO+eD56CA460KBDavP6RIsehUUqo5/RQGQgEn3PIF/KIGPtEdKpGXeVVb tcsT5ywgL3+7HfHeEEGb02gkB9OdYDz/zR+r0vMtNLjOlRQbomPa3rAsDB0ELnxJXr9m Nm9iIM87cHg/kAhEGCwxsG20OWCWS4+8b7v+K9HtaMWZLpd8Wo1lbYAVKFpix7Y2DpgA Nf5cSL1x/8b7EMVrYSEJN18XNWigsNUHEXRlwJV5U9F7OfMktNBbxVzT6hyROkgskHKJ 9Itw== X-Gm-Message-State: AC+VfDzKbqMdfpeVcNIwSTtfqg62Oq9inlH+hWJGV5JQb4/p3YDhqJOV JUKnFREk4MwIF1Qf5GP10Q9zO7KLdPk= X-Google-Smtp-Source: ACHHUZ45oIsxO/H3gPCB+qwNMtRcE1YV78oGM+P6l/w8IlLjKFyyKh+xcyOfBkPDq0FxghLosuGmtg== X-Received: by 2002:ac2:464a:0:b0:4f6:1160:b956 with SMTP id s10-20020ac2464a000000b004f61160b956mr5067416lfo.54.1686648899686; Tue, 13 Jun 2023 02:34:59 -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 q28-20020ac24a7c000000b004f00189e1dcsm1707261lfp.117.2023.06.13.02.34.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 02:34:59 -0700 (PDT) Date: Tue, 13 Jun 2023 12:34:55 +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 2/3] iio: light: bu27008: Fix scale format Message-ID: 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 tag not added because AFACS the bu27008 is not yet in any releases. --- drivers/iio/light/rohm-bu27008.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/drivers/iio/light/rohm-bu27008.c b/drivers/iio/light/rohm-bu27008.c index 489902bed7f0..80eb14ea8193 100644 --- a/drivers/iio/light/rohm-bu27008.c +++ b/drivers/iio/light/rohm-bu27008.c @@ -633,7 +633,7 @@ static int bu27008_try_find_new_time_gain(struct bu27008_data *data, int val, for (i = 0; i < data->gts.num_itime; i++) { new_time_sel = data->gts.itime_table[i].sel; ret = iio_gts_find_gain_sel_for_scale_using_time(&data->gts, - new_time_sel, val, val2 * 1000, gain_sel); + new_time_sel, val, val2, gain_sel); if (!ret) break; } @@ -662,7 +662,7 @@ static int bu27008_set_scale(struct bu27008_data *data, 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) { ret = bu27008_try_find_new_time_gain(data, val, val2, &gain_sel); if (ret) @@ -677,6 +677,21 @@ static int bu27008_set_scale(struct bu27008_data *data, return ret; } +static int bu27008_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 bu27008_write_raw(struct iio_dev *idev, struct iio_chan_spec const *chan, int val, int val2, long mask) @@ -756,6 +771,7 @@ static int bu27008_update_scan_mode(struct iio_dev *idev, static const struct iio_info bu27008_info = { .read_raw = &bu27008_read_raw, .write_raw = &bu27008_write_raw, + .write_raw_get_fmt = &bu27008_write_raw_get_fmt, .read_avail = &bu27008_read_avail, .update_scan_mode = bu27008_update_scan_mode, .validate_trigger = iio_validate_own_trigger,