Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp369289pxh; Wed, 10 Nov 2021 03:08:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJyPCRpPT0B6i+DUfnfuCpg1vCAERaf6enVB+sK+vCYXHbY0sB5dpd8RhHbQlNh4Cx7ksB55 X-Received: by 2002:a62:1813:0:b0:494:5d7b:864d with SMTP id 19-20020a621813000000b004945d7b864dmr51250447pfy.23.1636542535461; Wed, 10 Nov 2021 03:08:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636542535; cv=none; d=google.com; s=arc-20160816; b=LavZIs/4JIHyERA28VwvlRpNWbrls53NBZQO7S0XWfMXsGyZe/jcvfOzgfu+2RMa9G QmzmQyeDQ/CLGjPsUU2g+XbAagb/hWz/oXIBDI+nc8idFnFn1rv1XvjD42QIyhPGgAJs C0d7tePxegcmMatXzS4J08YXQyaNMbm8YzUhTz99MCuYChzGblg/n317k5cyr+7O2xhw ONzv4a8LB671asXwIpBESpFMemJyclFwSNlHVhmQmoTKlBieLxxndpVnrthXZ+tnKS9B fiYxxaomZAym/ezOk7kMlXWIYuCYJB3j9ah2+ynZe+KiCxJtW+jZK+IlC/wTKiZZ/efL 2N4A== 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=0cCXePDvmrfR31dz6G1nPbMPXXRInjwCgYbk10QOEdc=; b=j711zAR8E4ZwgypTMs2SnVog2BBh6uj5bjRN6rWy11Gk6qyP90UW6mcufRBK3GEFzY xPuFfVPfGM2rf98Hbn6KNVL2Wwa9EcDZ+Yj5nnpG0RxQiQ7qHcwF7kuMu0SuLscFI6bQ 2hbxqDqvB2yPcDulkw5f6JAW8msZld93Qim3TlkPGpROOXCqIJNWor01UVH6Ww2/BMBz 8mSlTuESmRwrHsomI5QihxJFryiPuht2bG7MUx3as61IVLw+sLOuxBho/2LjZlA0XxI5 mCGxBtY0Cg2um/I4Pdm/4T/qzwH4ayG0oHLj0+9Ud6RDIkKu6pR8yESVtgyF4l8XLxiN 8OUA== 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 i4si41759770pla.316.2021.11.10.03.08.41; Wed, 10 Nov 2021 03:08:55 -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 S231404AbhKJLKY (ORCPT + 99 others); Wed, 10 Nov 2021 06:10:24 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:4650 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231330AbhKJLKV (ORCPT ); Wed, 10 Nov 2021 06:10:21 -0500 Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1AA82klH018634; Wed, 10 Nov 2021 06:07:34 -0500 Received: from nwd2mta3.analog.com ([137.71.173.56]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 3c8a7p0jdf-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 1AAB7W6c020115 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 10 Nov 2021 06:07:32 -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:31 -0500 Received: from ASHBMBX9.ad.analog.com (10.64.17.10) 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:31 -0500 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server id 15.2.858.5 via Frontend Transport; Wed, 10 Nov 2021 06:07:31 -0500 Received: from localhost.localdomain ([10.48.65.12]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 1AAB7OD7030773; Wed, 10 Nov 2021 06:07:29 -0500 From: To: , CC: , Alexandru Tachici Subject: [PATCH 2/5] iio: adc: ad7192: Add update_scan_mode Date: Wed, 10 Nov 2021 13:17:47 +0200 Message-ID: <20211110111750.27263-3-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: OGRl-FkAAdsK9F61EjyLshTMCTqJvA7_ X-Proofpoint-GUID: OGRl-FkAAdsK9F61EjyLshTMCTqJvA7_ 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 lowpriorityscore=0 suspectscore=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=999 clxscore=1015 malwarescore=0 bulkscore=0 impostorscore=0 priorityscore=1501 mlxscore=0 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 ad7192.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: 3f7c3306cf38 ("staging:iio:ad7192: Use common Sigma Delta library") Signed-off-by: Alexandru Tachici --- drivers/iio/adc/ad7192.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/iio/adc/ad7192.c b/drivers/iio/adc/ad7192.c index 2121a812b0c3..1fc0f4eb858e 100644 --- a/drivers/iio/adc/ad7192.c +++ b/drivers/iio/adc/ad7192.c @@ -782,6 +782,20 @@ static int ad7192_read_avail(struct iio_dev *indio_dev, return -EINVAL; } +static int ad7192_update_scan_mode(struct iio_dev *indio_dev, const unsigned long *scan_mask) +{ + struct ad7192_state *st = iio_priv(indio_dev); + int i; + + st->conf &= ~AD7192_CONF_CHAN_MASK; + for (i = 0; i < 8; i++) { + if (test_bit(i, scan_mask)) + st->conf |= AD7192_CONF_CHAN(i); + } + + return ad_sd_write_reg(&st->sd, AD7192_REG_CONF, 3, st->conf); +} + static const struct iio_info ad7192_info = { .read_raw = ad7192_read_raw, .write_raw = ad7192_write_raw, @@ -789,6 +803,7 @@ static const struct iio_info ad7192_info = { .read_avail = ad7192_read_avail, .attrs = &ad7192_attribute_group, .validate_trigger = ad_sd_validate_trigger, + .update_scan_mode = ad7192_update_scan_mode, }; static const struct iio_info ad7195_info = { @@ -798,6 +813,7 @@ static const struct iio_info ad7195_info = { .read_avail = ad7192_read_avail, .attrs = &ad7195_attribute_group, .validate_trigger = ad_sd_validate_trigger, + .update_scan_mode = ad7192_update_scan_mode, }; #define __AD719x_CHANNEL(_si, _channel1, _channel2, _address, _extend_name, \ -- 2.25.1