Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp370220pxh; Wed, 10 Nov 2021 03:09:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJz69SHBM+LBO455YVCR/WJe1dMO6pjQyT/2/aoBWgcuq9xl7Pr5qX25nBr9f0MjSgMdpg43 X-Received: by 2002:a17:906:478e:: with SMTP id cw14mr18963062ejc.46.1636542584612; Wed, 10 Nov 2021 03:09:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636542584; cv=none; d=google.com; s=arc-20160816; b=GBtxTLFDJk+S7bymIkOeTi+/WgMe0O3etgmG4HzQcKXXjB/1jP6wdXKnMoH69G9COH y5cvP0UAXXICdkACV2qedPcetk+FuaXronlQKroklTurDczzhgW9H+ffOYyG6u2PfBl2 ZotiW3Xy77HcigCerxa2N47q8P3A9R1KU85jycxXz18G+VaEblTvWpoy/cutE2nlJoZF 2utHIa6W+Kjj/yr5XS41hRaLFktVwzGvCVFp6b67eo9ClrUI4zxQsUnI1cH5Zq87LEy8 SATjqRXlYTn+2qEmCj3DWmoru7SXbCWdAsb7SBORHvPJiezre5QyM1SCufR/PsPF+an5 NAqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=iqPc222cVpn/g72l31xywUbwzTNaeM+rSoOkReY+hok=; b=bBQMQaVyerKVM86vHSxczLnzIj2qzDAVJzNPg0IgtkxG3/O7afMkOfZ9op57EjTXaT PwbZCw2PR3WHVB5R1NZqIaNM2kTuxCO4jMYAtBjEzTXr4pFcLU0S/WqSJppyVJPPFg76 AoxT3pbBzMpRELGR0bn7ciIVGHLBGmTE1hjVHkyDx2EpKD9l/buJ7leMn0nLqlrYStBF Ln2/nV3ZtWwqXvwfNY7qRQ6f3So0d1UGxWWbx4sFxF4fNIh6NK4b089yAY3PTeJ71Xp2 Uc9WK3SpJqnkBkEBlRHINNw0VazkjVfY/CLauaLJ2FHd5gTsGdxLelCZIcuS0qTiDPte 4TCw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si38021804edq.563.2021.11.10.03.09.20; Wed, 10 Nov 2021 03:09:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=analog.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231338AbhKJLKW (ORCPT + 99 others); Wed, 10 Nov 2021 06:10:22 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:4174 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229653AbhKJLKV (ORCPT ); Wed, 10 Nov 2021 06:10:21 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1AA6IUeB012732; Wed, 10 Nov 2021 06:07:33 -0500 Received: from nwd2mta3.analog.com ([137.71.173.56]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 3c88pq8vga-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 10 Nov 2021 06:07:33 -0500 Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta3.analog.com (8.14.7/8.14.7) with ESMTP id 1AAB7Vn8020112 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 10 Nov 2021 06:07:31 -0500 Received: from ASHBCASHYB4.ad.analog.com (10.64.17.132) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.858.5; Wed, 10 Nov 2021 06:07:30 -0500 Received: from ASHBMBX8.ad.analog.com (10.64.17.5) by ASHBCASHYB4.ad.analog.com (10.64.17.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.858.5; Wed, 10 Nov 2021 06:07:30 -0500 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx8.ad.analog.com (10.64.17.5) with Microsoft SMTP Server id 15.2.858.5 via Frontend Transport; Wed, 10 Nov 2021 06:07:30 -0500 Received: from localhost.localdomain ([10.48.65.12]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 1AAB7OD6030773; Wed, 10 Nov 2021 06:07:27 -0500 From: To: , CC: , Alexandru Tachici Subject: [PATCH 1/5] iio: adc: ad7124: Add update_scan_mode Date: Wed, 10 Nov 2021 13:17:46 +0200 Message-ID: <20211110111750.27263-2-alexandru.tachici@analog.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211110111750.27263-1-alexandru.tachici@analog.com> References: <20211110111750.27263-1-alexandru.tachici@analog.com> MIME-Version: 1.0 Content-Type: text/plain X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-ORIG-GUID: 7a2Qmv59s6RTEW9D_n__bsB_RHGPl2XG X-Proofpoint-GUID: 7a2Qmv59s6RTEW9D_n__bsB_RHGPl2XG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-11-10_03,2021-11-08_02,2020-04-07_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 mlxlogscore=999 impostorscore=0 suspectscore=0 phishscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2110150000 definitions=main-2111100059 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexandru Tachici In continuous mode neither sigma_delta.c nor ad7124.c will disable previously enabled channels. Before this patch a channel stayed enabled indefinetly, even when one another one was supposed to be sampled. This causes mixed samples in continuous mode to be delivered to the host. By adding an update_scan_mode callback, every time the continuous mode is activated, channels will be enabled/disabled accordingly. Fixes: b3af341bbd966 ("iio: adc: Add ad7124 support") Signed-off-by: Alexandru Tachici --- drivers/iio/adc/ad7124.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/iio/adc/ad7124.c b/drivers/iio/adc/ad7124.c index 11ce6a3729a5..30299b899799 100644 --- a/drivers/iio/adc/ad7124.c +++ b/drivers/iio/adc/ad7124.c @@ -669,11 +669,32 @@ static const struct attribute_group ad7124_attrs_group = { .attrs = ad7124_attributes, }; +static int ad7124_update_scan_mode(struct iio_dev *indio_dev, + const unsigned long *scan_mask) +{ + struct ad7124_state *st = iio_priv(indio_dev); + bool bit_set; + int ret; + int i; + + for (i = 0; i < st->num_channels; i++) { + bit_set = test_bit(i, scan_mask); + ret = ad7124_spi_write_mask(st, AD7124_CHANNEL(i), + AD7124_CHANNEL_EN_MSK, + AD7124_CHANNEL_EN(bit_set), + 2); + if (ret < 0) + return ret; + } + return 0; +} + static const struct iio_info ad7124_info = { .read_raw = ad7124_read_raw, .write_raw = ad7124_write_raw, .debugfs_reg_access = &ad7124_reg_access, .validate_trigger = ad_sd_validate_trigger, + .update_scan_mode = ad7124_update_scan_mode, .attrs = &ad7124_attrs_group, }; -- 2.25.1