From patchwork Tue May 6 12:22:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vishwaroop A X-Patchwork-Id: 888504 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2076.outbound.protection.outlook.com [40.107.94.76]) (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 D3D0A1DED51; Tue, 6 May 2025 12:23:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.76 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534182; cv=fail; b=s3Q0u5PIkoDLK6QkjJonH596IIHm+6uxGl0aS8SsNUDtYveaBNQZIkiCZhB/qYTOT6fHZNsLCQsgZYiOVmZc9Dtv8eCj/uRRp0WwwNgmcMYlBG+JeDYHhkkgIVgvPAVo1UndxSn/Y0mRzbHrHDEaThIXl3ORxhzBL4UhdIRKbN4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534182; c=relaxed/simple; bh=q/Qm71NkoO2UMBPv4VfLfX+kvf/ffvJQxgxg9aEQ/hc=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=JkpnIborxQyJYPYXDfqVMcNr08GgSh7cV6ChRMHgFMwZrCS/+vAw1XXlK/S5NU90DP5N3imtYHxnIrw2jJ0Lzyug8l8m5fzziCQsrERmCuNPD7gPZ3qCgGroKKZu8I5+DY4dflXeEVqapSTjmxQOEO8p12Powge9C37YIMz18lg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=E1wLC9hc; arc=fail smtp.client-ip=40.107.94.76 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="E1wLC9hc" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Go52EF0iw1iN8iJia5oMCiIu/EkllrJorIc3CfvlsMX2JHRCMOy0zqacLjB7vxxPSY5c5qJRRVuAO/ucrKHFnccC+WuPqU/g6IVIcdTN8SkOcJ7pogJeaWItNV2hB+E4/cbD22hrCEsCH1iRZE1RU71NC7ZznNoRrYeJ7QXnwrftAtAVeDBg020bmoBTkdx0NUBT2mf8VrYvsn+rbhEvmBPoRWg+1jL6Zo41hTbvqp+oHXmUzGch6YGHSGCqvdNg/JMPZ0ubsmxR6Zf8TWwBmN1WEoJ7w9tB91rxaY9xcMbvRcUazF/yhZBAnFsacsqdBShJSUHvQ/k2u5FlI1OTrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gua4wAEC7HJQgUM04lIDo+fu1GOv7IvGmCNfbxPzxs4=; b=R2EDskPTqSKOU01JwMQYE6+aXvePRcjXv2FUz5xwLaMXg7YSkGqyk2XD7+JOPqqkOHHhixT05cE/9+tnY6NTtOV2QGNaDU9lE7LcdHecNQycgbNlFsDACKdLQhdcWwB8TV+FP+uPZF2WlDwiG6DqHwtYOjIuB4GbHbJtJ2P6tXRK4m2WleTViCstHikwjG1w5pxxpJbNCO0/QjRF3Xkt2TfugvuWMfpT0zZ7Ku4OKC32lqiHLieOrp4hPVi0/rxVemcDnf0Yzt5bmD88HNiFO8zcIH0FOUiKgrFK2yVQPMbj8ZWWKRk2SwhoK6lfR5E8RVfHZvPDu1py6mhi/PUP4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gua4wAEC7HJQgUM04lIDo+fu1GOv7IvGmCNfbxPzxs4=; b=E1wLC9hcAg2VULleO1/Zo1LvP1KN0jZGDTiqvw5Ykh1UeKcQyV1b4A1YoChBwU0T5CkQBQZaoYW6XJesWhx9Y2EHqdGrVeQHYYPgLs2n2RPIhr0xYXyaH2kD6Lkk9kjUytj6ZoA0LLOhf8y9pqPZYs7TAuTvBRaPX+8mwY9V7AXfuHyOxT7Y4k97qGeVy5vrYSvi1EvEsZTjN3tNTEJEhbaf5HACRdjbarxFCMgCrwZksqFc9GR3/DdcrQhnJCpaEXmXvzfPUCzbr/eDhKxP5cppD6aMRAdJCl4UjzlQXlyjLiepu6UHpdId96CizPRV2sbpHxFEEB4wbzeh99OcPg== Received: from BL0PR02CA0040.namprd02.prod.outlook.com (2603:10b6:207:3d::17) by MN2PR12MB4125.namprd12.prod.outlook.com (2603:10b6:208:1d9::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.19; Tue, 6 May 2025 12:22:53 +0000 Received: from MN1PEPF0000ECD7.namprd02.prod.outlook.com (2603:10b6:207:3d:cafe::aa) by BL0PR02CA0040.outlook.office365.com (2603:10b6:207:3d::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8699.29 via Frontend Transport; Tue, 6 May 2025 12:22:53 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000ECD7.mail.protection.outlook.com (10.167.242.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.18 via Frontend Transport; Tue, 6 May 2025 12:22:53 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 6 May 2025 05:22:45 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 6 May 2025 05:22:36 -0700 Received: from build-va-bionic-20241022.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Tue, 6 May 2025 05:22:33 -0700 From: Vishwaroop A To: , , , , , , , , , CC: Subject: [PATCH 1/3] spi: tegra210-quad: Add iommus property to DT bindings Date: Tue, 6 May 2025 12:22:20 +0000 Message-ID: <20250506122222.3345040-1-va@nvidia.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD7:EE_|MN2PR12MB4125:EE_ X-MS-Office365-Filtering-Correlation-Id: 123a7dd7-f119-4069-7719-08dd8c98b9e8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|36860700013|1800799024|376014|921020; X-Microsoft-Antispam-Message-Info: 1dIsJ66MvgaA4fWm+7/4NYKeRlMcjcP8G61S7pzjDWYF4FYT717rMaL5o8IGxT3we6Vxj/NN9rqU9TPNyBGKiU2kr9JoyfQ/oPb5yESSYQlD2ez9W1vVVTAtdyPOJE8MjRpEWa7mCGKjzVGswQv8tu5U1E1Qr9O2+imOKPMJFSR3hz4BE1XSOs3Y5QSzlP7OWifnhFsZZ1FNLEULcp5BVqUDfBEcx5GhhanWWp+Fj7unTSg1r71yZDYKVRBhAct6ahzEVemHf65a4oNFk+T8x0mC6bnOEXZWmRwJIUAMOh/8tek6YPXW878qYg/rPfP4GvrIl+tSHdtekVOnYEZTx3TPykjdxA9LScjSGBnoRIlPFGEbGVSc48Q0plQ/VPHjOoOLeEiGwg8v+e2RUW7UlBu+ZA+ir1AvCoRXbUuCzPWqzWIa0Ct+tpvDTUcGI6AYiEIQEc9iMEVT5YUD5p4BjKMMOryRQ1mW0BdkHJNDbgt/4+BQUB1bq9T74knmMmNgdEx+G6xi9PsRJ4rT/zIQp3xyyclW0YucPnMK1yuMqr8sZWeumQvvVfqB0cd+YXG6ak2O7gnTCYPRUhFplOwmDliHMvCTjN8uZCgj6Lr9cs/g65LIRdBM+n8ZwmX+2kiT+5Iame4Ro55F/pWj1cYzuMonLKNt7oRpqWrDqhQjZtF2myUIHfqh34YF/160lHiw/eDgH62k5FigMilSP1taa52WDjYChpGDgvd7N/z2Oj+HeEl9JAO0naeSu1pGtTdERc7kZSxpA/cOYTzHi28uqMQki6QVHBIj4SFW0wWHLeWW0mlxRXrViA1NbdxyD9jjJZgWkb35QM7OyvxcZCXUIRo2FIGpBa3Fg40bwjkY1SlBs8V6x4IC9phwWB2T77Ctth5I92t3JxJPgMa0G3kwizS/XwKuGYi5PlCKyQi7cqRZ59vBFdhQH4CXlMYwOgqGCGB0teFBC8mkzQd3UGc6zk4NJ+w/ZcttbTanYmcFWvnMh5nPDoDqRhCozrUQ2V5EwiAOB2kNVwnsHsvd/+QZzmn5eEUEXtnUsWS3BKL+qwiSvFZir9wUG+KNwTKN7Dijyj+niuGqrNrfrG15471UaSUhnMUUGe1rq+8REzLLgFuKCSt2WxiD+6b/rM6M+dev6o6oqu7T2TfeP71MQZs00+q0E/uLayfDiUSJDptJfrcUa+IYG1D0kOF3o5zOwB2mYPu8uWPLrSVJteZtswFA2P3pmow/7+An0oFPYkAFfME8bg7zco1VnetD2l+YCB2fxSnRAELBaStBItAHABY8/MxkP5KFusQO9orkgo0JQ7xxinn6UMSieLLE4wAvK+74nVijJmjM8ZkZXJ4Hwy7PpiGcpf9iX84FKtt1n/KCQfglkEemP+0B7WdbnhOE8jxGaaXU2JoMCK1vFTs66xS9Fly8KPmFl5ZKbExfXEsl99n5/hFzuXS8XXLlOAygXTcJxJo/We3yp8r+HeBYwi4BpGv0a9RFia9kz9U2KKe2j0/UL4WJi7df+0WdRRn75w+V/20YaRIvrMgltzauWV60vA== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 12:22:53.6359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 123a7dd7-f119-4069-7719-08dd8c98b9e8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECD7.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4125 The Tegra210 Quad SPI controller uses internal DMA engines to efficiently transfer data between system memory and the SPI bus. On platforms with an IOMMU, such as Tegra234, DMA transactions must be properly mapped and protected to ensure system security and functional correctness. This patch adds the iommus property to the device tree binding. This property is required to associate the SPI controller with the system IOMMU, specifying the correct stream ID for address translation and access protection. Signed-off-by: Vishwaroop A --- .../devicetree/bindings/spi/nvidia,tegra210-quad.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.yaml b/Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.yaml index 48e97e240265..522efbe62010 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.yaml +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra210-quad.yaml @@ -47,6 +47,9 @@ properties: - const: rx - const: tx + iommus: + maxItems: 1 + patternProperties: "@[0-9a-f]+$": type: object From patchwork Tue May 6 12:22:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vishwaroop A X-Patchwork-Id: 888047 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2047.outbound.protection.outlook.com [40.107.243.47]) (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 1FB1C27FB1D; Tue, 6 May 2025 12:23:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534196; cv=fail; b=NrEp4YCMqBDmzhRRiPyXaSfgid7WJDZg8GXBORj+513FuvYBIkUYeBFu75QP5gHqPgTE3jtYRo/4jW6TNFdAfVByMHKIG+H/pOp9RrdHe/4xdfbuUkFOTVSTGxr5Sltu6DATJ6Kuph62S+Q6KnAxOxd3Ty00d8aTvTlQRVGsJtQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534196; c=relaxed/simple; bh=joFoEJl2YHu9YQIY424cjNiuuk/pT4dRbjCsBLqAod8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=skUUvWhbz5Tqp/qBkS2BYxhOOKUH8DHFZEJBZaqEdduBtf1wtvsYi/QlzTbwHimPUGyIDJ1tbYhN10kq1tctKcniB+v9xbkRb467bIfDGkqv7EKQe0sQcjy1Pc9GGSzhy7YqPvEDT6HTx1fUFfgbFSsz4N7CXzPASiy4UDqgaoI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=mXW1mOSh; arc=fail smtp.client-ip=40.107.243.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="mXW1mOSh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VJ6xq+p4Fxv4hUOeNwg2dvPPEO2qm4ChHdhGfI03ANoJ33jPQH1WCJEzGD0pJjh77dN8ZMW2XU8+r0kHgQ4Em6G9VS2BiGW4H54MFXOi8T0KXzWH5vh0+mfceihPDmu91ZA7k9BXMV356h2fyB+YUAKjBsDTP1Wpd2hHqx3cjky6F3yn3NTIiO0bUHZ7bhrYgn25azMkbHFll2M+37Hx4ffWA0+o6FUKPcmxBCE4QDeFb+rxBDjt6YmdWWzgrsBEarMCRZ7/MthM3/C/Aql4KIH8HHOzGIxpksXPiyjlv05RT4i9XPs6snonHg0ziNt2UQ1sjVrmq8VJMYzabzXCug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nt7bonMltFUuUsr7VO4Ly2LaQJ7Outtsusbn2nkWFSI=; b=GB3/1p7q+38OXXTJryHKY0ubAsBn6COUrf3aOcw4EYK+yBF+1e2a+MpGWbdWh6uKuwwYA7I825yhvWj7Tg8M0ZrddYBJkxRahMILR7GUtk+3S5hN0gUkgg6kwgfd723z2baysaWOlgJgAd8VqoOZAWequl/tOdSC4/kh/cR3cQPXDcmbA3xdNkMLTr58eRbwxvkIK2W94+IbYr4aZKB0k6WdkXyp1x3gPh8I+8Max9DSVQor4oSeksktJdaXlEJSnhLGzRrDvRnr2nFYNwpWelL2wEf5hNfb4uotuV5aBbym86+udeLfEH1A/E9KxIChz3id3M5vvpGev6fbcQaw/w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nt7bonMltFUuUsr7VO4Ly2LaQJ7Outtsusbn2nkWFSI=; b=mXW1mOShQuDqQjV+5/RuLXaRfAbT/0QLmhDDFz0gwrjHowNMYxgw2JeSqFsPTbgAuehUbwhNpa02Yf7vazV05p27yrqaRj+oURny2FVU5FT9/2RwXJp+rZDdKjeQ42buepqkEzLIjDUNhVx8lnZrGXTrzyrZ87D4bYBZwR11TBLXEPL8HtCaA8If3aUOOSfOAA//FR3dQIxrg+VbVcKp2EDJWYNMpaYoe2XF1I2vqiIjm/xwq7KHTTzB1V3v6O+dh8ux7q3s4zH6tB4TtLnBWGctG2BsBfNNLYhSp7PF/UrxCMB1WQSAysWzNAKqSFmR4bmUkuAXGU5DFr6kvhv5jQ== Received: from BL1PR13CA0021.namprd13.prod.outlook.com (2603:10b6:208:256::26) by PH8PR12MB7448.namprd12.prod.outlook.com (2603:10b6:510:214::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.23; Tue, 6 May 2025 12:23:01 +0000 Received: from MN1PEPF0000ECD9.namprd02.prod.outlook.com (2603:10b6:208:256::4) by BL1PR13CA0021.outlook.office365.com (2603:10b6:208:256::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8722.17 via Frontend Transport; Tue, 6 May 2025 12:23:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000ECD9.mail.protection.outlook.com (10.167.242.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.18 via Frontend Transport; Tue, 6 May 2025 12:23:01 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 6 May 2025 05:22:52 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 6 May 2025 05:22:44 -0700 Received: from build-va-bionic-20241022.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Tue, 6 May 2025 05:22:41 -0700 From: Vishwaroop A To: , , , , , , , , , CC: Subject: [PATCH 2/3] arm64: tegra: Configure QSPI clocks and add DMA Date: Tue, 6 May 2025 12:22:21 +0000 Message-ID: <20250506122222.3345040-2-va@nvidia.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250506122222.3345040-1-va@nvidia.com> References: <20250506122222.3345040-1-va@nvidia.com> Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD9:EE_|PH8PR12MB7448:EE_ X-MS-Office365-Filtering-Correlation-Id: 61ab8541-98cf-4f1e-6962-08dd8c98be98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|36860700013|82310400026|921020; X-Microsoft-Antispam-Message-Info: ziK/Ble0pRiJeV2oyhaEFSSDSjNX35wIWHxetjNeYfRUQis0hrbFDtj+yyZH0ecv3Eiz1X4uIVgtFOs8dMH0sDR/knwAy9GALagg8oU6qIzHXGQXXqs5oJBFF7zpuxNR/IW1O8k/Ub5rxindLmY/MYxOjBYiRHqHIQU2oszWWgr2mMdvVCs+yJ3GDuCQdLthLe1wMGvE73S/i/33P7jBH66DjeNjw9q5Cqgcang9BNG44T8M8MK+YsvJew9FHN97NUwmf1CR4Wz6pY9wacBxKbVxBcwhl/1Uj8XpBoW8KjRiNRr+i5A09qOzYvsZkkLc7uROpmTrASpOM9D3vE/C8Hohvg9TtcoIMc+Wt6yqORrBahss7i12qdN81AIMY3AvCQamYTr/jOL2Xzc0r9agjCWXy4ADPdONwWOnfH1hGB16iEBeNWfwgHznZihQDlWUy0Ca927Y/Y5gzZN+G7WT7Med+7gdwzWsmNdQkPlaBfP8nYRaoQrbzPOMLW4+mo8/d3rq87zsrpTNLrlBW9UMizNKfPkzMDxewAcEcQWmijHnkyWaGwLzpmBLu3qGb86cGa4P+R69q0K/PgyJrybpjPfo7QHtnpm1ZWuBy/G87Vqu4Ul5bpog2cmFIx83d43jL2HkxtQCB49IHfNzoW8gZLGsL7XBSv6ODbOTgLnmsmagBL+fG90b/pQexN3lDETVgu0DPEzRIx6+payeAjQ7i8s0FyJkUkzhRqueMcII87vzReiSmqOQLvwoEWaj0pwtsAwS/tNjeVitzPp8dxZAVDGh6nA+OX2AoG3Xq/nJmn0XZ/Q8mZB2iaimy3bohTumfzgjA6V65ps9p6pVvh7Vq+sz9ev0U2DtD7vf/p5dmtQEZDH3Oa1NanJsEpAhQsSVotx/YixFOJM73dEt8YJSY2AAhiQOJ9ukIGymTF5UlyVyDUsvvrRBzHeTJ/bxpFMGw7aXTe7XO8pOLdC2s40XXdRUWzL26tepi08oWYEjNYo1mBc+h6BjOYyRI9C3s+7WX2T0XQiILieAcKQKWgYSZ/wGh5IEadNZdCE99AgDBf1vPkaGahxsiwOA2jL4uP2kcv1Kk9ENXzsbCcyEXXjwhEZz+4T92hGFSjtvjM0kocY0lx/9I3o2UacUMiLZgNUBpaExQ0m+/HMdVZuURRmiq2VKaX+AkbHqLKN0+qQw3BUBJFDSbgOaWl14taec8mhac4Qt173xRSMHGOf9Pe1bMLYzsYCOws+24yqXTFqKjsKtWAtNcVciNcKDxFCfUIHzdh5jiC5oIVu2vb1PerHJv+DnWikid2As7ZFYrmsUuQ4TIMTpRTUmXVQQNo4j2gj7ISHSkSUUiQUN6m7QK+sroihB0k0GlnGpxk32Gi+NsmdYsI5khDG5OdJvL3ku4+8HYnjjD3wxvlwNfNp8/c8fKiuQZQXdMRuSDNLJNqr5dsA7gVzjhRRwBLvJkroMN98eN5Yjs2aFnndbwFMUQY6390yU9N2Ch9D6A74zfKNCcXyFwawHzi1xdDaCqEtmiUt7qOdIsfuBa198R3ddDdKnFQ== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(1800799024)(36860700013)(82310400026)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 12:23:01.5028 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 61ab8541-98cf-4f1e-6962-08dd8c98be98 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECD9.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7448 For Tegra234 devices, set QSPI0_2X_PM to 199.99 MHz and QSPI0_PM to 99.99 MHz using PLLC as the parent clock. These frequencies enable Quad IO reads at up to 99.99 MHz, the maximum achievable given PLL and clock divider limitations. Introduce IOMMU property which is needed for internal dma transfers. Signed-off-by: Vishwaroop A --- arch/arm64/boot/dts/nvidia/tegra234.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi index 2601b43b2d8c..12fc850f9f5c 100644 --- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi +++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi @@ -2948,6 +2948,11 @@ <&bpmp TEGRA234_CLK_QSPI0_PM>; clock-names = "qspi", "qspi_out"; resets = <&bpmp TEGRA234_RESET_QSPI0>; + iommus = <&smmu_niso1 TEGRA234_SID_QSPI0>; + assigned-clocks = <&bpmp TEGRA234_CLK_QSPI0_2X_PM>, + <&bpmp TEGRA234_CLK_QSPI0_PM>; + assigned-clock-rates = <199999999 99999999>; + assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLC>; status = "disabled"; }; @@ -3031,6 +3036,11 @@ <&bpmp TEGRA234_CLK_QSPI1_PM>; clock-names = "qspi", "qspi_out"; resets = <&bpmp TEGRA234_RESET_QSPI1>; + iommus = <&smmu_niso1 TEGRA234_SID_QSPI1>; + assigned-clocks = <&bpmp TEGRA234_CLK_QSPI1_2X_PM>, + <&bpmp TEGRA234_CLK_QSPI1_PM>; + assigned-clock-rates = <199999999 99999999>; + assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLC>; status = "disabled"; }; From patchwork Tue May 6 12:22:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vishwaroop A X-Patchwork-Id: 888503 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2050.outbound.protection.outlook.com [40.107.237.50]) (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 6E94E1DED51; Tue, 6 May 2025 12:23:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.50 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534206; cv=fail; b=S47c39TxEWTLhrUMvTFj2UJhNanl6zifQUSVLT6qIQdR3FHqw6lX7qOXEcKHorZjAPd5CxpZ+VeWAE7hv1yS8LA4etJGc9SJgFSMhLwQWQrg4VoJY/KHHwIgYkaS8aDAy0wn//Lh64tf0oVej5vG/C2+bgW+HJlsWWKrYlBPwQ0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746534206; c=relaxed/simple; bh=+fM77CEV2X/D3P41Exo2CYGpSFbSwl5TnW8ZD7/fPPI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cn8EUPAvnNNragyQuWgYqdQ0BjJ6uvPgXRL2frGS6qzZCChL61zShsmKG1G6y3xOS2R8wFtiL8go2i6VtCQ6tK3xU2Dh0psLkl6fNOtM70njvLxd7cKrRuIgSF5K6MmeLx0QI1+hLjTwB5jFXOlaB5jtw7Llu7vv/s2Sa4l7IgY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=mTo1tCjz; arc=fail smtp.client-ip=40.107.237.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="mTo1tCjz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=B/ktQQ14PjLdgATQyRyKClBjuaulqMOA1DwGCbC+kI1YTf9/R8fYRUcEoa801c8RWwGXBG4/GAJFWdSbvz3+Bulwzp9Rs3mxZVeMjzGtpKTE50hazr9CCvovxfXORpiJ51ZTZYtcevX/x7gynGhyabI86gdrsdnS7m6uXicVIbMP428E/dust97I+G+l6yEr0nhPf1SjlQfoDPT3e5cNk8z9QExY8r3sNMyBdWOZ12HZKLJ5JvrZvjY8M3/1AqXwDM/1eYcU2m3CPEVCCG7zmA/xC52gNDW8PoFUU9vU1ELsrb+jnzDIfPSKFqkw8thjc1hnvt/dxQoSwiKxh0bvVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=uHsN1WIbN2/6Vv7k3AmNe9WQhGvt8wHweEIpPuL5myk=; b=KKt8uTIe8pvPPJaTaN+EAN/gLXKwMeJi1DcUf2LnhnJrMyXFUmiL3FjaLTklHZYf/VgETJf7R/wVlXc6rrc/b6N+ww2ZJ9oeQMNVNzmqSdl3a/UZhw3EgyPXGnP71PjrA78KLH08yVmeKEhPXXVwU+XJUk8bUKujvz6Mfq0GTFbv7zJjLH/45UGeYk8TB7CA274Laz4BVRVYtz9xGRuvGAeW5kV6q/KkqFTfo8JEaWzMxJqB/ej8Y+201xl89ZXf9UWcLNTNL4kPVjmi3DXkB0OOWTZHypU8/TwSxbr5b4OsiQ5UcVveN+4/8O0+MUcI+8+OUqJXDEtWOIdbtJrRXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=gmail.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uHsN1WIbN2/6Vv7k3AmNe9WQhGvt8wHweEIpPuL5myk=; b=mTo1tCjzBzCzvQRmz4Spu66d2QkMmuSyD820sDfkyzJMbwMkAEA2yB6zeSr1+SlvpEVXMA1lYmasuQycz9+3VKXWYBBhRVIHzLtN2bV1Xm/FEX6LnFUTeJEZvBVodgZx72tOCXvSe0AqJHMkda3RKfcqMU4KDx9p9g/HWMAf40vNDhbZ9lPcDwqxz4t68EzwdiJTXpele/BBF2fOQ7a1Oeh3Et+vlnjxO1gZ1v3IkYvfgWKqOX3k7jaNG8ZxZsKYjoqCW/qIMDkMG8XUmv+Ocy6LXWyVLZpgN7IADVnvhoDNwGcBjaKsGDl1tfx7g9998LO+qO21LPGwcif4nBLDtw== Received: from MN2PR06CA0002.namprd06.prod.outlook.com (2603:10b6:208:23d::7) by PH7PR12MB6739.namprd12.prod.outlook.com (2603:10b6:510:1aa::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.26; Tue, 6 May 2025 12:23:11 +0000 Received: from MN1PEPF0000ECD5.namprd02.prod.outlook.com (2603:10b6:208:23d:cafe::e1) by MN2PR06CA0002.outlook.office365.com (2603:10b6:208:23d::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8699.30 via Frontend Transport; Tue, 6 May 2025 12:23:11 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000ECD5.mail.protection.outlook.com (10.167.242.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.18 via Frontend Transport; Tue, 6 May 2025 12:23:11 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 6 May 2025 05:23:04 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 6 May 2025 05:22:56 -0700 Received: from build-va-bionic-20241022.nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.1544.14 via Frontend Transport; Tue, 6 May 2025 05:22:53 -0700 From: Vishwaroop A To: , , , , , , , , , CC: Subject: [PATCH 3/3] spi: tegra210-quad: Add support for internal DMA Date: Tue, 6 May 2025 12:22:22 +0000 Message-ID: <20250506122222.3345040-3-va@nvidia.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20250506122222.3345040-1-va@nvidia.com> References: <20250506122222.3345040-1-va@nvidia.com> Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-NV-OnPremToCloud: AnonymousSubmission X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD5:EE_|PH7PR12MB6739:EE_ X-MS-Office365-Filtering-Correlation-Id: 7dec2ea5-3036-4018-21f5-08dd8c98c459 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|82310400026|376014|921020; X-Microsoft-Antispam-Message-Info: 4gyzK1ppeaHSN9dEHrDmFLYLC5JpoWsYCGI08kOSCILdGGQ2VkbZpdzUODyHR4jIvOGwZTwwJFQ1oV8pfXJi+7ypjzF8huV6UnnZVjtZTNluE9iVWgKhvkEmG4g8sxpNpsUiL1VtLTtpU+YWBcZL5OoYfGm4BURWhPKTj98bhz7oWwLDuglOjwPjOQsr9dppoda9BhePekQhqAvwN6ewUIXYi7BvQDHnlErrEOCBCDwI+GgqWDd9vfibhnDSV7aKyr4qIMlesJDaZ8TTSz+45NhNfbrF7j4U8MMHRhhX5O/hFNNVUdv4jCAlAhn8gxU0kfLGekYQKqdop+8/UIeEvQxjmGduVcmTQTFJ2xXFThcxDfaVp712uz5BKYbc7FAXWYGagQpwkubLFRKiL/VIN3XRUMhf8sBsP3y2aqzacXB28jUOmXorI6uyzgz/GiL1/YNItU8dthDeuURFmzJIoZTV5E5l5jjNt+yMEssLBI1h5tQBvdBxbBfJ9hccU6OdtHDT9QJ75eZkvZVABw9rx7eqorXomEpUObnYkYmSTTY39MmDBOjt4xKVOLyBV3yWZPm2F8VE1chX9hN08+VhQmlSnEb4CbvEPHvnc+Bh8+QZnesKS1RN+EPbj/gw/cxkJF0bT6cocx3nq5AvquH+NW5VETq+hgpf7nOFUrO0MF3l+Gq8seI3PG92+du62GeQZvM2clB1swmU4ijtojMayAPl4jyidCV34aa+nz7pWAZHsZuFTLnnVAhfmYQXJemJPXBmzGfjRhkdRQlsfgUz9iK8HENVCzjwp26H6S/48i0thZFmTuCyyrlYyOXuh+5UAel/GwYs48Zt7IUmDiPbPCISd3CY5pX2yeEVjO+6Ytx7HUdVhnVgHdImqlu/NH3gofYUHEG0h/iO4oHtx+n0oGlwYnmhhHrXL5tPRQpzyx/6p5lf/YUdV3YgqAkTokoOrHRjdIMmP1EjpXm5HDAmj+d8GRiYK49ggzxlByMHb//4h8uD+CSArD3rxxH26Hh4TSs9TlnJImdBFo5BbFAXBgYRn2Z9U+KMWvDUIhJP9CUOiQCrDUiwkMpqJyTOZMk+rYNpORanZl8kUHs+RfI6K+6koaWp8IfUNWI24KBu/W/J9RTfEB734PxBp1UUS/Lbu33Ywt8WNjIPkXZWkRuy1VBbWvKUK1Asl0vc1OCNNuJXO6AdiASXO95XOryf8N3DavagTaqsb05RxiDILLqTegb23vokUkRbipEYnwSW1sIJ2SA2INh8xfKz7XxST2Yg1P/Rr58iBy7kSRpGRyWnfXGATHAMsnzELVCXqq6j0AIaNcRS7rL2ZCg0x5woLkCFaNTUcPaRBX3Cdw3smB6DrIJHfNVBdndEBwZ6lBcPq2069lBmPgH9c98nW/tcp2ZMZbK2yZo192XnFqTIGEf1nNIY8oakR3NP/Uo+CVBu6WvU+SlITfAc/zcgsOSE0SwMnpMMmyJnQXNbs7QNSyoQ+UMy5cPoHj9QR+czLiFv9r0qIAFHfYzccT1Ryul6bteLTpsNa9MTDun32lQgfTNlhw== X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(82310400026)(376014)(921020); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 12:23:11.1479 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7dec2ea5-3036-4018-21f5-08dd8c98c459 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000ECD5.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6739 Previous generations of Tegra supported DMA operations by an external DMA controller, but the QSPI on Tegra234 devices now have an internal DMA controller. Introduce routines to initialize and configure internal DMA channels for both transmit and receive paths. Set up DMA mapping functions to manage buffer addresses effectively. The variable err is changed to num_errors to more accurately represent its purpose in the code. The updated name clarifies that the variable tracks the number of errors encountered during execution, rather than serving as a generic error flag or code. Tegra241 device supports DMA via an external DMA controller (GPCDMA), so enable this. Signed-off-by: Vishwaroop A --- drivers/spi/spi-tegra210-quad.c | 223 ++++++++++++++++++-------------- 1 file changed, 128 insertions(+), 95 deletions(-) diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c index a93e19911ef1..db68e9dbb90e 100644 --- a/drivers/spi/spi-tegra210-quad.c +++ b/drivers/spi/spi-tegra210-quad.c @@ -111,6 +111,9 @@ #define QSPI_DMA_BLK 0x024 #define QSPI_DMA_BLK_SET(x) (((x) & 0xffff) << 0) +#define QSPI_DMA_MEM_ADDRESS 0x028 +#define QSPI_DMA_HI_ADDRESS 0x02c + #define QSPI_TX_FIFO 0x108 #define QSPI_RX_FIFO 0x188 @@ -167,9 +170,9 @@ enum tegra_qspi_transfer_type { }; struct tegra_qspi_soc_data { - bool has_dma; bool cmb_xfer_capable; bool supports_tpm; + bool has_ext_dma; unsigned int cs_count; }; @@ -605,17 +608,21 @@ static void tegra_qspi_dma_unmap_xfer(struct tegra_qspi *tqspi, struct spi_trans len = DIV_ROUND_UP(tqspi->curr_dma_words * tqspi->bytes_per_word, 4) * 4; - dma_unmap_single(tqspi->dev, t->tx_dma, len, DMA_TO_DEVICE); - dma_unmap_single(tqspi->dev, t->rx_dma, len, DMA_FROM_DEVICE); + if (t->tx_buf) + dma_unmap_single(tqspi->dev, t->tx_dma, len, DMA_TO_DEVICE); + if (t->rx_buf) + dma_unmap_single(tqspi->dev, t->rx_dma, len, DMA_FROM_DEVICE); } static int tegra_qspi_start_dma_based_transfer(struct tegra_qspi *tqspi, struct spi_transfer *t) { struct dma_slave_config dma_sconfig = { 0 }; + dma_addr_t rx_dma_phys, tx_dma_phys; unsigned int len; u8 dma_burst; int ret = 0; u32 val; + bool has_ext_dma = tqspi->soc_data->has_ext_dma; if (tqspi->is_packed) { ret = tegra_qspi_dma_map_xfer(tqspi, t); @@ -634,60 +641,86 @@ static int tegra_qspi_start_dma_based_transfer(struct tegra_qspi *tqspi, struct len = tqspi->curr_dma_words * 4; /* set attention level based on length of transfer */ - val = 0; - if (len & 0xf) { - val |= QSPI_TX_TRIG_1 | QSPI_RX_TRIG_1; - dma_burst = 1; - } else if (((len) >> 4) & 0x1) { - val |= QSPI_TX_TRIG_4 | QSPI_RX_TRIG_4; - dma_burst = 4; - } else { - val |= QSPI_TX_TRIG_8 | QSPI_RX_TRIG_8; - dma_burst = 8; + if (has_ext_dma) { + val = 0; + if (len & 0xf) { + val |= QSPI_TX_TRIG_1 | QSPI_RX_TRIG_1; + dma_burst = 1; + } else if (((len) >> 4) & 0x1) { + val |= QSPI_TX_TRIG_4 | QSPI_RX_TRIG_4; + dma_burst = 4; + } else { + val |= QSPI_TX_TRIG_8 | QSPI_RX_TRIG_8; + dma_burst = 8; + } + + tegra_qspi_writel(tqspi, val, QSPI_DMA_CTL); } - tegra_qspi_writel(tqspi, val, QSPI_DMA_CTL); tqspi->dma_control_reg = val; dma_sconfig.device_fc = true; - if (tqspi->cur_direction & DATA_DIR_TX) { - dma_sconfig.dst_addr = tqspi->phys + QSPI_TX_FIFO; - dma_sconfig.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; - dma_sconfig.dst_maxburst = dma_burst; - ret = dmaengine_slave_config(tqspi->tx_dma_chan, &dma_sconfig); - if (ret < 0) { - dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); - return ret; - } - tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); - ret = tegra_qspi_start_tx_dma(tqspi, t, len); - if (ret < 0) { - dev_err(tqspi->dev, "failed to starting TX DMA: %d\n", ret); - return ret; + if ((tqspi->cur_direction & DATA_DIR_TX)) { + if (tqspi->tx_dma_chan) { + dma_sconfig.dst_addr = tqspi->phys + QSPI_TX_FIFO; + dma_sconfig.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + dma_sconfig.dst_maxburst = dma_burst; + ret = dmaengine_slave_config(tqspi->tx_dma_chan, &dma_sconfig); + if (ret < 0) { + dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); + return ret; + } + + tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); + ret = tegra_qspi_start_tx_dma(tqspi, t, len); + if (ret < 0) { + dev_err(tqspi->dev, "failed to starting TX DMA: %d\n", ret); + return ret; + } + } else { + if (tqspi->is_packed) + tx_dma_phys = t->tx_dma; + else + tx_dma_phys = tqspi->tx_dma_phys; + tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); + tegra_qspi_writel(tqspi, lower_32_bits(tx_dma_phys), + QSPI_DMA_MEM_ADDRESS); + tegra_qspi_writel(tqspi, (upper_32_bits(tx_dma_phys) & 0xff), + QSPI_DMA_HI_ADDRESS); } } if (tqspi->cur_direction & DATA_DIR_RX) { - dma_sconfig.src_addr = tqspi->phys + QSPI_RX_FIFO; - dma_sconfig.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; - dma_sconfig.src_maxburst = dma_burst; - ret = dmaengine_slave_config(tqspi->rx_dma_chan, &dma_sconfig); - if (ret < 0) { - dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); - return ret; - } - - dma_sync_single_for_device(tqspi->dev, tqspi->rx_dma_phys, - tqspi->dma_buf_size, - DMA_FROM_DEVICE); + if (tqspi->rx_dma_chan) { + dma_sconfig.src_addr = tqspi->phys + QSPI_RX_FIFO; + dma_sconfig.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + dma_sconfig.src_maxburst = dma_burst; + ret = dmaengine_slave_config(tqspi->rx_dma_chan, &dma_sconfig); + if (ret < 0) { + dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); + return ret; + } + dma_sync_single_for_device(tqspi->dev, tqspi->rx_dma_phys, + tqspi->dma_buf_size, DMA_FROM_DEVICE); + ret = tegra_qspi_start_rx_dma(tqspi, t, len); + if (ret < 0) { + dev_err(tqspi->dev, "failed to start RX DMA: %d\n", ret); + if (tqspi->cur_direction & DATA_DIR_TX) + dmaengine_terminate_all(tqspi->tx_dma_chan); + return ret; + } - ret = tegra_qspi_start_rx_dma(tqspi, t, len); - if (ret < 0) { - dev_err(tqspi->dev, "failed to start RX DMA: %d\n", ret); - if (tqspi->cur_direction & DATA_DIR_TX) - dmaengine_terminate_all(tqspi->tx_dma_chan); - return ret; + } else { + if (tqspi->is_packed) + rx_dma_phys = t->rx_dma; + else + rx_dma_phys = tqspi->rx_dma_phys; + + tegra_qspi_writel(tqspi, lower_32_bits(rx_dma_phys), + QSPI_DMA_MEM_ADDRESS); + tegra_qspi_writel(tqspi, (upper_32_bits(rx_dma_phys) & 0xff), + QSPI_DMA_HI_ADDRESS); } } @@ -726,9 +759,6 @@ static int tegra_qspi_start_cpu_based_transfer(struct tegra_qspi *qspi, struct s static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi) { - if (!tqspi->soc_data->has_dma) - return; - if (tqspi->tx_dma_buf) { dma_free_coherent(tqspi->dev, tqspi->dma_buf_size, tqspi->tx_dma_buf, tqspi->tx_dma_phys); @@ -759,16 +789,26 @@ static int tegra_qspi_init_dma(struct tegra_qspi *tqspi) u32 *dma_buf; int err; - if (!tqspi->soc_data->has_dma) - return 0; + if (tqspi->soc_data->has_ext_dma) { + dma_chan = dma_request_chan(tqspi->dev, "rx"); + if (IS_ERR(dma_chan)) { + err = PTR_ERR(dma_chan); + goto err_out; + } - dma_chan = dma_request_chan(tqspi->dev, "rx"); - if (IS_ERR(dma_chan)) { - err = PTR_ERR(dma_chan); - goto err_out; - } + tqspi->rx_dma_chan = dma_chan; - tqspi->rx_dma_chan = dma_chan; + dma_chan = dma_request_chan(tqspi->dev, "tx"); + if (IS_ERR(dma_chan)) { + err = PTR_ERR(dma_chan); + goto err_out; + } + + tqspi->tx_dma_chan = dma_chan; + } else { + tqspi->rx_dma_chan = NULL; + tqspi->tx_dma_chan = NULL; + } dma_buf = dma_alloc_coherent(tqspi->dev, tqspi->dma_buf_size, &dma_phys, GFP_KERNEL); if (!dma_buf) { @@ -779,14 +819,6 @@ static int tegra_qspi_init_dma(struct tegra_qspi *tqspi) tqspi->rx_dma_buf = dma_buf; tqspi->rx_dma_phys = dma_phys; - dma_chan = dma_request_chan(tqspi->dev, "tx"); - if (IS_ERR(dma_chan)) { - err = PTR_ERR(dma_chan); - goto err_out; - } - - tqspi->tx_dma_chan = dma_chan; - dma_buf = dma_alloc_coherent(tqspi->dev, tqspi->dma_buf_size, &dma_phys, GFP_KERNEL); if (!dma_buf) { err = -ENOMEM; @@ -1128,15 +1160,12 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi, if (WARN_ON_ONCE(ret == 0)) { dev_err_ratelimited(tqspi->dev, "QSPI Transfer failed with timeout\n"); - if (tqspi->is_curr_dma_xfer && - (tqspi->cur_direction & DATA_DIR_TX)) - dmaengine_terminate_all - (tqspi->tx_dma_chan); - - if (tqspi->is_curr_dma_xfer && - (tqspi->cur_direction & DATA_DIR_RX)) - dmaengine_terminate_all - (tqspi->rx_dma_chan); + if (tqspi->is_curr_dma_xfer) { + if ((tqspi->cur_direction & DATA_DIR_TX) && tqspi->tx_dma_chan) + dmaengine_terminate_all(tqspi->tx_dma_chan); + if ((tqspi->cur_direction & DATA_DIR_RX) && tqspi->rx_dma_chan) + dmaengine_terminate_all(tqspi->rx_dma_chan); + } /* Abort transfer by resetting pio/dma bit */ if (!tqspi->is_curr_dma_xfer) { @@ -1251,10 +1280,12 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi, QSPI_DMA_TIMEOUT); if (WARN_ON(ret == 0)) { dev_err(tqspi->dev, "transfer timeout\n"); - if (tqspi->is_curr_dma_xfer && (tqspi->cur_direction & DATA_DIR_TX)) - dmaengine_terminate_all(tqspi->tx_dma_chan); - if (tqspi->is_curr_dma_xfer && (tqspi->cur_direction & DATA_DIR_RX)) - dmaengine_terminate_all(tqspi->rx_dma_chan); + if (tqspi->is_curr_dma_xfer) { + if ((tqspi->cur_direction & DATA_DIR_TX) && tqspi->tx_dma_chan) + dmaengine_terminate_all(tqspi->tx_dma_chan); + if ((tqspi->cur_direction & DATA_DIR_RX) && tqspi->rx_dma_chan) + dmaengine_terminate_all(tqspi->rx_dma_chan); + } tegra_qspi_handle_error(tqspi); ret = -EIO; goto complete_xfer; @@ -1323,7 +1354,7 @@ static bool tegra_qspi_validate_cmb_seq(struct tegra_qspi *tqspi, return false; xfer = list_next_entry(xfer, transfer_list); } - if (!tqspi->soc_data->has_dma && xfer->len > (QSPI_FIFO_DEPTH << 2)) + if (!tqspi->soc_data->has_ext_dma && xfer->len > (QSPI_FIFO_DEPTH << 2)) return false; return true; @@ -1384,41 +1415,43 @@ static irqreturn_t handle_dma_based_xfer(struct tegra_qspi *tqspi) unsigned int total_fifo_words; unsigned long flags; long wait_status; - int err = 0; + int num_errors = 0; if (tqspi->cur_direction & DATA_DIR_TX) { if (tqspi->tx_status) { - dmaengine_terminate_all(tqspi->tx_dma_chan); - err += 1; - } else { + if (tqspi->tx_dma_chan) + dmaengine_terminate_all(tqspi->tx_dma_chan); + num_errors++; + } else if (tqspi->tx_dma_chan) { wait_status = wait_for_completion_interruptible_timeout( &tqspi->tx_dma_complete, QSPI_DMA_TIMEOUT); if (wait_status <= 0) { dmaengine_terminate_all(tqspi->tx_dma_chan); dev_err(tqspi->dev, "failed TX DMA transfer\n"); - err += 1; + num_errors++; } } } if (tqspi->cur_direction & DATA_DIR_RX) { if (tqspi->rx_status) { - dmaengine_terminate_all(tqspi->rx_dma_chan); - err += 2; - } else { + if (tqspi->rx_dma_chan) + dmaengine_terminate_all(tqspi->rx_dma_chan); + num_errors++; + } else if (tqspi->rx_dma_chan) { wait_status = wait_for_completion_interruptible_timeout( &tqspi->rx_dma_complete, QSPI_DMA_TIMEOUT); if (wait_status <= 0) { dmaengine_terminate_all(tqspi->rx_dma_chan); dev_err(tqspi->dev, "failed RX DMA transfer\n"); - err += 2; + num_errors++; } } } spin_lock_irqsave(&tqspi->lock, flags); - if (err) { + if (num_errors) { tegra_qspi_dma_unmap_xfer(tqspi, t); tegra_qspi_handle_error(tqspi); complete(&tqspi->xfer_completion); @@ -1444,9 +1477,9 @@ static irqreturn_t handle_dma_based_xfer(struct tegra_qspi *tqspi) /* continue transfer in current message */ total_fifo_words = tegra_qspi_calculate_curr_xfer_param(tqspi, t); if (total_fifo_words > QSPI_FIFO_DEPTH) - err = tegra_qspi_start_dma_based_transfer(tqspi, t); + num_errors = tegra_qspi_start_dma_based_transfer(tqspi, t); else - err = tegra_qspi_start_cpu_based_transfer(tqspi, t); + num_errors = tegra_qspi_start_cpu_based_transfer(tqspi, t); exit: spin_unlock_irqrestore(&tqspi->lock, flags); @@ -1474,28 +1507,28 @@ static irqreturn_t tegra_qspi_isr_thread(int irq, void *context_data) } static struct tegra_qspi_soc_data tegra210_qspi_soc_data = { - .has_dma = true, + .has_ext_dma = true, .cmb_xfer_capable = false, .supports_tpm = false, .cs_count = 1, }; static struct tegra_qspi_soc_data tegra186_qspi_soc_data = { - .has_dma = true, + .has_ext_dma = true, .cmb_xfer_capable = true, .supports_tpm = false, .cs_count = 1, }; static struct tegra_qspi_soc_data tegra234_qspi_soc_data = { - .has_dma = false, + .has_ext_dma = false, .cmb_xfer_capable = true, .supports_tpm = true, .cs_count = 1, }; static struct tegra_qspi_soc_data tegra241_qspi_soc_data = { - .has_dma = false, + .has_ext_dma = true, .cmb_xfer_capable = true, .supports_tpm = true, .cs_count = 4,