From nobody Fri Sep 25 04:41:11 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011016.outbound.protection.outlook.com [52.101.70.16]) (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 433594D7940; Wed, 16 Sep 2026 15:51:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.16 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789573880; cv=fail; b=jiDD+HxCUYBl5jz+wMJ5zNnnEZQrfMw1r1jOmQ1K7evIboXy7n+EtLI3QK28Os1zxyyRo7xLdHMmrYpwxkG4V4i9Go3Dk66ELSdn3ty/NDvOVvMeowRB4dBfALEXfGIMhLciNJlbQGb6myScVeXKPNTYvhLtI12KVHd4CLsUGlU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789573880; c=relaxed/simple; bh=IvFt3R1x0mmobz0tTguIXSuyHo1dKDWrpD1xu1G7b5s=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=Oa0qYKWscZvROBbSpJgAHkxsZnPQHiBTec19CWltDUDKcQg7DGHiAwMKLmfDElTzy92bo1NOsLswalLOIKS+nB5h1POBi9bErqizlJasd7abMI4+fnd4LKymaqppKXkXz/F3GFZSQplkoAYPdDTVwAy50cAE2FB6yk7OyFgmnkU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=c3O53bup; arc=fail smtp.client-ip=52.101.70.16 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="c3O53bup" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OVumq4XhIIM/+cGJ+14ZeIesplBI7sIQBQIx2nOUY//e7y9pyLRESeNTTYYEFQgo/tIz+4glzxC9QWTPPVa2s9FVW1XfI6G3YI18YG2MYbZq7nRCPNAKxme6AjtqLDbkeBrDEGI9Ifm2vvM+RXeCIoVAtfMUHb3nXcbYP6PJmqQFHCSaWzzxBOFnydD7Wpv0DBqbQZwhc2QlhCW8dEFqPx9U9uBqgP57xKjyC13BVaBna0BhGTozQm2dBDJXBtsyFZR1fS+3cHAX6q/ybFMAcvlRgdMM/XFCINYlFWkq8Uwfe0lOyHSd3bjvHEum+BH5XQLR+F7OTfBrgS/Ro7UXYQ== 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=UMEGIseJO2H7S6pE8ijsEi8U+D8X6uUS1cHCt9HQKOY=; b=eZnnDpRjOdUWoN44uiYs2xjQjPwdMt+0vZj1btN8w9GKYOPrRJ/WtvroyZqhYcpMZGrmcgLFVhm0sMum5hLVpM+iL5RG3L9pLWbNkFjB3kg32QMBZyd2SGEH8yeWXHNxTL/vQSaNGudm6cQ3fqIne/xi9zdR796uqg663VNJ1aVtzCZ46pJdD+kC8KQq2Xbu3v4oLy/SOTSHfmnnmaCD6CmRnK4ljYuID5b6Hh6xdr6B75EZcOONE0pMKx7HOGdX6ou9bUPK8V1pB55ElcA7K/q2N2KXgLfi6TztZOGGHG0oa51Kem4ZoZXLWIhTKlWSReVh+pPawDPC8OlwQI5bwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UMEGIseJO2H7S6pE8ijsEi8U+D8X6uUS1cHCt9HQKOY=; b=c3O53bupyUPrfL65ESIQWyJdMvBi8avqg/Ke41tnMhXR3nMTtYOQwBEBVD4/thnhTATuMTvT8vrX/fLnDB8aUAWkwliXUhs/iEAAFYPJELIGBC+faB2MKWzcybjt48CvOTnMGle6tzELIxCHIrz/qLuuMNAlP+ympQMmsicSynFgLFSaat6dFnTp2xvQsZDn4XgoAEFMTBYRuOoE1fnemDw3w17SR9Uni1APOfQpgruP6WlJWcS1U+Z6umxDm3a3ZiPqd/BSq2ysaZer1P2VrQVLN4nmzhgmRmisa7cWNuqdOhWlarbXEJqlT8xC01Mo2NKix4FH0q2j2V14FqcBdg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) by AM8PR04MB8017.eurprd04.prod.outlook.com (2603:10a6:20b:249::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Wed, 16 Sep 2026 15:51:15 +0000 Received: from AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9]) by AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9%6]) with mapi id 15.21.0428.009; Wed, 16 Sep 2026 15:51:14 +0000 From: "Peng Fan (OSS)" Date: Wed, 16 Sep 2026 23:55:25 +0800 Subject: [PATCH 1/2] dt-bindings: dma: fsl,edma: add iommu-map property Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260916-edma-iommu-v1-1-e1731968081e@nxp.com> References: <20260916-edma-iommu-v1-0-e1731968081e@nxp.com> In-Reply-To: <20260916-edma-iommu-v1-0-e1731968081e@nxp.com> To: Frank Li , Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Frank Li , imx@lists.linux.dev, dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Peng Fan X-Mailer: b4 0.16-dev-7bc12 X-ClientProxiedBy: MA5PR01CA0073.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1b7::12) To AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM8PR04MB7874:EE_|AM8PR04MB8017:EE_ X-MS-Office365-Filtering-Correlation-Id: adb7d83e-8c6c-42a2-e9bf-08df140a56a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|376014|19092799006|1800799024|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZC2bhzLrXcy8I7w7XJyj9WNdTXtXJy3cayNDZXJom4iCJ8Jkq9L1RoRxEMzUk6XWN85onSt9yix+sjw5Km/bqXfhHiCkHH3sM1sev2xDnkL/GiTH9u3Zm62rvP1vKFrXtzrhoV7PMepwJp2woDknpvEEBsdwDfcMJGvZTL9feomFVoNuIhDgDQFzS35FP0PDulEq2HFjojPMLfeRT33/wrnOt3c727Gadc1N1oDEiTnQqwPVGXLtFRaAArL5ubnUiRAXGLHWvBb9XbLKiy/xBNKcO/SVHDcFJMW2TVQrO44KAX4L3Wfwr+1V08806rzPpFf+ZwVIaYlh7qZUKk+25o09iiAo/GMy85v6xIXmzgkbccxKSIp1uOR1p1Gx2ISsFF6Tk+rXRfZZBzhyVOYSJpdaKC0TRyt4KuZicI05ri9ucPXW1GumEEQORtgqTjOllcmJQOlZ9uQkaychaayKI0a8lqo0IKaz33LRWIeQiv6amwrpJgRy66YHtYq2IHYFq9otUV5vQbE5wWG8JFgGD5CiOuHAsC8T/29KfrFwU3Oh65IJ4lF0w4vo8TUm/o9kEA9Ftn4OLaVIr8a7ZGrBwvnr+4SnKTO7haFF9eEvvMVAAHXkIwH5PL9LfWUlqiJMJgi0YvHeQpjvfTJ3EEEthPJKVHVqWpBbmBlZQXyBlNw= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7874.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(19092799006)(1800799024)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N04vQ3NsOHlDWkc1T0hlM1pHZWhuVWpjbmQxZTZ4N2Z1cG1SRjJhZ3JvMnNS?= =?utf-8?B?RkhycjNVKzZjSzZCY1duS2xBNXRzaWRWL2RpM3BuWGRraGU5K2tVVVZSdCtT?= =?utf-8?B?bGtwcVByaDg1RzdWOVBkQmR5Mldjd2MrUkRoUXdmUEJHczJZRXdTMVdTckQ2?= =?utf-8?B?RzVQWCtUbFg1aTFQRk9DU2VyOE0vaXp1TWdTTEhIMHMyRllmRWhhcWVrNDN5?= =?utf-8?B?ZUIxMDh0d1EzWUVWL1JjVEtTOHZjM244TEFGMU1JY0FRcFZhWkJZdjI2Yjg0?= =?utf-8?B?MmxhUERyb1crR1lyOXZiYTdkV1dhYnJ2TnV5RGNGYkdUaGR5RU9ncHZvZjRO?= =?utf-8?B?TVpaSkt3MEZ0eHl6WTRuWlR4d3U4TE5La25uWGpySG1QeWQxS3hrWmVNSDNI?= =?utf-8?B?YUU5bStWWXlneG1pQmJUYnlvcHRUMytqdk1naU4xQzg4OUZhU09lOWlsTC9R?= =?utf-8?B?dVN4NEN3RUdZcGFVTzZkcHl6ZHZtd2tQUXhscnRKU2l3UDVkUzJGb3JRWkhC?= =?utf-8?B?ZGlUQSt4cVowV2s5ak5HNjI5Mmk0STRLNlBESThma0F5K1ZPR0dQTHlHcG43?= =?utf-8?B?MzBVcWI4Vkl5ejh1dytlRWQ4QysvR0JJdndpYWNMeXBCQkoxK2NHNDh1WjUw?= =?utf-8?B?R0xqaFk3OHl5U2xibkUvQVVlRGRWaGZmREJqUkttV0hGVlVGa0ZvOVhnbm4x?= =?utf-8?B?N05YQnJwdXRib1l0NWtoNnpRYWtGWHBhWlpIRFZ3Z0JNaWM2SUNBbXJWb05j?= =?utf-8?B?dmZySHVuSEZRTjFvMktJRUVXSnovTkJTdmRBUDV6cThoRm96WXI1SitySGVT?= =?utf-8?B?VmlCZ2NLVGl1a3JQc1RVejZ6eDQ3c2Y3clhlcjJkdHBZOURIWEYwYkxnQ3pO?= =?utf-8?B?VlhKbHBiT1ZObVA0ZjhLalJ2Z1gxcjNPUVUwOTRYK1djRlREVlhIVkRCRDBO?= =?utf-8?B?UWloQnRMblFjWDYwVFV3Q3ZOUUczOE53YjNIeUxKaHVSbzhvYVJ0eWpiTS82?= =?utf-8?B?SWFvMXNEOGNtdXd5YmtWbHBkekU2QWVoU3hoWE54RTRTY3psQzQrcjFnVXF5?= =?utf-8?B?U3VkMDhvTWV6eWVpK1E0NUZ0cUU1cktYaG5IQ21SQWE4SGFCVEMybHdqYllw?= =?utf-8?B?bGZOMGhJS2JhRldvUWViRytpemx6djI2TG1pV1M2NU9qNG5NS0lhMktUb0p3?= =?utf-8?B?Ykk0QVBjdGIxRk5OMzFBaUpuZTQ1RlJmWm1HZnRRNEo4R2VxWmVYazRmN2xj?= =?utf-8?B?Tk1NVXJZaGxvbDZ2V0t1S0JGb2lOSE51dmNGM2p1ZUlkaXVNUFBGeUR6Mm9F?= =?utf-8?B?R1lyRXZuSHk1VTEyZUllcm0reEFjRm53dVZYUWg2R3haQndsQmRDbUMxbXFD?= =?utf-8?B?bWc1eks5OUdjVWdrRUNSZk1yaW4wSlAzNi83Z1lyN1FFU2RlMkoyazBvZGo4?= =?utf-8?B?aHQyQXJYV1BVcFJqT0xGSDg1RHNYa0lQUmFyZkZxaHRxeHk5a2REVkZkRDhN?= =?utf-8?B?ekV3Z0d2UkgzYW5pR1RkTEppMUhZL1pxbE8zcW4zVWRrZDllajQrT0ZjV1dB?= =?utf-8?B?OE91V1R6azRPUXFrT1NxS3diOGZxWWpudTBrbTdEVXBYL3hKekY4MDg2bHFh?= =?utf-8?B?RTNBVDAvaW5LSEZFRUZGb1Q0OTkveURaRCtJQ0R1YVdlSUkxNnRJRXhtNzdO?= =?utf-8?B?S3dMWU5yRVZlWkFCYlMrZndMWjBRZXdZTHA2R0FtNjN0dXVNaXhaZHZ6QUhq?= =?utf-8?B?akRMZUI5ZFFTL283cTZQYWlybnBTQUYwc0Eva3dRUEdjZTRsVitMQzdxTUxk?= =?utf-8?B?NkoySnFIdm9hOE54N3l5RDZPbDdacHdrRXhzVytvQlRES3FTcWV0dk5ZMy9w?= =?utf-8?B?MDBLWmFqQ01IeFdFa21jNXAydVpxMVQwN2xnYldyMGc3WGZqUUJaYjk0c3VK?= =?utf-8?B?RFcxWUcxWVhQWDdDeGdZTXVwaG8zaTFsRXhGaHU3U24xdlJTd3JpaTBYWE1C?= =?utf-8?B?WldKYkNWb25UNWsreDVadmthSzJJZTVYeHlBb0VqUE42dFI2RDRMNm5uUVpT?= =?utf-8?B?U1hCM0U1M1lnZVZBekJvM29JQUtIM3hyaExORWtUM0NueXRQZWFIYmIzdmdx?= =?utf-8?B?MDRONTB2QkU0WTdGYUtGcTFCNTZYeGoxbjNENnFPbitqd1ErTDBnMmVxVjJP?= =?utf-8?B?bW0rUXlCOGQ5Z1dXK0wyQUp0MVVYUzNkZFlFeVlFdm5rcnVTUVBkUUhFbGNF?= =?utf-8?B?anBRNEN6eWtNZVpCNDY2a0VvWjJvWXNWWThWQkxTNFFDRlV6dVF5QWhNTk41?= =?utf-8?B?QlpsNmxwdVJLK1J2NjByWENJbERIT2pob3F5c09iQXVZK1h1N0s3MXZwOEc5?= =?utf-8?Q?regS6QvTqwzk3cV6DRrABMbWAePf405iMR353?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: adb7d83e-8c6c-42a2-e9bf-08df140a56a6 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2026 15:51:14.8746 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sVYgsLrh9O8kefsSj1NuiOPI06TkZpe2BK2f/BRvLS7rTGHKvI0dGXiwP4HifT6Rmf9jPz5EEKRU3JSKeRAY+ynxqjl2LdS2H/taQ0/68lrixZ/s7BYWkKyZE1nONs1S X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8017 From: Peng Fan Add the iommu-map property to the fsl,edma binding to allow per-channel IOMMU stream ID mapping. This enables IOMMU translation for individual eDMA channels, where paired channels can share the same stream ID and channels without an entry operate in bypass mode. Also add a new example using fsl,imx95-edma5 that demonstrates the iommu-map usage with per-channel mappings. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Peng Fan Reviewed-by: Frank Li Reviewed-by: Rob Herring (Arm) --- .../devicetree/bindings/dma/fsl,edma.yaml | 89 ++++++++++++++++++= ++++ 1 file changed, 89 insertions(+) diff --git a/Documentation/devicetree/bindings/dma/fsl,edma.yaml b/Document= ation/devicetree/bindings/dma/fsl,edma.yaml index f609038e35ae1..cb8c650a5bb90 100644 --- a/Documentation/devicetree/bindings/dma/fsl,edma.yaml +++ b/Documentation/devicetree/bindings/dma/fsl,edma.yaml @@ -104,6 +104,15 @@ properties: Bit semantics: 0 means channel available, 1 means channel unavailable default: 0 =20 + iommu-map: + description: + Maps DMA channel numbers to IOMMU stream IDs. Each entry maps one + or more channels to a contiguous range of stream IDs. Paired channels + may share the same stream ID. Channels without an entry operate in + bypass mode. + minItems: 1 + maxItems: 64 + required: - "#dma-cells" - compatible @@ -351,3 +360,83 @@ examples: <&pd IMX_SC_R_DMA_3_CH6>, <&pd IMX_SC_R_DMA_3_CH7>; }; + + - | + #include + + dma-controller@42000000 { + compatible =3D "fsl,imx95-edma5"; + reg =3D <0x42000000 0x210000>; + #dma-cells =3D <3>; + dma-channels =3D <64>; + interrupts =3D , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + clocks =3D <&clk 0>; + clock-names =3D "dma"; + /* + * Per-channel IOMMU mapping. Each channel + * occupies one entry; paired channels share + * the same SID. Channels without an entry + * operate in bypass mode. + */ + iommu-map =3D <2 &smmu 0x30 1>, + <3 &smmu 0x30 1>, + <4 &smmu 0x31 1>, + <5 &smmu 0x31 1>, + <6 &smmu 0x32 1>, + <7 &smmu 0x32 1>, + <8 &smmu 0x33 1>, + <9 &smmu 0x33 1>, + <10 &smmu 0x34 1>, + <11 &smmu 0x34 1>, + <12 &smmu 0x35 1>, + <13 &smmu 0x35 1>, + <14 &smmu 0x36 1>, + <15 &smmu 0x36 1>, + <16 &smmu 0x37 1>, + <17 &smmu 0x37 1>, + <18 &smmu 0x38 1>, + <19 &smmu 0x38 1>; + }; --=20 2.34.1 From nobody Fri Sep 25 04:41:11 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013037.outbound.protection.outlook.com [40.107.162.37]) (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 1493F4D6C4F; Wed, 16 Sep 2026 15:51:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.37 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789573887; cv=fail; b=YyBG2sv4oAgjxix6OPae1Fn/fnqQR5E7coOVcUmqmO06cnSgLNZxCMM6rnDoK+lHsiqeIcI8wtaNinE86XQOxiWnLW8GjTSr+UmP1R5f/Zk1jf3aHhefWB/2nH6FZ1OP1T+TjHrIuz3sX4Z2/G6ngwDkc2wfI+m7p+M8FXsPgVo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789573887; c=relaxed/simple; bh=oHPuP9FKtRu1UWoALp8bNL4vsle287FSUr+VXEwLVAk=; h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To: To:Cc:MIME-Version; b=QfUcMojFKAHWGe6V3CX5JoiymdmOb/eh4we7Tv7V3I0pWML2FfnBAfYm3HKuKc2S0VLBKCj228MzMbXDAicfAYWPYDbRHnHYDTVHJrB0FTFSz+ToeptYF2GNk3W5Mt/dkfCc6xw7PzuThZ5HtZNPl8evYLjARW3iAD+eoc4CXo8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=x+/SN8VY; arc=fail smtp.client-ip=40.107.162.37 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="x+/SN8VY" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Lql2YEvADJC3HueAWPphM8Fqa0Kn5aLp8fRs3CMpMOaFb/n0MgnUf+tmCAreakPcsOjkS2VFgN7ibDKhdyS1CXGto3PJKbbG9wqYNowTa6UtlDT7WctfSCSi+eCe7YCMmyORs6AeIbV8akdhZFbxfRN1xGtqpStD5t+LUFpxFLpCWqmpGPVBv+yVaNxIgGtu3E9bydDx3whkIH3w+1AWOoZ3j0viit4JjbM8KN+gj4d16t1KiSfUqNrLEujd8Phk1/Ftu0uTwfWVdWnPvrYrUUoMFo+FFNDJaqnUrZLG5QpKmcwuROyOLWbOfsEF99itoAL+74REO5O+3daLteIKwg== 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=mBjc7c5IdB0az762XYt1InKlM2MgLuDjPHvAUHTYu6U=; b=ccfE/XhT2VTIgsvg+BwpdScKjORt6nJg5GNv8WUKhAJNXUGPschX1vM2kiBr2rr1E1Eg5PHATRd6CZSi1ueJSXnU8PEtrwzE6BPnClmvBEFqwGxFQbeOhIS8CtxLnjZ4gXJnLtStZcAeoZtXXqVSdC00KA6G756I8AYzIRxqeW1DTl1HMt7L/Pk3Bk4Xi9N8hCa/e9DHaee+8UZsqSgzvrHUMdltew+7lCA6O0e9G2ebqAZyYf7vE90UeqR4FLm+i5tmhsXK3iFSw4xJY76F/N6t2nXvelRsfBVz+avewZmKXNYE/vqObrPina71icVdf/I0tKHal02rjDvoC5OtyQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mBjc7c5IdB0az762XYt1InKlM2MgLuDjPHvAUHTYu6U=; b=x+/SN8VYwL0m8Pdk0dpjNFbeMbACj/63qB7oONZrQrvxBgiglUQfY19qYH18E/qlrBBp3HtDUwB1h0kpRf+juPi+mzKWEzDKcVKaGidy3c7IeZCR9nTe1Gpn/EPEUgqI2Z8tbGRr/dDTFa3KdPChLMbAbv/eZDN0gzURJLdfH52qMDQsp5olt53Sg7M/sRyMRgzzepN8RoBN1blewdzgUqZv3QE3gw2Z55hfbtT3pTBShZ5ZqJQ6hTyD3b3U0FY9BVhcaHWBi0LwA2n9yloJiWPpvbrjadtDWtHy1yf9IVOqOL3QLPbkPfqenBxKZ1R6Rh74k6qYUVC3gJCwaS9i1A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) by AM8PR04MB8017.eurprd04.prod.outlook.com (2603:10a6:20b:249::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.428.9; Wed, 16 Sep 2026 15:51:21 +0000 Received: from AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9]) by AM8PR04MB7874.eurprd04.prod.outlook.com ([fe80::ac38:1699:6f18:c5d9%6]) with mapi id 15.21.0428.009; Wed, 16 Sep 2026 15:51:21 +0000 From: "Peng Fan (OSS)" Date: Wed, 16 Sep 2026 23:55:26 +0800 Subject: [PATCH 2/2] dmaengine: fsl-edma: add per-channel IOMMU support via iommu-map Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260916-edma-iommu-v1-2-e1731968081e@nxp.com> References: <20260916-edma-iommu-v1-0-e1731968081e@nxp.com> In-Reply-To: <20260916-edma-iommu-v1-0-e1731968081e@nxp.com> To: Frank Li , Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Frank Li , imx@lists.linux.dev, dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Peng Fan X-Mailer: b4 0.16-dev-7bc12 X-ClientProxiedBy: MA5PR01CA0226.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a01:1f3::12) To AM8PR04MB7874.eurprd04.prod.outlook.com (2603:10a6:20b:24d::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM8PR04MB7874:EE_|AM8PR04MB8017:EE_ X-MS-Office365-Filtering-Correlation-Id: 477fd27c-e638-40c8-be13-08df140a5a92 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|23010399003|376014|19092799006|1800799024|10067099003|11063799006|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: NdULoHvn8d4wFiQvbXn4/cz9dIc5CY14hKk4l/+s1yDGwVOuK73cbONJAWFb5l6aEqhmo+nV9wTdpw5BbqM8jKS4y6tX8dwRg25Rq/AyrhI0+28LXElO8FGKvt6uGvdx5FhVLROuSBjye5mS76biwKzlBp5i43I4iWtGGp/mUmmKaRLqdtv46vjTNl8722sq4bEdIBztgHEsh1bLK68xNASy6cAtDmqxDv583zQF/Gj/X/eIre4l7zLyLGPjSxvTGNPu+0VVo2qA4NKLY8r46Y3wznKDVwpAY17MOTSGcOy+4Y0CXASAwfNc6OJGwZRkjjrAgVUSDFcWefkF0SxUfKkJiPO9P2d68A0SVgeavtclwuc9qUskw/XpU4NX4sjCKK3PXIhbw1mVp43HeWgQQUKsN77wzHYL4IwVwVnZlYNL/6od354PniPLtyou3qNN+VU/1Js61TIKFts663cDcfJ6tfWS/ElabwFLZEsEgLxjNmX0ZsZOM+xDoFQjmYrBOW/yvpZCQZQkiBCo2SZ/3RLWQsIDg47QUaWVIoTIYBlj9vP1Cp25ylJVlGzYkKWMOb/mIYBMJ6TRWO65e5li7OOql3sGsfkwAqQDno2n/lXdQd5fdG88AXcBd9946T35/4Bp3nmB7I4RZGQ/p5B7Ugy7Ajtm52ne1w89tk4khUI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM8PR04MB7874.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(19092799006)(1800799024)(10067099003)(11063799006)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MDcwbmYrZ01QVm5vV1NzYUF5VlpGbnBBT3VuNms0aXpoNHFaL1QzVU5pS2NC?= =?utf-8?B?UDNGcVNoK3dMRzNucE9STjJlb0ZqbnRPVTMxVlo5enVYNGkxN2p5U3BiOXZl?= =?utf-8?B?UHJpKys3WlBDZlJyUFBmMVNndzFpNUJGWmpsdGdpeUY0MWRXOVRPM1lqeTQw?= =?utf-8?B?YStDU0JyOUxJcElPenFuWCtGRW0xYmM0WmlQOXhteTg2YlpPNU1ic1A3QmZk?= =?utf-8?B?a1Y4OThtKzVWMTdiNk5hZng5OWRKWEJ2dk95RjBVdzRZV2l4eXI3aDdQcnk0?= =?utf-8?B?TXQyalgzTXpzVi9HMWltN3VpS2llWkVucGFPL05MaVVsRHQzSTBNakk2Qk8z?= =?utf-8?B?RmN4QWRnbnU0SVB3VFVRcVhzaHNJTXdkV0dYZUZaZnIyV1NsclA2Wk9EZmJp?= =?utf-8?B?NENVcVFCSWljTFZ5aHFqY1l0L2czMHppS1hsK0h4ZW4xWWdFR0Exc05jRU1L?= =?utf-8?B?Y21Tb0ZGdFdxYVc1Q1QvMU8yVnZIYzdsL0RyVVNXVmxBdDg4S0FvVmNhVndS?= =?utf-8?B?MC9OTjRHS01CajYwdG9PQjV4anUrUEZYSEtpTzhCQjRpekR4aWcwNFM5dE1G?= =?utf-8?B?WTMwbFF6cHR3dEVnYXVuUkZKeGR0Um5xUHVDVk9Zc2ZsVmZBaCsrOC85alVN?= =?utf-8?B?MHZHbVY1NzZuQXE5VDhRZzU3UVhIY0x0bHRqNmNSd2V6d0JRbW9wMDRKc0Nt?= =?utf-8?B?bEdWV1pxc3F6MzZjWHFMRGNUYXJZZGZoVmdtUjZFMVByWW9vQ0VLNThrQXJu?= =?utf-8?B?LzhtQVh6TFhPTWdTYVdLanY1ckkwZEZUYW56bFEwU2JXWEZhaG9ieHcva1VX?= =?utf-8?B?UDBPR3g0VFVTbjlJZUdDTmRzNHhqVWhjVTZsb0pJY0ZEeUFVbnBlRytSUlVw?= =?utf-8?B?Nk5kQVhLeTlxVkRvbm0yOXRsVnpOb04wU1Npc1hqS1lZYUhkc3FnN3JqZFoz?= =?utf-8?B?ZDNVdmFBb2grREZKM09yUDRpbnlHemZNVEhuV1J0RGVsTVo0ZllrRmxJOE9s?= =?utf-8?B?eWZpaVMrd3FRWEF2VkVjS0Y0c0w4STZuQnVwVUdoeFAxK3ZDTWRRZ2hKS2Ix?= =?utf-8?B?WG9DWmxjUXgvMnEwcmZuUWhvcjZ4dmdvdnVjNHBON25QV0t0amRWeDdFSUpz?= =?utf-8?B?MlpwWHJ0Mk1LdkZ6NUNhUFphcVIvbHdFT216azFlWTZ4Y2JCLzhxQWVHVlho?= =?utf-8?B?MmNzV21ZeUNQbDJORGZnMnJ5VFZ0Wm1XRlhnVHpWeW0wNFNBRzVTcFNDaEI1?= =?utf-8?B?UHBCNVd3ZU1GMWVvZzNQNjY2NHViNHhzSVRUWFVRelpvNWFhZDJOekh1QlJQ?= =?utf-8?B?dWd6MVl6czdTOGFGd2l5UDhZdmR0QlNQVWlZSmdoNEVCQ1cvc2tSOTVTWHZD?= =?utf-8?B?OWdFb1plM25UOGV5eWJ0bVFLR04wcHVGN1hxSy9wNm9pajV6NVp6SVphWVdT?= =?utf-8?B?T1RiRUF3bGZ1ODVOdnNrZmRlVllOcVY5S2VpdVlGc3NFVDdzcm5tQnZCK29R?= =?utf-8?B?eDZKMitPYUYramlielhJL01pY0EwZXZZT2ozQ3o2djg3eSs4bkh5Qm13WU1h?= =?utf-8?B?SDhUOWpwdFpRaTd2VlVBRGFDVGhRYkV3V2hiQ1d5ajJiaW8zN2llU3BKK2hk?= =?utf-8?B?SzBXKzZpQVM3eVR2OWdpdUhXeWVXR1BkMldHRUIyb0VXOGdQbUJDbUo3VFlH?= =?utf-8?B?NGw1S2JNYnN0VU56UktKelZKNGxncnBBMkpDRHZXb2tMckxBTnBTNnExK3g0?= =?utf-8?B?Z051UUlyemJNQldiMCtFTmVkVDRzSjJvR1BVMnVMdlZZR1VSMHc5UHdkdUZF?= =?utf-8?B?KzN3eGN6UmsxVkY1Yi9haktjS1FUa0g1WGx2a290UnB6aGE5Q0J2VXN5Q0Zl?= =?utf-8?B?eGpVRnNxbmVCc0hic2NzVTJPTExSNmNMQi9PQWMvdnJhaFVkK3c3dmRyYUdU?= =?utf-8?B?YVUxYlJNV21vaHo1R29RT1EyTHdsM2I0cnRMaWQrNDkyWXd5T2RTMm80cVE2?= =?utf-8?B?ZENpKzkvWDluZmQyVGlTbnlPazA0a3V4K0xPNWFkNW9BcHRRTnI5dGgxNU5a?= =?utf-8?B?NFJmMjllc2FuZUV1UFJoQnhsNnFERXBEdDcybWZpdXo1YmUxa1YyZWxsSlVK?= =?utf-8?B?Tk03b3loalRYV3pjS1plb1pkdzYrWFlXQUh4YWdtUmhPREl6NjlSZWwyY1VW?= =?utf-8?B?MHdEdzFGZVdRSkloSmp4dkNDa0J0NmRwc1lRcGNJaFI1MlgwSlZDcnJLZGFa?= =?utf-8?B?bk1LNC9IUlppWjZSTFFKSlpRQWNNMGtJWGhrTnZVY2M3b010amY2WVZ1eFE1?= =?utf-8?B?eW1mbi95K2kxSTJHdk0zV2t4K0tKN0VSejUwWGgvQkJGWjFvdFp3UDZiVDNY?= =?utf-8?Q?VrwjFcCP39+OdBJBQEnyLe92LU2+2RafcPDXY?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 477fd27c-e638-40c8-be13-08df140a5a92 X-MS-Exchange-CrossTenant-AuthSource: AM8PR04MB7874.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2026 15:51:21.2782 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: E2t8sFsGmTfzwVxYcYMTnYp88udUOwIAJ3B5Cc5qUQbVtyWQkr2aNo8wRhlWAzYjOOKJ6IEL+17fle1sqlZYeLYJHP2l4XCwDlghPYAh5XJDlDzmUivGZbNk1JEq9WhL X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8017 From: Peng Fan Add iommu-map support so that each eDMA channel can be individually mapped to an IOMMU stream ID. At probe time, fsl_edma_init_chan_iommu() prepares per-channel devices by initializing DMA masks and bus pointers so of_dma_configure_id() can be called later. At xlate time, fsl_edma_chan_configure_iommu() looks up the allocated channel index in iommu-map. If an entry exists, it calls of_dma_configure_id() to attach the IOMMU domain and sets chan_dma_dev so dmaengine_get_dma_device() returns the per-channel device. Channels without a matching entry operate in bypass mode. Also switch fsl_edma_prep_slave_dma() and fsl_edma_unprep_slave_dma() to use dmaengine_get_dma_device() for DMA resource mapping. Assisted-by: Claude:claude-opus-4-6 Signed-off-by: Peng Fan --- drivers/dma/fsl-edma-common.c | 6 ++-- drivers/dma/fsl-edma-common.h | 1 + drivers/dma/fsl-edma-main.c | 76 +++++++++++++++++++++++++++++++++++++++= +++- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index bb7531c456dfa..58a92ff4ddbe7 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -283,8 +283,10 @@ int fsl_edma_resume(struct dma_chan *chan) =20 static void fsl_edma_unprep_slave_dma(struct fsl_edma_chan *fsl_chan) { + struct device *dev =3D dmaengine_get_dma_device(&fsl_chan->vchan.chan); + if (fsl_chan->dma_dir !=3D DMA_NONE) - dma_unmap_resource(fsl_chan->vchan.chan.device->dev, + dma_unmap_resource(dev, fsl_chan->dma_dev_addr, fsl_chan->dma_dev_size, fsl_chan->dma_dir, 0); @@ -294,7 +296,7 @@ static void fsl_edma_unprep_slave_dma(struct fsl_edma_c= han *fsl_chan) static bool fsl_edma_prep_slave_dma(struct fsl_edma_chan *fsl_chan, enum dma_transfer_direction dir) { - struct device *dev =3D fsl_chan->vchan.chan.device->dev; + struct device *dev =3D dmaengine_get_dma_device(&fsl_chan->vchan.chan); enum dma_data_direction dma_dir; phys_addr_t addr =3D 0; u32 size =3D 0; diff --git a/drivers/dma/fsl-edma-common.h b/drivers/dma/fsl-edma-common.h index 205a964890948..85487763e05ab 100644 --- a/drivers/dma/fsl-edma-common.h +++ b/drivers/dma/fsl-edma-common.h @@ -264,6 +264,7 @@ struct fsl_edma_engine { int txirq_16_31; int errirq; bool big_endian; + bool has_iommu_map; struct edma_regs regs; u64 chan_masked; struct fsl_edma_chan chans[] __counted_by(n_chans); diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c index d9fb717b5b53c..eabb0086fc9de 100644 --- a/drivers/dma/fsl-edma-main.c +++ b/drivers/dma/fsl-edma-main.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +25,7 @@ =20 #include "fsl-edma-common.h" =20 +static int fsl_edma_chan_configure_iommu(struct fsl_edma_chan *fsl_chan); static void fsl_edma_synchronize(struct dma_chan *chan) { struct fsl_edma_chan *fsl_chan =3D to_fsl_edma_chan(chan); @@ -298,7 +300,7 @@ static struct dma_chan *fsl_edma3_xlate(struct of_phand= le_args *dma_spec, struct dma_chan *chan, *_chan; struct fsl_edma_chan *fsl_chan; bool b_chmux; - int i; + int i, ret; =20 if (dma_spec->args_count !=3D 3) return NULL; @@ -332,6 +334,12 @@ static struct dma_chan *fsl_edma3_xlate(struct of_phan= dle_args *dma_spec, fsl_chan->is_remote =3D dma_spec->args[2] & FSL_EDMA_REMOTE; fsl_chan->is_multi_fifo =3D dma_spec->args[2] & FSL_EDMA_MULTI_FIFO; =20 + if (fsl_edma->has_iommu_map) { + ret =3D fsl_edma_chan_configure_iommu(fsl_chan); + if (ret) + return NULL; + } + chan =3D dma_get_slave_channel(chan); chan->device->privatecnt++; return chan; @@ -695,6 +703,70 @@ static int fsl_edma3_attach_pd(struct platform_device = *pdev, struct fsl_edma_eng return -EINVAL; } =20 +/** + * fsl_edma_init_chan_iommu - prepare per-channel devices for IOMMU + * @pdev: the eDMA platform device + * @fsl_edma: the eDMA engine instance + * + * Must be called after dmaenginem_async_device_register() so that each + * channel's chan->dev->device is already registered. + * + * Initialize DMA mask and bus on each channel device so that + * of_dma_configure_id() can be called later at xlate time. + */ +static void fsl_edma_init_chan_iommu(struct platform_device *pdev, + struct fsl_edma_engine *fsl_edma) +{ + int i; + + if (!of_property_present(pdev->dev.of_node, "iommu-map")) + return; + + for (i =3D 0; i < fsl_edma->n_chans; i++) { + struct fsl_edma_chan *fsl_chan =3D &fsl_edma->chans[i]; + struct device *dev; + + if (fsl_edma->chan_masked & BIT(i)) + continue; + + dev =3D &fsl_chan->vchan.chan.dev->device; + dev->coherent_dma_mask =3D pdev->dev.coherent_dma_mask; + dev->dma_mask =3D &dev->coherent_dma_mask; + dev->bus =3D pdev->dev.bus; + } + + fsl_edma->has_iommu_map =3D true; +} + +static int fsl_edma_chan_configure_iommu(struct fsl_edma_chan *fsl_chan) +{ + struct device *dev =3D &fsl_chan->vchan.chan.dev->device; + struct device_node *np =3D fsl_chan->edma->dma_dev.dev->of_node; + struct of_phandle_args iommu_spec =3D {}; + u32 chan_id =3D fsl_chan - fsl_chan->edma->chans; + int ret; + + if (fsl_chan->vchan.chan.dev->chan_dma_dev) + return 0; + + ret =3D of_map_iommu_id(np, chan_id, &iommu_spec); + if (ret || !iommu_spec.np) + return 0; + of_node_put(iommu_spec.np); + + ret =3D of_dma_configure_id(dev, np, true, &chan_id); + if (ret) { + dev_err(dev, "DMA configure failed for ch%u: %d\n", + chan_id, ret); + return ret; + } + + fsl_chan->vchan.chan.dev->chan_dma_dev =3D true; + dev_dbg(dev, "ch%u: IOMMU domain configured\n", chan_id); + + return 0; +} + static int fsl_edma_probe(struct platform_device *pdev) { struct device_node *np =3D pdev->dev.of_node; @@ -882,6 +954,8 @@ static int fsl_edma_probe(struct platform_device *pdev) return dev_err_probe(&pdev->dev, ret, "Can't register Freescale eDMA engine.\n"); =20 + fsl_edma_init_chan_iommu(pdev, fsl_edma); + ret =3D devm_of_dma_controller_register(&pdev->dev, np, drvdata->dmamuxs ? fsl_edma_xlate : fsl_edma3_xlate, fsl_edma); --=20 2.34.1