{"id":2197353,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2197353/?format=json","project":{"id":21,"url":"http://patchwork.ozlabs.org/api/1.0/projects/21/?format=json","name":"Linux Tegra Development","link_name":"linux-tegra","list_id":"linux-tegra.vger.kernel.org","list_email":"linux-tegra@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260217173457.18628-7-akhilrajeev@nvidia.com>","date":"2026-02-17T17:34:55","name":"[6/8] dmaengine: tegra: Use iommu-map for stream ID","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"95eefd9d78a956bcb1d6e1c0ff0a6ac3c26c7a6c","submitter":{"id":81965,"url":"http://patchwork.ozlabs.org/api/1.0/people/81965/?format=json","name":"Akhil R","email":"akhilrajeev@nvidia.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-tegra/patch/20260217173457.18628-7-akhilrajeev@nvidia.com/mbox/","series":[{"id":492464,"url":"http://patchwork.ozlabs.org/api/1.0/series/492464/?format=json","date":"2026-02-17T17:34:49","name":"Add GPCDMA support in Tegra264","version":1,"mbox":"http://patchwork.ozlabs.org/series/492464/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2197353/checks/","tags":{},"headers":{"Return-Path":"\n <linux-tegra+bounces-12017-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-tegra@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=Lq17AAYy;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-tegra+bounces-12017-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"Lq17AAYy\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.93.195.62","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fFn2M0tGwz1xwD\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 18 Feb 2026 04:39:23 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id BF4DE300DE2D\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 17 Feb 2026 17:37:06 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 847B437105F;\n\tTue, 17 Feb 2026 17:37:06 +0000 (UTC)","from SN4PR2101CU001.outbound.protection.outlook.com\n (mail-southcentralusazon11012062.outbound.protection.outlook.com\n [40.93.195.62])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0FD43334C31;\n\tTue, 17 Feb 2026 17:37:04 +0000 (UTC)","from MN2PR08CA0025.namprd08.prod.outlook.com (2603:10b6:208:239::30)\n by MN0PR12MB5810.namprd12.prod.outlook.com (2603:10b6:208:376::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Tue, 17 Feb\n 2026 17:36:57 +0000","from BL02EPF0001A0FB.namprd03.prod.outlook.com\n (2603:10b6:208:239:cafe::27) by MN2PR08CA0025.outlook.office365.com\n (2603:10b6:208:239::30) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.13 via Frontend Transport; Tue,\n 17 Feb 2026 17:36:57 +0000","from mail.nvidia.com (216.228.118.232) by\n BL02EPF0001A0FB.mail.protection.outlook.com (10.167.242.102) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Tue, 17 Feb 2026 17:36:57 +0000","from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com\n (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.20; Tue, 17 Feb\n 2026 09:36:39 -0800","from drhqmail202.nvidia.com (10.126.190.181) by\n drhqmail203.nvidia.com (10.126.190.182) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.20; Tue, 17 Feb 2026 09:36:38 -0800","from BUILDSERVER-IO-L4T.nvidia.com (10.127.8.9) by mail.nvidia.com\n (10.126.190.181) with Microsoft SMTP Server id 15.2.2562.20 via Frontend\n Transport; Tue, 17 Feb 2026 09:36:35 -0800"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771349826; cv=fail;\n b=DqBep4cHIPR6kD2f6fQynWDDCtSVdAfSuo/EpUzegTcOLZFS4z3NRj9l+a/r9tbE2aQdQb+6MIz4B8eJfmV10NvWlM3dBOEBhrD5xzZPBpvwjxnQzZlE34JPeCIfcZXakJsX3ACRXbuWpkoW9hk+FT9vicHsY6l0dF+fj/0MSso=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=BnXSV7dk6Qt5bsF6p3j8R5nI5pp6il08htgXGajjlYC4pta6ccCIHdfHntzyFMLGJRajx8qxpzjjT0uqOHUolp3Bq4dm0E9dQ4l+vvRiIEZ84hYDKZ1KDIOHmk97dwmc7AYmDtVCEH82PA24hm6MBQtNV90gYI6jyvZ9PCzlrsD4b74IemsPQsMNdLnR661m+8sX2jGvgOdHRMz7iV0AE1q3KOw0Fslv7ZBN8Q9chmsy41x8/aue1N0om5g3p7x2i7ja+ncWHjpI12+NUr8xlMHfPVLIjnGwRn1Bl0VGiEdFDZwSfGXpSegIvpRfohJ9zudXHEWygvZekdFckLecnA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771349826; c=relaxed/simple;\n\tbh=kcR9AycOO4tJTvFi1ZLLXINB1Y8R5P0hUmmjyRKE7y8=;\n\th=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=ptM64ZLjtCRWY7IOX10FWZ2L0CmDRnMOFOzgmLe0g/UxWKeZyU4V4cwQRoAV5JEq7k7vKvlCL1HVnO9ZM24pnVhuukeWSbl4EAAGdvGPEKgSB5PxQmVGzRGefIevvfDCVKs9smBT7BgBU1L6rJ79ZB2YQospVvJBhdojZBnPkdM=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=ur9TOd4T2tMKSG+j+RDQn8awnSOB9Fc4GKrozVR+qsc=;\n b=CVRpkYJkYaWVz057DDIO2WGI89uN5abC4G3b8NsxA7auE+kwZWdhBEK6tQCTrFaI4QPt1Gplfk/7XpW8NR+cnhgB6WLgZ9VInCzmtfsCuGVxgqlXoR9Fm4AuV1wt0iWP1rMMlk8HE83vJjlIGqdNN8dbPW2+llrCmNekoMyq3q+qozCA+heQ2aqfX/mZXLuPCdgZxnMX7ZZvlwIZHcjXoudgUbV5wcGyilbdhKnoHHoNLS5JrhrnatU9BrfdXGW8HsnMuZh2UVGiJdlUh6TeaQ7d6bHZu/4PZW7c82Ii6irBSNzlgp1jVG3rAwvTQAAtd0p2Gc46j2XMOCToW7Y1MA=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=Lq17AAYy; arc=fail smtp.client-ip=40.93.195.62","i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.118.232) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=ur9TOd4T2tMKSG+j+RDQn8awnSOB9Fc4GKrozVR+qsc=;\n b=Lq17AAYyJkqb3EKlWbkSmrHqcNaEQNxGjoOrCx63rKs3sZ3swZkLqVpW15iera3PYKfVANHi+Ymc/1bmhu+taU2EwR5a9DGFsZTzCtdKu60+vp5tQxN3AmLePx8Tv+w6Wjv5XBjMzhOJd/xa5GJuR5+wwfatkaTKnjWcn2WA6AoH/AMYQNMlt7hUIR8dcxlF9+9JEbIK4omVRy81DriVkuEepXMfKi4ZJUdrvXTzp88OobIWhSEys4lCWfS8i/JC+TvTQkAhI7lGyxn+mtbTov/T1WZ/nwhAqS7uhDPXKW1Q/iK0iw8ll9WmDZq0Z+dvZxDRXbE5WbUp3kr9UKU6Vw==","X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 216.228.118.232)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;","Received-SPF":"Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.118.232 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C","From":"Akhil R <akhilrajeev@nvidia.com>","To":"<dmaengine@vger.kernel.org>, <linux-tegra@vger.kernel.org>","CC":"<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,\n\t<vkoul@kernel.org>, <Frank.Li@kernel.org>, <robh@kernel.org>,\n\t<krzk+dt@kernel.org>, <conor+dt@kernel.org>, <thierry.reding@gmail.com>,\n\t<jonathanh@nvidia.com>, <p.zabel@pengutronix.de>, Akhil R\n\t<akhilrajeev@nvidia.com>","Subject":"[PATCH 6/8] dmaengine: tegra: Use iommu-map for stream ID","Date":"Tue, 17 Feb 2026 23:04:55 +0530","Message-ID":"<20260217173457.18628-7-akhilrajeev@nvidia.com>","X-Mailer":"git-send-email 2.50.1","In-Reply-To":"<20260217173457.18628-1-akhilrajeev@nvidia.com>","References":"<20260217173457.18628-1-akhilrajeev@nvidia.com>","Precedence":"bulk","X-Mailing-List":"linux-tegra@vger.kernel.org","List-Id":"<linux-tegra.vger.kernel.org>","List-Subscribe":"<mailto:linux-tegra+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-tegra+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-NVConfidentiality":"public","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-NV-OnPremToCloud":"ExternallySecured","X-EOPAttributedMessage":"0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"BL02EPF0001A0FB:EE_|MN0PR12MB5810:EE_","X-MS-Office365-Filtering-Correlation-Id":"fc90049f-e5b3-4872-0595-08de6e4b2626","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|1800799024|376014|7416014|36860700013|82310400026;","X-Microsoft-Antispam-Message-Info":"\n xPbzGxLeI5NfQp4pN5KVrGcSQe6lDKhqxktbAy4SsVHxW+ysSix4YGhgKNXBYT9fqhxgMqUvM35Wzf0x5KULKRKRzf+QugbXbtLbRrtY0CPORdCLyOluNAtVH2oTTP8Lpu23EY86u1HObQasp2P5SBo9GnZh2NcwnUCKcodvdhcrKZznlxTJ68HyrkeIi2AAxzIjyK3JpzHnXPZJ9P3Lr0Uh9ov2QRJfuRDZs9tnzJUwcVxq8tH3vxIg43UQtRP8Sazvk/r7YEtSpiWophXkk97IPxdOVQtJnxUwhRFDF3QvQma80j8ORduN3aXJGqhUCeEuOHouQhQO/FDTx1+h0jGW3C9QptW4ZxEdsF+pKiDRqZ9+kIn7Q3jEhcMj3kjTTzNm+TIluRdqnU3X5NSUPg+jSrh9EXb3mno0y0yF1VwPRhwtsOf5Xzjruda3bFNkm6V/SLZjFLBc3uegERccR2EQ74fckF6haxeE09V070Mhh5ShDTfYm0G4FkHPM9Hnwswur5PWQ3HogDtbRB/k1bkYTlGenSliuxQVtmH909pHVPS8KOdyB6D3ZzD8m04vVLXbxlBih8YnvzAjK8mytO9El3RPKrbw9T0J3y8quenhUqli/trpBNX1FdKym+7e1f1dDOTRc6mMUBWDUx/VFiHCs2/ThzygrhsPLVEnQwQ1uSlrUpb6r+Uh7ubcumg6fvOVY3wOCQJy9RV2Ypv5EH0nuW2/5LlrVPoqe0rAfSeVGi2Vgqbk2wdtf9f64SCnQBz7zhfpM/ro1W4fCiBJH7ZT6f3H6E2qQBptNgzGEgn0EjGawTIpxMr2WdBfuq0/2lfbep+jdvu4S5CnUMBA3fM3MoB+LIzYwAlaP8F7sSoD8BeB4of2ddUeolgRj1H0KqU1CzivtzJshrTKgBkboAPO7fXxRBrh5qaTUyBCspVXqo9R3Uqo9EVq2MIf9GQtFkpZr9xWUmxbBIQb4lkuYxmy4PQuNPxyWbJGZFmEXYfHO6WV5XOPTMLob0WGw4jbZG2GQh07+800mJKDcAU6HvJyRZMfZS5mo5EJU52crHIjBzCiIrpOYYlJPvjuFO3jQDaijeDp8HCXpZJdjry1yDjSJDbrhgHew9NrXMLaGVJRsVuMIiIIwZkSDyGWcL/BihXy4bVG5b8GcqbfuXQByK7weHW4ZNXiz2Q94Dnl1w1YdMdI6YCDiFfHKA3MKG6vqzEveu7W0fIx7vZYWot6RsDP9h3s3MnqDBt4OWc9S5w/tFOnT2Cn+mZ/wNlkbX8W3G2pJmhrYOYj+2AAklgxm7vX7ZQyOxO4bNt41pFt/fHcxUtJorbDaHn/0DIgEPIoEgyFEecoBwSBkjuN9m6fwrowWjhRE4cTZYivfI/bbFUQNTPiFRorJs5oTckDBytiYuuKUFu3gBUARyYwK2ePmsGGs+kPeKCroZZIWJreQJVH7fyOvX1/Uwz5ZO2MF0HQwqJ3OCG/d1nHyBPQciNnCiJbvtpzzZxBErWyluD0yOWQubRl8dpvP6kGOCEDXMOWMp7Ng2cBwiIix75wsY24ZD1/iFbNk1SSS9RxyMYG3mp+695nym7Kp6pf/L3U6aF91X2zak2feiAZQdGBgWMMcWEEdc0hKs/mW6OK5g+onEUEdURC+7uTLrm6GN4Vx9ptQvIwPMlt5LvPmXN8sIebcw==","X-Forefront-Antispam-Report":"\n\tCIP:216.228.118.232;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc7edge1.nvidia.com;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(36860700013)(82310400026);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n\tKbLZhO28FX1Ffb3PM3ej2VJlHl0/TbXKZIdskq4VhedwY1F0iy49mhdcMaBUK/chCroneN0iKTa75Caa1iM3GiAH4TnsJ7bcpMjsUvCE3QSaiQfhspfM/C4QC7TMh4g5h/9zdrKvkw2EARyr6id9/zcXx3RjF5BANgLXOLpEV1heMgOHyGgLaDaF6ZFTx/0/2fhbrA/UoU2yzV1z0+Y566drq6PN5EEWVgiGzKi2r8EFIlcxPHacRezipvMGTc4M6+sySyplWR08dJBjxJDwbafvvqHWpvxGSUc1DWpn92l53jg9G0BNcQGoUrOVdAaP1uhT54jaNiXiaHkfYN8PepDk/QNKgd4zENaTJvPZ9dsScLrZQuAMsLXUWF9ekeycAEGz+G1EJO2272z3i0APY2GNUdQSo81+q56OzZZWoPR71FABVttAm/IH9t+DrxAj","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Feb 2026 17:36:57.2989\n (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n fc90049f-e5b3-4872-0595-08de6e4b2626","X-MS-Exchange-CrossTenant-Id":"43083d15-7273-40c1-b7db-39efd9ccc17a","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n\tBL02EPF0001A0FB.namprd03.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"MN0PR12MB5810"},"content":"Use iommu-map, when provided, to get the stream ID to be programmed\nfor each channel. Register each channel separately for allowing it\nto use a separate IOMMU domain for the transfer.\n\nChannels will continue to use the same global stream ID if iommu-map\nproperty is not present in the device tree.\n\nSigned-off-by: Akhil R <akhilrajeev@nvidia.com>\n---\n drivers/dma/tegra186-gpc-dma.c | 62 +++++++++++++++++++++++++++-------\n 1 file changed, 49 insertions(+), 13 deletions(-)","diff":"diff --git a/drivers/dma/tegra186-gpc-dma.c b/drivers/dma/tegra186-gpc-dma.c\nindex ce3b1dd52bb3..b8ca269fa3ba 100644\n--- a/drivers/dma/tegra186-gpc-dma.c\n+++ b/drivers/dma/tegra186-gpc-dma.c\n@@ -15,6 +15,7 @@\n #include <linux/module.h>\n #include <linux/of.h>\n #include <linux/of_dma.h>\n+#include <linux/of_device.h>\n #include <linux/platform_device.h>\n #include <linux/reset.h>\n #include <linux/slab.h>\n@@ -1403,9 +1404,12 @@ static int tegra_dma_program_sid(struct tegra_dma_channel *tdc, int stream_id)\n static int tegra_dma_probe(struct platform_device *pdev)\n {\n \tconst struct tegra_dma_chip_data *cdata = NULL;\n+\tstruct tegra_dma_channel *tdc;\n+\tstruct tegra_dma *tdma;\n+\tstruct dma_chan *chan;\n+\tbool use_iommu_map = false;\n \tunsigned int i;\n \tu32 stream_id;\n-\tstruct tegra_dma *tdma;\n \tint ret;\n \n \tcdata = of_device_get_match_data(&pdev->dev);\n@@ -1433,9 +1437,12 @@ static int tegra_dma_probe(struct platform_device *pdev)\n \n \ttdma->dma_dev.dev = &pdev->dev;\n \n-\tif (!tegra_dev_iommu_get_stream_id(&pdev->dev, &stream_id)) {\n-\t\tdev_err(&pdev->dev, \"Missing iommu stream-id\\n\");\n-\t\treturn -EINVAL;\n+\tuse_iommu_map = of_property_present(pdev->dev.of_node, \"iommu-map\");\n+\tif (!use_iommu_map) {\n+\t\tif (!tegra_dev_iommu_get_stream_id(&pdev->dev, &stream_id)) {\n+\t\t\tdev_err(&pdev->dev, \"Missing iommu stream-id\\n\");\n+\t\t\treturn -EINVAL;\n+\t\t}\n \t}\n \n \tret = device_property_read_u32(&pdev->dev, \"dma-channel-mask\",\n@@ -1449,7 +1456,7 @@ static int tegra_dma_probe(struct platform_device *pdev)\n \n \tINIT_LIST_HEAD(&tdma->dma_dev.channels);\n \tfor (i = 0; i < cdata->nr_channels; i++) {\n-\t\tstruct tegra_dma_channel *tdc = &tdma->channels[i];\n+\t\ttdc = &tdma->channels[i];\n \n \t\t/* Check for channel mask */\n \t\tif (!(tdma->chan_mask & BIT(i)))\n@@ -1469,10 +1476,6 @@ static int tegra_dma_probe(struct platform_device *pdev)\n \n \t\tvchan_init(&tdc->vc, &tdma->dma_dev);\n \t\ttdc->vc.desc_free = tegra_dma_desc_free;\n-\n-\t\t/* program stream-id for this channel */\n-\t\ttegra_dma_program_sid(tdc, stream_id);\n-\t\ttdc->stream_id = stream_id;\n \t}\n \n \tret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(cdata->addr_bits));\n@@ -1517,20 +1520,53 @@ static int tegra_dma_probe(struct platform_device *pdev)\n \t\treturn ret;\n \t}\n \n+\tlist_for_each_entry(chan, &tdma->dma_dev.channels, device_node) {\n+\t\tstruct device *chdev = &chan->dev->device;\n+\n+\t\ttdc = to_tegra_dma_chan(chan);\n+\t\tif (use_iommu_map) {\n+\t\t\tchdev->coherent_dma_mask = pdev->dev.coherent_dma_mask;\n+\t\t\tchdev->dma_mask = &chdev->coherent_dma_mask;\n+\t\t\tchdev->bus = pdev->dev.bus;\n+\n+\t\t\tret = of_dma_configure_id(chdev, pdev->dev.of_node,\n+\t\t\t\t\t\t  true, &tdc->id);\n+\t\t\tif (ret) {\n+\t\t\t\tdev_err(chdev, \"Failed to configure IOMMU for channel %d: %d\\n\",\n+\t\t\t\t\ttdc->id, ret);\n+\t\t\t\tgoto err_unregister;\n+\t\t\t}\n+\n+\t\t\tif (!tegra_dev_iommu_get_stream_id(chdev, &stream_id)) {\n+\t\t\t\tdev_err(chdev, \"Failed to get stream ID for channel %d\\n\",\n+\t\t\t\t\ttdc->id);\n+\t\t\t\tgoto err_unregister;\n+\t\t\t}\n+\n+\t\t\tchan->dev->chan_dma_dev = true;\n+\t\t}\n+\n+\t\t/* program stream-id for this channel */\n+\t\ttegra_dma_program_sid(tdc, stream_id);\n+\t\ttdc->stream_id = stream_id;\n+\t}\n+\n \tret = of_dma_controller_register(pdev->dev.of_node,\n \t\t\t\t\t tegra_dma_of_xlate, tdma);\n \tif (ret < 0) {\n \t\tdev_err_probe(&pdev->dev, ret,\n \t\t\t      \"GPC DMA OF registration failed\\n\");\n-\n-\t\tdma_async_device_unregister(&tdma->dma_dev);\n-\t\treturn ret;\n+\t\tgoto err_unregister;\n \t}\n \n-\tdev_info(&pdev->dev, \"GPC DMA driver register %lu channels\\n\",\n+\tdev_info(&pdev->dev, \"GPC DMA driver registered %lu channels\\n\",\n \t\t hweight_long(tdma->chan_mask));\n \n \treturn 0;\n+\n+err_unregister:\n+\tdma_async_device_unregister(&tdma->dma_dev);\n+\treturn ret;\n }\n \n static void tegra_dma_remove(struct platform_device *pdev)\n","prefixes":["6/8"]}