{"id":2175217,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2175217/?format=json","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.0/projects/28/?format=json","name":"Linux PCI development","link_name":"linux-pci","list_id":"linux-pci.vger.kernel.org","list_email":"linux-pci@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20251217151609.3162665-21-den@valinux.co.jp>","date":"2025-12-17T15:15:54","name":"[RFC,v3,20/35] dmaengine: dw-edma: Add notify-only channels support","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"aea03251ed0f5d4b4798b7fe9b15aac721f89fc0","submitter":{"id":91573,"url":"http://patchwork.ozlabs.org/api/1.0/people/91573/?format=json","name":"Koichiro Den","email":"den@valinux.co.jp"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20251217151609.3162665-21-den@valinux.co.jp/mbox/","series":[{"id":485709,"url":"http://patchwork.ozlabs.org/api/1.0/series/485709/?format=json","date":"2025-12-17T15:15:53","name":"NTB transport backed by endpoint DW eDMA","version":3,"mbox":"http://patchwork.ozlabs.org/series/485709/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2175217/checks/","tags":{},"headers":{"Return-Path":"\n <linux-pci+bounces-43191-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.a=rsa-sha256 header.s=selector1 header.b=U6lkX6n3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-43191-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=\"U6lkX6n3\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.228.20","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=valinux.co.jp","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=valinux.co.jp;"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::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 4dWdK60bwpz1xty\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 02:39:54 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id E89BF322AF18\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 15:24:35 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0DD70361DA6;\n\tWed, 17 Dec 2025 15:17:49 +0000 (UTC)","from OS0P286CU011.outbound.protection.outlook.com\n (mail-japanwestazon11010020.outbound.protection.outlook.com [52.101.228.20])\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 ECBC235CBD5;\n\tWed, 17 Dec 2025 15:17:45 +0000 (UTC)","from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:24c::11)\n by TYCP286MB2863.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:306::14) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Wed, 17 Dec\n 2025 15:16:31 +0000","from TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03]) by TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n ([fe80::fb7e:f4ed:a580:9d03%5]) with mapi id 15.20.9434.001; Wed, 17 Dec 2025\n 15:16:31 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1765984668; cv=fail;\n b=sSYBGF9fmfL+LU4pLcNfRdonjjN4U4HbYGa9MjgrYSWXIoV+HCd6SKMP4nnt9nBNp28BQQO6kNKPfUhZ5KhxaI7IXZMsU02xz5Gb02CVUXM2TOHswywAJGcw7UCOie+7ktDr14RsMeyIDa/xn/+5DD1Zdxytmigsfp5S9ucAdjo=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Vd0UONTDQ4BaW6fSB9nnnugAV+GPq8lJ6IDqx6OGbh2MTgT1Bwiu+HLkHLxiqux0VmCnrCKIIX8CocuFmWX0ltV5jKCDWhVdrq6y9DiSjjljTKNRmH8DFjSOQAk03cpCIk5rH+LcOUF54rvvKvt3WaTvysf5emn+JnRVrX7dIb2xAbm35b5B/cozKTMteWqMXywjLZyrK8kTnUJ+tOEA72cLDelqlB6FHobD8zp9rtLRF9BxFgPfBtYdG4RhpAeO4aLtcvG6MjAc2ShMEr7vf7W4jCI14eNiT8NHZb2Pc7uMTJNsxDdKd5FNxpsY/VLk+PGXs46mp1AAu0KzYscxUw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1765984668; c=relaxed/simple;\n\tbh=1Y9bU92YdEUA/d81fMwuTKdzIC3gHlad9y6sgvRh99A=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=sgG9EFjM7p95/gM+74FIN0D5r0yCXXAE+OJMojqCE5K9xCzqBVjUbRveoObyUoCSmbSzLHo//R4ny1y/JcMhfBWf9z9fBY53PGZUweNBSQjHbo7cHHWRYACpZOxxR6wahCHDPkw2cVpL22G+A71tZ6aXhuKkydc0Todlqc6GijQ=","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=lBHhV8flWb08jkfgSrsYDEjcKE4stA0DKcw1IQNChX8=;\n b=QMS7UAWHmbfHjHBOjUPXu+SCmfWMIa21li9O4YOY+ccMURjj8Imi4iqkVYVgOua+9K0koRanhzF1wDiuG2aI39HL0neneUGpI61Tijy4rto4Yt4rDqc70tKF4RJkWtYVXsvZnDbzfpQ3UHUqBtYuaXQaws/F1Ru58OgMPdrK7WKZ+nTNm1NElJyoZUntF/2RU29LfIw2FKrNzo22XvWbWUr+u5ElDbDHUt/tQQvhJh8aeqbB7UJtQqxWVjrX4rtG4MFbaKVTwvnznO6RSf0qZiAudFXDyBAZLPlofe+qWVlbUNz3ys5lbW7UHBO8zq4AB0LveiGfxe9p/GhBmfIZ2Q=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=valinux.co.jp;\n spf=pass smtp.mailfrom=valinux.co.jp;\n dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp\n header.b=U6lkX6n3; arc=fail smtp.client-ip=52.101.228.20","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=valinux.co.jp; dmarc=pass action=none\n header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=lBHhV8flWb08jkfgSrsYDEjcKE4stA0DKcw1IQNChX8=;\n b=U6lkX6n3xMtDG1BIz4td3w98KjelghQqPwv/zKoXJcwETn5DHcxnF1zOawyjojTOqfaX+1rfdMgo9FupxtVfi846/jFTo9OaLWrEh369dSf7P4pkood9YeSwS3q8cTLX75lSwQRht2CuoL54KAIYuo377ie6TQbxfI+5tjmDlJk=","From":"Koichiro Den <den@valinux.co.jp>","To":"Frank.Li@nxp.com,\n\tdave.jiang@intel.com,\n\tntb@lists.linux.dev,\n\tlinux-pci@vger.kernel.org,\n\tdmaengine@vger.kernel.org,\n\tlinux-renesas-soc@vger.kernel.org,\n\tnetdev@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","Cc":"mani@kernel.org,\n\tkwilczynski@kernel.org,\n\tkishon@kernel.org,\n\tbhelgaas@google.com,\n\tcorbet@lwn.net,\n\tgeert+renesas@glider.be,\n\tmagnus.damm@gmail.com,\n\trobh@kernel.org,\n\tkrzk+dt@kernel.org,\n\tconor+dt@kernel.org,\n\tvkoul@kernel.org,\n\tjoro@8bytes.org,\n\twill@kernel.org,\n\trobin.murphy@arm.com,\n\tjdmason@kudzu.us,\n\tallenbh@gmail.com,\n\tandrew+netdev@lunn.ch,\n\tdavem@davemloft.net,\n\tedumazet@google.com,\n\tkuba@kernel.org,\n\tpabeni@redhat.com,\n\tBasavaraj.Natikar@amd.com,\n\tShyam-sundar.S-k@amd.com,\n\tkurt.schwemmer@microsemi.com,\n\tlogang@deltatee.com,\n\tjingoohan1@gmail.com,\n\tlpieralisi@kernel.org,\n\tutkarsh02t@gmail.com,\n\tjbrunet@baylibre.com,\n\tdlemoal@kernel.org,\n\tarnd@arndb.de,\n\telfring@users.sourceforge.net,\n\tden@valinux.co.jp","Subject":"[RFC PATCH v3 20/35] dmaengine: dw-edma: Add notify-only channels\n support","Date":"Thu, 18 Dec 2025 00:15:54 +0900","Message-ID":"<20251217151609.3162665-21-den@valinux.co.jp>","X-Mailer":"git-send-email 2.51.0","In-Reply-To":"<20251217151609.3162665-1-den@valinux.co.jp>","References":"<20251217151609.3162665-1-den@valinux.co.jp>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"TYCPR01CA0119.jpnprd01.prod.outlook.com\n (2603:1096:405:4::35) To TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:400:24c::11)","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"TYWP286MB2697:EE_|TYCP286MB2863:EE_","X-MS-Office365-Filtering-Correlation-Id":"0b848c19-2894-4397-792c-08de3d7f4249","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|7416014|376014|10070799003|1800799024|366016;","X-Microsoft-Antispam-Message-Info":"\n sLG43AwZPQPuvufAMICIVDhtA8iR+tcq8JAZjDcin8dEIopfQRAohtEgdg7HOiC8UmIJB3BeMgFg299O5DpQW2Y9ws/6VGBLERC4hxfbeHWoYooBw0j4Ij9yX2AFBjdv/LsXz7bH0645pnbcOUNmYsdl7CKFHcijxXPIOxoliM+L+dKZXFCLI+l1lw07x0ds/2U3TwZMyP15VGd4oPB6nDurOPWVukT8upnSHlkmsFW1ZUxAl7FR+a1tGy/ztC5x78mInDDBxnFlh0IKvh4K1fdVyWJjE32VacZY4vpQGIeogJ/Fy16xKMwBpYeH+z5q65CNilJw3CuCFJCAfzG4y+j49I5q+E9jexOeVWfzYTTlwmeAsLFV49fODXV567nWVSbthuWot9NKJKW1f15xWyzJ1dkZ5qzxpLTo3rXeOU/+MxLINKHmVq0i3DMvWvHwUPtf/M67AyT7VCDLivbsDu3uq7J8X4Z/tUTB+IdHQj6MStkVTKra7VKF01EF1enpeXeTJy0CN6rsz68kZ4oLF0Kk5YtIK3p0XfNHZQJjDAAFzDfhY708TwoKd7NC9dZDK9IZ8R6ziyHkfVWiHumQW2wzzVQMMqUaj1ll/ag5KHqeyb0d7meHxNbFv8TtyP2f+JPaSmV0O0+2WyyzSB9bTthNYia7WSa2jWk6/5Wp8IdymSMLhrhQO/98xs4xuakt5nTQJn84ybLlXV8V+n2lTrqW0CL3PTuV7V6sToNBY3OJ7Gms0LLezTYe2bJTsH7iv8d9og2vqDdDUHL9tV4YRTGZiUfJUSX/v5aGK6Bk0btRHnOW83Rq1lfncczctQVyIxpZ6E9NJio2hdshgsr6S2W0VM9zafx+Lu/pWRmMwSmNFGlbJAgvjRt6rT3YT73JaTz/uYw4okecCV5QZdeY+SHwNjKyB+G8rPVAPGaTUQYEx5J4ucifrhuZidDGO5GUOSICO70W6AA9BQjMQsYjDf8YZkK7dbadgoVOArGmvlcJg36Xmq7wdQTeMRKY5MZqcSGaa7YNic5ZWrQq/L0FOHJuPTTJqX9aiPol7F/PyTdrRn28BNaxFtav4kHeq1MAN3dWuQ+YpuKIGuEbyjCCaXg3XcT/W9DT9O9LEYVnzg0BY4cR0uKvRyQ9IJWQHGSW19by+cZXnj+9ed45f0xHdDuc7u3dZx917CQlLHYyzhgm57mjRHXCoe0s9TkTW7+zm2Z4G7CzMS+c3NYeXN6YNOIySM3K0iOKtgBPvlBQQZqd4GyqDUmbe5FFJyxeRid9/kZmvKCdsAH2hUND2SyijHdzxC/+vxL3USI+bvy1bimcv/wWDCGsFORRonHH43hPcmyY1qaLKcPt5wOE7TCBJxqFmDz5Jil9Me6KstpMAobCNskyP18BM6enUhvt9e/aALrosPtOxF219dIVsSnH4LyluzZyZ7fjiQvE7rHejwLjubclmc1TFLG/v1UVxz6b","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(10070799003)(1800799024)(366016);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n TCzE4IQEv8z7TILvR7w2acsGkwtyUpJLMyNh/Wqhpbb/D3Y1jNP3HHf29HzZV6/TrLFHn9uxCbafnWlew7WfstugtoGby0pKdLo9CIikcuEmZOofjhVwYAWz0xnG23ud88JEBTlAR/hogEdqLulltRA6r5Wxv/+G5oYIX056osoNAiK0D0ERMFAy0Xr4FV0monTC93wqOYTNs25Oqh5Xb04StzpYZBFUbghQe2NyPf5I7p7UmUXKRxOC0DzBwy618EHQ3gyWjY9QvZ2L7aqvQ8lHDTumHxTnGg7dYxrCqIv4cXpQ10M1U3aSob4we/nt5s2EoIQe7lclGu+ZUesM783QNu8M6bVqT38no1B9He7cWp5THiKvf6PcVYq5uiQKYOmHH9H2RjNaI2YKbaufkllWpQvy46qhoq9Sroq9K2Nhe8i9161MlAqfDo5qFHvWMcAJbj3UlCtlecIPK09cGj65tKtygKN9mPOHhm9vxDTtMN02zSIRDb2uXdwIHKkFcz2JsSwWN2IxxYtH3lmuaxPw2fsbZF47chqE74y6+tN1at6k5NiRqXD3cDZxgAqIVaWkrq5+1JDZoR32jkMG3tM8HTRrjnMnjeIjw8k0ovXFTMz+5SG3f0/JdCYbG2Z4gaYucuIyF33+ehCj7BtyoRF0wWZyQUtkhx6tn4KVx3Ac7QQpLxVEmsgPFiEwOF64m/gNaHSxf+UVvyu7nhOl9Z1CgaZmBHSb640GRd+8NAHtUENCR7iDcC+pDzXVJq4R5VybYQV7o+YwwxnOXGJw1TrMdk1V6GLILDlVmbTEOpUiS14ssrMBhGCwqhMFYKL++EwxDzy4eowv94JcsCOB7xNqDwQ5YhqIxGRCFvbWr8hMcbjwXYwVKUe3Hg9q37WKt8u9ijkPhCLQcdaOZxu0o6fchZwCzHtWHYYB+/ZDtkvorU97n225yti5bfY72uUKI1mYmjoyxRXnDTNsLNLVEd2iE8btU1dJPfz43Ee/0GOac/8Ae5zDnfIozxRol25BPlWWrjMXKdzCVcTYGdtRjjsFPEdVF4VWLroHE35cjoEIQN9SPS+LRzkQocBDXCaV+n3wM0o8YkAl2YZqfDrKnGSYJjlIdV7eXENHb0zwXda2f7ZwNZo7RfnUNP4Te6Xe+z689ArWsedp7AsjPu9ZDoERPhvGakuqPYeYyPJIjtNzEpWEj5d/cPafXTMvkUtaGTOs6z2sPxhjdhzZ1PxVPdym+OZr07g/V/lvQiwU2DACjOQrMkaZ8DdEuNdjfynzUWsDtWnuVBFBT5kq0hknWswxmPWNQLVmiDkPp2p42bxQjUnrDTo6kzk9suDlIFAqoz/vTw0X0Cy8GCrDLCPCGrSeIqRAwgRIzysIGkqVecOybhdwVjFsMHbeXJYYX8rpSynPcRJcqZMbrbPYKenRoTyIGOHO8cMqF6MvH3yqSkAeGVXoVRNS0bkC31XT9uT8PrbBA17AsEbhYlfDTq03vq26qZkw0zuJxTzqGYG06Bva/63S9AqJja88WCRLSEeH/nIk4YL4agJ0slE1ky2rISLqqirJrOd21azKN2TtxnnFYLZS56ilHM3K2Wa0ihElqdkHxbh86HYc3mLhfZA8LVcloDpRoq0y0jsNEW3q+7E=","X-OriginatorOrg":"valinux.co.jp","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 0b848c19-2894-4397-792c-08de3d7f4249","X-MS-Exchange-CrossTenant-AuthSource":"TYWP286MB2697.JPNP286.PROD.OUTLOOK.COM","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Dec 2025 15:16:31.6140\n (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"7a57bee8-f73d-4c5f-a4f7-d72c91c8c111","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n 2cgrHeotYXTbPDtpiFU54i+YqoA87nMT3B45UosmgeROQ9vzpbLXvLKEuShFuhyh3nlh9aI+nfHyXF0yQU3xnQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"TYCP286MB2863"},"content":"Remote eDMA users may want to prepare descriptors on the remote side while\nthe local side only needs completion notifications (no cookie-based\naccounting).\n\nProvide a lightweight per-channel notification callback infrastructure.\n\nSigned-off-by: Koichiro Den <den@valinux.co.jp>\n---\n drivers/dma/dw-edma/dw-edma-core.c | 32 ++++++++++++++++++++++++++++++\n drivers/dma/dw-edma/dw-edma-core.h |  4 ++++\n include/linux/dma/edma.h           | 22 ++++++++++++++++++++\n 3 files changed, 58 insertions(+)","diff":"diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c\nindex 09b10ad1f38a..8e262f61f02d 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.c\n+++ b/drivers/dma/dw-edma/dw-edma-core.c\n@@ -608,6 +608,13 @@ static void dw_edma_done_interrupt(struct dw_edma_chan *chan)\n \tstruct virt_dma_desc *vd;\n \tunsigned long flags;\n \n+\tif (chan->notify_only) {\n+\t\tif (chan->notify_cb)\n+\t\t\tchan->notify_cb(&chan->vc.chan, chan->notify_cb_param);\n+\t\t/* no cookie on this side, just return */\n+\t\treturn;\n+\t}\n+\n \tspin_lock_irqsave(&chan->vc.lock, flags);\n \tvd = vchan_next_desc(&chan->vc);\n \tif (vd) {\n@@ -811,6 +818,9 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u32 wr_alloc, u32 rd_alloc)\n \t\tchan->request = EDMA_REQ_NONE;\n \t\tchan->status = EDMA_ST_IDLE;\n \t\tchan->irq_mode = DW_EDMA_CH_IRQ_DEFAULT;\n+\t\tchan->notify_cb = NULL;\n+\t\tchan->notify_cb_param = NULL;\n+\t\tchan->notify_only = false;\n \n \t\tif (chan->dir == EDMA_DIR_WRITE)\n \t\t\tchan->ll_max = (chip->ll_region_wr[chan->id].sz / EDMA_LL_SZ);\n@@ -1171,6 +1181,28 @@ bool dw_edma_chan_ignore_irq(struct dma_chan *dchan)\n }\n EXPORT_SYMBOL_GPL(dw_edma_chan_ignore_irq);\n \n+int dw_edma_chan_register_notify(struct dma_chan *dchan,\n+\t\t\t\t void (*cb)(struct dma_chan *chan, void *user),\n+\t\t\t\t void *user)\n+{\n+\tstruct dw_edma_chan *chan;\n+\n+\tif (!dchan || !dchan->device ||\n+\t    dchan->device->device_prep_slave_sg_config != dw_edma_device_prep_slave_sg_config)\n+\t\treturn -ENODEV;\n+\n+\tchan = dchan2dw_edma_chan(dchan);\n+\tif (!chan)\n+\t\treturn -ENODEV;\n+\n+\tchan->notify_cb = cb;\n+\tchan->notify_cb_param = user;\n+\tchan->notify_only = !!cb;\n+\n+\treturn dw_edma_chan_irq_config(dchan, DW_EDMA_CH_IRQ_LOCAL);\n+}\n+EXPORT_SYMBOL_GPL(dw_edma_chan_register_notify);\n+\n MODULE_LICENSE(\"GPL v2\");\n MODULE_DESCRIPTION(\"Synopsys DesignWare eDMA controller core driver\");\n MODULE_AUTHOR(\"Gustavo Pimentel <gustavo.pimentel@synopsys.com>\");\ndiff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-edma-core.h\nindex 11fe4532f0bf..f652d2e38843 100644\n--- a/drivers/dma/dw-edma/dw-edma-core.h\n+++ b/drivers/dma/dw-edma/dw-edma-core.h\n@@ -84,6 +84,10 @@ struct dw_edma_chan {\n \n \tenum dw_edma_ch_irq_mode\tirq_mode;\n \n+\tvoid (*notify_cb)(struct dma_chan *chan, void *user);\n+\tvoid *notify_cb_param;\n+\tbool notify_only;\n+\n \tstruct delayed_work\t\tpoll_work;\n \tspinlock_t\t\t\tpoll_lock;\n \ndiff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h\nindex 8c1b1d25fa44..4caf5cc5c368 100644\n--- a/include/linux/dma/edma.h\n+++ b/include/linux/dma/edma.h\n@@ -95,6 +95,21 @@ int dw_edma_chan_irq_config(struct dma_chan *chan,\n  */\n bool dw_edma_chan_ignore_irq(struct dma_chan *chan);\n \n+/**\n+ * dw_edma_chan_register_notify - register local completion callback for a\n+ *                                notification-only channel\n+ * @chan: DMA channel obtained from dma_request_channel()\n+ * @cb:   callback invoked in hardirq context when LIE interrupt is raised\n+ * @user: opaque pointer passed back to @cb\n+ *\n+ * Intended for channels where descriptors are prepared on the remote side and\n+ * the local side only wants completion notifications. This forces LOCAL mode\n+ * so that the local side receives LIE interrupts.\n+ */\n+int dw_edma_chan_register_notify(struct dma_chan *chan,\n+\t\t\t\t void (*cb)(struct dma_chan *chan, void *user),\n+\t\t\t\t void *user);\n+\n #if IS_REACHABLE(CONFIG_PCIE_DW)\n /**\n  * dw_edma_get_reg_window - get eDMA register base and size\n@@ -185,6 +200,13 @@ static inline bool dw_edma_chan_ignore_irq(struct dma_chan *chan)\n {\n \treturn false;\n }\n+static inline int dw_edma_chan_register_notify(struct dma_chan *chan,\n+\t\t\t\t\t       void (*cb)(struct dma_chan *chan,\n+\t\t\t\t\t\t\t  void *user),\n+\t\t\t\t\t       void *user)\n+{\n+\treturn -ENODEV;\n+}\n #endif\n \n #endif /* _DW_EDMA_H */\n","prefixes":["RFC","v3","20/35"]}