From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-00128a01.pphosted.com (mx0a-00128a01.pphosted.com [148.163.135.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C27E94BC022; Fri, 21 Aug 2026 14:08:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.135.77 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787321292; cv=none; b=TWaGz0/hSDkuuhML3wPDOrlnX2gY6WwK1+ayHu05KAgVygi1KedQQPuqzgIhbrCvt/+fK/Xi6758MEF017Zo25ACDM2NjYwv6TxuP28mqu2f+iBkhMCueDwtuzLKYaVBxLHLHjl1BCvcg8gHyeoUXVeesYzGH1rDCXsKy9HzSu8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787321292; c=relaxed/simple; bh=jkiscdNM/yjLQE4EVRoyOJE5drR7pDdgq4lSQzZ3UDQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=g3N1k2lPNlqfcgpFgfWrnDZQfH2JP3KppxMH6lXUxhaCdw4vLRo9vf0qOznwLM0WY9I/J/rL7i3/QaJBz/ohk0GVLSaXAfp29p9/cCFqeXGi9LKft3sxlBaay6EC1LqWIyPjKDSi0FWK3QJRshDOI0n+MVZvl4864BwH2LBo+mI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com; spf=pass smtp.mailfrom=analog.com; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b=d5bOzjyS; arc=none smtp.client-ip=148.163.135.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=analog.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=analog.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=analog.com header.i=@analog.com header.b="d5bOzjyS" Received: from pps.filterd (m0167089.ppops.net [127.0.0.1]) by mx0a-00128a01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67LCpO7W3076164; Fri, 21 Aug 2026 10:08:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=analog.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=DKIM; bh=sjSCC M8PAvZjvbJQpIZnyOyWSNl4xEiFW92EG7S7YnA=; b=d5bOzjySdTugGQfGlS6FD DnzC8pdDVpU8XX6Iw3DCnsY0mzLEqon+2AfAA/rJn4l9EaXCZXgPR+SL3WW2AHl1 BVWkx9VvcdGElKQkroBaTW+6AB0yLkTWEU/w3pN1BdJRa5PTRBLzXGaQtfziUcp/ X+JDumPTg58YIwO8j6QyRAgdZT9SEAgZv9VdCgi2KGsMoss7WJPTs5oJNSXVuW23 KcA/wtKL/pOBCzQ/dbIjYe3yoRSol/Or2tJ37m4j7VLikyCXbTth3hkP/GMhAM4g KYoY6cG9VcPpx0GMsTk4PhWYg4Os0n1U1EtKiBaD1ap6hMnJT0jIu8vVWPrzY+3b w== Received: from nwd2mta4.analog.com ([137.71.173.58]) by mx0a-00128a01.pphosted.com (PPS) with ESMTPS id 4g5rk8ykad-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 21 Aug 2026 10:08:00 -0400 (EDT) Received: from ASHBMBX9.ad.analog.com (ASHBMBX9.ad.analog.com [10.64.17.10]) by nwd2mta4.analog.com (8.14.7/8.14.7) with ESMTP id 67LE7x5F032895 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 21 Aug 2026 10:07:59 -0400 Received: from ASHBMBX9.ad.analog.com (10.64.17.10) by ASHBMBX9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.37; Fri, 21 Aug 2026 10:07:59 -0400 Received: from zeus.spd.analog.com (10.66.68.11) by ashbmbx9.ad.analog.com (10.64.17.10) with Microsoft SMTP Server id 15.2.1748.37 via Frontend Transport; Fri, 21 Aug 2026 10:07:59 -0400 Received: from HYB-e1y2fvUQ3cx.ad.analog.com ([10.32.223.174]) by zeus.spd.analog.com (8.15.1/8.15.1) with ESMTP id 67LE7Kkm024319; Fri, 21 Aug 2026 10:07:49 -0400 From: Janani Sunil Date: Fri, 21 Aug 2026 16:06:56 +0200 Subject: [PATCH v4 03/14] iio: backend: Add support for CRC Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-ID: <20260821-ad7768-driver-v4-3-bb8fbd06d4eb@analog.com> References: <20260821-ad7768-driver-v4-0-bb8fbd06d4eb@analog.com> In-Reply-To: <20260821-ad7768-driver-v4-0-bb8fbd06d4eb@analog.com> To: =?utf-8?q?Nuno_S=C3=A1?= , Michael Hennerich , Jonathan Cameron , David Lechner , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Olivier Moysan , Philipp Zabel , Linus Walleij , Bartosz Golaszewski , Jonathan Corbet , Shuah Khan , Michael Walle CC: , , , , , , , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Janani Sunil X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787321240; l=3769; i=janani.sunil@analog.com; s=20260507; h=from:subject:message-id; bh=jkiscdNM/yjLQE4EVRoyOJE5drR7pDdgq4lSQzZ3UDQ=; b=aezTpTscLiLA++rvVCm3dtMLbrOYkFO2yE7hBMW01OfyGMkVkqEAYn29xlMLG8IO8O00PxGn1 rGdBVIK5jMpDvJLhAHJaj7kzMC6cQ08aVCPAtAn0n70DLIpK8EopVyi X-Developer-Key: i=janani.sunil@analog.com; a=ed25519; pk=e25MyjRLPY3RWrYm/LrJ+/+t1MZJUbkgIW5CZg+g+hA= X-ADIRuleOP-NewSCL: Rule Triggered X-Proofpoint-Spam-Info: AW1haW4tMjYwODIxMDEwOSBTYWx0ZWRfX6kjLZp6+Xw4J zQrI51J1XHuDpxeb534ZTZ2cdcIPMgOLQBSGSV/lFTKBsJskgt4A5EzJNkanvFcG8EwFYFHBLy+ ddFC719dsV+JMfwk1vbNSdWqPdx7VtS607i+YVAaeaGgK1Y8gtkP X-Proofpoint-GUID: k4SvG-SFkkr7Eff4OPi5HOLVdoVDHUJb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODIxMDEwOSBTYWx0ZWRfX+ueRXr9q6Zd8 PS1kyp6NxQZlAMkn3Aty8ZqUduVi5UnQFQogwwCbJoH2uoemUxLj6awzeu+KwwMtZ6eIUuiw5/i WncO0lOjEDmf3J5SWZczNZRJscKtxm2K51RhdVuaEvKUGYpqedmFNkEaQmF//mxCj+jSmKbkXcg krLzDENNZrDB0IJ1VXwKJ9jdSHhxh5CrAJLmWn9FG/oZhMnIxjb6lLFxxgROrBfkpTq8vd5eTYF K9yBiccCabu36Mvabr7xkq5GnqKzEQV72gy5AK3gD/Cn6LWbYQDEWq5jYBjmUp8CBAwhmIZCCed 3KJ6N3BhCxtrvbpd8ZD/fHGV8syhFIOLwWERRX2mKrKi9zgkDwlfLrOFzkeAZ6w26IhtfVnjBe5 lwBzHDpzIqiADG5bAuTh5NcujW7xP+g/ruVb5Oy0MI6CBhTwb9SdHn5QOiIw0xGpyzacFzuAikA +ZWzW1GTnEi+ln3bRtg== X-Proofpoint-ORIG-GUID: k4SvG-SFkkr7Eff4OPi5HOLVdoVDHUJb X-Authority-Analysis: v=2.4 cv=P+YKQCAu c=1 sm=1 tr=0 ts=6a885bc0 cx=c_pps a=3WNzaoukacrqR9RwcOSAdA==:117 a=3WNzaoukacrqR9RwcOSAdA==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0sLvza09kfJOxVLZPwjg:22 a=Z0pTeXoby7EwIRygza74:22 a=gAnH3GRIAAAA:8 a=O6R5dNVUA00TSld12QQA:9 a=QEXdDO2ut3YA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-21_04,2026-08-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 priorityscore=1501 adultscore=0 suspectscore=0 clxscore=1015 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608210109 Add a backend operation to enable or disable direction-specific CRC handling. On input data paths, the backend handles CRC data generated by the frontend. On output data paths, the backend generates CRC data for the frontend to verify. Signed-off-by: Janani Sunil --- drivers/iio/industrialio-backend.c | 33 +++++++++++++++++++++++++++++++++ include/linux/iio/backend.h | 6 ++++++ 2 files changed, 39 insertions(+) diff --git a/drivers/iio/industrialio-backend.c b/drivers/iio/industrialio-backend.c index f7a4be8ec320..fbf5c39d7655 100644 --- a/drivers/iio/industrialio-backend.c +++ b/drivers/iio/industrialio-backend.c @@ -886,6 +886,39 @@ int iio_backend_num_lanes_set(struct iio_backend *back, unsigned int num_lanes) } EXPORT_SYMBOL_NS_GPL(iio_backend_num_lanes_set, "IIO_BACKEND"); +/** + * iio_backend_crc_enable - Enable CRC handling + * @back: Backend device + * + * On input data paths, enable backend handling of CRC data generated by the + * frontend. On output data paths, enable the backend to generate CRC data for + * the frontend to verify. + * + * RETURNS: + * 0 on success, negative error number on failure. + */ +int iio_backend_crc_enable(struct iio_backend *back) +{ + return iio_backend_op_call(back, crc_enable); +} +EXPORT_SYMBOL_NS_GPL(iio_backend_crc_enable, "IIO_BACKEND"); + +/** + * iio_backend_crc_disable - Disable CRC handling + * @back: Backend device + * + * On input data paths, disable backend handling of CRC data generated by the + * frontend. On output data paths, disable CRC generation by the backend. + * + * RETURNS: + * 0 on success, negative error number on failure. + */ +int iio_backend_crc_disable(struct iio_backend *back) +{ + return iio_backend_op_call(back, crc_disable); +} +EXPORT_SYMBOL_NS_GPL(iio_backend_crc_disable, "IIO_BACKEND"); + /** * iio_backend_ddr_enable - Enable interface DDR (Double Data Rate) mode * @back: Backend device diff --git a/include/linux/iio/backend.h b/include/linux/iio/backend.h index 3f95ed1fdf9e..9c16b695a602 100644 --- a/include/linux/iio/backend.h +++ b/include/linux/iio/backend.h @@ -133,6 +133,8 @@ enum iio_backend_capabilities { * @filter_type_set: Set filter type. * @interface_data_align: Perform the data alignment process. * @num_lanes_set: Set the number of lanes enabled. + * @crc_enable: Enable direction-specific CRC handling. + * @crc_disable: Disable direction-specific CRC handling. * @ddr_enable: Enable interface DDR (Double Data Rate) mode. * @ddr_disable: Disable interface DDR (Double Data Rate) mode. * @data_stream_enable: Enable data stream. @@ -189,6 +191,8 @@ struct iio_backend_ops { enum iio_backend_filter_type type); int (*interface_data_align)(struct iio_backend *back, u32 timeout_us); int (*num_lanes_set)(struct iio_backend *back, unsigned int num_lanes); + int (*crc_enable)(struct iio_backend *back); + int (*crc_disable)(struct iio_backend *back); int (*ddr_enable)(struct iio_backend *back); int (*ddr_disable)(struct iio_backend *back); int (*data_stream_enable)(struct iio_backend *back); @@ -237,6 +241,8 @@ int iio_backend_filter_type_set(struct iio_backend *back, enum iio_backend_filter_type type); int iio_backend_interface_data_align(struct iio_backend *back, u32 timeout_us); int iio_backend_num_lanes_set(struct iio_backend *back, unsigned int num_lanes); +int iio_backend_crc_enable(struct iio_backend *back); +int iio_backend_crc_disable(struct iio_backend *back); int iio_backend_ddr_enable(struct iio_backend *back); int iio_backend_ddr_disable(struct iio_backend *back); int iio_backend_data_stream_enable(struct iio_backend *back); -- 2.43.0