Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1267559imm; Sun, 15 Jul 2018 03:37:30 -0700 (PDT) X-Google-Smtp-Source: AAOMgpc9wEzMXYWxJ4UxG/XT3cmGJw5dzdOJkwzrMGbDQYD/ZmkrMoIy2wMie5aE06vA7TpEvnhy X-Received: by 2002:a17:902:b28:: with SMTP id 37-v6mr12537844plq.201.1531651050500; Sun, 15 Jul 2018 03:37:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531651050; cv=none; d=google.com; s=arc-20160816; b=z7QPc0+ZiKtDXLdDT1WCJ5FcL0Q5hVUkpK9/Wm/PggfXrkXGJWqnfXoX4CFt9m+Wrp O13uhFWb1V2Jc1JKboBeMTof2MSIEUQtBMF9opqSHwVNhELD59T4oyDyoH31CvmD9UXt x21iRv4g0pIOdnYfzjB5vQZNV7AbQ2WbV9acJzjbtF3gPLstsnsMNekm3BH0do3fHRpP kHVZA0nby4TV6uWOhj097Eb50y6M/C95FirNlUhWaEZVHIZZHh75c8UHX6Ow0o+Bwd4f C33nbnXNCEr16wlClbJZEzpOCLzxapFI3A1MipNGMvE6L0uq/NFa9yyqV0Oip72ni1sl QLdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :dkim-signature:arc-authentication-results; bh=AOi+PgVvV4iZamPt4Qs9+j2qHGSuygc7wqXDTK+psJk=; b=SW85pgha9TVLZMNjyi0NFcJdKgxkn5MdDrvdhKGLv8APW9n98s/Xq/GVMCroyGpj+Y hFvOyClLMquBJPhgDXcAMTtckVwIGpWewZ8uLJeRHAndb2FnxLtRel1rOHeVDgVMT7eP 5DnSiTj1C7ZjQO4tU4zqE2kLSf61lMWqi230abR1OTv5l3tsL2yYdM/8EimWltf3TIO5 urxOwK88AbCKvA6AZDhuptCrGs3C4ZFnnblH7lgTVqNEthfMkHfPbGoUGUBj8lCLVYoj nHB5JFoZrWOV8VDgvo7L3xPEH0SkcsYOFNN1iPPpCRooqi6MVZ6CYsIfR0a9GNyMMv7n nFRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=DxELs2G3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e9-v6si26806649pgn.576.2018.07.15.03.37.15; Sun, 15 Jul 2018 03:37:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=DxELs2G3; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1726307AbeGOK7M (ORCPT + 99 others); Sun, 15 Jul 2018 06:59:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:48166 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726114AbeGOK7M (ORCPT ); Sun, 15 Jul 2018 06:59:12 -0400 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D1E48208C2; Sun, 15 Jul 2018 10:36:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1531651001; bh=4jH9OMLaAKtny7ivF/8ooITSg2mRW83/+l4mgLAwJio=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=DxELs2G3vksfo4+qPTEhidkhT4MPEKJvPN/4+1M3sKFU5ZIdZilgBnLxWImkFA9bP XJXiLB8LFg0jvk7EwJqRYRdFPlVza4rsYEeA1KygoEXvIw8gx8DWPhoRDTKqzfNyal R7Mzap4gSpxBpYpN03QNBFaj0LMzEjtuPpcVAcU8= Date: Sun, 15 Jul 2018 11:36:36 +0100 From: Jonathan Cameron To: Stefan Popa Cc: , , , , , Subject: Re: [PATCH 5/5] iio:adxl372: Add filter bandwidth support Message-ID: <20180715113636.5394c756@archlinux> In-Reply-To: <1531409818-20300-1-git-send-email-stefan.popa@analog.com> References: <1531409818-20300-1-git-send-email-stefan.popa@analog.com> X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 12 Jul 2018 18:36:58 +0300 Stefan Popa wrote: > This patch adds the option for the user to select the filter bandwidth. The > user can also read the available bandwidths which are always adjusted to be > at most half of the sampling frequency. Furthermore, the currently selected > bandwidth can be read via the read_raw function, while the write_raw sets a > new bandwidth value. > How will the youth of today learn about aliasing if we are so nice to them? :) Good user friendly design choice btw. If someone is doing something crazy where they actually want the aliasing they can hack the driver. This and the previous are fine. Nice driver, you just ran into some 'old' problems in one or two places that it would be good to finally solve. > Signed-off-by: Stefan Popa > --- > drivers/iio/accel/adxl372.c | 38 ++++++++++++++++++++++++++++++++++++-- > 1 file changed, 36 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/accel/adxl372.c b/drivers/iio/accel/adxl372.c > index 498c740..a73482e 100644 > --- a/drivers/iio/accel/adxl372.c > +++ b/drivers/iio/accel/adxl372.c > @@ -199,6 +199,10 @@ static const int adxl372_samp_freq_tbl[5] = { > 400, 800, 1600, 3200, 6400, > }; > > +static const int adxl372_bw_freq_tbl[5] = { > + 200, 400, 800, 1600, 3200, > +}; > + > #define ADXL372_ACCEL_CHANNEL(index, reg, axis) { \ > .type = IIO_ACCEL, \ > .address = reg, \ > @@ -206,7 +210,8 @@ static const int adxl372_samp_freq_tbl[5] = { > .channel2 = IIO_MOD_##axis, \ > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \ > - BIT(IIO_CHAN_INFO_SAMP_FREQ), \ > + BIT(IIO_CHAN_INFO_SAMP_FREQ) | \ > + BIT(IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY), \ > .scan_index = index, \ > .scan_type = { \ > .sign = 's', \ > @@ -585,6 +590,9 @@ static int adxl372_read_raw(struct iio_dev *indio_dev, > case IIO_CHAN_INFO_SAMP_FREQ: > *val = adxl372_samp_freq_tbl[st->odr]; > return IIO_VAL_INT; > + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: > + *val = adxl372_bw_freq_tbl[st->bw]; > + return IIO_VAL_INT; > } > > return -EINVAL; > @@ -595,7 +603,7 @@ static int adxl372_write_raw(struct iio_dev *indio_dev, > int val, int val2, long info) > { > struct adxl372_state *st = iio_priv(indio_dev); > - int odr_index, ret; > + int odr_index, bw_index, ret; > > switch (info) { > case IIO_CHAN_INFO_SAMP_FREQ: > @@ -613,11 +621,34 @@ static int adxl372_write_raw(struct iio_dev *indio_dev, > ret = adxl372_set_bandwidth(st, odr_index); > > return ret; > + case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: > + bw_index = adxl372_find_closest_match(adxl372_bw_freq_tbl, > + ARRAY_SIZE(adxl372_bw_freq_tbl), > + val); > + return adxl372_set_bandwidth(st, bw_index); > default: > return -EINVAL; > } > } > > +static ssize_t adxl372_show_filter_freq_avail(struct device *dev, > + struct device_attribute *attr, > + char *buf) > +{ > + struct iio_dev *indio_dev = dev_to_iio_dev(dev); > + struct adxl372_state *st = iio_priv(indio_dev); > + int i; > + size_t len = 0; > + > + for (i = 0; i <= st->odr; i++) > + len += scnprintf(buf + len, PAGE_SIZE - len, > + "%d ", adxl372_bw_freq_tbl[i]); > + > + buf[len - 1] = '\n'; > + > + return len; > +} > + > static ssize_t adxl372_get_fifo_enabled(struct device *dev, > struct device_attribute *attr, > char *buf) > @@ -768,9 +799,12 @@ static const struct iio_trigger_ops adxl372_trigger_ops = { > }; > > static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("400 800 1600 3200 6400"); > +static IIO_DEVICE_ATTR(in_accel_filter_low_pass_3db_frequency_available, > + 0444, adxl372_show_filter_freq_avail, NULL, 0); > > static struct attribute *adxl372_attributes[] = { > &iio_const_attr_sampling_frequency_available.dev_attr.attr, > + &iio_dev_attr_in_accel_filter_low_pass_3db_frequency_available.dev_attr.attr, > NULL, > }; >