From nobody Sun Feb 8 16:33:54 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021104.outbound.protection.outlook.com [52.101.125.104]) (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 CBA542D6E5A; Mon, 26 Jan 2026 07:37:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413045; cv=fail; b=GgftTkOLmhHN7G5mzrzWQ7Iy+R5b56bER1ZDg/Q7O7sjKMC3yADi8LM8VAbndND/Vkai7JbLmWTAeBeYFprTyWL5ZO41hO1AdV8vaButJFdSrgUkWmJdK1LIy24ReqGNznq22avyMVNlDcV9v4guhT1AIGuOQKnI3foO3sXnz94= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413045; c=relaxed/simple; bh=51Qf6qtqpHPSrOevyQgT2E7D6WnkVcrLw44/aVXHoCc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FZc8b8Ts3SHZC5vqpcIHI9QlO1hj5wVdSRsRmTyPytmA5bhotHn2GTEuGkKvAlNmomCtzCu0zQYdGyFaY3mK/+d+x3b/CDcAGtlLjIMd643A1nwW/EvoVwvHdbRgsSoJgVrMsTJbf2659qCF/+RqsKKrt66ih/I8eLwbcMdAuMc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=ASsx4Ht2; arc=fail smtp.client-ip=52.101.125.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="ASsx4Ht2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hRGALeNrV1XLNGaNqvAvs9mjDl6AvCbP9M16fBBADPyJVPkg6w0T1vun9qfef+jHiK8Kig0MzLZVhAkYMPFDGMS459VFy9GVrvVShbOv/psJeLXL32cdBFHBUVPG9T+XkUDrZ4T3S9P6h+BFK24GMZPp0nrau1pRvgXbSiLcVZDETsOt/2pysKRsYv9DBEXftdwe1w65lJuxnlZFMjFtO5DvPdUc0lPx5r8lSPVeeJjT3NTbAw8xoC51mKc3IRmn8aAawUqfalBrcZfL75WtiGETxulR6ior4fUlbFGTZWM+ZSZlCJnuAT0IuR/ivSZwiFXPudvL6brS7CvqAbyIJw== 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=dxSyS2mhCqhW3G6O9AwHIc0j2k4qcGaEtcjBNZM1SLE=; b=cHa1W1M+xXw2QiSQpWVyuUpHiZS+glI7XwGUMoZxiBY1R5p5r5HdPnlCjTlR/ssKQ51nCzXIEvNPr8sWa4qYZifOdPg+SziTptwBeCXnAl7QN9H9Rt70ganuO0mcVXXVi79JCcdZrVUO10u891rh55o6o9ix9YVmDBfOL9S/NCZwTM6qN9d3KIDLzZbMsQ0seTEs1dUDAdl0bdhXA8inXA+nqK27e/S46E8Wco5GiBrMLT5Jl1uZm9V9r0S/cWIYRRcEi6HgH6zsNo1QVC326Gb1HZzvCgD6yeHej8Vt77gbjjWJzc6IwZTd+S5jKm+uuS5kBLM9PESwWBw/bppcYA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dxSyS2mhCqhW3G6O9AwHIc0j2k4qcGaEtcjBNZM1SLE=; b=ASsx4Ht26Hvknkwn/xOLPVrbeSacPEiHGFtUc9gIpE1zX324OK4FsFaaNwtfyVxo6uGKcLxWsZA7ZzNCVimkYv90v6bbo9n/dFsnTZXJsEo2X/OaBXvR2SPf3rSob7HiIvrJxJAW7j87dcNTO0/yWG/rqRP9VwpMpxr3L1TdvJc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6300.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:420::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.14; Mon, 26 Jan 2026 07:37:07 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9542.010; Mon, 26 Jan 2026 07:37:06 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/5] dmaengine: Add hw_id to dma_slave_caps Date: Mon, 26 Jan 2026 16:36:48 +0900 Message-ID: <20260126073652.3293564-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260126073652.3293564-1-den@valinux.co.jp> References: <20260126073652.3293564-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0011.jpnprd01.prod.outlook.com (2603:1096:405:26e::7) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6300:EE_ X-MS-Office365-Filtering-Correlation-Id: e5c3146d-c7fc-4aec-5e5c-08de5cadb4f6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?8zFSkdU48CRV+R+9Y0qRLzxrBftU7qUiY0jb3+ICr4W47E3xDOPTD2LaFgug?= =?us-ascii?Q?aUbQxcDUKGZOfo4HzMhw1khgiyvpvA0iwVIkZhXRE55n82bUgkiTpIxksJiH?= =?us-ascii?Q?ELls9goqLZnHkqOlaq/vKVX8ATyCTzxouh/4I0O6cxwuppgxIUus43NvuB9d?= =?us-ascii?Q?SZDEbFMQ4+Fx+Qnjh+MRbfp1GajaTHzMetBGTW8RE0e1o7pi5KjLx1esCsnH?= =?us-ascii?Q?8W2pDEzrgxmwdythYVaDkdOzE7VfpCg7WSpv2AFG7D8eCG7cNlLF5lH1ZgWA?= =?us-ascii?Q?yssNTtfCoZx9vBYecLpqcixxwY8P3rp83RYaJJxr8NPyMIC7w2SBUPjs9V+m?= =?us-ascii?Q?w0A92YmWrB+wEj/G02AJw/9sfGYMUhiJMc5WLLtPhtOOwyk1ewM+o0qeF5l9?= =?us-ascii?Q?5R5fkXF/btKtnv5k5I8zNa/sUkIkAsrbIbeoKKD+34FdwzpQl7NRpGAhvOqA?= =?us-ascii?Q?kLX3dPaClybQv4dSvhQDTUl2k1gRAvms02QvAf5M1j4iIzVrYWlS9zy/w1dM?= =?us-ascii?Q?DXNGirPHwUO9Tqh4y9LpxyeYJFKdsSQY6ZHQODLaG9+BDI1i9IlSKWfa1qvw?= =?us-ascii?Q?OkMoQSs2GlKZWGusfSyibMT1mbb4HJjRuq4ryuW9Fa0+Lw4PnNigWVBajkkA?= =?us-ascii?Q?EFhbUjj82S1Z0hwMYyUp6c5k1/rr26q0PgPTsnqr0rJJ0tctdON2WuLMWTnl?= =?us-ascii?Q?214Og1hjaCCh++8qFGvqqHzvLan50naOlSXPJJXqpGv4JvXsNoGJ5R8+LpTP?= =?us-ascii?Q?x20Jh6U6oyGaC+oUL9ojwmAV4q9Pz/sJcLbjR69SUBAbFh8/MVdX0JvChet4?= =?us-ascii?Q?sn2+PNiiLV4mu0P34N1ZQYUsPsPALANTFttM69/ZrixEvMZ9r5nKxVO2qzNb?= =?us-ascii?Q?+SQFlrtLt7Y58q5MG11lTTa977iBzkLcpIdeEXbxm0Tk3rfVWgh38Q5WPzbC?= =?us-ascii?Q?zlXOpi030AtZJ9p9ZjOYxKei5AE5DXCjsvbeC4KlOc+4lyMD0T1WQXN7huwt?= =?us-ascii?Q?OQFq9JRRUzpa6Y979umVNfr72sjfd4gr0v1NOuuxvmZzyNztJfX1O3H6O6ha?= =?us-ascii?Q?d2XDYsydHAgmxftFRSJCj95wC/Cq7IWm2tQPeIVYpaGrq1vrO+cfTnzyFw8r?= =?us-ascii?Q?cEdDvEAtQ7wkFQCSf5by/s5l+/tuzEpHzI4u625CRnE8FkZTFQ6DRihJK/iR?= =?us-ascii?Q?LT8wE/YDGfbNGQe3A0R9xNK9Kc2t73evNjK3Khc/NY/cFbixIe4IIr5AZYCe?= =?us-ascii?Q?Jv9zP35saQWpZMFVOfV45IXXjtcm4rYHoaqOhjxgGcYkMbP1ttbwnnTAt4Hb?= =?us-ascii?Q?SnIvy+WWVzYO2GNUwn0oEyEcjarahRcMjsJ5NoI/nxiVH6V1S3PaPipy+VBb?= =?us-ascii?Q?9Jj3SXbo7/fFbsDKSJvnfYtZxSKNki23s+0TzygntAR+uQK2qwhg8cJUVaax?= =?us-ascii?Q?f1EE4N04TIlNjMgKrKyuEwCfzyC+DogJNdaRQsq9jLe3SVBiv/xd2RJZ3Bb4?= =?us-ascii?Q?w0tgOFU7IvgmNzRfenlrWE7elxZqELbtJ1H3V+0g/bjC/GfRasG2Kw86f3Yz?= =?us-ascii?Q?w/IyO0/Q5648R/zRObw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5HlF7mKQgat2zfpUIxmL9sseKgtYX0SBJrWIsJwnDAUF1P5gunSwB5vzbdFh?= =?us-ascii?Q?ajYA7yi0hMbYaBAfUZaV6u8sh4p3D25z/AxT09UMyHaiQ7ul+HbpqmqjcupJ?= =?us-ascii?Q?W7jmWwMMefyrJ/XdwHVlrxjk4f0M/WicnFLYSnI1K6GpREiS8zVnQUXJbSs4?= =?us-ascii?Q?bjzV/4oa+M9dhUPcEdfNUp898VmRfXDFfO99jGljGkDR8kK7dJwWqoxvAc4M?= =?us-ascii?Q?D0rfyaVALFYuVrddkbEwHtObegR3MnvqxIUT6sADdt/1L9HunSIrgjattbta?= =?us-ascii?Q?6HnQxUFEhSrFgpWmIPqtwikek/05M/md7RIKRnkq6EvwJIn4XvAXqQFor0hL?= =?us-ascii?Q?o1vszyIHbiKUmkv/gQQvj78JGQOEWSl0yaWOUpwJ2R9DXOZBqGH4O15dMMZT?= =?us-ascii?Q?kApHVSGKxom4WbR6Ndf2HOG3Ipjyedf7zMT7IFq5qgrlHuVSmku1GSLIcSO5?= =?us-ascii?Q?2Im0kXmkqpx4Oiw6NeVo9tC2zKpCcFS+ep3fZLNm5NORGfT2ELAiFOAqV9f9?= =?us-ascii?Q?ZKJ5Gn7A6hVImLpqNWU4m3A50SpLu3QKZtL1xVkgc4EYseGrLJYukmLL8JS0?= =?us-ascii?Q?2x5dzAjqACIwwYJeyWudhQjrdyWPUhJGafqPlh8YLQxjrocYJxDrQU7w1KRF?= =?us-ascii?Q?cPMAMLDs0f0eh4iKGnDfhYyC70fh1CYxbLXYFnvcF//LjWZtD0azsOMZ40n9?= =?us-ascii?Q?w1JcsxmMV4M/mdWNK/ca+UbE5AaEXH6ygxOfbYR1vYe+dUAp4Ft7He7BIOkd?= =?us-ascii?Q?t3CIHNYt8fNi6PYfzRO7TKXLLOQg77dlFyh2s4/bz24Kq8Awc3tQD9FLB+l3?= =?us-ascii?Q?aFdNQjDS6kj/NMCJG3HE/Jh/lzngCLzLmJfxmc7znuzsNBktME08vs2nIE/n?= =?us-ascii?Q?ZjiFMcYAhXumfW5sHY9tvpuvRQhTnB5hDtque8wsd8nC6xUq4rZHDUr6NQPF?= =?us-ascii?Q?Uxjy7bKsTdlVO0UCLqmDnApZaizacJiff5sKqW+GAZLeh9un9jWl+5UG1DuL?= =?us-ascii?Q?0g26qdIg/2Luybut6f7fFEFCPvkh2GjDtpmJpk56of8xLgVwSe8Mad8edvn/?= =?us-ascii?Q?sGHOhfDJ8f0e6xIolDpJi40zdGx7oKgREmaV/X2n5eEjlrpXCrqdN7xISy/k?= =?us-ascii?Q?hMwxEoJsK0rz30mJPBqSIYmwUhuQFSvzpSXX7s3n5KuUC3H8Cj7IUHLtOhj9?= =?us-ascii?Q?KU9JbUZ2KSEin22r/U6HLwtA+1zEHP2MpOm3fe6efeW7BMO2eI+HtlSszLif?= =?us-ascii?Q?DBKFSnHX2bmS/0HrcIHdouBKMRT++fF3uxIeEJkb/XA1+X0pg8KZk2ytE30b?= =?us-ascii?Q?JQzdyqKqxxUaxDELV1A874jfMFzCuuR12Q9gcxaZRUmlDowJfIUM924FTKnz?= =?us-ascii?Q?YhZ2QpglyAufo2WM7I7slyeJbCZ3vGCaSGuh0UvOTwO5rtNYD/CtlWaIJXHN?= =?us-ascii?Q?xEqz3a0jq4qMiJRu94BtzRmbWVAKzMWOrkqNvWwUJ5I31/OJkmEcskVtYsZ7?= =?us-ascii?Q?SSXd0v+czS4ffs/CM/ybozkfKlo4wIAPT80VJDMb5Jv0PJtPFqI9xSUvIahQ?= =?us-ascii?Q?JHCYIpoVMNhhOhdh67nujuouTS2G+idDJWl4xxSsxQ4qzLxZ3Kyq+nBsSjIv?= =?us-ascii?Q?Tx8HgSqODBSj36IH/FDs0FF+mX9YNkUUORQV7++8N/quO73hTiwcWckfu6kg?= =?us-ascii?Q?Yi2IkT7BFE4W1MN9rHq+2A3YY9m1T3B/EvUWDlzuUm+1dsPgfDkF5WyUHX0I?= =?us-ascii?Q?Bpf3YCPSKz2T0PiBrfqU4JEAr15S25y6zi7AeXtlJSwdaCa0MP53?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e5c3146d-c7fc-4aec-5e5c-08de5cadb4f6 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:37:06.8891 (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: oQ+6+pInJJp8vHCLmueNVlBODhCNzvmB+syb3yCT/PuXuBpwwnznXU/uPsjubh9s3x9AkPrDS6inv2N6VFZlzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6300 Content-Type: text/plain; charset="utf-8" Remote DMA users may need to map or otherwise correlate DMA resources on a per-hardware-channel basis (e.g. DWC EP eDMA linked-list windows). However, struct dma_chan does not expose a provider-defined hardware channel identifier. Add an optional dma_slave_caps.hw_id field to allow DMA engine drivers to report a provider-specific hardware channel identifier to clients. Initialize the field to -1 in dma_get_slave_caps() so drivers that do not populate it continue to behave as before. Signed-off-by: Koichiro Den --- drivers/dma/dmaengine.c | 1 + include/linux/dmaengine.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index ca13cd39330b..b544eb99359d 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -603,6 +603,7 @@ int dma_get_slave_caps(struct dma_chan *chan, struct dm= a_slave_caps *caps) caps->cmd_pause =3D !!device->device_pause; caps->cmd_resume =3D !!device->device_resume; caps->cmd_terminate =3D !!device->device_terminate_all; + caps->hw_id =3D -1; =20 /* * DMA engine device might be configured with non-uniformly diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 99efe2b9b4ea..71bc2674567f 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -507,6 +507,7 @@ enum dma_residue_granularity { * @residue_granularity: granularity of the reported transfer residue * @descriptor_reuse: if a descriptor can be reused by client and * resubmitted multiple times + * @hw_id: provider-specific hardware channel identifier (-1 if unknown) */ struct dma_slave_caps { u32 src_addr_widths; @@ -520,6 +521,7 @@ struct dma_slave_caps { bool cmd_terminate; enum dma_residue_granularity residue_granularity; bool descriptor_reuse; + int hw_id; }; =20 static inline const char *dma_chan_name(struct dma_chan *chan) --=20 2.51.0 From nobody Sun Feb 8 16:33:54 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021142.outbound.protection.outlook.com [52.101.125.142]) (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 8F2D62D12EE; Mon, 26 Jan 2026 07:37:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.142 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413047; cv=fail; b=KeosJA2uJCafjQbnhXVYfPy0daT4jx6NV7AXlENEcBJ7+j+oVNGP77uUV3VrrM08bxvoEgyDrVXOMQAV2Mh31akzY5+3spvERcDGMaGpRvv5SkeQdK+RaVHYIE5YFBWnLn1SVOivc+ylANcmbu2E/ptOJnt7v+DdFrTiKbPitAY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413047; c=relaxed/simple; bh=9wUJh1mb7/M0WIiD5OOV+aBnJNY1Gw1tp4wVloV8TpU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Ks9ubn745k23lIjBf97W5UIFkYx5Cyb51376xSK/F1P9ueY/Ud7c5HGkCeeBciDIXMKqHlyUgk7k7S1D9hY4vhxkyG1Xo6b3oIAVb95tn9aiSoxbrahfYIErtMDaNZ8pwLXRDLfAp6MSotxfTqhrgamny1Cbt7Bdi7h4s3nPmsI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=mydkdGWi; arc=fail smtp.client-ip=52.101.125.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="mydkdGWi" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uBF8HI+eVYzXgi+D5B8yvP/kI9XHvf0SNfLdJRsgwP5FEAOfDGDr6Zrt/WtKb7deMp7dOSL0688/dklcgdT2dpVZmoDxcSjLAv7n6idWQM8X8YLIVuuVzHZbva4Q/WgVyeQqEEj7dGnIV6cYd6ux5qJIDEzxowwyvuosbkOjbBa50aEfKQvAgUf1vkFH0Ao2PTMZZblgQUlRilugD3ga+Gh+rshC3S0Nm1wNKN93F2aK9JShVeuVHj25aZrujVVmhrQb9E943891qZCpnoZry3YQD7U/Djbe2+yBZTF0oSEbreRQOK7QWvPVbqbTnNzqMnzOOUYeEvCY0Hp7Qu8RHQ== 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=ZOAOtt7rw9JvlbQtyb41TBx8M+OcA1z+AHRwwOkU5tE=; b=lWzrqgqOGzRgI/cFn45LSMwNXeWxzuz38BdFWU/Fy82zxhkwJgiutcSzkYXoxWek06BJJFNWNeEJb6TDIyh6tHnVoNOrfl9972dD6l4V3m2cs9rt1QyU0pwxncMWU7FuIlM1YScHwIYVW8LWdmsCip2PM1Ie8rgo21s4+iH/hTFrFxjZMUeYbcv9Gxu9rGApSnOerXpU2n+i22ONidSoyq+z+vkd1XAskyoAUmWCp92xxZV2nx5OWiX4+gjfxrc1ABBTIzOipcrUkTmtkAReH2hW/17yWt+IJK6s/0FrqqGsGPvkVTIX2sL70Fm3IL4eOD18zaprBQtCAFzGSDE0fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZOAOtt7rw9JvlbQtyb41TBx8M+OcA1z+AHRwwOkU5tE=; b=mydkdGWiXA1s9Eu36r4BHfsmoziwBqd11ZbEeDZ0/YqYOKhU7XXGeD57xlLJxeEzxLtLQkTOTmr7wlbb6CxHBrmVbw72I7GFW7Z8SGr3TY2jeZlSPCGhRys7J6xaj1QH/WOjo/3dQo3hs7fCGllwVJuOV1Yd2pi6rE7Fg3joo4M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6300.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:420::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.14; Mon, 26 Jan 2026 07:37:07 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9542.010; Mon, 26 Jan 2026 07:37:07 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/5] dmaengine: dw-edma: Report channel hw_id in dma_slave_caps Date: Mon, 26 Jan 2026 16:36:49 +0900 Message-ID: <20260126073652.3293564-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260126073652.3293564-1-den@valinux.co.jp> References: <20260126073652.3293564-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0008.jpnprd01.prod.outlook.com (2603:1096:405:26e::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6300:EE_ X-MS-Office365-Filtering-Correlation-Id: b27c4b78-b409-4b17-3c6a-08de5cadb56b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?On8n5PHHVherhgr2jNVUYb3rTmDw3LSzRLWT+jxa7Emy7dsXuGF/k532B1xi?= =?us-ascii?Q?o/faHb9V4dG4lU+YPDDDP4MboDJCRi7f/RG9ikOztE9jXlNf12KcD3VHMgOR?= =?us-ascii?Q?rVEhsiOisT7OdBWzRmTtZN2HH4XT0B8PpOtKagx2FvJt2003AVBeAAP1a2Yf?= =?us-ascii?Q?3OsiwiIWlkYwZFtShVLTYlTXKnr+ZQ/SiriS0Tddpowx4mbNZHeDPetVyUuC?= =?us-ascii?Q?SAr64VqT06KmiUhBZwYcuP+YkInanmjnqrj87/ts3RQM9cOSYq4tDrYoAtvV?= =?us-ascii?Q?0WIMzIQ6SCSxBGYD4qxevGzJ6wd4GvjJ1qHncT+a/cBUeuy2HxFH+JaUWBPd?= =?us-ascii?Q?rYGn1UPFTTwyyCuQkfJj2F30DJMCJpyU9FlQusUdwSFomibaOR4LRQ57My1l?= =?us-ascii?Q?wJmmFv0ESriPbU3jTarC6lUEmS1f6HRvVDRTDZvz1rDcAuPT6uvaRol73Dgi?= =?us-ascii?Q?f0Y5ADZuUiKTU1G1q4nnOMcWiFgwUDwSX5am8ZQPP7XqAexp6ltgBhlyXjlu?= =?us-ascii?Q?M5jtb3S2dwPIUdbTxUmwWUZ0/jdSIQOA/QRTrkLFcIZ/HfvE2Ha8HO+IPtgz?= =?us-ascii?Q?C9b0lqg4RVfQ+eui5FeQaq1msz4Mfw3KUTeOaMGNGeZWATCovgNFKpljmzn8?= =?us-ascii?Q?pwck9WRULYE1Eg7UFqUK/H8diL1dh2jDJVuZS09aFu0EaEVkZlXVPAPYwaee?= =?us-ascii?Q?UgOFBCTydQJ9xpxXvtWR9Y3o3XSdUtYsvuLm5yLDF8cxDm036yGxC0wFXlNb?= =?us-ascii?Q?SV6vpP41AmSbNxhnuTPj/5ImgsIVPE0t309Y7m4fclgYwoOxrB9xHGvD/V47?= =?us-ascii?Q?AEpwafj0GpFhgfCeFZIk+OTtbhgym19tEl0LcA86O3mwfcV7PsdFyKPPcpk+?= =?us-ascii?Q?ENQzozBIZGgeQuzTbb72IUiEvU4DOkYJriYBU+pNqW1ucfNaVUr8/AbVyKje?= =?us-ascii?Q?Nj6K2HeV4GB7ERc/7Duo21LcYTYnqg3cD/otuMXxPQ8y8qBjGa8tBEk43+ZN?= =?us-ascii?Q?/mGxZPzlvgvp/hl0fQumCx58xeOMhLDdcoJspfA6LjG+u+9S5SZREI5az3VD?= =?us-ascii?Q?UKYe06i9dKbpTWMSgs8NoVah5D1fWOXApv+77SPd2cfKkrQSuQQ+NDIFCn5l?= =?us-ascii?Q?N9hj+WfcQAYaTbxrrRBQUDWPaZsHs33N55NiEUvy2Q0h8ZZyDJLgtR2wYJYx?= =?us-ascii?Q?8ejcC4FQtOcZDMZI2XiTcNkYkCtaHf42d/kt7RKBVBfYVReWEWyg30IcYD69?= =?us-ascii?Q?DNjAP4lLvU47gXScn0YKNu0UPgXTwtRlEFVXAPfKoMsufhzgyIG0+Pu2qfaQ?= =?us-ascii?Q?ToR8r+DoL0glqUWRjEDR7Kl5BVBpGmoyuUDSui/odpvcSC38V+krjPdYnnX/?= =?us-ascii?Q?FRFHt/kcsFqc030hQLki+YjcyOy60Uxdai42sIE6VbDKr3c6Ph0/8W6pDm7b?= =?us-ascii?Q?YPHF38e9/lzFV1NSSr1HMFbJWbWo0+ylz0z3g4wSnEZyVfRA1A8u6YvqxtTs?= =?us-ascii?Q?WgUcZW37FUm3wQfT6GwCvLN+/YYW9WsbhwFJu3qphpvwELMOlNXhgPCcL9K7?= =?us-ascii?Q?5OLBS/Cw6WbqkjF4Peo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?DRvoU4Cu4FInTyXCNzaFEyUIffMbFT7BI8zHCaZWIZo7Tv6XCoDEWfcfvbjC?= =?us-ascii?Q?vGOw62gzxwOYs/JkYpXCeFpttdkMGYgHs6Bae2thz8w9gWYVpGj14yk8g/cI?= =?us-ascii?Q?xqOJfuTJMGyoOYUIGN2al3u88lFfWWyZGQyQkmd3YmpbCajKJqAMToE+OEDV?= =?us-ascii?Q?4EYQXcc8JozxMVAEW4wb4EyIZyG0PmWNprCzdjQF8+1g+k4mvIB8TuYeZKeL?= =?us-ascii?Q?e3g8tImGnjcu+DuJkuB8PyIB15upRbxuyoKeGCkRl5nqorp7fHDnprIonNHx?= =?us-ascii?Q?+HzhPVBWz2D6OcEWkJyo3eQs5pdgWCTW9o0tAPnylRg5C5lhWNKDYS5uxyaN?= =?us-ascii?Q?98UjyWbgt23suZJZqtkxHnUhusd5yOZ/P9pCZZGQpPU175cDQkDfHDeER8ac?= =?us-ascii?Q?KXUvHaYwwKBFya0zGQuLHhN6WbKFESBgY3yy41ZgFtdG77PY6VTPVsDOvd+l?= =?us-ascii?Q?B/Jt7JH7m9GHNctKG4ZMmDCx/8oqACtfM0/Jgj/sRxVAW71AD2aHLTl11HEf?= =?us-ascii?Q?TfStfjV+ls0QkhPAuxL7mPiay8XfCluYqhjlc6KIHKPRkNCKF3J44oKsg5vw?= =?us-ascii?Q?taBDohqS5gINs356eXsFG8sfjdv1FlorEFespg3/efMpG7fHvItPHInrITKO?= =?us-ascii?Q?LwMdyv9zR4DPX7xj7NivqeJUoPcepC/Ai7AMVUYrT2BxWfP0Krt/L8x1p1Pw?= =?us-ascii?Q?it8AuKAheCx90IJoBwkrqi8o558Z+1KRhHArmAKAAknm54CVvDEAvb5h6eik?= =?us-ascii?Q?oPYmGpRr5biP0RVcLoODMq+S6TILlBUdxFokdlI10qLWwFX5lti8arM7fibU?= =?us-ascii?Q?s0U/EMP3gtsGHjWU8juY/u/2xuEYmrPFZkNcTxvfih71h9HpTX0f4t/A0tqf?= =?us-ascii?Q?PjUfDPNYbxTzcs5YwdC0PhJqL1hYCHtyXEpQy+sMy2vIHwwYMTNdOlqyke0F?= =?us-ascii?Q?S6KaUO/A5smOAUC8gzy7S53HMJ9zWopRhaWMtqq9MSG2G7G3nl+5ZjDpw/i/?= =?us-ascii?Q?lPHQJmxTkMMKVG51NeoIAxGuqOiNldLhVhICtlOoASbLaL6DB3SELiEU44OT?= =?us-ascii?Q?dAXDMWnXDcxKrFyYzU9JsP55mOlLYQsCFxbtvU43RAU7tAcXeeYrE97WgGUw?= =?us-ascii?Q?cWN1Dif+bE1/500YQHzN1aYS9jmJERTDrauJWYXMNDZnZz2TVEiews4M66K2?= =?us-ascii?Q?gpKvdxOIQS9out8zKkVa+d4P1JNHf7g5TsH0auyoko1JJ7nE+gC92NYrkz4e?= =?us-ascii?Q?JqF76Ejd6FmZjEMTM5ppoi5/qEuLjnY8ebRycU9OcPQfZEGiHp8UKI1AZ4pc?= =?us-ascii?Q?Mq9nXCVo2NL2TxmgBmMTTPjP6V/nfvxkiWf/og8JdrgaLieCijETOcxBCFFU?= =?us-ascii?Q?tuAVEDjghX8YfrlIBL+cru2GpsBwqwGP3mVBhTO0IuJMO8IiQOLoQwmaDRaH?= =?us-ascii?Q?ps5i6vXFunYP2VU5BuPiVBgkk766zvlMgDJ2zbzC6f8r87nUW0eHuecmWkv0?= =?us-ascii?Q?AtItY5Urod55QSii60GdleQqorsT14g5R2onLGe/76dgGQF2Ou5/fFtaHWoU?= =?us-ascii?Q?0ylyURRLq4fNS8GE45SJo8PWa66fo1r8yfxMnS1GhO4sjJQ6ScimaE+69Knh?= =?us-ascii?Q?4jK7SyPTtnWwdF7Cu1PAqnXEXCFa+OBysZTzso0ihtmgoj/4yjMd9w4LPDa5?= =?us-ascii?Q?5gxJaPrBL2eEaeSyya+AKCyqO/3ahaCHNUc1S2bEdeOAi4wgsYdb3wK34SA8?= =?us-ascii?Q?y6iRHPrI4NMBz20Xr3pBQyJ9snOboRoelodoSXP0FZgoPkoGuJ4A?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: b27c4b78-b409-4b17-3c6a-08de5cadb56b X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:37:07.6461 (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: CmHJfSytI+Gf0AdTZOxJ8A1uNhwExTRCWqH2PGhfvkJVsEpjuEpyw2Wfye4W1WIp08HOgKSi9JO1znBGvDd7Rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6300 Content-Type: text/plain; charset="utf-8" Expose the DesignWare eDMA per-channel identifier (chan->id) via dma_get_slave_caps(). Note that the id space is separated for read and write channels. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 8e5f7defa6b6..38832d9447fd 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -217,6 +217,7 @@ static void dw_edma_device_caps(struct dma_chan *dchan, else caps->directions =3D BIT(DMA_MEM_TO_DEV); } + caps->hw_id =3D chan->id; } =20 static int dw_edma_device_config(struct dma_chan *dchan, --=20 2.51.0 From nobody Sun Feb 8 16:33:54 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021104.outbound.protection.outlook.com [52.101.125.104]) (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 6991A2D7DDF; Mon, 26 Jan 2026 07:37:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413055; cv=fail; b=fQNiS5S5Ifh6s5CDobNi0VPWk0f0VgqsJFsDRZ7Xj4FSjDTG3uK8LOb6rubI8J8tij1pxdh9NFtZSoD7Ojek1DBEqj7VJFwNlHZqL5GZtqkERWoWaHDBkc0tNIqDwP/fFFHl7wVCEu01Ksh8hnmt+TnOdaV2TUW0Xfdeto6IN/E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413055; c=relaxed/simple; bh=m1Jcx8awyfkDYqz0CTlh4YZK6SriFrIz0wUPq/P/DIQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=MkFwvyJZZtDY8WZ8V7SSBQthJyuqureIIda29M4nyZE8rzf8mNhNuMJRnL8f/H3zuL8TAqoD84APm8MYYjziLDY8bSf7tx8escE67jV9p3aTM3Ol1t9YcdLdmYg+7iv9ZHt74f8nkPcM9VaRf8OWOyeo3XkJb2pqwQeNOUkJwHU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=jVVEgJnD; arc=fail smtp.client-ip=52.101.125.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="jVVEgJnD" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ffnhiKcz3UfKe1xUUglH8ZjkLtqjMNPj6jRvMXDD0Qp5D9F/Z78F9R186FOClH8us26P1w62R/X1sSSSGPkPvXrZMSCf60arDYmFxCeVKXtCcjll9ET0zRytP2KoNruHEzkOJ5qv7hxbfqmKZfcCZJZN7j7w1j8DlVhdW+kH7lMAIG+fKDvME1jYpf/a2RF+0yCphBiazq4XDSPosKbyZOBvv9nVRPviT00+WbBYWf/wcwrFoB+yDTwKqzMUA14Qrf4m1PKPI3jE5GSGdZAObAsy0cpdnmYobtukzGYRW3lmD8cjIwjJ5N4FqEr4kcaZODAjHUlJQADkNPHox4E7Eg== 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=jDLcLPyudPD17KHixbVdyVF/UTzyzVz4l/tpO/8K1Cs=; b=IflgrDBxFVE7UIt5xD42erqUzX6r/OflxUJYIYA+8lztWFhFUS6G0P06aLchjCx9QgMehEi/4VEldvtjMYzgTCjHsxXtroB2A2inYJkS8MFBJR4IorvaTh9Ipr3YX+CjNEISKWceVZ+SJa3fUVW0Qj3d3fwr4ddGAQ63MboMA95A4kHtWlTOOWSDRERt5ToiqcLsF/HFKJAXBSWzB/4ZM2vo0bMyehvGskoiq3KYpN1FWbZVpmP1iEMzx/r7UEf5BwGtheyOUKlbNwCICHw2Wn1l10FCM4Qj2gZ3nwjwRKIHXidy34jn56wUPLwQdLVrb7dp4Og0JZ3J018VmGRTxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jDLcLPyudPD17KHixbVdyVF/UTzyzVz4l/tpO/8K1Cs=; b=jVVEgJnDtJA1JXKG6MDkKcDQpWq2Xa1kZYsA4lE+iYlj2vvKnnXTBKk6iyoYqJGg3ZIlHWkhynaJNQEaznT5cslNEwTgJn531+ZkEaKet04j/hjkIC21bvWULMBF8JgJ2LU7hoocECmjTDnCGQi9D7S4LQR4l4JwkDuz/9KNgw0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6300.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:420::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.14; Mon, 26 Jan 2026 07:37:08 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9542.010; Mon, 26 Jan 2026 07:37:08 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/5] dmaengine: dw-edma: Add per-channel interrupt routing control Date: Mon, 26 Jan 2026 16:36:50 +0900 Message-ID: <20260126073652.3293564-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260126073652.3293564-1-den@valinux.co.jp> References: <20260126073652.3293564-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0010.jpnprd01.prod.outlook.com (2603:1096:405:26e::18) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6300:EE_ X-MS-Office365-Filtering-Correlation-Id: d0be81b4-830f-4ad6-c029-08de5cadb5da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?V+QHfHa3aDGZEuGViMeL2bVgVY/8kOvlPpk2lYz5o81heWHABbD7iLE+dq5B?= =?us-ascii?Q?pg/QfKzAKJHBJ3d+Dzx5eByu+Rpr/II5MDiGDDal0mJ00cCMG+tQXZzSki02?= =?us-ascii?Q?n1zccTTCqekEBjio1Tt6g2Uq+iv8vONvDntmr0Rq9AUb47Zu71IeYTsOKPSA?= =?us-ascii?Q?df9kzj0MswEIyG/ozIvx9J6QLXjyzgosfDDp4pzQzTky+UOzsIxsrJMp+mJM?= =?us-ascii?Q?926Lm+zPylXU5KZBFsVlvN+qJH6YYXO+iG5SaAHguj+TguOZv+a7u8BfPTYe?= =?us-ascii?Q?cqNxoYL1luGdDeajoMya22wmuRqBaT5E7d9bao0vZE8wbhw5LLgqvDzGxHRv?= =?us-ascii?Q?txpfxK0Y1ts5rIRt+KCVOGQfzs6+e0t69PQm0U+wvQx/kabY3rQVcMBlYqo1?= =?us-ascii?Q?eIrSeq5+hxdPw3JdHqWW3WmgEpBJBzTjBRUgnLP3L8aafE/bz0QWGSlZvEVW?= =?us-ascii?Q?xmyQZD85c3Gx4ntOZyxMtkoSvRwoe0pRcOslVaLnvbtkmMJX6v+pGrKIyvX5?= =?us-ascii?Q?Uxcr+aeJTAfsugz3cc2Qg+6d5bs1D5wn+5F1cQShQuKKcGJyu3sTL5hRcoRR?= =?us-ascii?Q?TX22uAWDRszaKjyEDPIKMQWH0XYDNUdPlajvkWITztEvLbdisEeIIKB5azQz?= =?us-ascii?Q?XRbQeol/ShGiHIIO1kWwttUFiUtLEc8+Mh8MdlYo9bFSWTYXLAPGilfxpecC?= =?us-ascii?Q?yiR73OYqb7kLVkY8n2zo6W77B6SuxuI2FOYqeJALAFEv1Oa32wCi+m1AhLus?= =?us-ascii?Q?GDce8nThfjczbR2yCsQ7mg/URlEPfEfUCOdYnIie9Ufer2gwen7Z7UuHB5Nc?= =?us-ascii?Q?BTFXzgWXY3etyRwDPGXEsiOvZ+thmWzCrftvUyEkim7LSyTeQCyn/mWi/GNp?= =?us-ascii?Q?W2S8a/cyuXi3zHj4iTheV1/iSP0/m4Fb4dKay3NpmVEjJHysOAobVLY0q5C2?= =?us-ascii?Q?H0/NhS5egukJz1s4/9hl4VTLgReV7rmL3aVljr9Be7OXaZz6kFR5ugtGR+US?= =?us-ascii?Q?t2A459npHA5BN2mben1Y1W0kQdhAZDfFXXqQNaUNkQeYDVTnuFRMbrZcgq+H?= =?us-ascii?Q?HjuIkxg7ZmeTaD1nVttMGN6imucPGO1Y3AhMEVQkGD7OI6B+CJBA2aBSghGd?= =?us-ascii?Q?tvIk194xlphFnm1+7PrOz+cOzmPyFq7XprqFETRr+9JZgctkY13WhbDTPhb7?= =?us-ascii?Q?hu02sF9Sz3yMFMrSYxNuJiq5B1ZSUUdN2d34Gt/7Yj7bJWuBz6u0MDCLlDTy?= =?us-ascii?Q?uu43eKMTzedf4jHnBXop/yk31qvxaLt9wlzEV3i2NqVyz/lqOuwvDm0w/reg?= =?us-ascii?Q?a5yLpyNeV4FGTI47SjFPtKJ8Nwujcx65Fs79JRXoPQZUgKi9jRAg+DBZyGb4?= =?us-ascii?Q?m4w4DjqwFj+YrfB4MnUdVOrZSfJ7yIXgCOL5mAcJdPeDPFTTPMNQ652jLJ6p?= =?us-ascii?Q?1XwJ0ZjvanlnqLJ4z7A95fzs61RZk0C4AhFmZHUqvt4WMt/89MHSwcy7C4js?= =?us-ascii?Q?xyyYztxL/8aanMvbV8UnX7lTxlHBO91JGAiJ1MRAoSG7B31AsglofFVGJggA?= =?us-ascii?Q?Vqk9RDRruLB4tcbfykY=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jiKNzhPLTGwSQ6Lr37VlJzuIkaE1pAlosdsiwOQC8zrd+lgCtcDCoKPmVPaX?= =?us-ascii?Q?BsrnqhhBxpNEuzzT8Jo0lQ4LP64+zapJnSsfn6V5HewBagQHXWjM5NFaXn3u?= =?us-ascii?Q?55lPVFvseAd4/8UwsIQAoHdjksWYHOyO+2bPl9qxbSQEIJi31ysZzV0+7diH?= =?us-ascii?Q?AbRuci3GR22vct/N/1fsAFTL/Lo2M0Oc44siLY5cHs2WijhvNS4v3a9aZxTx?= =?us-ascii?Q?SSwQ8/P2j4zdTuGDrOs2n2BM5/hB1sCUI4xXVgzW4SAlGG/4zsgNm3OUTgOn?= =?us-ascii?Q?qLoXPF0SljPg+LAGAngVzQXEKF2qhpEuW3f4hM3oh8m6Y2Ye8KaPH0HrQGjo?= =?us-ascii?Q?Z6btcuW+ZBjYhbIICOCcLbRl3GNj2iiCSep4vVAwH9XjBrF/XZkgHy4wewf4?= =?us-ascii?Q?zAerM+mwWmrPno2svaO/7Vl4W30ItK3dwTwK9hLeRWDTmyLmV3YorPuzqTPi?= =?us-ascii?Q?QY3VhxVMkr375m2WIQnNkcJqhg1IVg/T+xhJhX6PicPdWse8xqBS3FKxbBRx?= =?us-ascii?Q?IEK4EAkFwvUKKtG5veq6O/RlkItuC6Sfl4t+F/V+nhF6kA1Yk0/PNRS4nDcD?= =?us-ascii?Q?+zn+i+DcBAXg1N1UKMNizYgeGN+p1yWGUh8xQcRHsuXjO4v8JUcjSk5M/8/T?= =?us-ascii?Q?kYdWi7xiDrQC5IoknkhpKipuF1wApXy+mZlz/MkaYKCdjizpSuuHRiS2VQhy?= =?us-ascii?Q?MR5ZgEP5pUEkTPyA6ycs5ui97Er8vBd1MF/l8dMITnO8ACx7/7Ax737gY1hM?= =?us-ascii?Q?a8Hx0xlgvJjgiAooUfHwkXdOowtbTagXyB0PPpUL6Zsg+XEkUZPdXoF515yw?= =?us-ascii?Q?4bOv6JiXHCLSZJ8ORmxnmsal40LQPamyRof8/qRID86yV4IZltYkXSWIcAS/?= =?us-ascii?Q?gPERLw+a0E1UdbqoJHWPo4yVPQmHnsVj1rnPlJFG7l54ZZGBE/X6evPIZ8Eb?= =?us-ascii?Q?df4pJy+UDv0WPaf18Q8t3k9j3/gb8Hw7Wn9XHclKg7R7o45Rd3M77I2b8fj4?= =?us-ascii?Q?8JDqjz2ja7bvS6fISNdaFPPDRWeSbDqCQa2+p2GnjQ1hkPj8NXL04Y75GrVv?= =?us-ascii?Q?3V7AQjSF22LxP+UJOCwnyxROH6VCayaYydu4+SQcFzNPYD0n+TH8T2/WhqI7?= =?us-ascii?Q?xlIZlikr4jCVkL1LG92R21Xx/bgR2IadsOdWgzFeiu1toFexPIhQE7cAotd2?= =?us-ascii?Q?MsBMuWGk8kUIj2jM+nXpIDN8NxrpyEuuZueM4ArG99CzA2SGLPiB9JPkIBUp?= =?us-ascii?Q?hW91or4sU76U/65aitnhTjQRHMpJEj+PNCrnfPmhJtVu6pS3PldQyWF3s+UM?= =?us-ascii?Q?AGUiXh/QFPHMycd9OhlWGrpUbJAFiZMDK6K3ZqjXNOE0RK9aNKJ9xVzBdw/0?= =?us-ascii?Q?e+BM8vVjl+0ZrXEoveSrL2jrWU25/8ZFD6t1NY798wTcDDPug6EnBfbptXCU?= =?us-ascii?Q?B7hu8F4Z3XgqKiwIoFynA4JH1MwN2bNLWwfxBntF4olLyN4hezlsW6vtGNAu?= =?us-ascii?Q?RMRVjA6xc4cIm6hUBdJZTbNIGhL+qL9DLVCQp5O2Z7CkfEUUcoAI+dmA78Ks?= =?us-ascii?Q?r7d+fQNcf228hdtNcrwRpFrdHrO+oFI+Tc5PJol0kfrPAprLR7eXKWsol8Mh?= =?us-ascii?Q?Ob3sCLyaJ4FMtkarqS2GzIloNzcG4dYKuKic6PYhHQEawNbYOVFrX5FwzZEj?= =?us-ascii?Q?wlHPLsLNERnYDQGzY4sPKNw4jZP4sVyZION9Y4tqbiufm9sQSjVYWjW5AYw1?= =?us-ascii?Q?PLmWxJzt50ug5/J+NLYOoJEUIJAorm3g3XwewQ7GbZAHNm+AwCks?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d0be81b4-830f-4ad6-c029-08de5cadb5da X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:37:08.3948 (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: CFhmKHLWQIF0x2Tnq21ZSCgj+VecHyfPX8Grvd7PTnlJBkFRkBi50rQnCYdUEkB0b94PAFabn7474ojjOuNJ/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6300 Content-Type: text/plain; charset="utf-8" DesignWare EP eDMA can generate interrupts both locally and remotely (LIE/RIE). Remote eDMA users need to decide, per channel, whether completions should be handled locally, remotely, or both. Unless carefully configured, the endpoint and host would race to ack the interrupt. Introduce a dw_edma_peripheral_config that holds per-channel interrupt routing mode. Update v0 programming so that RIE and local done/abort interrupt masking follow the selected mode. The default mode keeps the original behavior, so unless the new peripheral_config is explicitly used and set, no functional changes. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 21 ++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-core.h | 13 +++++++++++++ drivers/dma/dw-edma/dw-edma-v0-core.c | 26 +++++++++++++++++-------- include/linux/dma/edma.h | 28 +++++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 8 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 38832d9447fd..e006f1fa2ee5 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -224,6 +224,26 @@ static int dw_edma_device_config(struct dma_chan *dcha= n, struct dma_slave_config *config) { struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); + const struct dw_edma_peripheral_config *pcfg; + + /* peripheral_config is optional, default keeps legacy behaviour. */ + chan->irq_mode =3D DW_EDMA_CH_IRQ_DEFAULT; + + if (config->peripheral_config) { + if (config->peripheral_size < sizeof(*pcfg)) + return -EINVAL; + + pcfg =3D config->peripheral_config; + switch (pcfg->irq_mode) { + case DW_EDMA_CH_IRQ_DEFAULT: + case DW_EDMA_CH_IRQ_LOCAL: + case DW_EDMA_CH_IRQ_REMOTE: + chan->irq_mode =3D pcfg->irq_mode; + break; + default: + return -EINVAL; + } + } =20 memcpy(&chan->config, config, sizeof(*config)); chan->configured =3D true; @@ -750,6 +770,7 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) chan->configured =3D false; chan->request =3D EDMA_REQ_NONE; chan->status =3D EDMA_ST_IDLE; + chan->irq_mode =3D DW_EDMA_CH_IRQ_DEFAULT; =20 if (chan->dir =3D=3D EDMA_DIR_WRITE) chan->ll_max =3D (chip->ll_region_wr[chan->id].sz / EDMA_LL_SZ); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 71894b9e0b15..0608b9044a08 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -81,6 +81,8 @@ struct dw_edma_chan { =20 struct msi_msg msi; =20 + enum dw_edma_ch_irq_mode irq_mode; + enum dw_edma_request request; enum dw_edma_status status; u8 configured; @@ -206,4 +208,15 @@ void dw_edma_core_debugfs_on(struct dw_edma *dw) dw->core->debugfs_on(dw); } =20 +static inline +bool dw_edma_core_ch_ignore_irq(struct dw_edma_chan *chan) +{ + struct dw_edma *dw =3D chan->dw; + + if (dw->chip->flags & DW_EDMA_CHIP_LOCAL) + return chan->irq_mode =3D=3D DW_EDMA_CH_IRQ_REMOTE; + else + return chan->irq_mode =3D=3D DW_EDMA_CH_IRQ_LOCAL; +} + #endif /* _DW_EDMA_CORE_H */ diff --git a/drivers/dma/dw-edma/dw-edma-v0-core.c b/drivers/dma/dw-edma/dw= -edma-v0-core.c index b75fdaffad9a..a0441e8aa3b3 100644 --- a/drivers/dma/dw-edma/dw-edma-v0-core.c +++ b/drivers/dma/dw-edma/dw-edma-v0-core.c @@ -256,8 +256,10 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq,= enum dw_edma_dir dir, for_each_set_bit(pos, &val, total) { chan =3D &dw->chan[pos + off]; =20 - dw_edma_v0_core_clear_done_int(chan); - done(chan); + if (!dw_edma_core_ch_ignore_irq(chan)) { + dw_edma_v0_core_clear_done_int(chan); + done(chan); + } =20 ret =3D IRQ_HANDLED; } @@ -267,8 +269,10 @@ dw_edma_v0_core_handle_int(struct dw_edma_irq *dw_irq,= enum dw_edma_dir dir, for_each_set_bit(pos, &val, total) { chan =3D &dw->chan[pos + off]; =20 - dw_edma_v0_core_clear_abort_int(chan); - abort(chan); + if (!dw_edma_core_ch_ignore_irq(chan)) { + dw_edma_v0_core_clear_abort_int(chan); + abort(chan); + } =20 ret =3D IRQ_HANDLED; } @@ -331,7 +335,8 @@ static void dw_edma_v0_core_write_chunk(struct dw_edma_= chunk *chunk) j--; if (!j) { control |=3D DW_EDMA_V0_LIE; - if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL)) + if (!(chan->dw->chip->flags & DW_EDMA_CHIP_LOCAL) && + chan->irq_mode !=3D DW_EDMA_CH_IRQ_LOCAL) control |=3D DW_EDMA_V0_RIE; } =20 @@ -407,10 +412,15 @@ static void dw_edma_v0_core_start(struct dw_edma_chun= k *chunk, bool first) break; } } - /* Interrupt unmask - done, abort */ + /* Interrupt mask/unmask - done, abort */ tmp =3D GET_RW_32(dw, chan->dir, int_mask); - tmp &=3D ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); - tmp &=3D ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); + if (chan->irq_mode =3D=3D DW_EDMA_CH_IRQ_REMOTE) { + tmp |=3D FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); + tmp |=3D FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); + } else { + tmp &=3D ~FIELD_PREP(EDMA_V0_DONE_INT_MASK, BIT(chan->id)); + tmp &=3D ~FIELD_PREP(EDMA_V0_ABORT_INT_MASK, BIT(chan->id)); + } SET_RW_32(dw, chan->dir, int_mask, tmp); /* Linked list error */ tmp =3D GET_RW_32(dw, chan->dir, linked_list_err_en); diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index 270b5458aecf..d2938a88c02d 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -60,6 +60,34 @@ enum dw_edma_chip_flags { DW_EDMA_CHIP_LOCAL =3D BIT(0), }; =20 +/* + * enum dw_edma_ch_irq_mode - per-channel interrupt routing control + * @DW_EDMA_CH_IRQ_DEFAULT: LIE=3D1/RIE=3D1, local interrupt unmasked + * @DW_EDMA_CH_IRQ_LOCAL: LIE=3D1/RIE=3D0 + * @DW_EDMA_CH_IRQ_REMOTE: LIE=3D1/RIE=3D1, local interrupt masked + * + * Some implementations require using LIE=3D1/RIE=3D1 with the local inter= rupt + * masked to generate a remote-only interrupt (rather than LIE=3D0/RIE=3D1= ). + * See the DesignWare endpoint databook 5.40, "Hint" below "Figure 8-22 + * Write Interrupt Generation". + */ +enum dw_edma_ch_irq_mode { + DW_EDMA_CH_IRQ_DEFAULT =3D 0, + DW_EDMA_CH_IRQ_LOCAL, + DW_EDMA_CH_IRQ_REMOTE, +}; + +/** + * struct dw_edma_peripheral_config - dw-edma specific slave configuration + * @irq_mode: per-channel interrupt routing control. + * + * Pass this structure via dma_slave_config.peripheral_config and + * dma_slave_config.peripheral_size. + */ +struct dw_edma_peripheral_config { + enum dw_edma_ch_irq_mode irq_mode; +}; + /** * struct dw_edma_chip - representation of DesignWare eDMA controller hard= ware * @dev: struct device of the eDMA controller --=20 2.51.0 From nobody Sun Feb 8 16:33:54 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021142.outbound.protection.outlook.com [52.101.125.142]) (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 0884E2D8799; Mon, 26 Jan 2026 07:37:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.142 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413058; cv=fail; b=Epf1D5jDVsOfK2+P4qL5gow28otOFLuNk56tr9HPhiWmb766UGIDmuJspmKsiPnSE56jA40ZiKRfsFy7TBWra5zNy8mf8elIAKAQtMyz4jNWf+3zdVNIr+1oMFCwM7f8ToCIAzI0ar/by3qYoaPJiRE6HBmogGr1YYksAnqrcE0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413058; c=relaxed/simple; bh=pnpQDCI0F9JfNwYrx/w38o7aP5dHa/6k9qd6J3bGHTM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=XoCul10ouiAqzKJNwANPOTGUz5Pi27TASAaZjG49XYY6zLKPrDdnOURQ66rEN/B/Hc3+kKBO4tHPzq/85GXzD4XqEV/1G4a4ZrZ7uc9+Go+vyI2m0QJ30wcQji8bXpoVTcvPzHDyZ7j+PRhp8W5E+zL21HnN3D4hBgEeiPpQdxw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=H4Bzx/Dh; arc=fail smtp.client-ip=52.101.125.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="H4Bzx/Dh" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TLQartc+14YUufN1SJal73//HOjNYxuEAYS4tFYTkCapRYnQO6qEmt5zzkLJFBZS5kj15/wlVrCIwZfWmbd5u0GXknKL16o4SzSPRJiidmJweesHYH4Shzu7mYt9uO04HLf6/vas4FWcMN1mY1IoLS6xmiCEoC1GPCKLOPb4vgjyH1l1XuNb8gpVwJzZhoE2ha8VuJqJXVLMfRHBtXoKi7OZMDN6orHZ/Xcg8vsyDUFMzkigMHFHePQN+CBtfGO+lhi5hpKhMuIkml1nruITlRnxaDNoiVnBUqgC+cs5guONDz7N0OOhCwINe/0At7PaOnw+B5Ohnir4vjo70dGjwg== 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=hmYCC5G3eZrcEMmY1Onjcyk7KDId4J49Y6xQAasw9TA=; b=N0z8eJofcSGNM1sjJjrZvoQ8w54Pzr2iLa4c2IeXRA02jvgxYzvtCaRVKxR4DGC/lAoPDne43qgW0e75S5loFaDWKfsXshtDf2Im3Ho1NQ8zcqNdiU2B4b3n8hFfYHScKdJt/bPD1lD8m0YE6aYQpmVfyLS3mZ2amUBszxDgymDL+F94Rpmkcly5PW6GKhGI7YZYsgrQL/gUZ146QFYGwj+E7q18EiBPfLWNCRwqO7z/afXqJAinZQSsgMJVzilnw2l2g/aeLhAZMsqojiPfO2qAS1II+LhoZhWoNlZCxtcc7+XtArPu3MRsdZcOr82J9O9RKuxhMhVnKFUdrhIzsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hmYCC5G3eZrcEMmY1Onjcyk7KDId4J49Y6xQAasw9TA=; b=H4Bzx/DhoRkf4N1+Iw3smIxNW7SngHHgxwt+MSwCCK5irw3ed5IqYcTOmwTOjDCMsDUKMYQsrdT91UiAnXyE7SB1ChAQ1nNiCDrMPnel90XRJua/6ydXpxPz63C3BummxVqHg9dj9uKb8amvwpB7/Sgj7Oh1jSH+2fYvH9cXGDY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6300.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:420::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.14; Mon, 26 Jan 2026 07:37:09 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9542.010; Mon, 26 Jan 2026 07:37:09 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4/5] dmaengine: dw-edma: Poll completion when local IRQ handling is disabled Date: Mon, 26 Jan 2026 16:36:51 +0900 Message-ID: <20260126073652.3293564-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260126073652.3293564-1-den@valinux.co.jp> References: <20260126073652.3293564-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0354.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:7c::17) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6300:EE_ X-MS-Office365-Filtering-Correlation-Id: fb967a29-7a30-4755-a7f8-08de5cadb64e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?NlhQ2ztrr19viiJ43r12l9IG2RY1J/DAOc5kxZU+hR8HCwSz0N9DeMToRC4m?= =?us-ascii?Q?goZy73+nJTGGMhFIls9AIjFlSryQDnzOH13LabCpYoGvNTe3hgi+/yy9WXdQ?= =?us-ascii?Q?+8N3lb7ph6t4GQnxhCunYqFY8CGdIr2TOIiDLJJ40JGtXDEPLfx653icMUMC?= =?us-ascii?Q?f7Vxvp/rFOM3qzyZHyXPLT/xGYqPMgKQF+3wCDjePgbpGXB2klZZJOES0rTJ?= =?us-ascii?Q?Vvk3JF3ck3dHaX1w4tzaZqbGvfjC+hwj41o0aMs210d5vPEZPtYxTBFj/iAU?= =?us-ascii?Q?75x0tIghhUWPCMIrMyTX1dtJLeemxZRsjJX9y13bIiYnZ/GiWD6fZ35GLqUJ?= =?us-ascii?Q?puTWnuqrBTlhC7V3Ywy7CPuUdl2S3BXWw5+sFQNngCSNWKIaKh14pQYTHDLd?= =?us-ascii?Q?gT/UR13lihTcQrEaX0hrPzDefEFtpkBgb8jMH7eH/TjOOJf8brW6oj0DTImb?= =?us-ascii?Q?Aipj67JaqwAMiJQ/6Iq9776zUWHK8aPaAKGv/ofvdnEgxe61i7jBblD7g8Tu?= =?us-ascii?Q?+FLh3xklvupPbYrJKabVy5krnTuJLs8n5tInhAv9oU0xYq8XKhSoE5DzOBaB?= =?us-ascii?Q?gx1nBWZIKDW0PpJdKrvJeB+toX422vLebxTJWd6BkDkCVocETM3C44KXCqFi?= =?us-ascii?Q?SHnO2g2JfO8xz5AMrta++5SczQpOf70wk0dSznGX8S/AY/z9VdZS1yDqtb3o?= =?us-ascii?Q?EJ0Ezr4wiA9JtezMk3fPgTMeNxc7vJQlnX1eeWI3lWrpY92WQM9pagV5Bg/r?= =?us-ascii?Q?iaVmXY91Nh2hfSm6WhaNPeF64WjXc78Vx6aeIrbrdKrADYLLzhqePPvS9wqb?= =?us-ascii?Q?IkJF/idMifo+adP8aIPGSXT9u0c8puIafFndZZTAqrNMe3hMIdwD+y7sxCwZ?= =?us-ascii?Q?+5YiV7CfqStmvlpYd9+PKCYejaifUFCH0QJHwoYnHtAerI+Muza8D+xM81tE?= =?us-ascii?Q?okeNFLvHo5r09bpub19oj19xtxEK6QuqcsJc1uZwa4jyHVCOTXNyuw01SH/V?= =?us-ascii?Q?RQA5JjJ2kyCIlbwhK2ejxmBRoD5DfhlqHWoaZqxvH4TZhnZ5ZO+lod3RZQji?= =?us-ascii?Q?gXznpmi6HbFHXAWjbyexKXvB7InG7y2JAAIqrAEeXpDm2vY8MDcX+HmnOqgX?= =?us-ascii?Q?OpIN6cEIcrw4n2FZO9Gp0DhOKNd5+HX/YJEnIu+kqdGdSTTIYe+ki/Zf4u8J?= =?us-ascii?Q?2xAS/491Yu7NGTdSMVWb3SlrI1BwuyVDEGAfF/+nQlrFrCOVHGAd/6bs5t7Q?= =?us-ascii?Q?hd4bfiDRX0f4nliXd1YVl/9DVuQVxLfkBkQ2eTM8n7s44/3JsI6V3IZoJOs5?= =?us-ascii?Q?GVGx5UhXTCfty1vK788iMfiXboQk2ja2oK6Mu1R4pYGkzQwPVAYR9IfbUX24?= =?us-ascii?Q?bxgSuoNpjUedZ8uJ0s/73b4RgrcUyJT8zrvH/QAtjE13N/G2jZFsa6ocvq3s?= =?us-ascii?Q?KnbscX/CWglH6Au7QJyLp/DeO23taIolvyl8wVNrGajbUizOyLBpygGTOtHz?= =?us-ascii?Q?suDVl/3B9p/NteHMM2aFhsSVdIbiiOH5CpnmlOP/7H1WCAPyesQYGTUnWdQn?= =?us-ascii?Q?9IlnlMRWKlJuGTiW/kc=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?obqIfrU8ChS+ZyjImAY6L2tw3I1tMq2n+dUSyqYgApGR+W/TtXD9h043S52i?= =?us-ascii?Q?9jTUU8rc8n2CBsiEZFDxL8F0i9fMKF5Nrfl19fSBkoddL5X9fJOsev8h0gq5?= =?us-ascii?Q?OIyx87vcvzSfgYbTuhou5N2OLXDybUryWAyCBGkc6rurqUvw1IgwLuYsEKya?= =?us-ascii?Q?r2B7aYAjWddSHS2KzyWgKdLPj2Ar6HXgUOAx/GtBONTsnWH5fPQlIvxLw0jI?= =?us-ascii?Q?1E0IAbQDKofESaCYmQ8I3Py3Q0RVdug3RpmbF3j5LbnbQ74GIK9gAvTg0+13?= =?us-ascii?Q?E2+vP0oVXnbBaGKx1iTC9xSMtfvDBuSpwqiIs/h0Da8fxrTkYBE6ZETd6rVF?= =?us-ascii?Q?N+PlVlZys/Nxisfcvf0QAjT3oioS65XM++lAo9niqGOrCBE+qBICCg1AomCX?= =?us-ascii?Q?64FalHB2V4CK5U9/ZOnXPWYyeV+pmi2bMe5gj92yIRVz8TTCvcJNBZOHks9t?= =?us-ascii?Q?Rz7XqlgoqBo5bAisb0TkJPSOOIXkqVSa+szc1pUnNGxUYaK0v7LfdKgdariH?= =?us-ascii?Q?yMJk6/CAjEL0HAaASAK91+EGXMysGw1USHPOy6XG4wjkr0soVa+TPVFgYu+f?= =?us-ascii?Q?P7A6OkyPpih1FZ8JF4P6cqL0BSXs2BOKrYgn6W3Necff1E8HdfwmTcyYZ7Jf?= =?us-ascii?Q?8SGEogJ5pOLDgHRRIOZg/AHjaVifQPWlRGdxhY5mSerMG1sXQGpNV9k9jYeI?= =?us-ascii?Q?rS4JdVsBKBMdRiaUJWYikGI2Qy8D54ivo3PXL8Y8rOmcd84+KWwTFi2sgpTY?= =?us-ascii?Q?+gJu8vBS5pB7Mjh3dMsci4KVfRk7UD+uebR/eTccXtuVcfIaDhVUqLiUtmFM?= =?us-ascii?Q?+nJSlMC3hEl5hC5DMrDnnPLIJAAHff9kkK/JgJYBjTDOiIhfcqQ8y1hyQrKW?= =?us-ascii?Q?W3A1/623oOxExmv5e+Ezk+om8le1y/wYGQz+/C+5QgqAxl47/wvktUwBuf/C?= =?us-ascii?Q?hG0xdCvpcVhOlPX52bAh/Ka6LuAGx+XHqwdk6SYMcLerokXm1VsszUn6NCER?= =?us-ascii?Q?sZQibxTuna0AUZW33hCN/829XZKE8xWztqSKA91Dgb4NzXpFrCVGsQEQjuFp?= =?us-ascii?Q?GQQN4mPBMdKvUunl5fSuSoufTapQRthgYvZgxNUdm+mdg+8fLrWiO81fj845?= =?us-ascii?Q?lVEFe+GKwsxryz7HfpdklZk30/RNsF8Q4/UJ6DBmCZsy/ch7ZSu1FHL678rM?= =?us-ascii?Q?uFRrqeWCDv1dgCCZFkWZJMhJB4Fck9n7j3xBaX8oXVEny9r+YVVQ9z+qqoT2?= =?us-ascii?Q?P7Gdo5nwuuK2eWdPGolPxyuf++IHxrO7NePrG/9C1qZjlC227f3SQgWxb1+p?= =?us-ascii?Q?iFB7LN3p+YV4Bnb02F45ebmXeb/OM/c3gEMotFNPtd/qac03K1KbOpONSLwX?= =?us-ascii?Q?O9J4a+kczZNqgbQkXBRJsl0rtZuQDROYN5liawMDDDgxdnLT1n1+eg5fYjbA?= =?us-ascii?Q?6+BgTe96bALpKz6RhC7ByHWCX5iPPNXBm7kT7sCef7LxLkCwRfEX2SGK75h4?= =?us-ascii?Q?cNTy3xevFI8MNTd3glkvURfRsQXbAKsZyegcVuqsDQrVi/gEnDY1j0gYD1UY?= =?us-ascii?Q?UyIw6P0X2c/OLq6awetKfnyeg9NvcpSjVB4Iun6h6O3l2rROV6XgOvhk0VP9?= =?us-ascii?Q?NK06A7EHGB47DqMUXdAGmEgY13dQeuo7jrFWT1ESffkgFrWLBZtLXyixU0yY?= =?us-ascii?Q?xh/0SKtcxXKG2ZnndI0pqL764t7QUhjQvxVLEvYTLFIjBbl1nlsXq0/LPkmx?= =?us-ascii?Q?m7/velTIQl87ihQap2cSrUvK+53UqXKLPQc5O9jR2ax1xfIJOUge?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: fb967a29-7a30-4755-a7f8-08de5cadb64e X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:37:09.1634 (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: MsIesKUzGDVKZyB8HZxrUP/WmTVWit8EfYM2+urTe/BgVdStof3R1ZjsE8cSIy7s2VYV7EE1s/k41FIF02yURw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6300 Content-Type: text/plain; charset="utf-8" Poll for completion on channels where local done/abort IRQ handling is disabled (e.g. remote ACK scenarios). This is useful when a transaction descriptor is prepared and submitted locally, while irq_mode is configured such that the interrupt acknowledgment is handled by the peer. Without polling, locally submitted transactions would never complete and would get stuck. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 104 ++++++++++++++++++++++++----- drivers/dma/dw-edma/dw-edma-core.h | 4 ++ 2 files changed, 91 insertions(+), 17 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index e006f1fa2ee5..910a4d516c3a 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -6,6 +6,7 @@ * Author: Gustavo Pimentel */ =20 +#include #include #include #include @@ -312,24 +313,9 @@ static int dw_edma_device_terminate_all(struct dma_cha= n *dchan) chan->request =3D EDMA_REQ_STOP; } =20 - return err; -} - -static void dw_edma_device_issue_pending(struct dma_chan *dchan) -{ - struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); - unsigned long flags; - - if (!chan->configured) - return; + cancel_delayed_work_sync(&chan->poll_work); =20 - spin_lock_irqsave(&chan->vc.lock, flags); - if (vchan_issue_pending(&chan->vc) && chan->request =3D=3D EDMA_REQ_NONE = && - chan->status =3D=3D EDMA_ST_IDLE) { - chan->status =3D EDMA_ST_BUSY; - dw_edma_start_transfer(chan); - } - spin_unlock_irqrestore(&chan->vc.lock, flags); + return err; } =20 static enum dma_status @@ -712,6 +698,70 @@ static irqreturn_t dw_edma_interrupt_common(int irq, v= oid *data) return ret; } =20 +static void dw_edma_done_arm(struct dw_edma_chan *chan) +{ + if (!dw_edma_core_ch_ignore_irq(chan)) + /* Local side handles IRQs so polling is not needed */ + return; + + queue_delayed_work(system_wq, &chan->poll_work, 1); +} + +static void dw_edma_chan_poll_done(struct dma_chan *dchan) +{ + struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); + enum dma_status st; + + if (!dw_edma_core_ch_ignore_irq(chan)) + /* Local side handles IRQs so polling is not needed */ + return; + + guard(spinlock_irqsave)(&chan->poll_lock); + + if (chan->status !=3D EDMA_ST_BUSY) + return; + + st =3D dw_edma_core_ch_status(chan); + + switch (st) { + case DMA_COMPLETE: + dw_edma_done_interrupt(chan); + if (chan->status =3D=3D EDMA_ST_BUSY) + dw_edma_done_arm(chan); + break; + case DMA_IN_PROGRESS: + dw_edma_done_arm(chan); + break; + case DMA_ERROR: + dw_edma_abort_interrupt(chan); + break; + default: + break; + } +} + +static void dw_edma_device_issue_pending(struct dma_chan *dchan) +{ + struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); + unsigned long flags; + + if (!chan->configured) + return; + + dw_edma_chan_poll_done(dchan); + + spin_lock_irqsave(&chan->vc.lock, flags); + if (vchan_issue_pending(&chan->vc) && chan->request =3D=3D EDMA_REQ_NONE = && + chan->status =3D=3D EDMA_ST_IDLE) { + chan->status =3D EDMA_ST_BUSY; + dw_edma_start_transfer(chan); + } + + dw_edma_done_arm(chan); + + spin_unlock_irqrestore(&chan->vc.lock, flags); +} + static int dw_edma_alloc_chan_resources(struct dma_chan *dchan) { struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); @@ -739,6 +789,19 @@ static void dw_edma_free_chan_resources(struct dma_cha= n *dchan) } } =20 +static void dw_edma_poll_work(struct work_struct *work) +{ + struct delayed_work *dwork =3D to_delayed_work(work); + struct dw_edma_chan *chan =3D + container_of(dwork, struct dw_edma_chan, poll_work); + struct dma_chan *dchan =3D &chan->vc.chan; + + if (!chan->configured) + return; + + dw_edma_chan_poll_done(dchan); +} + static int dw_edma_channel_setup(struct dw_edma *dw, u32 wr_alloc, u32 rd_= alloc) { struct dw_edma_chip *chip =3D dw->chip; @@ -772,6 +835,9 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) chan->status =3D EDMA_ST_IDLE; chan->irq_mode =3D DW_EDMA_CH_IRQ_DEFAULT; =20 + spin_lock_init(&chan->poll_lock); + INIT_DELAYED_WORK(&chan->poll_work, dw_edma_poll_work); + if (chan->dir =3D=3D EDMA_DIR_WRITE) chan->ll_max =3D (chip->ll_region_wr[chan->id].sz / EDMA_LL_SZ); else @@ -1026,6 +1092,10 @@ int dw_edma_remove(struct dw_edma_chip *chip) if (!dw) return -ENODEV; =20 + /* Poll work can re-arm itself. Disable and drain. */ + list_for_each_entry(chan, &dw->dma.channels, vc.chan.device_node) + disable_delayed_work_sync(&chan->poll_work); + /* Disable eDMA */ dw_edma_core_off(dw); =20 diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 0608b9044a08..560a2d2fea86 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -11,6 +11,7 @@ =20 #include #include +#include =20 #include "../virt-dma.h" =20 @@ -83,6 +84,9 @@ struct dw_edma_chan { =20 enum dw_edma_ch_irq_mode irq_mode; =20 + struct delayed_work poll_work; + spinlock_t poll_lock; + enum dw_edma_request request; enum dw_edma_status status; u8 configured; --=20 2.51.0 From nobody Sun Feb 8 16:33:54 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021142.outbound.protection.outlook.com [52.101.125.142]) (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 8630F2D97BE; Mon, 26 Jan 2026 07:37:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.142 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413067; cv=fail; b=hDe6Ki2gDBvQ2yE4xdxA/Bhzd+mIm3GQusuFNyACwpsQpEOOfSZx7/xYizoDkW3KxSgtp1dH/I/GQke3XdL7v6zVoCKpsLDu4JbjaZxkl6SUVxHgpGnhkYpu+cPoEKBzpkoeplgJ3CAWtbxU0QWfb0l8DVotjip4BWOje07STqA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769413067; c=relaxed/simple; bh=33tHUaQKihIkU/CfZDXQFX7yxpfaV/HQtO1r58os7s4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=h+aM0hXkFxm4puEoSUYssyfEpESOVENMGb9WHOF5lWrBhkHpizS4HNwQu+ggijcep1+ZGZBNSVuGngKWqLtzL/4FVgK5mBehP4qQQvW1Ea0yA/34H7NHTR5a35QcLoZ6ETSoWEiUTSPFBphI9J7YT+G6kvvvPMe8qGzVMhk7zfw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp; spf=pass smtp.mailfrom=valinux.co.jp; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b=q91vMdQ2; arc=fail smtp.client-ip=52.101.125.142 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=valinux.co.jp Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=valinux.co.jp header.i=@valinux.co.jp header.b="q91vMdQ2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FV9sjoj09WipXrTnq8kUNDgnST6Md4bFBQZTC/ONvaHpEnBGIOziSHQm9rzjdRxLJ11ay6vyeaMIAczGJGwDH0J7tc5Ce269sTJBE8cDjrhOd7zDinsXE8SE29Pm1l25HqILbDmbya20Ycy3ZW3mBQCdEjXcO7+LFD/cR51VjPc4dTjjXI7RMWzkJ7cRGuXZPBMT7upjfE3HhLdhLUUTgh7p51Hg5mH/tRhmpeAnpwmv/kXAx9j4QCDcApLrKDoFTl2SmqA0airdb2kY8SGMTWLyoR4FjyiGocC1iXGVVPyEtm2w2aeFIcPX0QwjJ4t3rmLzSwPnRtHZtVarVlSkAQ== 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=AAYM6b41oCnkMYmoIdTU2/xoOCnf3kxqwdqWJZIbtdU=; b=GNNobCjkdFjYMG00pA3YiisUU+9r2j7fTm/Fu9kEs6S8mgLQC8bF/SawCFKg8sgtTItCnx1ULetgL0hNHS84dDz80qG7iqxDwFQUIO8nASzIJylhhORmHvTBjS6LDVjIJYDrEh+Ze47bZs0/eSSLMTxROgNfo/QQM4MpL9VwwYHn77GQyRkCr9rB9j74GdQAVhyO+JuhB3HcR8jgh4arvaMBwiDQFF+f7b1J+Z+MvqkTPQoaqYxainZkdH57EMpRlQTaeKuHFN4v2kwvPs1yVdDKYg1bKcl54u/MIuN1jj6jHpFrpBR8UvPL7v8+IuaP4osvNoBG/PZzv0swfYHsHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none 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; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AAYM6b41oCnkMYmoIdTU2/xoOCnf3kxqwdqWJZIbtdU=; b=q91vMdQ2+KBOpR/EiGUIWxWTjMBKI5Nyt9FO1dmEUlSH1nlE5yMihmOUDh/3x2VE42DRLlVwiPjdpJQhUMmMidUwK+1/nExgMFzmvza1ERDfHXddZJVzG4ALKn/3fRDvalCtHVEvVXU2UXpan8qd9vqkBWE13PgYQUYUAqmYCbU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) by OS7P286MB6300.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:420::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.14; Mon, 26 Jan 2026 07:37:09 +0000 Received: from TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32]) by TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM ([fe80::2305:327c:28ec:9b32%5]) with mapi id 15.20.9542.010; Mon, 26 Jan 2026 07:37:09 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 5/5] dmaengine: dw-edma: Add notify-only channels support Date: Mon, 26 Jan 2026 16:36:52 +0900 Message-ID: <20260126073652.3293564-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260126073652.3293564-1-den@valinux.co.jp> References: <20260126073652.3293564-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0067.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:31a::9) To TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:38f::10) 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: TY7P286MB7722:EE_|OS7P286MB6300:EE_ X-MS-Office365-Filtering-Correlation-Id: 3c66c672-fba7-4e0d-fe71-08de5cadb6c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?712x/AH44YzWqVSEjJXa+rDilrTECf+TsUxUrMpSvMCgnLr9veMAvzD8vUmS?= =?us-ascii?Q?DCbBI9NCcb7/cIglcKFgCPKE6k2QxzWycNHUSnqoPFbp9GNB/gf/7X4zrSqV?= =?us-ascii?Q?d2hPfJ5DdpGuEUR/bIzsaCCmPjdTkxSVyFSqVQpGX4q9/Hq4Ov1nPojrsdaj?= =?us-ascii?Q?A2A26v77Qh3yLxAq4p25JFD38fIBHo/bqKxgU/aS0nJ+74HQ5JPSG17Mll9w?= =?us-ascii?Q?zWZWen544AkHUQG+6cNTryqYbkTV3LUJ8ljoNXSMoA+QeKdrzYNsxs8HjCHo?= =?us-ascii?Q?WiW1Lpx5mBBER7Jh/eXGWICFV7HdK0MOt+DynLD9O5zkjl6BJa6JVw5rOedw?= =?us-ascii?Q?zbTL9lGnS7yaLNDYEtdM3Zssbguuy3CBG1tiRlxlSR4hK65Y2EPVAUcJ+vUI?= =?us-ascii?Q?QI9ILrUWzpYkq9dKP+Y6xSB3Yacm0QmAspxR9owbIILCc8FUIs5ldswRlaXz?= =?us-ascii?Q?3quJt/IkbmiaynE5PK/sG8bioBPy2aEk6l/OAZeypnoCJWkzCkHRsZ4Gs2fJ?= =?us-ascii?Q?GdO+WFDJ86DhZRnn//MG4fCH1sf26ioyYdmjeERTJN/hwz0H1vYEwFIjSHUV?= =?us-ascii?Q?UQ15g8veP8s7/kYi/buWN2Ztuo5Ofdn0TgXEyAA0M3+subwRD6HTwtxZBvXf?= =?us-ascii?Q?ywi1YtCQe7oo4gmkyJs5vFZE3fFyiEy1GF9zmCrQV4o3qF9hB5mH4nzqBwBF?= =?us-ascii?Q?nqNUJvacIZu0TJbcmdV63bFKsfio1YWOXIlIh8e5tGfiDJ39AaX9hZi3Ickr?= =?us-ascii?Q?gE5ek8VIDbb+8XOlIId19ryqOHhIYJ6f0XGoUG/45RZQLOVgQN0vm/7eMpuA?= =?us-ascii?Q?xIbinf53uwED53rqxO0iFc3RjI5bBhqsd1DjvGRZ1fBbm7dFz1I2PjOOlUPR?= =?us-ascii?Q?PXmX5QKC2xb7R4RIEqBsIamUe3yt13PTvqTljrhEETX4BblsLOtfWLt8kKvx?= =?us-ascii?Q?LzNHIiCjnmXti407BdZUR11kHyO+VFoAEQrs2+/Hy5uIxUV3UDyQc6n7yoHh?= =?us-ascii?Q?IdA58xAQf1ad0nP4yZ71VScaEljiHZ9L+YDdGDx2egLG1bVlyxYJ/0P5Enyx?= =?us-ascii?Q?DvI8pyCrn+evOdds3Pcp68zKz7G1xoSY+otKUfi4madQ2CPInSqYd76RSyNx?= =?us-ascii?Q?cClskua+GCb2g664w2FLAdbttg9epfn5n1kz20DbH5rHvLmEQgOR1Wg5rbsT?= =?us-ascii?Q?yTFAwbvTNYGkArz3eDoHvKrPK05vRgtqX9WlycTrHpRgEbx5bdQN0dSkF3eB?= =?us-ascii?Q?SbDGl3CQbgdH7b3TkgEiDU/iioQhyyhIpLGuQJ9OP3l1HsqR5VQY5Xvkx9Fz?= =?us-ascii?Q?PfDXpzmGYEM7OLhc9EtxXyduk9GKdVpFiJXo4AuhZ1IuZyZhda1ZNuPnIkuF?= =?us-ascii?Q?4jSi3QwcfbpNrnUgVP+7BdezIWwwz2jiQY81jtriDYBo/Hb8uOm9CrNBaklI?= =?us-ascii?Q?zLkcjJwIsApJdd9moszTtKz+OiTswMPlJ80NtiaSyayIAShXk3Bt32tlRkLU?= =?us-ascii?Q?ggWVpRW6F6tuo8gKTEQqm6kLZG8/bd9/Xp+L5PAFDx6P9DuvZJUAHlG7kaKq?= =?us-ascii?Q?e/PIpf/LwUJxcFTosi0=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PuQSX2oTkA/CLX0s9W0siy48XUU1Iv5BSJy3JeLjSFTu6QA0D19SYAv9y1E6?= =?us-ascii?Q?x1riceYnDRfDESk8gcqFwgnCeIDS1G4PyIVpVjrhRTgxI5H6UCBrqce/bFxr?= =?us-ascii?Q?G1C6uTtPhIFA7mAuHiwKKH8pwV5FICJFk6Kk/eDVcr3TWaLlq9XdqaICqBUt?= =?us-ascii?Q?tHzAxfPpVnAQE6wEDX2p61DfCbY/vGb6GgViVWNuVi9EjfEbVr8PEU6QI5H/?= =?us-ascii?Q?6jcUSh4Njqon4xYYNjMlXJcSLcsMSTQEfl03GfOPNcQxnaAqlvxlc3Q/CtKw?= =?us-ascii?Q?msYFiDuTJ0tQJ9Lv/Tf372gCoE/sCXbhlkYQq3nCqcJojnxCUOMM1ZWxtf2G?= =?us-ascii?Q?4F+gOKTPkse8HDtULrFbmI0gOaZ5renh/QlqT0F70WjaSKAR+H5lYrkgkAz/?= =?us-ascii?Q?lk5pPKYsHeAxwJ4saUMBr/GxJhJB9jhxb3OQYrZf/0MP2Ht0zCrndSwfsFHO?= =?us-ascii?Q?jtNDODjXWhWZRWkU7NgdrUbj+ODDpuRvDyuJBDX17wsgQFlmvAefcbOxOMFV?= =?us-ascii?Q?Iv3Qah2VLZr5Ef/xK8IiXzrsuERsM972WGJF9NIur9SQEQ+cq5rcxvK6RRGQ?= =?us-ascii?Q?pvzRMHxJAkWtY/N597nwr/JgYL/LETcepPrnTTKOZwDarrDlHFHCZUOmcski?= =?us-ascii?Q?w45vNVBmvVWubFwJcJkb+iSF6bI0MnQmfErUkrt7jmM0PYD/ZpNihWnYsHZO?= =?us-ascii?Q?UtpwCsQJu4gZ8NPbAEPgkdSKIDMnSyVxUwWSe8dxaTeyz1jgWe0tekU/Bjav?= =?us-ascii?Q?zNGl/BY3sTtrHAzxe1jtg9nlc9KLxO4RJcpFo0Sm0mzuyQ2ubdcKS8xMeabA?= =?us-ascii?Q?OwEUI8iwgiARssJtYnzFwAbKiCO+PAeTxmqEm0wHVqIxYxcn95rPUY9d/X4y?= =?us-ascii?Q?3htEAwqk5JIfuU0O7x0R91JqIdYbSjuLQMBy+KdrXA9zi/impM+zzF1ook6r?= =?us-ascii?Q?HuIh3n9bg3ome6HzN+r/WMHzwAdIMC2jIzxiY0tz14QVAUNu6i8hyXN3inY1?= =?us-ascii?Q?2US4dfY97QCK2D+2wZ6EYBeBaa7uDe30bURmrE07rVpCQs3hPk9lhrJ5/sUy?= =?us-ascii?Q?+5oRnwKmlwvGmzb3DnFl52qztgsfMg5nHE2dhFVwOTumHET4q7RUD2bhmayl?= =?us-ascii?Q?jBJjF0p0UQW5tHJEpAoskyNFGd6A9FLCsUnDem7TP3wJ/WxUIs0oTA52KVWw?= =?us-ascii?Q?As6fmKlQ4hDRFPL6vDTZdcJIbOyogxBy3H9ikQwNw15oaChsy7CIxyDdfry/?= =?us-ascii?Q?P/8MeEz4YG7/u7PeK4sBroQgYdVjkm+02yFslx0dsWLZ0Rl5PuC+Tpbao78W?= =?us-ascii?Q?eRqA3iudAMRsbMxPK2/vKBCvZZPSJGSvo0RkGjeTpIHEebe4iJ3W6yU2/ndi?= =?us-ascii?Q?bfgLm8D1YXvtlu7s1NBtMvETAkeO6HY7q2Yn5tPJbsVmJTLVj2D91jR0Znfd?= =?us-ascii?Q?uymaoQ26t0mS3Wsgmo7kLcVpwsmCkCQudlWkws3vMCUkAiW0D37r0errTpPb?= =?us-ascii?Q?iSlJYQXryiLBJBROy9hVNjEOZYH1EkIHY06yLltfBRW+PFWKuug7XEvWNDpR?= =?us-ascii?Q?TlRTa1rvJF9UCYwCvbiIpNBunRu3mUjnwewKPwdPokQADb7LGFW/bwtw3atu?= =?us-ascii?Q?kidKvqmqFAi1YutunqgvuYPjzXSdvmze5AAk40PDgvEHjLtj+3dSEWln+lfj?= =?us-ascii?Q?/A0y0zvju4W7XrD/uCjCYjfHal1e7cws2H5cRPy/BZ6v6Hgac94lM20VZ+SW?= =?us-ascii?Q?TSA4s1OKcDwAEexaHAQTzjGhAGMYjF2d9UnWuwbSvp5RasmRlpEz?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3c66c672-fba7-4e0d-fe71-08de5cadb6c4 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2026 07:37:09.9127 (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: EZ9PjJOaCyUUl2cgxy20SUjYYutZjMMQJZHr4C7UHGWmWevhcO9+h6R3Ab4dh52MMgSyCJaA6rt4NrHzaCAk8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB6300 Content-Type: text/plain; charset="utf-8" Remote eDMA users may want to prepare descriptors on the remote side while the local side only needs completion notifications. Provide a lightweight per-channel notification callback infrastructure. Signed-off-by: Koichiro Den --- drivers/dma/dw-edma/dw-edma-core.c | 41 ++++++++++++++++++++++++++++++ drivers/dma/dw-edma/dw-edma-core.h | 4 +++ include/linux/dma/edma.h | 29 +++++++++++++++++++++ 3 files changed, 74 insertions(+) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 910a4d516c3a..3396849d0606 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -616,6 +616,13 @@ static void dw_edma_done_interrupt(struct dw_edma_chan= *chan) struct virt_dma_desc *vd; unsigned long flags; =20 + if (chan->notify_only) { + if (chan->notify_cb) + chan->notify_cb(&chan->vc.chan, chan->notify_cb_param); + /* no cookie on this side, just return */ + return; + } + spin_lock_irqsave(&chan->vc.lock, flags); vd =3D vchan_next_desc(&chan->vc); if (vd) { @@ -834,6 +841,9 @@ static int dw_edma_channel_setup(struct dw_edma *dw, u3= 2 wr_alloc, u32 rd_alloc) chan->request =3D EDMA_REQ_NONE; chan->status =3D EDMA_ST_IDLE; chan->irq_mode =3D DW_EDMA_CH_IRQ_DEFAULT; + chan->notify_cb =3D NULL; + chan->notify_cb_param =3D NULL; + chan->notify_only =3D false; =20 spin_lock_init(&chan->poll_lock); INIT_DELAYED_WORK(&chan->poll_work, dw_edma_poll_work); @@ -1115,6 +1125,37 @@ int dw_edma_remove(struct dw_edma_chip *chip) } EXPORT_SYMBOL_GPL(dw_edma_remove); =20 +int dw_edma_chan_register_notify(struct dma_chan *dchan, + void (*cb)(struct dma_chan *chan, void *data), + void *data) +{ + struct dw_edma_chan *chan; + + if (!dchan || !dchan->device || + dchan->device->device_config !=3D dw_edma_device_config) + return -ENODEV; + + chan =3D dchan2dw_edma_chan(dchan); + + /* + * Reject the operation while the channel is active or has queued + * descriptors. + */ + scoped_guard(spinlock_irqsave, &chan->vc.lock) { + if (chan->request !=3D EDMA_REQ_NONE || + chan->status !=3D EDMA_ST_IDLE || + !list_empty(&chan->vc.desc_submitted) || + !list_empty(&chan->vc.desc_issued)) + return -EBUSY; + } + + chan->notify_cb =3D cb; + chan->notify_cb_param =3D data; + chan->notify_only =3D !!cb; + return 0; +} +EXPORT_SYMBOL_GPL(dw_edma_chan_register_notify); + MODULE_LICENSE("GPL v2"); MODULE_DESCRIPTION("Synopsys DesignWare eDMA controller core driver"); MODULE_AUTHOR("Gustavo Pimentel "); diff --git a/drivers/dma/dw-edma/dw-edma-core.h b/drivers/dma/dw-edma/dw-ed= ma-core.h index 560a2d2fea86..d5ee8330a6cb 100644 --- a/drivers/dma/dw-edma/dw-edma-core.h +++ b/drivers/dma/dw-edma/dw-edma-core.h @@ -84,6 +84,10 @@ struct dw_edma_chan { =20 enum dw_edma_ch_irq_mode irq_mode; =20 + void (*notify_cb)(struct dma_chan *chan, void *data); + void *notify_cb_param; + bool notify_only; + struct delayed_work poll_work; spinlock_t poll_lock; =20 diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index d2938a88c02d..d616d22286d1 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -131,6 +131,27 @@ struct dw_edma_chip { #if IS_REACHABLE(CONFIG_DW_EDMA) int dw_edma_probe(struct dw_edma_chip *chip); int dw_edma_remove(struct dw_edma_chip *chip); + +/** + * dw_edma_chan_register_notify - register completion notification callback + * @chan: DMA channel obtained from dma_request_channel() + * @cb: callback invoked when a completion is detected on @chan (NULL to + * unregister) + * @data: opaque pointer passed back to @cb + * + * This is a lightweight notification mechanism intended for channels whose + * descriptors are managed externally (e.g. remote eDMA). When enabled, the + * local dw-edma instance does not perform cookie accounting for completio= ns, + * because the corresponding descriptor is not tracked locally. + * + * The callback may be invoked from atomic context and must not sleep. + * + * Return: 0 on success, -ENODEV if @chan is not a dw-edma channel, + * -EBUSY if the channel is active or has queued descriptors. + */ +int dw_edma_chan_register_notify(struct dma_chan *chan, + void (*cb)(struct dma_chan *chan, void *data), + void *data); #else static inline int dw_edma_probe(struct dw_edma_chip *chip) { @@ -141,6 +162,14 @@ static inline int dw_edma_remove(struct dw_edma_chip *= chip) { return 0; } + +static inline int dw_edma_chan_register_notify(struct dma_chan *chan, + void (*cb)(struct dma_chan *chan, + void *data), + void *data) +{ + return -ENODEV; +} #endif /* CONFIG_DW_EDMA */ =20 #endif /* _DW_EDMA_H */ --=20 2.51.0