From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f43.google.com (mail-oa1-f43.google.com [209.85.160.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2963B24469A for ; Fri, 20 Jun 2025 22:21:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458088; cv=none; b=hySiMeqj8vZMRca+gHkh1XtVoCQ6buUWWCljkqpbww58UNODxmaJMwJ7FbTOrQCEupZIkiHsU3654v7ZYaeyt+zP4uvlrNL0jUlHzSE0C+4WcKmZIJAbQDUfOAfmGE8OqHF24//NLx6v80hIx0qyPXoATCtIVa4Xn8HGmSYTews= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458088; c=relaxed/simple; bh=vcFh01t+JmSdJIe+pkepWbRzB5Tv6UVGsGvhuGY2/vU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FwRynMNAOnne5CrxyBwvcb1P8tt87UFHEXSrqxJS2QlvNKQMNqFaeeCXcZuVxU76ryWiTFcld80VB6ttT3T1cNUPFMdhP2qaamHYZ03mSM4vXaxvXREKscx7NDMBE3bOl6elWNWTCqzdulLaDXgg22FBHVIgAgGh8PG+2gay7yo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=fx60Fh0r; arc=none smtp.client-ip=209.85.160.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="fx60Fh0r" Received: by mail-oa1-f43.google.com with SMTP id 586e51a60fabf-2da73155e91so757600fac.0 for ; Fri, 20 Jun 2025 15:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458083; x=1751062883; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=iwFoCP9sQfkuV+I5mDs2NyND2ADnvvFWBv7uoS+Gnc4=; b=fx60Fh0rl8a5lwYtq/4oFbPkiQBuNGW8hh8KmRdE0TYoYgWmCAEYEkD8y/p+mPi3wL JBaLw1BC20nwUKUkCnQRvgFqlgjp8yPghFGUqJs9ux7u/TJDXC748oh8GmT7qYFbi2QZ IyPqSNez0ddxPmZvA8J0R77sRs8RB9HDh6q9u6prOe3NvZNkyookztRK2S0w6tOcgyeE P34l3VCbvEiasrB0XnWu7Crk+cNO4dMOCRSj0KTB1kNhD3wXBJomv7h5q/fcAnQ61lHo ozZrahBpvYme6Ji6PtLcErkl5nRE4ZrCHPmFfLm3fmrz17u8b/7Xos2JA3Q+bfGCx5yA d+LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458083; x=1751062883; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iwFoCP9sQfkuV+I5mDs2NyND2ADnvvFWBv7uoS+Gnc4=; b=fTe8AYA67b4CUMsZNcy+JS+dU+w5iabStMSxQNOessAujA77iX6jHnlpD7olwCYfJB 4cjvu892y2YYKA8LaIahz091xHC3jVP5AYRzQJa4eOU0VLY6fAs97j2MD2JxHmeT7fja BOh/UGRRZewzQXA/BtepG2hG8S3LX56u2AWOUz24kYsYQcktpVb7+mRBSF+lj17Nnzfd LLssBovhtm0TwBcHTGtz+CwYlFnwpkaqumSzeFcK/WqUBhJt47QWLY70TiD0XgsfI2xZ nSiShs2BtNbQFyAoZXUIPHSbmUXHRiGEDRupFv/aC+zf/RCUBKudeBvNjs77SMiNDZB9 jDqQ== X-Forwarded-Encrypted: i=1; AJvYcCUKCCZcShq0Ea4cZGXdBasVqbYlnDwKjI2MGx27cfkeOmclTJxtMhjelxUdqQn/rVncmyzGL9zjITDDOCM=@vger.kernel.org X-Gm-Message-State: AOJu0YyI3UcMPKuoJkNgEpOgwvSQSQrwzA8jN5N9aGgPN1/XRdCz6nYG +oxwREFpuxaQoUOmdnimowHHfDhnNKw6ZmZEExyZisaIDZzV8+eQ+EwFwlfE7LsnYTA= X-Gm-Gg: ASbGnctVYuBuoTRLA7SXIMOO//64M0LCEWHGIvF778TCrOOcOb+bd4/0JdMBMjWuY0w hAz+5usQg2rpYbjCEE9dFVtBp7o/RiBo+ruN4HsIP5lECv/q7WnT4/7DkaEljVF82n62Q1mb3pU OTLN+LbeAN9w/AVuRGAYQOBMrC2L0zetrC/jIWl9u9wKK7/PmkflWE8kQ9hk45OQXtCEKCm2YG2 JHBn1nfuLvFoC7ioyGFP+fD5kZWzbYEkGoxHrjIZ40zMCtYAEC5wQva20tKQWStmAIOGVAaBWl9 jJgpwBGvqEOfcdiK6Wui47vmlVrel7N3VgkEmawnas54P41gbaavYIiZwpISxGCmMNOm X-Google-Smtp-Source: AGHT+IE4/LcA0WYE5yJAI95TpeYpZDVIpC1YxrPmFCw3pSnW5EA4v4vkS4RidHD+h3dLK1w7YqZfGA== X-Received: by 2002:a05:6871:4409:b0:2d5:2955:aa6a with SMTP id 586e51a60fabf-2eeda4e19f9mr2846359fac.7.1750458083288; Fri, 20 Jun 2025 15:21:23 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:22 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:07 -0500 Subject: [PATCH 1/9] iio: adc: ad_sigma_delta: sort includes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-1-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1326; i=dlechner@baylibre.com; h=from:subject:message-id; bh=vcFh01t+JmSdJIe+pkepWbRzB5Tv6UVGsGvhuGY2/vU=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd6iInU0MFGX6S6BJOE/3ef2lfn/fzwjEWMx+ za/8sCxIgOJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXeogAKCRDCzCAB/wGP wJT+B/91aR8po6rLRfhWcXtrVeiDAY24/tBykK824JFFxyJKGP373X3G2oaJCappPjHsF7Ci5IT uR5XOx1sWev4LHgCQCLJ3qv6tWNi5Pu03xM2MsJqrZxKPfZQSbD9QU9z1sIGtjHDkrRCpagCIxN h9TXdyhOabuMPtljX3UnPycuZnL/PZ7h3UK0Xr598zSDG7FT5Ps1oXdalwaTe61evBFWZossv4Z UCMYHBmnw8JdqEkEfuY/aE5K1MTYMwj11dKnDLwwSxCF7RScDWyNddLEJuNgC1F8SKHTmoPCUG3 YQx4r8uxr1oFVcCZ1u/BPmk8sXVIVbVASpKn8r0fJhhceCne X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Sort includes in alphabetical order and fix grouping before we add more. Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index 4c5f8d29a559fea7226b84141bcb148fb801f62c..6cd3645eaaf38a23d5b6479ac59= 8b6d276cfd81a 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -7,24 +7,22 @@ */ =20 #include -#include #include +#include +#include #include +#include #include #include -#include -#include +#include =20 +#include +#include #include #include -#include -#include #include +#include #include -#include - -#include - =20 #define AD_SD_COMM_CHAN_MASK 0x3 =20 --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f42.google.com (mail-oa1-f42.google.com [209.85.160.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB411246796 for ; Fri, 20 Jun 2025 22:21:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458087; cv=none; b=rXNy3eY4rbj3msLxuie3PXn/W7AGvjIjFBMnCjom5kL48xrh+yuJTvd3smpV/u41ZBDGmKil4aU5Kn1udOHQNeTQInqlt26VGConebx8M24/4Ci56rIgakIzgD+/Hz3Mh6sY/TYLORexgLNJHYMd2zLgkPOeqTp1NEXk6flIiYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458087; c=relaxed/simple; bh=RN0qztNZZGlggYLxiyvfwi/AaXTnKzQQGMk8+t2oTno=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rOoN/zmTE5aCSuQ3cyX+fVAKbmS17K2A+Oa568mNk3UgsD/Xs7jXORM5rEtbwFYqgGS3HqDNvQqocgvALe49/D+JVmQeK5iqp3Nr434wjIyaTBqTWJwTLs+Svgs9hdn6ZK8Ao9Uil6OP5hj/Zzw/0dmpaTUPei8y8O7E3lxf01g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=tiJagRBB; arc=none smtp.client-ip=209.85.160.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="tiJagRBB" Received: by mail-oa1-f42.google.com with SMTP id 586e51a60fabf-2eaad5eb1easo1195415fac.3 for ; Fri, 20 Jun 2025 15:21:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458085; x=1751062885; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=xISIxFWepJfY0GBl9vwUD9dWscdCP+konhwzDZnuj3A=; b=tiJagRBBrUAayLvZdbK7f2IQbZvZH4Li3UGSkjzWRCRifS+ezZmM71K+nkWaiYfadi DFuLWzkruPwybAQsj0DsQ9wqbCtIcWGiJ1VNel1P9XbgaWUIAqeJ91f4fbtwu2KQ0Upl oqqyw2jItOH/fmuAMXntIkxHNhsb/m5+dVUw4gZimiuZKH5RTGPT6qScX6IuRkyEZRRN bLoQpb5xiiXgntID2bkIIxReStkabhWmfzDOFZTPjRRk1NjequzhPrRBHNA1qDVyrKNG axo82GPvLv8tVyWK/b2tq06SGEU1at4ZrVNj3Uz5go/amtR+1tt839/eU2h91iLpbV29 PvYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458085; x=1751062885; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xISIxFWepJfY0GBl9vwUD9dWscdCP+konhwzDZnuj3A=; b=CECqwwqkwmLBuFy5s8AG9obkYhnp5oo/TaJMrnbofMOGKnOCubY5Uo9TgxJ9o5x6tJ cdVbc8itXN7ydVxWwe2XFAh+D7ce1AUkltjDksgB8YLr3/oUsJ0AKHi+wCSD3MStZrQE lIUY65GiXuZtLTnl5GUuh1xCyb+Bq4IA+Ci0NliK2/wiqiqEuHB20466Amf80+0H8PCI LfDggghQFFMaSkkN3SvozaaNiv239jCTugruRZLUf3dvUpqnym3R9q39tX/Ob2LVop5Q LX8Vit3beVAUzNYbxYGUwFiSLDjouBi7Mfov4168OjKd3W86gEqnb1++tKSQA/Se6tIa zNmw== X-Forwarded-Encrypted: i=1; AJvYcCW6rRBH6kCnh7NV6zGMGOXxJcsvRONx073tv/1x+ZigyWhDurv0VXl82TkkzUyCFQxgPYNkKfQKNfOZRQ0=@vger.kernel.org X-Gm-Message-State: AOJu0YzcWIHduU0aYcGLZzUoYxGX+b95LFgjAotyFav8UcGZsdDDAHto tlbrASvKeehZF7rxQGTjyLO6xuMh7BRYpXNWCpLmHtgtVNuy6ydY0vD12RI9jrpH7aA= X-Gm-Gg: ASbGncu4tllGvEeDuBrH2oJyD38nsX9/r+tbm9qlJnE9nFe6nx41V/e7fBcRAyMtsNH J5JpjEGxxObsEiCAEFQQr+iA1FIwfbgbOVZQfbLyz4pPLw0ko3GplNj8pFjyIaa3xAJgCMNuuWZ 70NY3KHRA9ap+rgg2bANcdetYAoSqkMH9J9g12kKHK42+jkJ/Vf5HquRdDMght9E3WebefteClt qtfqp3jld1w4PeHJt6TUeVHcy06ZFnl5xvRsg9GyC85PiH2TiWMVaXtOrIUuPQr5R+mT9g6YDJx ubRFrfQed+fNp44FCN0WzoihOZJB3y3+vWx3OJU1UqFnkvTmG73fh5cQeSE1NmnS15bk X-Google-Smtp-Source: AGHT+IHOPAa1v82GyaqrTI5BfuLKv0C5wbzA4p6Q8lWHhrdb+T5d7REllL2ZKEjqRsOARSobLzzPcA== X-Received: by 2002:a05:6870:35d6:b0:2d4:d820:6d82 with SMTP id 586e51a60fabf-2eeee5c31f0mr3395842fac.26.1750458085081; Fri, 20 Jun 2025 15:21:25 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:23 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:08 -0500 Subject: [PATCH 2/9] iio: adc: ad_sigma_delta: use u8 instead of uint8_t Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-2-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4793; i=dlechner@baylibre.com; h=from:subject:message-id; bh=RN0qztNZZGlggYLxiyvfwi/AaXTnKzQQGMk8+t2oTno=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd6psRAij0KiZD2NLOLlOfQZ0h5gzStZ21ZRI DxsTLK1A0WJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXeqQAKCRDCzCAB/wGP wNSxB/4l0o+TBzcerLJXqUYuiYCk1PBCkq6Bw+dpIbzMFcL0B4Dc36kgQLYh9Q3qP8guD1M3sxe XDYdrcNqmdD9CYX46jdVWRDAvuXFpoRwStzlARIPCLVHm74OQzs3xjSeNkLfFZh2xXQ4QeqUXVZ YRa3qfKwrHnmZjm+QMYPUuMBVTq0bEQIVldc2fJlLjp2TY3+5Yg1wE67/aNGXDO0e9reo/njQBQ 6bdQrzJGdzLb/sU0Gas7gJkhHlrm/Dlvp5S8jktKb7Ze3DkHVutVR4Igqohb1RqHH2pNKBLfG6m z1wmJvhakNnmJ/fuYMQSjFBKiwTXN64ndFM8rlqbOYsOqyg5 X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Replace uint8_t with u8 in the ad_sigma_delta driver. Technically, uint8_t comes from the C standard library, while u8 is a Linux kernel type. Since we don't use the C standard library in the kernel, we should use the kernel types instead. Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 15 ++++++++------- include/linux/iio/adc/ad_sigma_delta.h | 10 +++++----- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index 6cd3645eaaf38a23d5b6479ac598b6d276cfd81a..1657f64f1c0465b249adcc8a70d= da8faf4a90565 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -14,6 +14,7 @@ #include #include #include +#include #include =20 #include @@ -38,7 +39,7 @@ * @sigma_delta: The sigma delta device * @comm: New value for the communications register */ -void ad_sd_set_comm(struct ad_sigma_delta *sigma_delta, uint8_t comm) +void ad_sd_set_comm(struct ad_sigma_delta *sigma_delta, u8 comm) { /* Some variants use the lower two bits of the communications register * to select the channel */ @@ -59,7 +60,7 @@ EXPORT_SYMBOL_NS_GPL(ad_sd_set_comm, "IIO_AD_SIGMA_DELTA"= ); int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg, unsigned int size, unsigned int val) { - uint8_t *data =3D sigma_delta->tx_buf; + u8 *data =3D sigma_delta->tx_buf; struct spi_transfer t =3D { .tx_buf =3D data, .len =3D size + 1, @@ -99,9 +100,9 @@ int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, = unsigned int reg, EXPORT_SYMBOL_NS_GPL(ad_sd_write_reg, "IIO_AD_SIGMA_DELTA"); =20 static int ad_sd_read_reg_raw(struct ad_sigma_delta *sigma_delta, - unsigned int reg, unsigned int size, uint8_t *val) + unsigned int reg, unsigned int size, u8 *val) { - uint8_t *data =3D sigma_delta->tx_buf; + u8 *data =3D sigma_delta->tx_buf; int ret; struct spi_transfer t[] =3D { { @@ -185,7 +186,7 @@ EXPORT_SYMBOL_NS_GPL(ad_sd_read_reg, "IIO_AD_SIGMA_DELT= A"); int ad_sd_reset(struct ad_sigma_delta *sigma_delta) { unsigned int reset_length =3D sigma_delta->info->num_resetclks; - uint8_t *buf; + u8 *buf; unsigned int size; int ret; =20 @@ -454,7 +455,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indi= o_dev) struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); unsigned int i, slot, samples_buf_size; unsigned int channel; - uint8_t *samples_buf; + u8 *samples_buf; int ret; =20 if (sigma_delta->num_slots =3D=3D 1) { @@ -543,7 +544,7 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void = *p) struct iio_poll_func *pf =3D p; struct iio_dev *indio_dev =3D pf->indio_dev; struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); - uint8_t *data =3D sigma_delta->rx_buf; + u8 *data =3D sigma_delta->rx_buf; unsigned int transfer_size; unsigned int sample_size; unsigned int sample_pos; diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc= /ad_sigma_delta.h index f242b285081b8d304ca25ae95337425e5842269a..5056677c9941afadc2383febbca= feb02e23a4f44 100644 --- a/include/linux/iio/adc/ad_sigma_delta.h +++ b/include/linux/iio/adc/ad_sigma_delta.h @@ -94,7 +94,7 @@ struct ad_sigma_delta { bool bus_locked; bool keep_cs_asserted; =20 - uint8_t comm; + u8 comm; =20 const struct ad_sigma_delta_info *info; unsigned int active_slots; @@ -105,7 +105,7 @@ struct ad_sigma_delta { bool status_appended; /* map slots to channels in order to know what to expect from devices */ unsigned int *slots; - uint8_t *samples_buf; + u8 *samples_buf; =20 /* * DMA (thus cache coherency maintenance) requires the @@ -114,8 +114,8 @@ struct ad_sigma_delta { * 'rx_buf' is up to 32 bits per sample + 64 bit timestamp, * rounded to 16 bytes to take into account padding. */ - uint8_t tx_buf[4] __aligned(IIO_DMA_MINALIGN); - uint8_t rx_buf[16] __aligned(8); + u8 tx_buf[4] __aligned(IIO_DMA_MINALIGN); + u8 rx_buf[16] __aligned(8); }; =20 static inline int ad_sigma_delta_set_channel(struct ad_sigma_delta *sd, @@ -177,7 +177,7 @@ static inline int ad_sigma_delta_postprocess_sample(str= uct ad_sigma_delta *sd, return 0; } =20 -void ad_sd_set_comm(struct ad_sigma_delta *sigma_delta, uint8_t comm); +void ad_sd_set_comm(struct ad_sigma_delta *sigma_delta, u8 comm); int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg, unsigned int size, unsigned int val); int ad_sd_read_reg(struct ad_sigma_delta *sigma_delta, unsigned int reg, --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f45.google.com (mail-oa1-f45.google.com [209.85.160.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C970A2472AD for ; Fri, 20 Jun 2025 22:21:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458090; cv=none; b=um6/kOJKG4oifhwdRpmPBbHM8TDk6nTqTBmEG6qXj8yElLBxjVA3d/UN37c2Aurcs7I92Fr36doQRAAce4shJ3wVH2SDDQqNBwYoTVZKHyoPP6DA9QpJQyNKIz/vzoD4ioe8uGfoMBEQgmEdNp9zQqS8qQf+83dkVQNhR1WZMS8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458090; c=relaxed/simple; bh=ndollx0hHuXyYrWgV+w7a0yS9z8LaB+bJawqeWV7C1E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TwqXpHn7jO85nOEST6MxBgu0Vl8apZIWMZfpaxaJz0df1JhAaRR2lRMdTDgqo8By18zzfIUka5rvsfwbpeOX86xS7NnalWoVGLwQjICEICPxksNLn9RxA6G4BmqkSqpeXxD6gu3d7A2Eb+HSzv7LzzOhb+gabw8VS6p7UHrDLNQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=1OVCScBd; arc=none smtp.client-ip=209.85.160.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="1OVCScBd" Received: by mail-oa1-f45.google.com with SMTP id 586e51a60fabf-2ea0086338eso1372807fac.1 for ; Fri, 20 Jun 2025 15:21:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458088; x=1751062888; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=l3u6qop3BKgIw2zioaLcZOAXEzoElBarrBAd4z+BUYE=; b=1OVCScBd4yrIlZmue9sSiZMcFX6Wmxed5oX6wU8BgFDG8uTs0Q9+z2fZwP/tEEg3Cn +0dc4vTYDtW2aUryy+H9bYGPcXg1ZHonnLTKQ4Qc+QUkMJPgCuwSP4vhIQvDvReepcpN 9v1DR+tBHa0F2GCBH3MDY7V7zlZ/47fxLOpR8PJB3VvhZTQPchDU8Gz7zENTkb7Appbc 0qKUd8lHUfkck1juG2d4GgkLFstxPTTuns6IjboDVh6gwS6ILK5JGFo+tSDtVk2CGWRu 1w0tb+VPmXOnTohAyqToxaDnjxaMFTT4JrHWBYHL7PUCOzix7cW0GMAMZCqpykcHQDsu 5FGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458088; x=1751062888; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l3u6qop3BKgIw2zioaLcZOAXEzoElBarrBAd4z+BUYE=; b=qwmE6ab/pAR02I8VY41UgWYWAwH0e9e9rj5mb6UOUyBUMCtQonil7C/C2BtrhC8nPd rbXcSQk5MNmy1u27eXX6OMb4OeJPGOx8w03rG+C1vN8icnEF1/tPwtlxL0i79qLcxClO LfIDXDUrjcS42h1sL76LFoQiJzT9bn50ASvjw12h8GFCRHqcfvVk5y1PVx1uCdLOaoWX bj4pS/KsYGsiBooj5j0M1U2oP7dOqHsvotATLfV5mWwFqmHlGT8qeQpL9s1KIBIeJx36 hP2U5410dX1pO7MI5sm4r5gdHdSuOTJgsLRdrDHJ6FySB6qXWUGVSFt7ImFMub6KyU7m r5ew== X-Forwarded-Encrypted: i=1; AJvYcCWHTB+xjHsTWlTsGaMAvNmOsq3QwsAXg3GkANpOyTOYOSKmI3eDpB7rirsb9SFtVm0cg+a1M8TWmkDEpZU=@vger.kernel.org X-Gm-Message-State: AOJu0YyMkP5yt9Dk2kuYw5gE03eR2qWiMtGbqFyibcztGnTXdrDx0WB6 6DiOqDJF5kYydzvnAHzIppdSUX3AbHn0GvFKfV/mX64SgZu32Qj8gC3ToO41kX5ZVTrMgljXqtf UJsrI X-Gm-Gg: ASbGncvWLxOKzQQMu/jtnAiWJxOU6Wo4AQnZRdnNtiipsLKiKstGX8GVKBGwJCecVjY 81GkUQG6KMIH/XeXOC8APYtSpFa1ql9W5bg2kpBOMyPiK36WCBa7qnFCmxJ4HCVlUPOGxsn9fYw nYu0p3dI66ovrbIEa6oMPcAa8zaeL0J6I0TnmAxtA48ntr7MkEIOjQ5Ch1tCcgmFrLzKfzulKN8 xWTMJGLsWqos13cQjZvoLrmwJUsh3pN1uCII0CvNMXjYlg6O4eME0GZC7GbYH2aR+97jwdvuvop +s6UcTc/TdnPKzg26wAFuLzp5Rh8xx58OJdY/1ewgR3HP159o6GFd4aMJvdu10Du4L36U8PElYn guk0= X-Google-Smtp-Source: AGHT+IEX1777Y06ItcBBP4l8QpCXPpcGQh9aDgmKoVRPlC3y0zOyjItWT/vafA/dCJ6lPmB+M/q+RQ== X-Received: by 2002:a05:6870:d68a:b0:296:a67c:d239 with SMTP id 586e51a60fabf-2eeee37f070mr3109724fac.12.1750458087845; Fri, 20 Jun 2025 15:21:27 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:26 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:09 -0500 Subject: [PATCH 3/9] iio: adc: ad_sigma_delta: use BITS_TO_BYTES() macro Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-3-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2415; i=dlechner@baylibre.com; h=from:subject:message-id; bh=ndollx0hHuXyYrWgV+w7a0yS9z8LaB+bJawqeWV7C1E=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd6wKUFl+BJbccGKOMPDZhFwWwlJmZlKp6484 HjZvLArD6SJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXesAAKCRDCzCAB/wGP wKsgB/9q9AuTiwp7lOJRANwMucpfkpzJOrpHn8CkltOpI+aWNp+Kfyl6OBefNM8op2eNGutdhyG VapTsUmBy0YlNJe7zvGtVAyLLM77dKAWW+fHlZHAim6sSbO7dqepIrFVLEcPVaLOi94ij59dHeV XgJRxbNmWmeOBxCd4a3hj9ktQZw1X6YW89PXT9SJOxmtZJC2VdAq4p5iik434ZpESQ1vOFdBLc+ oUtDwBLov6N/UG3U+Ids7BV8Gt1HIgLGMT5wLP3kfqKjHRsUfb+nZ0QKU1O1YJtuirDAzJVRZ8z RUCX8asPQ3mICKuA90/dTn0yya84VK9/4anBMUm3qqpUXhuS X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Use the BITS_TO_BYTES() macro instead of dividing by 8 to convert bits to bytes. This makes it more obvious what unit conversion is taking place. In once instance, we also avoid the temporary assignment to a variable as it was confusing that reg_size was being used with two different units (bits and bytes). Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index 1657f64f1c0465b249adcc8a70dda8faf4a90565..fa792c800c80f960aca75b28a60= cb2588e69fe7d 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -7,6 +7,7 @@ */ =20 #include +#include #include #include #include @@ -190,7 +191,7 @@ int ad_sd_reset(struct ad_sigma_delta *sigma_delta) unsigned int size; int ret; =20 - size =3D DIV_ROUND_UP(reset_length, 8); + size =3D BITS_TO_BYTES(reset_length); buf =3D kcalloc(size, sizeof(*buf), GFP_KERNEL); if (!buf) return -ENOMEM; @@ -419,7 +420,7 @@ int ad_sigma_delta_single_conversion(struct iio_dev *in= dio_dev, data_reg =3D AD_SD_REG_DATA; =20 ret =3D ad_sd_read_reg(sigma_delta, data_reg, - DIV_ROUND_UP(chan->scan_type.realbits + chan->scan_type.shift, 8), + BITS_TO_BYTES(chan->scan_type.realbits + chan->scan_type.shift), &raw_sample); =20 out: @@ -552,9 +553,8 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void = *p) unsigned int reg_size; unsigned int data_reg; =20 - reg_size =3D indio_dev->channels[0].scan_type.realbits + - indio_dev->channels[0].scan_type.shift; - reg_size =3D DIV_ROUND_UP(reg_size, 8); + reg_size =3D BITS_TO_BYTES(indio_dev->channels[0].scan_type.realbits + + indio_dev->channels[0].scan_type.shift); =20 if (sigma_delta->info->data_reg !=3D 0) data_reg =3D sigma_delta->info->data_reg; @@ -616,7 +616,7 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void = *p) } } =20 - sample_size =3D indio_dev->channels[0].scan_type.storagebits / 8; + sample_size =3D BITS_TO_BYTES(indio_dev->channels[0].scan_type.storagebit= s); sample_pos =3D sample_size * sigma_delta->current_slot; memcpy(&sigma_delta->samples_buf[sample_pos], data, sample_size); sigma_delta->current_slot++; --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oo1-f50.google.com (mail-oo1-f50.google.com [209.85.161.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B8FD248F4B for ; Fri, 20 Jun 2025 22:21:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458092; cv=none; b=VFYDF1VbTyp+m6ct5x3OyKF0hRJMHbK5uX+qhZNug/IOsHj5n+aeozhhE1q+3ppGsGluSW8vqcd6r+U+EyX6TzJd9RECFvSJNlg9sduzp11qPqLntq5JhchnDDOx/Uz6q/yPf/7mGjOIHniRJHBkEu+z9xTn1pgFGMlFQseNrD8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458092; c=relaxed/simple; bh=UX7Qk+7NOxJbsbC9UcQ9KMGOYrU47zh3dgyBfOfkmSc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W1iSADabHKz66+FyMsREmSlTuirCclKla20fzb2fmiUxkrrLLtdkvoCqqGdMiB60WyVwJmWJFHYjPGNpP1/KWcWFLRHKlOAki/YB+j3e4n8VNbCuJKFm/3pf6epCjzaEpVZQpqh+sOBCHAXmrv3HzbgY8DMk5ZSaKWV/lOVF4hg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=NmpSGt9h; arc=none smtp.client-ip=209.85.161.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="NmpSGt9h" Received: by mail-oo1-f50.google.com with SMTP id 006d021491bc7-60be827f2b7so1302013eaf.0 for ; Fri, 20 Jun 2025 15:21:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458090; x=1751062890; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=JCcWLS8dPTQ4a25bImW7jFTx7RMnzyCqIg4blrEu6+I=; b=NmpSGt9h7smTo/xPE9h8pDWrX0W0m4OhCHajt3hY8M/O2K9OuEOjsXnAJM5G5zeWWJ CK2NMSqbGioc9yI+T7+ZLvfc7yB17Ow+JcvuLHjjCQVJwDgiiYIKVWq95LC5VUNdvAqO FS7VLuNxEkuQnWSWgkpVsEH4KIBIOfsaqKzxAhsbbq+dZPdUVNOuMAeSbJf+NZ5kPKZc 6I1ag5PiwabA+9JnwUK/eNfl4w4tm1QFrKWrZi9RWZ0Xe+275MsYHnnG1/RldsVcg4Wg XeSxLwsdkPxW943/4eV0dRznevFd8VvkIa3nLea+2jDLZQgvryPl3SX8Cx1SEzQIptQi fTRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458090; x=1751062890; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JCcWLS8dPTQ4a25bImW7jFTx7RMnzyCqIg4blrEu6+I=; b=rKw0Y9EC/xF7mcf0SnK9KA3gztZDNkwW/uitgsRXMaU4kOiPzmKFg9Tq6hd7ZKFE1H E8l9JR1Y6Ho8FAx1zEotmYHGpcTaa1VQwkk++ZpHk8fWJly90li2Js03tcmIsY/j14+v 5p0Y6hlSCtoGjI7pjF4aN0gFuK0IE1of/MDfOd626eOXTE5YHTft5rQg9gzeSXkr4Idj cWV3uGw6UOobuLIcaK6HAf0sVJTIZQYxeT1DaKdW1uBAEAsGqy9quTAb6bwqJw5QkBYt WbhTxbNtwKmVHPMatDvmYjTPEZ2cuwEWGowrn03bcvugWXdiarEs2wWf2mLFs8zi4mzw nfKA== X-Forwarded-Encrypted: i=1; AJvYcCWh+/EMjaqIAd0WKZBIHJYfagvbj7vlCQHvnulvsRr20IoyVqS9ntTYxgEMPVz4V2G28hWy+tzgpVO1opo=@vger.kernel.org X-Gm-Message-State: AOJu0YxMc0xx7v1+7Py+37BrDT9oqfrEp10ZMnKvGS3yXxFWFR87pn5T pg6eRt5aTJ/52ga1iyumLXORiRntoCIsW9wG3SzEVq6l6wnhsPLOIcnzQpkZgnuYwfs= X-Gm-Gg: ASbGncsjR2Cx+0WRrnFHwoPOxHEAzv8NS7WmIuEOCzhq0fnxI9+OAmtaD5I0Teyd/cF 4YzH0hJGK4w3x4AX97FK5orYwIxmUkZlPZmoLiePtA55RgDgGb8aGG2UeWFg72PTt5EBM2j3O8U PPQFgFMoBHfaK5pIzuv7XTVlljaoUxZxMEW2uTCFQ0VoqX9dTa9alNl/qlkHfDoOF+2OMMzsY2g 9F+VBR3I5d4I2otHZAltKdziwyKx4r6Ij44odVZ9RGeOfDuQsJPABzt07CbNlEy4g9lLgPPU0Up 4Saf0Vv8m/oEhdxf8vW8bHUMyrjO6XXO+4Qvm0hLhxVI+5ci9XSuA6pDF539cWmCeJb9 X-Google-Smtp-Source: AGHT+IF2GLud5cD+DfB5URuM0aIY3NYHneGgtodyB2cz+tQIr1/WtBZ+tEE+jOQd4TTZZXS289sX4g== X-Received: by 2002:a05:687c:2053:b0:2eb:a2ec:dc02 with SMTP id 586e51a60fabf-2ef2a952c4cmr1558341fac.11.1750458089654; Fri, 20 Jun 2025 15:21:29 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:29 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:10 -0500 Subject: [PATCH 4/9] iio: adc: ad_sigma_delta: refactor setting read address Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-4-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2048; i=dlechner@baylibre.com; h=from:subject:message-id; bh=UX7Qk+7NOxJbsbC9UcQ9KMGOYrU47zh3dgyBfOfkmSc=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd63BLhmn+HB7QmyWk8EbmeurR9QlJsuMl3Uw JK5ZEn9KrCJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXetwAKCRDCzCAB/wGP wNzyCACV9VMkV37f/qNR4IYrQCDTE4Gyr8RWjjT9Mt4L6/uR58OZzQeRn0xosTA5hf+6dMpIn4G quzIsNpX6yWjuiSQ6BOp8oNfohOWnp+phkS2M/ADbBQ8Njme63/AsYWaPJ3vWD7FNlCVavB857O ed+kaYrFagaItZiaShcMkKZC/DgYP4N/tI7ivJ5YAMw4XRgbb2Vo6hMGlprukpF1MsmQHzGZ4rL P9iHZYWfsgNN9cL0D9w0YRzwZRxNUg4fShiWkLFRMzkN9WHpJSNe66941B/TJQYxjIn4mYQJE33 STaX+GdnH/Orr4GEnmPjQ1Hl7VvFcQ0f9/gcHpmLS2zhrdm/ X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Refactor code to set the read address in a separate function. This code is already duplicated twice and we will need to use it a third time in a later commit. Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index fa792c800c80f960aca75b28a60cb2588e69fe7d..883cc02d4099908644af523bcf6= 6c0178fbd0e55 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -100,6 +100,14 @@ int ad_sd_write_reg(struct ad_sigma_delta *sigma_delta= , unsigned int reg, } EXPORT_SYMBOL_NS_GPL(ad_sd_write_reg, "IIO_AD_SIGMA_DELTA"); =20 +static void ad_sd_set_read_reg_addr(struct ad_sigma_delta *sigma_delta, u8= reg, + u8 *data) +{ + data[0] =3D reg << sigma_delta->info->addr_shift; + data[0] |=3D sigma_delta->info->read_mask; + data[0] |=3D sigma_delta->comm; +} + static int ad_sd_read_reg_raw(struct ad_sigma_delta *sigma_delta, unsigned int reg, unsigned int size, u8 *val) { @@ -120,9 +128,7 @@ static int ad_sd_read_reg_raw(struct ad_sigma_delta *si= gma_delta, spi_message_init(&m); =20 if (sigma_delta->info->has_registers) { - data[0] =3D reg << sigma_delta->info->addr_shift; - data[0] |=3D sigma_delta->info->read_mask; - data[0] |=3D sigma_delta->comm; + ad_sd_set_read_reg_addr(sigma_delta, reg, data); spi_message_add_tail(&t[0], &m); } spi_message_add_tail(&t[1], &m); @@ -281,9 +287,7 @@ static int ad_sigma_delta_clear_pending_event(struct ad= _sigma_delta *sigma_delta if (sigma_delta->info->has_registers) { unsigned int data_reg =3D sigma_delta->info->data_reg ?: AD_SD_REG_DATA; =20 - data[0] =3D data_reg << sigma_delta->info->addr_shift; - data[0] |=3D sigma_delta->info->read_mask; - data[0] |=3D sigma_delta->comm; + ad_sd_set_read_reg_addr(sigma_delta, data_reg, data); t[0].tx_buf =3D data; spi_message_add_tail(&t[0], &m); } --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6F81424C09E for ; Fri, 20 Jun 2025 22:21:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458098; cv=none; b=PM06ayQkoXONrgFBJ35uTmsG7qt8Dy3lIS1P9nbimTWuMOgSyH/eMSLM1VDQr3fymIJZ9Ddl1VP1er8RxVbWeA5aDcaG+jMPO343Sj9MvP7oTL9IHLquc+WlrWmKHKctEEEoeKSu3/kyE7WY7/mhYS+P+meSoNUgajgwmLo83oo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458098; c=relaxed/simple; bh=cddbpWXqEEIcj2QjKN8G7oDTDa9572QNRGwDt6kGyjI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IMBAG8Bow7cyzU9WO0LhNijdQwLAcB/2tVl7q1tMh7BNtfDGRLsR5r8ptWOCSPf1JoQg4F0wOybVUJoudNPvoqUxctItiughV+IVEhW2hRz1QqIZcNTRsv8BJT+HB9QUbe87LqBHozw2Iy0805BgektunHlx8RZwyfCArS19Rrs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=RA6lrfRn; arc=none smtp.client-ip=209.85.210.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="RA6lrfRn" Received: by mail-ot1-f43.google.com with SMTP id 46e09a7af769-73a5c3e1b7aso1604604a34.3 for ; Fri, 20 Jun 2025 15:21:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458092; x=1751062892; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=UcT++7C45quX0bPAWijBUd9v7dxcY6r0k5c1R2+o2CM=; b=RA6lrfRn30qoL8lAM3msDtijjIcqJTQuc1Hyx6q/ovEp8mvEwu+hMbdQhwnB5kmwoA mA4qgfCzNUSumVykvUGBHdezHT6Jp6P5bovKdp3o/I3KYwsw2CpeEM7VuZbSHUIAhXEo B/KiTlbeeekcChhvTTyDz8q2Gpgx0weNnQFF0bhpO25clZbl0N+ubV9ZWmakiDIdIkun 8qBrs0xXuVICHAK51TtTnDcUKX8jOMizxa8g6NR36cUY7/+bLWqxmVjIH8lmMIclk5sM OdUmMxYxQD2GZnI2D3y/E8rD7owBulrDmPXigdxXIECvToTMzoxtChNZR+oANf9izRlD UDvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458092; x=1751062892; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UcT++7C45quX0bPAWijBUd9v7dxcY6r0k5c1R2+o2CM=; b=i+0m8XHADPa0vq1ruRiSDe/jRHGTmxuoTIwKGUioGZuo/7yiUj1LkqAaU5eumvrA4q WI7AcGvEmgwpkp0Qjfkl9RqS21CpJXyIsnMusX4Fb3SvSvrpW/d34Hwl8GXUAscA1WtQ I+ZPznsuucgtLFaOaDd0HW3zWoGrNNvSxI+8H/Bi+fS7rPAms8n8zya9EkthsHMnNwVc qGYD/apRblsoqrdPfz4TdWPtREzAaRBe4p3CJtMSEzgYKN4/zmQGFceaMXg5jlUPM2yF 19SIDq3E563cql/gexZidCc1g+CCGUd5RuznkB1TvsHK5Hkyr4boEmRrSAlJLmXNG6OG 7MLQ== X-Forwarded-Encrypted: i=1; AJvYcCXxCFByMID99KTrCxjWnVQj/5CiUk6sL+AL4wn1pKL+0lbsQr7AkF9+VrLb7zBMV0iLBE7pjqvAz0jFaNU=@vger.kernel.org X-Gm-Message-State: AOJu0YyWAhEDjR7vghPb/OGciw6sSJIUZ3/d7CPNnf2mGYTcvsTe9sx7 uUimORNNUzhYNBgJxhW0YxzzZbuRySBsEjExo8gOfqNMoMkqIE0cKeEgjPhOArVV86c= X-Gm-Gg: ASbGncsNPuJQGs/hEH0VmSKahXMart/JZ5JWXXe5PiUsG3SDQ9rXL2FswGg8+n00q7Q cEm0oSCJ33Ba7ofIYphucAjG4Idv1fu5YD3meIs4Woezy4fqKLvI7/nIzUFBDPTEXA57Ae8Toqv PyFgYPUoOJRY00W6U2zSBORT2SyUCqod3R99MCVq73M/R0CtQyaslvUW0UIfbbsUgaFZaznXr/6 PpJoXoEyClYIg27PkGsiSoh+V/f4CYMBMOp8POtABTq2CiufhATB5KGUlBXyavyWWHJ/jX9F3GY Ao1Mt1NguADKV0sZISK1KsUKtYUuov88+H4Hj8RYmWs5Ak+UV8vok9WkDW6n9jMxcHeH X-Google-Smtp-Source: AGHT+IFfdGgCkgkyBiTBFRzPhVVwmPDFsxlUzyb+wnJ7zOP3uPcIaLAMRZYbQtUAa4MqqkfiKxpLug== X-Received: by 2002:a05:6870:d109:b0:2b8:306f:c5ad with SMTP id 586e51a60fabf-2eedbb795damr3298515fac.13.1750458092521; Fri, 20 Jun 2025 15:21:32 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:31 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:11 -0500 Subject: [PATCH 5/9] iio: adc: ad_sigma_delta: use spi_optimize_message() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-5-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6152; i=dlechner@baylibre.com; h=from:subject:message-id; bh=cddbpWXqEEIcj2QjKN8G7oDTDa9572QNRGwDt6kGyjI=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd694+e7CAINB1ltcYwO+0KLA/51zFkpHDmJC DuUjXS1TyGJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXevQAKCRDCzCAB/wGP wJ2+B/9HPYKdZ2KMqtGKaTpOky4qhHk3F2oVPdclcUbmcsqRtVz+TAtzAM4leaYSgN+MAPwzrXV EjM4wHuJB4fVUYlUJxMRK2N+CmUPCjrViQhdJlhwhTX4Zp8j2EHiwbts1okgm1p/SmOfZHj+b8r kMPEPx7dkXDmybmv3tiZCoDbDUGVBm/SZd6pBtjWxiCcNPbwFiUFLi9bNEnEJYcdP4tQMtCmvHY HtFb21omke1GTBHaEPldWWnt0VI7fDlOivjO/hG89fJVdZzhO1q4iRk2AgpClQw4LV9+mxplv/t 9G1Q12Wck0rplQ1AMe60QQj0aoDNn8z+RHcEQoacduNdsVEH X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Use spi_optimize_message() to improve the performance of buffered reads. By setting up the SPI message and pre-optimizing it in the buffer postenable callback, we can reduce overhead during each sample read. A rough estimate shows that this reduced the CPU usage of the interrupt handler thread from 22% to 16% using an EVAL-AD4112ARDZ board on a DE10-Nano (measuring a single channel at the default 6.2 kHz sample rate). Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 74 ++++++++++++++++--------------= ---- include/linux/iio/adc/ad_sigma_delta.h | 3 ++ 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index 883cc02d4099908644af523bcf66c0178fbd0e55..a9b97f5d4107a2e1bb74877d304= 03445e9b04a44 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -458,8 +458,10 @@ EXPORT_SYMBOL_NS_GPL(ad_sigma_delta_single_conversion,= "IIO_AD_SIGMA_DELTA"); static int ad_sd_buffer_postenable(struct iio_dev *indio_dev) { struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); + const struct iio_scan_type *scan_type =3D &indio_dev->channels[0].scan_ty= pe; + struct spi_transfer *xfer =3D sigma_delta->sample_xfer; unsigned int i, slot, samples_buf_size; - unsigned int channel; + unsigned int channel, scan_size; u8 *samples_buf; int ret; =20 @@ -493,7 +495,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indi= o_dev) return ret; } =20 - samples_buf_size =3D ALIGN(slot * indio_dev->channels[0].scan_type.storag= ebits, 8); + samples_buf_size =3D ALIGN(slot * scan_type->storagebits, 8); samples_buf_size +=3D sizeof(int64_t); samples_buf =3D devm_krealloc(&sigma_delta->spi->dev, sigma_delta->sample= s_buf, samples_buf_size, GFP_KERNEL); @@ -501,6 +503,27 @@ static int ad_sd_buffer_postenable(struct iio_dev *ind= io_dev) return -ENOMEM; =20 sigma_delta->samples_buf =3D samples_buf; + scan_size =3D BITS_TO_BYTES(scan_type->realbits + scan_type->shift); + xfer[1].rx_buf =3D &sigma_delta->rx_buf[scan_size =3D=3D 3 ? 1 : 0]; + xfer[1].len =3D scan_size + (sigma_delta->status_appended ? 1 : 0); + xfer[1].cs_change =3D 1; + + if (sigma_delta->info->has_registers) { + xfer[0].tx_buf =3D &sigma_delta->sample_addr; + xfer[0].len =3D 1; + + ad_sd_set_read_reg_addr(sigma_delta, + sigma_delta->info->data_reg ?: AD_SD_REG_DATA, + &sigma_delta->sample_addr); + spi_message_init_with_transfers(&sigma_delta->sample_msg, xfer, 2); + } else { + spi_message_init_with_transfers(&sigma_delta->sample_msg, + &xfer[1], 1); + } + + ret =3D spi_optimize_message(sigma_delta->spi, &sigma_delta->sample_msg); + if (ret) + return ret; =20 spi_bus_lock(sigma_delta->spi->controller); sigma_delta->bus_locked =3D true; @@ -520,6 +543,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indi= o_dev) =20 err_unlock: spi_bus_unlock(sigma_delta->spi->controller); + spi_unoptimize_message(&sigma_delta->sample_msg); =20 return ret; } @@ -541,7 +565,10 @@ static int ad_sd_buffer_postdisable(struct iio_dev *in= dio_dev) =20 ad_sigma_delta_disable_all(sigma_delta); sigma_delta->bus_locked =3D false; - return spi_bus_unlock(sigma_delta->spi->controller); + spi_bus_unlock(sigma_delta->spi->controller); + spi_unoptimize_message(&sigma_delta->sample_msg); + + return 0; } =20 static irqreturn_t ad_sd_trigger_handler(int irq, void *p) @@ -550,51 +577,20 @@ static irqreturn_t ad_sd_trigger_handler(int irq, voi= d *p) struct iio_dev *indio_dev =3D pf->indio_dev; struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); u8 *data =3D sigma_delta->rx_buf; - unsigned int transfer_size; unsigned int sample_size; unsigned int sample_pos; unsigned int status_pos; unsigned int reg_size; - unsigned int data_reg; + int ret; =20 reg_size =3D BITS_TO_BYTES(indio_dev->channels[0].scan_type.realbits + indio_dev->channels[0].scan_type.shift); + /* For 24-bit data, there is an extra byte of padding. */ + status_pos =3D reg_size + (reg_size =3D=3D 3 ? 1 : 0); =20 - if (sigma_delta->info->data_reg !=3D 0) - data_reg =3D sigma_delta->info->data_reg; - else - data_reg =3D AD_SD_REG_DATA; - - /* Status word will be appended to the sample during transfer */ - if (sigma_delta->status_appended) - transfer_size =3D reg_size + 1; - else - transfer_size =3D reg_size; - - switch (reg_size) { - case 4: - case 2: - case 1: - status_pos =3D reg_size; - ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[0]); - break; - case 3: - /* - * Data array after transfer will look like (if status is appended): - * data[] =3D { [0][sample][sample][sample][status] } - * Keeping the first byte 0 shifts the status position by 1 byte to the = right. - */ - status_pos =3D reg_size + 1; - - /* We store 24 bit samples in a 32 bit word. Keep the upper - * byte set to zero. */ - ad_sd_read_reg_raw(sigma_delta, data_reg, transfer_size, &data[1]); - break; - - default: - dev_err_ratelimited(&indio_dev->dev, "Unsupported reg_size: %u\n", reg_s= ize); + ret =3D spi_sync_locked(sigma_delta->spi, &sigma_delta->sample_msg); + if (ret) goto irq_handled; - } =20 /* * For devices sampling only one channel at diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc= /ad_sigma_delta.h index 5056677c9941afadc2383febbcafeb02e23a4f44..2037bb68b44115681ff48f66b58= 0b63f50c2ea9e 100644 --- a/include/linux/iio/adc/ad_sigma_delta.h +++ b/include/linux/iio/adc/ad_sigma_delta.h @@ -105,6 +105,8 @@ struct ad_sigma_delta { bool status_appended; /* map slots to channels in order to know what to expect from devices */ unsigned int *slots; + struct spi_message sample_msg; + struct spi_transfer sample_xfer[2]; u8 *samples_buf; =20 /* @@ -116,6 +118,7 @@ struct ad_sigma_delta { */ u8 tx_buf[4] __aligned(IIO_DMA_MINALIGN); u8 rx_buf[16] __aligned(8); + u8 sample_addr; }; =20 static inline int ad_sigma_delta_set_channel(struct ad_sigma_delta *sd, --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B40D24C669 for ; Fri, 20 Jun 2025 22:21:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458096; cv=none; b=MK7FPzldCJqMYpfwxvlgfHoWnNr79BdNhTLV2ixpolMSnZEzsDSYB3Z8xTdFaUXgpJzbEVNRyLU1EY/RzATAxL0ypxNek4cmh1Jsr1hpoXu/zzUvAEh9WnPZ+beUgL20lS4+ZyaiQ4aS+nuBjazWdm3W/uL1vNw86WUG5/JR2uA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458096; c=relaxed/simple; bh=MgpLRHOcZVJ/2tnDLCDfnuJFhe8jp/MxItvFSS0S1SM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q/FbgCNMqdB2I3z/47/xxkJYAKEeVmqeAhGybbtgd0tEMBnM9OtWSrI+QSECsAK6Fne1qjiAQH4QTxqbMmpG+7u1kSVf38GXUXQDhEw3WSAkRsxf+oZe8OyteQJ/GHOr9bXNE2Nyt74pUzmhkJvBVAV5or24gxKpJZvEzY7HaQo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=fhN5byA0; arc=none smtp.client-ip=209.85.160.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="fhN5byA0" Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-2ea58f008e9so1852136fac.0 for ; Fri, 20 Jun 2025 15:21:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458093; x=1751062893; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=43WTYGtum1Th6RvZIB3bhmeCSu/8SL+mkbZemZWRqVA=; b=fhN5byA0C28AjQL3fh8RnnRMWN0zRs5QnfSVkRea38FpzHelfwB6jsXpo6cWpDQBBh 4eGQQeRJb1HdpqhiXSm0o2cjyI76cTSsPT8WzRWJUSE+DaGmUlijPCcML7ehDoFrcFah LhnhWi82DzgF35R7IzCOeL/Z0BsszHSovMc00uxm10sMY0jVKhlWEAFgf8xmFzXqkmb6 S7Eo2w6Q7+DGHb88JcKEhIy38TjdqSg3io50NQEZ29u5C6Xp+7CUVCHJPTJIL/JcKNVT 19OTWmXqjqfoIisDV1kpAIEIIbyzxkAb0IpilRmt2tvBBynE7Lbya85YtfVkagSGrrw4 8OMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458093; x=1751062893; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=43WTYGtum1Th6RvZIB3bhmeCSu/8SL+mkbZemZWRqVA=; b=eBBV46qqg03lYrc22/BzPicB4wW1/S1YCQ1db7kscL9ZRFZs0jZfkG8IB4Pxtl4NVM iFVDpBd24JN24N2IhUvEjGr2wrbcQtP7wRQl0HGJyQnCClLdzSZSGHBF+5/+04fEFWmd 85wj38CeMwgWB0eWg2npZhX4nxvyvhTokq+Ak/8BposQQUND7doAgHNZDXjk5TztDadY V2IQmd1zDi1javw9hBYHDb3z9dWDxW1gWv46ig+9i+wafu7n0rU60wuto/pIZB4nNPNZ OT8TpFvZmzd7GfqG7klz/vIpKatjyjsBHufNnsMixqxM545CNNAd9R4OUI4mGneFnDWI wHIQ== X-Forwarded-Encrypted: i=1; AJvYcCXMgZuJNLAC0my1+N97paq+Y8fFUSw8ZfDjXlruQ5e9fyxex6E2uIW6/wS0k9ue+1YwIwsjOIxboVRSy0g=@vger.kernel.org X-Gm-Message-State: AOJu0YwbOPSnO6GOyiMrBjIXnCqTMrhh24mAtkUEWIbeNlhM8LIXvZ/1 S5pPizsOrr0mVGAwua1KYVm+JjroYRlxi/KucORL/w8kzLQbdtiBYfigm0/a4of3a8M= X-Gm-Gg: ASbGncvR7UZzPp3kV5F3AwK+HK1KiK0IYP3ImJlt0avjJVECIkKea+JQ3M7dhIn4qjj L47pMwnC8GBhTNy1YkTrhTyGHyzFwiiWgYOejGpBeCZX/U78IOdJ5/g/ReE7gllDG8TygUdNNkk vM1JK01TGHfR8IrzxeABXAKlJmA0oRQzYKpaQIqiJ7Kj4WS0gfnvCoUUxs2+5E6S4nCRlJApGt7 dp2RdBUquqf1YgIWmPTSkCswW4JEVEo3PaD3ufUp0pito3gfv2woZ01vm8IpLb02wYcYBCGjnnM v1c+8IpmvuTqur2c8vw840aHtVBC/MbS93u711+9C5lWae3sUr6cmKZ3/dSV/JJSSx7m X-Google-Smtp-Source: AGHT+IEc2nVeyrSHlCquh9VuIExCHCGOiKwU4IsdwWSmCTWnlAcehYcksdKGdeerVAcrqyPXaPtWNg== X-Received: by 2002:a05:6870:ff44:b0:2d5:4d2d:9525 with SMTP id 586e51a60fabf-2eeda55d669mr3193399fac.8.1750458093305; Fri, 20 Jun 2025 15:21:33 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:33 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:12 -0500 Subject: [PATCH 6/9] dt-bindings: trigger-source: add ADI Util Sigma-Delta SPI Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-6-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2693; i=dlechner@baylibre.com; h=from:subject:message-id; bh=MgpLRHOcZVJ/2tnDLCDfnuJFhe8jp/MxItvFSS0S1SM=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd7DTso31Vwy+hQKXbz8lwu3sIYtN0jGDYgXh nrUKMbeR1+JATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXewwAKCRDCzCAB/wGP wP/VB/oDkOimP/alMgbmtPW6ZnvK1uwphrV/dFIVNUKNmM8LVl1+faMeJCcoNsaKXjws+C44L3A ynCz7tneQRgUhWlepFBndQis7h4urp5LNu+ppbuFWvI68VvQPeJkQhvFccrXyCkmOvVFJn0eu5W PAisSuvuGMaa2yDmldjiKoUuWWFMJ2Nvt7By5Hc7QfqOTnSBWef54lpiBnj6jeStWYCgQi14RtH B4KykktHNdrdl5EpXoNF2dLDcF2ogySUoFyeeQL4TarZbLw/5dF9/SIXGViHiNcfBWT9W/cEbw8 Y0XUYnSHyhFrjqZ1V0k5YLCyhWkgGNWr9F1QfGWq/3+9UZwe X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Add new binding for the ADI Util Sigma-Delta SPI FPGA IP Core. This is used to trigger a SPI offload based on a RDY signal from the ADC while masking out other signals on the same line. Signed-off-by: David Lechner Reviewed-by: Rob Herring (Arm) --- .../trigger-source/adi,util-sigma-delta-spi.yaml | 49 ++++++++++++++++++= ++++ MAINTAINERS | 5 +++ 2 files changed, 54 insertions(+) diff --git a/Documentation/devicetree/bindings/trigger-source/adi,util-sigm= a-delta-spi.yaml b/Documentation/devicetree/bindings/trigger-source/adi,uti= l-sigma-delta-spi.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ea466179551cb0d8f8e1cf01f91= 101b88734da88 --- /dev/null +++ b/Documentation/devicetree/bindings/trigger-source/adi,util-sigma-delta= -spi.yaml @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (c) 2025 Analog Devices, Inc. +# Copyright (c) 2025 BayLibre, SAS + +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/trigger-source/adi,util-sigma-delta-spi= .yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Analog Devices Util Sigma-Delta SPI IP Core + +maintainers: + - David Lechner + +description: + The Util Sigma-Delta SPI is an FPGA IP core from Analog Devices that pro= vides + a SPI offload trigger from the RDY signal of the combined DOUT/RDY pin of + the sigma-delta family of ADCs. + https://analogdevicesinc.github.io/hdl/library/util_sigma_delta_spi/inde= x.html + +properties: + compatible: + const: adi,util-sigma-delta-spi + + reg: + maxItems: 1 + + clocks: + maxItems: 1 + + '#trigger-source-cells': + const: 0 + +required: + - compatible + - reg + - clocks + - '#trigger-source-cells' + +additionalProperties: false + +examples: + - | + trigger@40000 { + reg =3D <0x40000 0x1000>; + compatible =3D "adi,util-sigma-delta-spi"; + clocks =3D <&clk 0>; + #trigger-source-cells =3D <0>; + }; diff --git a/MAINTAINERS b/MAINTAINERS index ea082c6be8acd5081d95bbada99ae47793f206e5..60ba572be7f5b48c0ab1d0d9724= e19e335e8761b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -25176,6 +25176,11 @@ W: https://github.com/srcres258/linux-doc T: git git://github.com/srcres258/linux-doc.git doc-zh-tw F: Documentation/translations/zh_TW/ =20 +TRIGGER SOURCE - ADI UTIL SIGMA DELTA SPI +M: David Lechner +S: Maintained +F: Documentation/devicetree/bindings/trigger-source/adi,util-sigma-delta-s= pi.yaml + TRIGGER SOURCE - PWM M: David Lechner S: Maintained --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oo1-f47.google.com (mail-oo1-f47.google.com [209.85.161.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1416A24DD15 for ; Fri, 20 Jun 2025 22:21:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458096; cv=none; b=FULdKy42nDNdkWobYdwOgk3eOu8xOz1jB4wRc1FjnrSG/tR1i/WK6TUkgH2vcvd8Qp1YIi5ZLD+mvIvlPGhTkInWduP9r5ZYECLts/D/HGbN7aIjiALgtwtZK1+BjjyRZIAgdIrPQ/Qu2Ukw1N2QFmfA2EaC+yubDYNaug5FLos= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458096; c=relaxed/simple; bh=BwOGbOpYX21Ucam+bloAQXE+MG2uw4doa1iKJcVx3E8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T4XqOo3Ti7WE7Esw4hFVFJuCEylWvMio/Sk7Tju8Qb2RzNFZJB1CaO7WJkLJ+EjwHjngoqmdLwo6Wzr2KbfAPUiAru8JMupIXYrceYEM6qFoS3yZpy9RLL4K3rzPyt+CF6nko1mSiO1fCPMjJ6wA8F1dY1T06qJ4aQPYPyipyyY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=t7hAizm5; arc=none smtp.client-ip=209.85.161.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="t7hAizm5" Received: by mail-oo1-f47.google.com with SMTP id 006d021491bc7-60402c94319so1246083eaf.1 for ; Fri, 20 Jun 2025 15:21:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458094; x=1751062894; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=T+UAVQwWtySu3Zk+qmcMSCJQC906a/pI5jwVttXUTqw=; b=t7hAizm5KZjZ94mIDfS8HasjKUN7hVoZi91Vy9RWOuqGBHNtzu4Jab1/ryzybZiWfc hNK2fG0/sw/RPLgGb0IXluZe7RFGLfRKfrgq1Qat1g8KCDpgFgh5DZqkqSqsFwj0NBSr Zl9bnKb4Kd9dIk9U/11pMZwtVDzXMh0vYYaIb3/4XfHClW8fVoCKqA7RYLyRrLod4hbu b2PNa1/gUtlnpGpxvjbDF9X1wa+drBp0tS789TrlMf86+eGCDP46ug3tzL+ICexBRCMy 23milim/3D0sVhqeHbwlh8dcldeQxQvjhx5MDTAIH60swcAbsmFcQGSBmh6ni0rKIIf7 5HkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458094; x=1751062894; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T+UAVQwWtySu3Zk+qmcMSCJQC906a/pI5jwVttXUTqw=; b=XgpCdM6kwGY2lRRVjiNt2UYxRwnIemqVD6NVvIeEFW3BX9HN8LaE0qD3olTTnGPgkt qvHEPXuZEXhpk8xoFz+NZCDHQ4w6xtTtaG9j3P2AcPvdn7MYosPgck2xNw+2OnPuWOrE /5oBt04vHBcUDfBy+uB2GomqLF6FHYTp/IzL8f65FMlYkeggxKlvv0yBCzrq++ltflZM QjPWkuTSJZUII67zF3TdF7IcyLSiHnX85Y56QDkCvO/IM5YDWrohkb42L7krDBxRIicC 1ABX0BxXdRJFUwFkHq+pZUXQQeBYrThpEbQyF1QwVozrjnHFTz53TU4ztm1pIOQmpS+y Ziog== X-Forwarded-Encrypted: i=1; AJvYcCV1kxqz4vt3C7Ga5UssbN+H7s2bvIAMxgSpkejVDOr+LA6rJpBrv8NkIIrYwTDtVJG+yqNOoWmiCedg94Y=@vger.kernel.org X-Gm-Message-State: AOJu0YzLEjhZsgvJBcSPCQ2+s8g7UR5tsLCBBgTf/ZF5vm6vm+QYbtvK rBSCIy0404l+ynFbR3Cq7xNikcb1Q6E23Fp7CKCeOFFV7R1jzqA9pv2WjWFqS96/w3Q= X-Gm-Gg: ASbGncviBZ/9dnlNZ2d8gKkM36PxqjK7af1117ukMGWtOCYcobK8TmGElolXRDZ+F/0 3iWSOgAZ/1yE/SwaK8KcTyCYgzJGH0aDwYsC4Bxls4Xf7svm1IxQKWg99Eq1r7JKbp0RE5XYhjA 0TKnEIbp1li0R68qR7IIRHXWgik5cJOPyFC4OI6jySwlypyXc5SPRf+kJN0kVIPRgMA7Ln08xYa UqGeqKPwjH5q3fyboLCn0/yM4D1Ew9wahEeXOPv0z49BHZd3D4A4wRG1+H9Kztip+v/e9ftVF81 rtClPvdv24RdXD0yyJANJsmGR24TBFoZKGj8f9DPZ+3Dj9THujubxAcKNLrwtA6+6hlQ X-Google-Smtp-Source: AGHT+IGVhQ/Ygrt+I/n1VtjMi0eU63wKILJBqUt+HqZ6TRpY8gF1Tzp20x9EKk4Yh7WxzmQ7OeIS9w== X-Received: by 2002:a05:6870:6391:b0:29d:c85f:bc8c with SMTP id 586e51a60fabf-2eeee659b1cmr3012485fac.36.1750458094166; Fri, 20 Jun 2025 15:21:34 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:33 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:13 -0500 Subject: [PATCH 7/9] spi: offload trigger: add ADI Util Sigma-Delta SPI driver Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-7-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4261; i=dlechner@baylibre.com; h=from:subject:message-id; bh=BwOGbOpYX21Ucam+bloAQXE+MG2uw4doa1iKJcVx3E8=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd7KWtgTjPbi3YZhrvUDq6yz9ko4YaApYPN8R eK4qzisj4aJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXeygAKCRDCzCAB/wGP wEgoCACN3bes1vX7AMC+4MNdXRnYbEFoqA8WJVnkVD0Wx1WeMt5VbVMGgmEnDkcWbCThlGEABTf 9MxzQgP+DopACd4sLshxxLkkZujWXbnPcLXMrzew18nifeQuON0xoay33Y7mHgXsJ1XDvLMW71H 2zCqpnVO/WmJkp6C2mUVpot9j1y5MNZ7t/hOqcYqkQquCwdjSqRPuIe7+06GM2ebwkWrTuIRQNB +oM5uTBpp4l6UWSPh5fSII20PpG/MMdxm+eM8YQ0jho1P5cZdKAMKX1CLV/ywe1UVpaz67oiIu9 NI313wXUtu0tSS8uMp02IGJI+VVnxbOYHhJIh3MlJ/hQYtFC X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Add a new driver for the ADI Util Sigma-Delta SPI FPGA IP core. This is used to trigger a SPI offload based on a RDY signal from an ADC while masking out other signals on the same line. Signed-off-by: David Lechner --- MAINTAINERS | 2 +- drivers/spi/Kconfig | 5 ++ drivers/spi/Makefile | 1 + .../spi/spi-offload-trigger-adi-util-sigma-delta.c | 59 ++++++++++++++++++= ++++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index 60ba572be7f5b48c0ab1d0d9724e19e335e8761b..4ed4977deb6ddc545be39b5c1d5= e9959e9fe64cf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -23357,7 +23357,7 @@ F: include/linux/mtd/spi-nor.h =20 SPI OFFLOAD R: David Lechner -F: drivers/spi/spi-offload-trigger-pwm.c +F: drivers/spi/spi-offload-trigger-*.c F: drivers/spi/spi-offload.c F: include/linux/spi/offload/ K: spi_offload diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index c51da3fc3604977b05388687e5e64a58370186c4..e69f060d3875c168a2dc701a372= e47b8ffd33268 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig @@ -1355,6 +1355,11 @@ if SPI_OFFLOAD =20 comment "SPI Offload triggers" =20 +config SPI_OFFLOAD_TRIGGER_ADI_UTIL_SD + tristate "SPI offload trigger using ADI sigma-delta utility" + help + SPI offload trigger from ADI sigma-delta utility FPGA IP block. + config SPI_OFFLOAD_TRIGGER_PWM tristate "SPI offload trigger using PWM" depends on PWM diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile index 4ea89f6fc531625060255ecff237470927e1f041..51f9f16ed734424ff10672a04f2= ec166dc637e0b 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile @@ -170,3 +170,4 @@ obj-$(CONFIG_SPI_SLAVE_SYSTEM_CONTROL) +=3D spi-slave-s= ystem-control.o =20 # SPI offload triggers obj-$(CONFIG_SPI_OFFLOAD_TRIGGER_PWM) +=3D spi-offload-trigger-pwm.o +obj-$(CONFIG_SPI_OFFLOAD_TRIGGER_ADI_UTIL_SD) +=3D spi-offload-trigger-adi= -util-sigma-delta.o diff --git a/drivers/spi/spi-offload-trigger-adi-util-sigma-delta.c b/drive= rs/spi/spi-offload-trigger-adi-util-sigma-delta.c new file mode 100644 index 0000000000000000000000000000000000000000..035d088d4d33d6d32146a340381= bb167f080e085 --- /dev/null +++ b/drivers/spi/spi-offload-trigger-adi-util-sigma-delta.c @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2025 Analog Devices Inc. + * Copyright (C) 2025 BayLibre, SAS + */ + +#include +#include +#include +#include +#include +#include +#include + +static bool adi_util_sigma_delta_match(struct spi_offload_trigger *trigger, + enum spi_offload_trigger_type type, + u64 *args, u32 nargs) +{ + return type =3D=3D SPI_OFFLOAD_TRIGGER_DATA_READY && nargs =3D=3D 0; +} + +static const struct spi_offload_trigger_ops adi_util_sigma_delta_ops =3D { + .match =3D adi_util_sigma_delta_match, +}; + +static int adi_util_sigma_delta_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct spi_offload_trigger_info info =3D { + .fwnode =3D dev_fwnode(dev), + .ops =3D &adi_util_sigma_delta_ops, + }; + struct clk *clk; + + clk =3D devm_clk_get_enabled(dev, NULL); + if (IS_ERR(clk)) + return dev_err_probe(dev, PTR_ERR(clk), "Failed to get clock\n"); + + return devm_spi_offload_trigger_register(dev, &info); +} + +static const struct of_device_id adi_util_sigma_delta_of_match_table[] =3D= { + { .compatible =3D "adi,util-sigma-delta-spi", }, + { } +}; +MODULE_DEVICE_TABLE(of, adi_util_sigma_delta_of_match_table); + +static struct platform_driver adi_util_sigma_delta_driver =3D { + .probe =3D adi_util_sigma_delta_probe, + .driver =3D { + .name =3D "adi-util-sigma-delta-spi", + .of_match_table =3D adi_util_sigma_delta_of_match_table, + }, +}; +module_platform_driver(adi_util_sigma_delta_driver); + +MODULE_AUTHOR("David Lechner "); +MODULE_DESCRIPTION("ADI Sigma-Delta SPI offload trigger utility driver"); +MODULE_LICENSE("GPL"); --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f49.google.com (mail-oa1-f49.google.com [209.85.160.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 33F70261595 for ; Fri, 20 Jun 2025 22:21:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458101; cv=none; b=Us/d8s2eIEyiyt7miRLD8UbiTdtSRETMiaZ+fmlqL+4l9+gQMrwZ3XZg0rvMGoT+XpgUoBGWFFFnUhqYwYjs1VYxYHYojYQE+StFvUnBcBrZcNIovm8GmSBTQaQyhJsDcai1Njz2oCb2Igb6g0ryWRpqIs7EqlEG7QyzjFZ3C5k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458101; c=relaxed/simple; bh=IbUsb0IIrRbh86CcQ9q0Bs053cQYEkTsgXdxSwZMBi4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ivc7/PVKyMG0IsFbHuEBey0iOY7ZBf+KDNMU9Ly4yAPQcC7fh9wKPxexhEC3c+2nst0cWT7MWp2tQV76CwjJuK3sXkRB/XJ5/beTInVCZUS0eeXMCbbZnJE8hpMDQ3/mhIxn2907LTfthZ1U7AlQ77JDTIP40v+3IdNH2ZpzRTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=RTmqVQm6; arc=none smtp.client-ip=209.85.160.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="RTmqVQm6" Received: by mail-oa1-f49.google.com with SMTP id 586e51a60fabf-2eacb421554so619476fac.1 for ; Fri, 20 Jun 2025 15:21:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458097; x=1751062897; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=BTBvz5OHgnYilXTL9sKwLw3ZA7PkxwmvAPdMSwI1B94=; b=RTmqVQm65fB0/Air51ZXWggjZeFU29HExx/zMQJldzKK4/ld9+JfUNZzBW+EbvDP8y XUNZ1cHjQy4zH5OTo0IaZq1b4DPbTJGRAoNqk4OUTSYLFEvsKYCc5fugs6bvhm6ujqP/ gBYhU+HrHMEB5xAgZUCAEDKdB5oug63xKx5SXrL+289jMqJosuxWtmrWtILMIqedV3qj uqLyz+1L68M/8PZGMW8KMHVt7tXVXGTx3CQ9Z9/PmojG49L/EWhOMHD3Vt9R+VOmXzGJ zeCaVjd/7DtMHHBqNZ6crD2UyM+zoUDX6i9IZ78yjAucn50TnJaaimpF3x/QGwgrFJFg PDIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458097; x=1751062897; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BTBvz5OHgnYilXTL9sKwLw3ZA7PkxwmvAPdMSwI1B94=; b=bbY3hG7vOPao2FH53argYoFNB6c3swR4lpvKRD34AeR4cup1OgnxISE7k93e2umIAH S5Kvj91CZCRPfAD/Fs/KsPcYYBrzxTalp5tIbRmIcSIBV1Pr5YIsFNDdE/YH6MS8pfKz MGpOH8KZzS1xfbLIagFab48ThcF2mjzMBtxYMBl5OiVGGgzY79OcWV0dmYsHL4BqwSvh 7oIJhv94jFxcAy54NWGerBHRNknPR40AcUvwgHf+2DCCntbv9GWYROQV1q/64mlJonUk +OaxmA0g4J/UkRyg2SWAkE7C4cWWp9nmPz0xJoyHakFv+rtUZq8kjKSQQUIcUupuOAb/ Emog== X-Forwarded-Encrypted: i=1; AJvYcCVa/314cojG1SIrLnxoC99gn8acbWmz12VvFoKbQK1Xn22bxea7lX241x9WIDAbGCO5XXwQ3igAWDl03DM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx193eiAVfSvBFd/b2vs4JK6EXbvo1cKGY8cBVSfQshoC+BOIbn JMM/sYu6WtVTnlwmiaA04GN/Yyghg8iBnUe7T9VxpM1+Xmq9xTm9STyvHgcOrjI+RFk= X-Gm-Gg: ASbGnctwHZATKIvpou90sFHSUYF3pE4A8qnjAMscihsvfdxC1WNZHQntA+7KPWk/30b UMeWStDwoc4Lmgx8hoB1hfmcG7cl+VaqyMOwKG/nNdBosodfYQ4GXwgPy/Y6iLfryXUfbGCiHMm FmYDWkmtSG/tZ1qcuP5SYYGGGJu/3AxiadMfPi7bS5f2wOhcXOScY+f61C262iB1uScxYqe+vtb g9OZyMiDm28i5lyNWuRpO1Uew2fiolmFI0qI4uf+GjyXl+2DvAWz/Uwg/TuHT3uXVvqk6XPVecS y+U7ER3tYVOJYfbmGEWlf7IUSV4kqFL+cUfYErliDzqLmPKBywHt53Dq+nJ0GbeJ9Tt/ X-Google-Smtp-Source: AGHT+IExoXWKwinwKDXq3Vo+jK8Oj/C9dDlKCw/jO6YruhoWC/nvZZXKjVbM4r23Zba1ujtBTZZ/DQ== X-Received: by 2002:a05:6870:6c05:b0:2cc:3d66:b6ea with SMTP id 586e51a60fabf-2eeee62f882mr3489259fac.34.1750458097025; Fri, 20 Jun 2025 15:21:37 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:35 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:14 -0500 Subject: [PATCH 8/9] iio: adc: ad_sigma_delta: add SPI offload support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-8-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=11663; i=dlechner@baylibre.com; h=from:subject:message-id; bh=IbUsb0IIrRbh86CcQ9q0Bs053cQYEkTsgXdxSwZMBi4=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd7QIEkpAm8At8ewr1QJ5Q4JTRXtrGFfKuABn btA2SOVrXqJATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXe0AAKCRDCzCAB/wGP wO8hCACCwizbe0fpq3oB952erC2Os8cWTEUSeYu0/ZQllThL5X6FAKGEMZAZHK/qxP8InCOZB+U XGUs3LgDG2RH9oKE0YX4vPB0UHKUS7dpt+wshQgUgdVW7x4nEEbINSrEJPaaoCg+O0SmwkKWYeP 0Ui0jFgpTNxSfKub+Ltqei9sVbx3CI708zVkeD/q1f7jDixv0VjuQd0bEKasMPeS2EadpOKBD7+ k+M5tN1FoWfvo17YAV5iXRRqyHzkL9lRr7zGEsVFuWiE7BTjkdRLX9YWhmhwLrG5c5finf9DkqG xWcV5TzJwhfWjJHm0AOD5tgngAgUpzca0XHZ63HGq8pibzdm X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Add SPI offload support to the ad_sigma_delta module. When the SPI controller has SPI offload capabilities, the module will now use that for buffered reads instead of the RDY interrupt trigger. Drivers that use the ad_sigma_delta module will have to opt into this by setting supports_spi_offload since each driver will likely need additional changes before SPI offload can be used. This will allow us to gradually enable SPI offload support for each driver. Signed-off-by: David Lechner --- drivers/iio/adc/ad_sigma_delta.c | 160 +++++++++++++++++++++++------= ---- include/linux/iio/adc/ad_sigma_delta.h | 14 +++ 2 files changed, 129 insertions(+), 45 deletions(-) diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_de= lta.c index a9b97f5d4107a2e1bb74877d30403445e9b04a44..449b0756be96d3f864a6e7f0704= 67ad7311bf7d5 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -14,11 +14,13 @@ #include #include #include +#include #include #include #include =20 #include +#include #include #include #include @@ -460,8 +462,7 @@ static int ad_sd_buffer_postenable(struct iio_dev *indi= o_dev) struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); const struct iio_scan_type *scan_type =3D &indio_dev->channels[0].scan_ty= pe; struct spi_transfer *xfer =3D sigma_delta->sample_xfer; - unsigned int i, slot, samples_buf_size; - unsigned int channel, scan_size; + unsigned int i, slot, channel; u8 *samples_buf; int ret; =20 @@ -489,23 +490,33 @@ static int ad_sd_buffer_postenable(struct iio_dev *in= dio_dev) sigma_delta->active_slots =3D slot; sigma_delta->current_slot =3D 0; =20 - if (sigma_delta->active_slots > 1) { - ret =3D ad_sigma_delta_append_status(sigma_delta, true); - if (ret) - return ret; - } + if (ad_sigma_delta_has_spi_offload(sigma_delta)) { + xfer[1].offload_flags =3D SPI_OFFLOAD_XFER_RX_STREAM; + xfer[1].bits_per_word =3D scan_type->realbits; + xfer[1].len =3D spi_bpw_to_bytes(scan_type->realbits); + } else { + unsigned int samples_buf_size, scan_size; =20 - samples_buf_size =3D ALIGN(slot * scan_type->storagebits, 8); - samples_buf_size +=3D sizeof(int64_t); - samples_buf =3D devm_krealloc(&sigma_delta->spi->dev, sigma_delta->sample= s_buf, - samples_buf_size, GFP_KERNEL); - if (!samples_buf) - return -ENOMEM; + if (sigma_delta->active_slots > 1) { + ret =3D ad_sigma_delta_append_status(sigma_delta, true); + if (ret) + return ret; + } =20 - sigma_delta->samples_buf =3D samples_buf; - scan_size =3D BITS_TO_BYTES(scan_type->realbits + scan_type->shift); - xfer[1].rx_buf =3D &sigma_delta->rx_buf[scan_size =3D=3D 3 ? 1 : 0]; - xfer[1].len =3D scan_size + (sigma_delta->status_appended ? 1 : 0); + samples_buf_size =3D ALIGN(slot * scan_type->storagebits, 8); + samples_buf_size +=3D sizeof(int64_t); + samples_buf =3D devm_krealloc(&sigma_delta->spi->dev, + sigma_delta->samples_buf, + samples_buf_size, GFP_KERNEL); + if (!samples_buf) + return -ENOMEM; + + sigma_delta->samples_buf =3D samples_buf; + scan_size =3D BITS_TO_BYTES(scan_type->realbits + scan_type->shift); + + xfer[1].rx_buf =3D &sigma_delta->rx_buf[scan_size =3D=3D 3 ? 1 : 0]; + xfer[1].len =3D scan_size + (sigma_delta->status_appended ? 1 : 0); + } xfer[1].cs_change =3D 1; =20 if (sigma_delta->info->has_registers) { @@ -521,6 +532,8 @@ static int ad_sd_buffer_postenable(struct iio_dev *indi= o_dev) &xfer[1], 1); } =20 + sigma_delta->sample_msg.offload =3D sigma_delta->offload; + ret =3D spi_optimize_message(sigma_delta->spi, &sigma_delta->sample_msg); if (ret) return ret; @@ -537,7 +550,19 @@ static int ad_sd_buffer_postenable(struct iio_dev *ind= io_dev) if (ret) goto err_unlock; =20 - ad_sd_enable_irq(sigma_delta); + if (ad_sigma_delta_has_spi_offload(sigma_delta)) { + struct spi_offload_trigger_config config =3D { + .type =3D SPI_OFFLOAD_TRIGGER_DATA_READY, + }; + + ret =3D spi_offload_trigger_enable(sigma_delta->offload, + sigma_delta->offload_trigger, + &config); + if (ret) + goto err_unlock; + } else { + ad_sd_enable_irq(sigma_delta); + } =20 return 0; =20 @@ -552,10 +577,15 @@ static int ad_sd_buffer_postdisable(struct iio_dev *i= ndio_dev) { struct ad_sigma_delta *sigma_delta =3D iio_device_get_drvdata(indio_dev); =20 - reinit_completion(&sigma_delta->completion); - wait_for_completion_timeout(&sigma_delta->completion, HZ); + if (ad_sigma_delta_has_spi_offload(sigma_delta)) { + spi_offload_trigger_disable(sigma_delta->offload, + sigma_delta->offload_trigger); + } else { + reinit_completion(&sigma_delta->completion); + wait_for_completion_timeout(&sigma_delta->completion, HZ); =20 - ad_sd_disable_irq(sigma_delta); + ad_sd_disable_irq(sigma_delta); + } =20 sigma_delta->keep_cs_asserted =3D false; ad_sigma_delta_set_mode(sigma_delta, AD_SD_MODE_IDLE); @@ -670,7 +700,8 @@ static irqreturn_t ad_sd_data_rdy_trig_poll(int irq, vo= id *private) if ((!sigma_delta->rdy_gpiod || gpiod_get_value(sigma_delta->rdy_gpiod)) = && ad_sd_disable_irq(sigma_delta)) { complete(&sigma_delta->completion); - iio_trigger_poll(sigma_delta->trig); + if (sigma_delta->trig) + iio_trigger_poll(sigma_delta->trig); =20 return IRQ_HANDLED; } @@ -703,17 +734,6 @@ static int devm_ad_sd_probe_trigger(struct device *dev= , struct iio_dev *indio_de unsigned long irq_flags =3D irq_get_trigger_type(sigma_delta->irq_line); int ret; =20 - if (dev !=3D &sigma_delta->spi->dev) { - dev_err(dev, "Trigger parent should be '%s', got '%s'\n", - dev_name(dev), dev_name(&sigma_delta->spi->dev)); - return -EFAULT; - } - - sigma_delta->trig =3D devm_iio_trigger_alloc(dev, "%s-dev%d", indio_dev->= name, - iio_device_id(indio_dev)); - if (sigma_delta->trig =3D=3D NULL) - return -ENOMEM; - init_completion(&sigma_delta->completion); =20 sigma_delta->irq_dis =3D true; @@ -733,14 +753,33 @@ static int devm_ad_sd_probe_trigger(struct device *de= v, struct iio_dev *indio_de if (ret) return ret; =20 - iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta); + if (ad_sigma_delta_has_spi_offload(sigma_delta)) { + sigma_delta->offload_trigger =3D + devm_spi_offload_trigger_get(dev, sigma_delta->offload, + SPI_OFFLOAD_TRIGGER_DATA_READY); + if (IS_ERR(sigma_delta->offload_trigger)) + return dev_err_probe(dev, PTR_ERR(sigma_delta->offload_trigger), + "Failed to get SPI offload trigger\n"); + } else { + if (dev !=3D &sigma_delta->spi->dev) + return dev_err_probe(dev, -EFAULT, + "Trigger parent should be '%s', got '%s'\n", + dev_name(dev), dev_name(&sigma_delta->spi->dev)); =20 - ret =3D devm_iio_trigger_register(dev, sigma_delta->trig); - if (ret) - return ret; + sigma_delta->trig =3D devm_iio_trigger_alloc(dev, "%s-dev%d", + indio_dev->name, iio_device_id(indio_dev)); + if (!sigma_delta->trig) + return -ENOMEM; =20 - /* select default trigger */ - indio_dev->trig =3D iio_trigger_get(sigma_delta->trig); + iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta); + + ret =3D devm_iio_trigger_register(dev, sigma_delta->trig); + if (ret) + return ret; + + /* select default trigger */ + indio_dev->trig =3D iio_trigger_get(sigma_delta->trig); + } =20 return 0; } @@ -760,12 +799,29 @@ int devm_ad_sd_setup_buffer_and_trigger(struct device= *dev, struct iio_dev *indi if (!sigma_delta->slots) return -ENOMEM; =20 - ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, - &iio_pollfunc_store_time, - &ad_sd_trigger_handler, - &ad_sd_buffer_setup_ops); - if (ret) - return ret; + if (ad_sigma_delta_has_spi_offload(sigma_delta)) { + struct dma_chan *rx_dma; + + rx_dma =3D devm_spi_offload_rx_stream_request_dma_chan(dev, + sigma_delta->offload); + if (IS_ERR(rx_dma)) + return dev_err_probe(dev, PTR_ERR(rx_dma), + "Failed to get RX DMA channel\n"); + + ret =3D devm_iio_dmaengine_buffer_setup_with_handle(dev, indio_dev, + rx_dma, IIO_BUFFER_DIRECTION_IN); + if (ret) + return dev_err_probe(dev, ret, "Cannot setup DMA buffer\n"); + + indio_dev->setup_ops =3D &ad_sd_buffer_setup_ops; + } else { + ret =3D devm_iio_triggered_buffer_setup(dev, indio_dev, + &iio_pollfunc_store_time, + &ad_sd_trigger_handler, + &ad_sd_buffer_setup_ops); + if (ret) + return ret; + } =20 return devm_ad_sd_probe_trigger(dev, indio_dev); } @@ -828,6 +884,20 @@ int ad_sd_init(struct ad_sigma_delta *sigma_delta, str= uct iio_dev *indio_dev, return sigma_delta->irq_line; } =20 + if (info->supports_spi_offload) { + struct spi_offload_config offload_config =3D { + .capability_flags =3D SPI_OFFLOAD_CAP_TRIGGER | + SPI_OFFLOAD_CAP_RX_STREAM_DMA, + }; + int ret; + + sigma_delta->offload =3D devm_spi_offload_get(&spi->dev, spi, + &offload_config); + ret =3D PTR_ERR_OR_ZERO(sigma_delta->offload); + if (ret && ret !=3D -ENODEV) + return dev_err_probe(&spi->dev, ret, "Failed to get SPI offload\n"); + } + iio_device_set_drvdata(indio_dev, sigma_delta); =20 return 0; diff --git a/include/linux/iio/adc/ad_sigma_delta.h b/include/linux/iio/adc= /ad_sigma_delta.h index 2037bb68b44115681ff48f66b580b63f50c2ea9e..6e70a412e218d54bbf9bb6861b1= a4cc89be868e8 100644 --- a/include/linux/iio/adc/ad_sigma_delta.h +++ b/include/linux/iio/adc/ad_sigma_delta.h @@ -31,6 +31,8 @@ struct ad_sigma_delta; struct device; struct gpio_desc; struct iio_dev; +struct spi_offload; +struct spi_offload_trigger; =20 /** * struct ad_sigma_delta_info - Sigma Delta driver specific callbacks and = options @@ -47,6 +49,10 @@ struct iio_dev; * @has_registers: true if the device has writable and readable registers,= false * if there is just one read-only sample data shift register. * @has_named_irqs: Set to true if there is more than one IRQ line. + * @supports_spi_offload: Set to true if the driver supports SPI offload. = Often + * special considerations are needed for scan_type and other channel + * info, so individual drivers have to set this to let the core + * code know that it can use SPI offload if it is available. * @addr_shift: Shift of the register address in the communications regist= er. * @read_mask: Mask for the communications register having the read bit se= t. * @status_ch_mask: Mask for the channel number stored in status register. @@ -65,6 +71,7 @@ struct ad_sigma_delta_info { int (*postprocess_sample)(struct ad_sigma_delta *, unsigned int raw_sampl= e); bool has_registers; bool has_named_irqs; + bool supports_spi_offload; unsigned int addr_shift; unsigned int read_mask; unsigned int status_ch_mask; @@ -108,6 +115,8 @@ struct ad_sigma_delta { struct spi_message sample_msg; struct spi_transfer sample_xfer[2]; u8 *samples_buf; + struct spi_offload *offload; + struct spi_offload_trigger *offload_trigger; =20 /* * DMA (thus cache coherency maintenance) requires the @@ -121,6 +130,11 @@ struct ad_sigma_delta { u8 sample_addr; }; =20 +static inline bool ad_sigma_delta_has_spi_offload(struct ad_sigma_delta *s= d) +{ + return sd->offload !=3D NULL; +} + static inline int ad_sigma_delta_set_channel(struct ad_sigma_delta *sd, unsigned int channel) { --=20 2.43.0 From nobody Thu Oct 9 02:16:09 2025 Received: from mail-oa1-f51.google.com (mail-oa1-f51.google.com [209.85.160.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C65F2620FA for ; Fri, 20 Jun 2025 22:21:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458102; cv=none; b=jAC1loXQEaSbXkTKfr8rXz4+nTsYUi7Stkx92cIukLrf+gI8fq+F5SrdP/fkCfbbNoq4XH4xfoJ1bQN/qTNGK5z7jvGVN4xIAt7ZjabqRT+kzVJyG4kn3j/Saa7zeP68ZDEQpyvIRfCCUWExs3KjeW8qkgs9wJH6Y1vg9gXTB2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750458102; c=relaxed/simple; bh=x4deODr2J/B/ZfZk3+/1/BV8bYxvy5G2y6ggy6cAeUc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dHJfI+aRZyFucObJcAmIJyMxSbBhRcwaiVcV6ed9z9wQwW2ubeclmgZT5ao4my3b4KFzPPR1LYXV07WGtBVIRMUpsAosXTD/cTVLs6JXEOScgu2ldt0oLr4YAh90gCkQwPdsrHKfGu/IoqJXMLQnFAPBYbXHh1K9NKmAaeuzlj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=wBXFihOF; arc=none smtp.client-ip=209.85.160.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="wBXFihOF" Received: by mail-oa1-f51.google.com with SMTP id 586e51a60fabf-2e95f0b6cb7so633039fac.3 for ; Fri, 20 Jun 2025 15:21:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1750458099; x=1751062899; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=suln3ZPyOtbgf+467Jl0jyyrQzWY3/ACSgQiyK4V5QE=; b=wBXFihOFLTvQbqVvK/Mu067ef9/6E2ZX887LJFi74M12RFxgU5ZYf71gHFk23oR/F5 maAQPC6xg4P+hloJfIaL1S55ZBt684Uhs2dmFhxfpDfH3JYZHHR14U962m0qNVXpjh9z ZNKKbazxwBlFhLntOzByyrBv8hltAOEF6nYc6HcfoRqMKDEMeN12oRFuBQBYhGm7VNaz v9RnpVjEYH2cCPEYTuJjwupP+8gF1OaqoPHEcTw9BQdWeodO3tpCeDdW1+giQYPcGYwz W3l6Sru/woLlVgSxY9dfPtVTExJAmb9K0mw9XD2aCElZ1lulin3waH3yS3ouQ8ll/GQM C3Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750458099; x=1751062899; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=suln3ZPyOtbgf+467Jl0jyyrQzWY3/ACSgQiyK4V5QE=; b=dY+ueqqOXj6fayCwygGFsT6mXQ05lMeXVGcUm7xRwsbwhjcNThXjSkGXvj2In33lbk JBx7r86kGKOGt8iKahNnU/0+8FKvV/6GblHBiNtPUzq+XcpJ4cb26kW+grjNwZrM4UXs 4nW1BwtJ35uMijTTYVo4v4NU3cADtmJ3tzl/Nd3mLQ9bmGfD6t3irMOmjgpw6GTJ6dvZ U0HknUx5nge0zVrOW6WZ2RWbEFDAVD6tspZEpHN1tECpSTF7WDpT0gq4/mCTQx8rytTm +grZWVxaMJQoEg4Zes14LuEs3x6rGEd832sae9ntWV/tndYYuTq+MNF87ykda8muFCw3 P1dA== X-Forwarded-Encrypted: i=1; AJvYcCWZL4BH3VfMEj2x0hl67tAoAAEWL1Xd6e4M33LqvF0E/Fbqu06FuLotK2J3vwF6B76YjaaF/CkuH7sNG0U=@vger.kernel.org X-Gm-Message-State: AOJu0Yxx2uOjQczRmoNinORAUDsEzmORXKKZiras6wGQsh0LQ3rufuof aedBupRtUHpVsS0G8Igs2qFD0V+e1d3TipKztjPvXk0RisDiucd1B6ABx8cg5pae1cQ= X-Gm-Gg: ASbGncvpAZRHZfl/5ynVRIm9vHaNByg3oURfKJZtmGicFhp5478nTBoUe9jLe87gyI0 Cwuit79GiH2q08F5m5IL4kLDFOUhbyQ0ERvOxtpSxQS9Sv0Bi2cSMTKCBmOJ6cUShY9iH6ZGIKr gi95z6Dos3x9pMq3ws3+hi1zv6unp5WLvFYEfCPP5Fi4/jb8/43Y8iebGYPbKgjyQ4cWCzEEdeA 0TW8EU490X0hW/ridgQjpVh+S3MmbcabjJZhjggHA0JfqysqHpXYBtJQoAgIWRGBlNt0Hcem69v myDIj6n5VLOKTFow7c7ITShvzC3VgcsonrvPO7OUff4HVS8JEoepNhkxdZEqEcsvYiHb X-Google-Smtp-Source: AGHT+IFFZ+omLsO7ZuSN1mPRtGWTSm0ZzIFm+TkweJtrK0ojyctWLeY95qYERn4eblsassMxLl2d4g== X-Received: by 2002:a05:6871:d082:b0:2d4:e420:926c with SMTP id 586e51a60fabf-2eed96fd963mr3180391fac.0.1750458098820; Fri, 20 Jun 2025 15:21:38 -0700 (PDT) Received: from [127.0.1.1] ([2600:8803:e7e4:1d00:c4bf:cf27:203c:f8b0]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ef481fe06esm7561fac.35.2025.06.20.15.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Jun 2025 15:21:38 -0700 (PDT) From: David Lechner Date: Fri, 20 Jun 2025 17:20:15 -0500 Subject: [PATCH 9/9] iio: adc: ad7173: add SPI offload support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-9-0766f6297430@baylibre.com> References: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> In-Reply-To: <20250620-iio-adc-ad7173-add-spi-offload-support-v1-0-0766f6297430@baylibre.com> To: Michael Hennerich , Jonathan Cameron , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mark Brown Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-spi@vger.kernel.org, David Lechner X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2110; i=dlechner@baylibre.com; h=from:subject:message-id; bh=x4deODr2J/B/ZfZk3+/1/BV8bYxvy5G2y6ggy6cAeUc=; b=owEBbQGS/pANAwAKAcLMIAH/AY/AAcsmYgBoVd7X1mOWlAqdTIO8E8YQGWhnDdCYn3sWy4agB JECUdf0nY+JATMEAAEKAB0WIQTsGNmeYg6D1pzYaJjCzCAB/wGPwAUCaFXe1wAKCRDCzCAB/wGP wIXeB/0cCZLaVXucuun4F3NuAOcZU4Z6XVqoy07XZgydMW8uAoRFh9Smjm8a2yuZ89fNsezuGDs p2VD/kJxzwjq29+7Dh7rAMJK9R6QQHvl/JS5jC09PQz8G2xWut4W7gDLfVVYEui6pNRrzB4pDON BO151qy8G+Nu2VrofSepYqirPoFAJDaC1akxcLPrBjuPxTlrbBVYIyBg07xyPyJaeXD1JhoBoB1 OvTWmEVak1PusFL/ETcJsuqtt4F4v4Fax0ueYutobWoern8Q9aHu7Uvon0JR5Nk9omjsAH3gfZT HefEfAdSDzo9otlQIPhuHy/Dw8qW2N0sioE4LURsFoIVL0g+ X-Developer-Key: i=dlechner@baylibre.com; a=openpgp; fpr=8A73D82A6A1F509907F373881F8AF88C82F77C03 Enable SPI offload support for the AD7173 ADC driver. The scan_type used for SPI offload is assuming that we are using the ad411x_ad717x HDL project [1] which always stores data words in 32-bits. Link: https://analogdevicesinc.github.io/hdl/projects/ad411x_ad717x/index.h= tml [1] Signed-off-by: David Lechner --- drivers/iio/adc/ad7173.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/iio/adc/ad7173.c b/drivers/iio/adc/ad7173.c index 010339c2b7044da4b36dc894a38a145c2fcccd6a..580d4bf3366b193fa0f13d0a288= 86d390e1295b8 100644 --- a/drivers/iio/adc/ad7173.c +++ b/drivers/iio/adc/ad7173.c @@ -748,6 +748,7 @@ static const struct ad_sigma_delta_info ad7173_sigma_de= lta_info_4_slots =3D { .set_mode =3D ad7173_set_mode, .has_registers =3D true, .has_named_irqs =3D true, + .supports_spi_offload =3D true, .addr_shift =3D 0, .read_mask =3D BIT(6), .status_ch_mask =3D GENMASK(3, 0), @@ -764,6 +765,7 @@ static const struct ad_sigma_delta_info ad7173_sigma_de= lta_info_8_slots =3D { .set_mode =3D ad7173_set_mode, .has_registers =3D true, .has_named_irqs =3D true, + .supports_spi_offload =3D true, .addr_shift =3D 0, .read_mask =3D BIT(6), .status_ch_mask =3D GENMASK(3, 0), @@ -1585,6 +1587,11 @@ static int ad7173_fw_parse_channel_config(struct iio= _dev *indio_dev) if (st->info->data_reg_only_16bit) chan_arr[chan_index].scan_type =3D ad4113_scan_type; =20 + if (ad_sigma_delta_has_spi_offload(&st->sd)) { + chan_arr[chan_index].scan_type.storagebits =3D 32; + chan_arr[chan_index].scan_type.endianness =3D IIO_CPU; + } + chan_index++; } =20 @@ -1675,6 +1682,12 @@ static int ad7173_fw_parse_channel_config(struct iio= _dev *indio_dev) if (st->info->data_reg_only_16bit) chan_arr[chan_index].scan_type =3D ad4113_scan_type; =20 + /* Assuming SPI offload is ad411x_ad717x HDL project. */ + if (ad_sigma_delta_has_spi_offload(&st->sd)) { + chan_arr[chan_index].scan_type.storagebits =3D 32; + chan_arr[chan_index].scan_type.endianness =3D IIO_CPU; + } + chan_index++; } return 0; --=20 2.43.0