Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2508636pxb; Tue, 23 Feb 2021 08:39:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJyaJhOfBET03beHvM+RzM1OMt8BRJj7QSK6VWpn2VnpYo1fTixSwko9hudJlGLhRy6vQI1p X-Received: by 2002:a50:9ecf:: with SMTP id a73mr28411787edf.181.1614098348416; Tue, 23 Feb 2021 08:39:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614098348; cv=none; d=google.com; s=arc-20160816; b=Opz/RFs+YVVmBQebaIckFmhMnpSQBhS31CYFWcK/jqlSzdAplv7OT4dNMi/CX2CPnZ MhEiQrGqdTQE1W3EklyhPbAxI3EfqKGdHQBwRFWCl0IQ5qJizMykYpR7zvp4JKcQMRwq +VZuMdiJ2j5g3oN+/u127L/F3slhz8or8qarQDrCIDgm2N05O3vrdu7+y1On/Dsp+V0K 14+FNhnN9rajC9V4Wddv6/EmNB2KIrTQ+58Q7Oli/ShAAK2xQc42MXAWs0p0yC5YhbVY gGbFaOKxqo+CTU9BoTTUke9ik0IOg1qIG/djPUpjSwNAkD9cuMqsSUjHHQfS89fuAa0/ fuJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=pr8yT9J1wsBmiGFtzGDsuaQ2U4hy2shulv7HITv1wbM=; b=QVZLWiTC3y2WE+geHVqpOS30WloKGVNjJWCQRSNt4hshJbUTzP1MSm21ejNROjrABf Tn/ksuiqYu3FfFygtz7T+swU898HRiGV8a0tQLoW6Rft1rJV1uaylovviZPqlMzpOC/H XzfV8UaxG5+kK55YdxDd4kQIMz3rFnlSirx3x89OAPw1EMxlwQCGHrDJUNPMwWpGjnLb sa501QyDRzoO9TNlFgPEmFI4lm5KxQ2NUqsHsls16nIn3DhASuE9YgsX5OQSNM58cfcg hfEyuzW2TFCGAiiAB2ZWpCQ+Gs6JADPGn5QGM5J3RirY6R+kpVK5710/LYQ/qLXZCKxb MfUA== 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 cw12si14181782ejb.406.2021.02.23.08.38.42; Tue, 23 Feb 2021 08:39:08 -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 S233554AbhBWQhW (ORCPT + 99 others); Tue, 23 Feb 2021 11:37:22 -0500 Received: from mx0a-00128a01.pphosted.com ([148.163.135.77]:60908 "EHLO mx0a-00128a01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233312AbhBWQhS (ORCPT ); Tue, 23 Feb 2021 11:37:18 -0500 Received: from pps.filterd (m0167088.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 11NGTeqS004231; Tue, 23 Feb 2021 11:36:34 -0500 Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com with ESMTP id 36tw5bk6t3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 23 Feb 2021 11:36:34 -0500 Received: from SCSQMBX11.ad.analog.com (SCSQMBX11.ad.analog.com [10.77.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 11NGaXZN003439 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 23 Feb 2021 11:36:33 -0500 Received: from SCSQCASHYB7.ad.analog.com (10.77.17.133) by SCSQMBX11.ad.analog.com (10.77.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.721.2; Tue, 23 Feb 2021 08:36:31 -0800 Received: from SCSQMBX10.ad.analog.com (10.77.17.5) by SCSQCASHYB7.ad.analog.com (10.77.17.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.721.2; Tue, 23 Feb 2021 08:36:31 -0800 Received: from zeus.spd.analog.com (10.66.68.11) by scsqmbx10.ad.analog.com (10.77.17.5) with Microsoft SMTP Server id 15.2.721.2 via Frontend Transport; Tue, 23 Feb 2021 08:36:31 -0800 Received: from localhost.localdomain ([10.48.65.12]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 11NGaTkp030454; Tue, 23 Feb 2021 11:36:30 -0500 From: To: , CC: Subject: [PATCH v3 0/1] iio: adc: ad7124: allow more than 8 channels Date: Tue, 23 Feb 2021 18:44:03 +0200 Message-ID: <20210223164404.93540-1-alexandru.tachici@analog.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.369,18.0.761 definitions=2021-02-23_08:2021-02-23,2021-02-23 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=864 phishscore=0 mlxscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 adultscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2102230138 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alexandru Tachici Currently AD7124-8 driver cannot use more than 8 IIO channels because it was assigning the channel configurations bijectively to channels specified in the device-tree. This is not possible to do when using more than 8 channels as AD7124-8 has only 8 configuration registers. All configurations are marked as live if they are programmed on the device. Any change that happens from userspace (sampling rate, filters etc.) will invalidate them. To allow the user to use all channels at once the driver will keep in memory configurations for all channels but will program only 8 of them at a time on the device. If multiple channels have the same configuration, only one configuration register will be used. If there are more configurations needed than available registers only the last 8 used configurations will be allowed to exist on the device in a LRU fashion. (in case of raw reads). If a read is requested on a channel whose configuration is not programmed: - check if there are similar configurations already programmed if yes: - point channel to that config if no: - check if there are empty config slots - if yes: write config, push into queue of LRU configs - if no: pop one config, get it's config slot nr, write new config on the old slot, push new config in queue of LRU configs. Alexandru Tachici (1): iio: adc: ad7124: allow more than 8 channels drivers/iio/adc/ad7124.c | 461 ++++++++++++++++++++++++++------------- 1 file changed, 308 insertions(+), 153 deletions(-) -- 2.20.1