From nobody Mon Feb 9 01:48:34 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021079.outbound.protection.outlook.com [52.101.125.79]) (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 49D143090D5; Tue, 27 Jan 2026 03:34:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484885; cv=fail; b=WkiPV7d3QW9Z0c2dUbVkVsvxHaC90OG5QLeyzAURCe5+ObbwtlQK4hIgyS8qfuZumLGEkknXc7GBy/Z5w+K5DGA6BERHW/xj6KHO6c0EgY+eeSnZC6O6m5odb5Yxbn9WAlhGhFlVrXVdEbTpkC2i9uUbM5s0O9tew/nY2eJwkNM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484885; c=relaxed/simple; bh=51Qf6qtqpHPSrOevyQgT2E7D6WnkVcrLw44/aVXHoCc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=anf4rq88Tlw2O15wEbfMq7q5VPjXbIT1kmsiSthjRQNB4eP50O1dh8RjSY5AyTOVGir/XZSK1tfxEVTZZx89RTh1g0FQIGVOth2VbKEVO2yczjLRyjEXaMqW94ZS2ZUQRLLT+31xZ8LOL/64tp/lrYcWDj2dFCh8go1MaE4d9r4= 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=Yxulm3lX; arc=fail smtp.client-ip=52.101.125.79 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="Yxulm3lX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HXp6SGFmkC+knNGCcMJ712Agp98O4zjuZoKXREGugwif1fZfBm+FsfM/p4zmTnQM8Jyb2LljSLl21I5FnJr4ngiirC8BgNXzgQE4ymK+IL5sTBXb9qQodwHBn7x8FnTUbgAjzsgUZrvSjQf0JW5aHngfgMbgy0JHlQaLjdsMIMLaQMyy6STWMJ45pj4Czf9pS2zmGes0FJWRc6dF6uzWjzb/avIIa/ktfUi8iyw9TuJMB8tY6yLFKSWUqwXihM9xNwob7Hr4QXs8WGv6ywTok0CGosE1XwF0cJyt/MMA7895K+xbOHNckVw+V0NVCR5gtWisFijpXpPU0bB8S3FnKQ== 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=Mlsa+NvhjeIqFJcsNuGQByBpnLDuq4khkabH3HnrsInc5qYfEBYkeEIPj+OsLHXEpUrVSiuF0IIVQhrSLOBcYgxRCBTXkdWZHaD+XVBxDXOPBJYNYlEDBTi7KBRNi1U3D91ij2ge71jUTO10NiUB0olnuWU/uPQUf6/IQ5UKJqaamEHF+psNRwactbz+guK3044O9P+6Ohf4Kf6Q4gv3L80Rt3PVOLW45mOCU1jifrAnXWFEwH5C83l+/2AUpDdWlzZoDlE61ZzgShcRFJ91UBrwt/nIDfFHhZqFUIsfKsQadjCPusGHHMrB26gktUmIpzcPV0pDHKZN5dOwuozf4g== 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=Yxulm3lXnBZ67xlJRb8SvNv0Apwa/aj6GyLbKfoQSImSLGXT+6VqpeVYtjxOgH+f1YIJK6HD833HMvFrcEAY0jd4hQ55AI8Oji0/aAhp8S9hx23BQ/XywsEViPxLxnodx7afM8SgCcPfWmZin8RaTbu+qqLCEGrLPxgq71dkC8I= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:41 +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; Tue, 27 Jan 2026 03:34:41 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/7] dmaengine: Add hw_id to dma_slave_caps Date: Tue, 27 Jan 2026 12:34:14 +0900 Message-ID: <20260127033420.3460579-2-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P286CA0028.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:2b0::10) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f0b571a-c403-4b1d-8d2b-08de5d55016d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?DXMMpjJL+LjDeZ2Mk59Cgsr1dtny3aBrmE1nB85WnbWEIvLHxiYkXcHQIiDU?= =?us-ascii?Q?LBUHUxySsbdH9tzvRA/MNxf6y3xP+VwHLyBWEmVIUrtJWNO/ii+QnWxdGe2B?= =?us-ascii?Q?xQJvqWVcabttQF46zOzo7fEMban40/K0MyuhMjc1zQjGavz3kjvzniiEj64r?= =?us-ascii?Q?INzek8mFjem1o15+dAESCf4fm9V5uI6O6lnC+qUZOEkg0iGaJqP18FYPuSWm?= =?us-ascii?Q?tOE+YU243e4G3b95hOaNZSy4wvEbEIhVWGehhOwmgadHIG0Db2LZyOzdFylZ?= =?us-ascii?Q?97hOS3cJpi3ZxggZnf3hlbKT1q4zauTUZ1JCZndbekNEuNcSL38IwufQUcHL?= =?us-ascii?Q?HpYYzQRkunA/YKCJb5kekwx8Q41hQa20RRYoLC4dggspXvh4KIHtWFv4RE9g?= =?us-ascii?Q?2N9jVJAjsblCqxMDbq+LsJBZAbfSABGWHKKUBlOz6canEh2BYmWEW8y48d8L?= =?us-ascii?Q?WyPDKMAdKbNVCswQ71O7wsA4ild69bAplujbmH7EsSV03RIzJjAotcVPzJGg?= =?us-ascii?Q?/3B/bGhf2nyu+BPRUSuzAaHQOe+rirwdTibaH2dNXq0zDH4Qdk8Xm7EQffZb?= =?us-ascii?Q?Heignf8QrdjMnPf2APfU4eTH1R7vqPJAPSThvALkMkbizIf3K2/rWRXn0IzA?= =?us-ascii?Q?KnL4Es1Et1f9l8lZfSzRlwM2/ST4Fq17bE5s9GlW2LbZin8i5J88vPpb2zNM?= =?us-ascii?Q?PvAjzer72/nO7XUWjGvvqGKevmOFBDNrLuXoviMA8cMVEWftEZGAkIEShV5v?= =?us-ascii?Q?Hs5Erk2IIV9PcCN9Sf5R2U010N8+6jKYQp4A04NZu4G3Fey2UrPA+2Z3tmpM?= =?us-ascii?Q?cvzSHOH4YQAqCRigDQj/qe1R9cnMMMykO5Q57yEI5mVcsvP3Vqk3KDm7a18J?= =?us-ascii?Q?OohtGDMrCUKKdRN8ybVaVxoCWpF+C9d+FCilsg5Y+yyDDd2iTnB6Sk3Kma3j?= =?us-ascii?Q?w2Ar6RKZ0kOt/iDYcuxotk/xZPjvcojbEXlkp5QxGNmQDZxo9rPlmAQFs4qL?= =?us-ascii?Q?Y+US0cfMVYiHTsKQDWqRBaTtyiodHaV1KAZL+zfc4+nce32ttkE50Qcq3xyi?= =?us-ascii?Q?b3tQNRvxpaUJUWYrcQYw7XkpxSpYhDcEKBPxwBSEb7JgBEfBupZF05ViWDzz?= =?us-ascii?Q?qqfHIRkXfQQN37AyV2rRG9Nk9X4HGqXeYg3MfJOwfQFDF5brBnX7vkkDKZMM?= =?us-ascii?Q?RMeJCy4o6VxXCME2i4fuYcjAlwcX4XyAbBWSCqD9bxTcNcieW3lZG6EG6Xwc?= =?us-ascii?Q?0pg9+doffUFZ5YUEqPbRUJrahLzoDITtuhyq1uaJKR0O1vUQU0lL6cW0szTl?= =?us-ascii?Q?GxRIkJSJ0x3C7uFwgvQ20xAKjUPKraoamCZ6vwdR4mBvJVaPNVhVGlUGWHZm?= =?us-ascii?Q?GaJ/i8CaJAb3rbUph6K6h+vDs51UwAuCcY+UTdW9xjZSH0nuQuHCrUTxmiC5?= =?us-ascii?Q?7A92Ay7q+HN0VgbzHVTDOk+i1/1UVW7qqlGfU3Y1tThSMDGs9m55Z1GQ59lN?= =?us-ascii?Q?C0pHocMNTUPQlvJ1fzNneBYcVfXgG3vqLNB3scAULooem5wQlZ+TgyEJy8S+?= =?us-ascii?Q?1g9S+M4C3WhX7m/JI6o=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rSSEZZQVisiyvWuRr5QxnK9v8AQBfJakegJ7Y+UzjQ5lDBC10q1nTAKK/ubz?= =?us-ascii?Q?sr5JRLGBQnbvjbJ6qjnUSJ1QYZ47B6SlFPeighzR7iqGN49mdAIlvkqQk/Yd?= =?us-ascii?Q?880z4m20y0dCURNngIar2T7p9bVeGioHhO3G2DZHsnPxlKVM3uPaLeGYrzRB?= =?us-ascii?Q?06N0Yw/JegjMYbakclzf4ff0bv2oxAcvfyEY7pRpXkC5TR4LMvJq1qT5IBS3?= =?us-ascii?Q?UTzD/W19pBupEl0zxCKD/KtdedCXnGSANozLPTukRbIJUDNEURGY4Ezzva2d?= =?us-ascii?Q?cMJ2zG7Rt1YaJH/JR1WpR8glOJ7ixnN0VUbsPoXA+DNqr+YWXW7KhOygphNY?= =?us-ascii?Q?ECUnVsH8RAc2WFDWBp1wjHmZf7lcnBTC6XRH5NJ3RYlYKUhN2CAIq0YpntZN?= =?us-ascii?Q?o99VpK/5S+2KYyO6sJHbaQ5MjPhH7APJLOBFaVle8erVEN7TNIMtbwWNaNgj?= =?us-ascii?Q?3uiQ1pks5ZmKj/+sPTMW9mvIGiX9dLgtYKGzoMXUo2TjmBaJFGTDmoQBpLrI?= =?us-ascii?Q?bwTLTYyOV70E1o10upSBF5CnNE0kUM3J31lu7P74LbeHgFXaCRzlmee6LS+Y?= =?us-ascii?Q?BS3VwQYiH40uTBvCvG6HctRJnFOrd/2UW0ZO5gPDFFQN9dD5tt1f3ODD0G2D?= =?us-ascii?Q?Zax3x8N1OefYoKvH4hdVDz3Ox6b04aU8esTZfq6X+Rn0R4lU1AYfsZNV0Zp3?= =?us-ascii?Q?FeB+k2sU51mvFF7HCRb9yjtjwu2fv4gJ1YYI9XlLvkY2bAjchdo5tcRW0ocJ?= =?us-ascii?Q?xDiCBk9BfRDao6ZI8cqsGnfsSVxj8Hjx/2jr8h+d1/bm827FWd+02rWOGQH3?= =?us-ascii?Q?EwDjyrqw5aV0CKNPlJhZWluCePuaXRLEiYDQNrH+u+SIZ6xN+HVUjDhiVDc9?= =?us-ascii?Q?Gndj4rWXoJdkzJs3IQHtQw7scCtxSX3YCalwXb0iYHeB/NbhsGVGYgDbV4WJ?= =?us-ascii?Q?6sPvJ5rSrEirjGD5eEH7y25K0ZtjV3FhdDubKZBe1H/fLChqOZD8PAFUe9ML?= =?us-ascii?Q?IYYQ1ozhAPxIYlStQCn780erEmPH5ogmwjldLG1hqRMiR9hpTfpE1npc68fZ?= =?us-ascii?Q?Sv8Wa/g+IeTcGB4+Li8xbPHGZvrQzWPONylniApvuxKd9nB8/KwZ6RGF6nSA?= =?us-ascii?Q?TT5Xq568gtvuPSoR2VEXcB2k63zzvmx+LPJgxcwQR4w4BF2ai9sOGXo8LMCs?= =?us-ascii?Q?DUaQy7qJd22awczozU1mbPFbcnbGkUW7MGrZuGAr9xQCR9TGj+cGXJVexary?= =?us-ascii?Q?Uozv+wOgapCdIDN3n/cdxVf+vwYfU9RRcjoodMOWfOstIwDJE1KvvvFaSkWc?= =?us-ascii?Q?ypqO8X/lpQQq1BbSu63quSr54Q6ADF9++UTku6+pkX+kRsPEJ19LV14h+Hu0?= =?us-ascii?Q?s43UKYq3nrSZCb9dKGwMkdiEQY4oA/5lRTZLModouNRxUhnoNOmv1hlWJmaE?= =?us-ascii?Q?6iu7jn/H7HOWdVReyWOgG6UDicYIOGacUayDTb7Hwj9c5qEXwaJWR0H6zWEL?= =?us-ascii?Q?PKMtOMfv15UGPVUHUPR+2yFEAI7Xq4glDpDcgMNSoHQ/40Fu9k0LzKoB4L87?= =?us-ascii?Q?ctt3S5qiVvPlhndYbIVahJlPV1USdWwy/oH2PBcJfBZtisyIY9h2YQbD/6rn?= =?us-ascii?Q?gsB8AnWt2sJpEyVk3T3jfDqnTmICJhI8zcgFdRQlO1+P8YRfEBy8YR/pvBoU?= =?us-ascii?Q?hJT1rKV+VZefqWiaPUcisM6ARKO39a0c+oIJ6k1tfx4dmTNi/DZwBpgFFQVv?= =?us-ascii?Q?l79V6wkJAzQxlfRjBmW9oNMu372gUGFQi+fHA2Oa/vsO3lxMTow+?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 9f0b571a-c403-4b1d-8d2b-08de5d55016d X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:41.1772 (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: kZQyKBOz/FUj5pB+RzguoE7QVCWeAWue65/4GaEKuUDbjocu4vYzpMlnI7r+FmHhTZ2iTYjt0t6jyWL8OrdZ7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 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 Mon Feb 9 01:48:34 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021079.outbound.protection.outlook.com [52.101.125.79]) (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 403F830C616; Tue, 27 Jan 2026 03:34:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484888; cv=fail; b=V4E+Fzse8bsBh/KRSo7DoCgYOPhK34I/E7YbpGoqeG50GZUHJbN2eQ17uviect38wJUXIZ7hSVoCKyolgXz1Hte2VrcDui5N8hkseu6F3UEji6mCC1GndsWz9el0xqiVWcfwwdbZk1+75rHPhBpwO1Snx4PxPihChC3BxSnSzEc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484888; c=relaxed/simple; bh=ZFddtiIljJV8bPqalopfGap5kq/xyBhgA9QFpi+GzAM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=A41OSNfH1CUOVKYAjd7u7BUVk1Ecsa1heJrF5mR1sy5pEFSi7elxI7Me4aB8UnWAQHf3MqEXz3o+hr5g/FqpsFN/P67QzSHz1bGC+M8evt0FJqtzmud7tC9WIRCqwfNv+8PRdN0u74G7Ya2kt6Fl/jd2GnLn2PbPbJ7U2IJkcjs= 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=PbWZiN7g; arc=fail smtp.client-ip=52.101.125.79 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="PbWZiN7g" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n+15fx9idzkET5gbkkvB7fveS9FScpApYl4qTHQPUmuE4Xod/U4u/GdAzNDmFF74DzWsthGjSN+yqTtp1SkOzQBPH8vpp2jI7KzZH/xx2UeCzxwt1PaOKb0ZxW02RIxw71ksR0gvzTEoTiJGCdle8AWcy3NL6f3o8nXUW5tLorCjy11/XwXleimeiziiHHwQFEqigUk5I8w+/9DSIymvz/I/Ih4Xq00j5BdNACksQNTzSbzYilQ6x14PxDtfkRR0Q2fDddR39S9RenabxP1gmdpFlNCSuyCkEGtPUMB5O899/Fx1fj33Sx1ChMitaOjg1hwXxGEs3AVy2WCUw0tZzg== 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=tdygeLCEVrYabW1EEZ3BFK0qUUx6AbRgKmOsoz5Kl4w=; b=JWgVHrtTPxiIJJyhznP7aDTe5WOIswJAbBMOQWT9nCaSaZPdUQsEzYdwdl0cJgzjZYtH1oe7QmMzUnvLiyoAVvDVLmFfx8tr5iQhG/ZUmMvWY8E7ROyMGTAO2oICXNEWjKXgskumtlHRgKp5RqfNP/TV+LPcSP4PWoJAQdcU/UGpkgaOvllRJ60UEe4iutj6uJ1jsNSPLxOmuhpcx4rVCSjCKVMujfUmNu3X364UAZfHdd1vFWIRQog8EvhH5QpcoLLQLACSukiojE23rG7lNE8JTI0OWOvqd6z40MvGngYHwKgUg0qtsGB/WDPsEYSBgGHR1k6B+K38RlcpT9W3NA== 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=tdygeLCEVrYabW1EEZ3BFK0qUUx6AbRgKmOsoz5Kl4w=; b=PbWZiN7gObmqfesoA1RWgYRa0QBptUxWxx91UCYuXw0/7e43fHVC4qSknJsvwQBThNIlvCmugVs010ViCgUe2Cix56wPCj27uNUQrdyB+93pfXtdYLAY6zYc3rGpWdm39apjOagCKgfMPEufH6X3gWF++0O0gkh2RkFEL/ZkZZE= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:42 +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; Tue, 27 Jan 2026 03:34:42 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/7] dmaengine: dw-edma: Report channel hw_id in dma_slave_caps Date: Tue, 27 Jan 2026 12:34:15 +0900 Message-ID: <20260127033420.3460579-3-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0246.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::12) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: be30efe3-d407-4c33-8281-08de5d5501f2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?kDwD013bpliTfkp+a+up5rFmrdsNb+i+AxQHfgoS27Duui7yb7rki7g8cQoj?= =?us-ascii?Q?Jva1yfMd20NOw4nSuG9K7bh1zeaqhi/tePKvgV/jA/m+VtQ8rNU9BBzXSdSn?= =?us-ascii?Q?FOZTdg69Vr1yL5AMOBonukZSXj1t5rWNwjaFeevqtMFcP23dylhcZtopZ8eR?= =?us-ascii?Q?ezdYii4aSAc/wMPFsEEzKe98gBvgVpG5Sf1VFRmV70QCwJgQQdRjv8rbDTSF?= =?us-ascii?Q?6kuzHCiFgEiqUQW23yf1bMFjfsAEDRLgU+8dUCkionhrnbcncCnZg2wMTZR0?= =?us-ascii?Q?qs9+QJFCvCEKDyYEdkkBkaCF74JTuWLKSjoTzHHyDJzLwbAmzyJa9+3sxzv4?= =?us-ascii?Q?jgG3OvWJIm5nbuuDZsLPIymnnVsveNqi6ZJUm6JNOzAmUOTh3s8Z50rN1lNP?= =?us-ascii?Q?z222Gs2qm2n+Ymxhr0dhuvoCIlCtCksr4cUqTHmxq3VZJhRW/hXuOPec+01N?= =?us-ascii?Q?VmmnaIhHwTMVt4EWzuUhUe2FwWh0r6rT+k7BOhgL9qqdfMgrCWwZtMOHKq+3?= =?us-ascii?Q?j7M45bbKKcmU5Eb6OkSAi2QsCl8kprKDKB18/Mp9LNxvroGua660wm5ULW6s?= =?us-ascii?Q?9rHpLwcHMgELUuruOI0Iv0AhUNVA8D7I36xR7cdSYnhzeeBhUJDfLh157486?= =?us-ascii?Q?XNr13r0nbKHT8JKLqqf4L9PF2u+cCNtsodWBdyL3u51b/rSXxWjX95bkOvjm?= =?us-ascii?Q?MeKjl8+FY+cxIetwD8iDfFsOE0l+tr7WRV+UUBIb14ikVx7Cy5fx/pYSPrHF?= =?us-ascii?Q?9P0t8EGOEj7sHE19cBC1vavjy9c3wh5U074MttMFN+W1Lf2aUa3HRqyIw2+r?= =?us-ascii?Q?Rug5dtE8Z/dDtMqANvRtaM/yIT/aZrLQ8trP6mq/f6I2hW3ekQS+PrC3mm34?= =?us-ascii?Q?685RMwyZ3KXLZbgKz0VdAQehreNukME0ECiZTwZIHVdsjC82HxF3rko+frgq?= =?us-ascii?Q?vsGuqImYxoMxzydl6BLK1mIYCUGzQK/m3GtN8W663yDaNF4LEd2yJCYFfZYd?= =?us-ascii?Q?y8hlGiaa7OSQkVBaPFCBNSciwnqE2u1lr9Tlvit98GQ9LMkyFgpDv08BA/Bp?= =?us-ascii?Q?lNXl5n2Coi/pfN6UEHxjFKwkao1snTHlRD1ZC9ZIuoVQN8i3LEBAQT6t+rBq?= =?us-ascii?Q?duHWvDlyor9ga31wg1nYsVwGUy6n+YAB8eAQzYrFZIxt+/bewv7ynA6pPBLq?= =?us-ascii?Q?5DAfbUmtEUrYYOPqCUN2Tyun4gjYEgLNfiYtVQyutK3a4sZppstAGEG1VG+3?= =?us-ascii?Q?bbGpCkHq+tZQ8l59My2O2mMeUKVCwe+pdrszxtCBvoIgI+RoiCqLMOTLHIbN?= =?us-ascii?Q?K626mY7HFDCEYaE7+fAK3fpxFTrx/AmMTP1+bjpNdnBHSp+cAQvJfTU73XeB?= =?us-ascii?Q?0kw4lDdxIbjD78W3Gt5z5H01YDOOr4h5gX24ZEZvU1ebq8VS7t9wqyaIjWJ2?= =?us-ascii?Q?So4IUo/lP2EgI4c44Ae8Q2A4U83028Js2hp40YJb3HoyU0h7B32OpoBNQ6c1?= =?us-ascii?Q?43q7rI7H8IeaRjfjnS2LRWe1+zkTB+d2iW9/lKx2CkCIWnRCZ5GeNBn1myiK?= =?us-ascii?Q?nJv47wqJHPqi11eE4Hg=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ym+uYHRp5ACUdCzDAsUeDjLNEg2IB5StIFQ1wO5VyPkRbdUgslJQvywx7E0W?= =?us-ascii?Q?EsgBx3rVSnVnmM5mfXu5u2j+IvGFX7m30jAMR908XjpJKvErlVOixNDIlYBN?= =?us-ascii?Q?PTmR8XNAN32QE/ecwI8aXjRAuUwF7HwddWKHvH4hpdkf/u+s9rOab59dQgld?= =?us-ascii?Q?Q5oc3Z8tPP44oSbtg3FtpXg1DSHZk+p85+VGrftalWXLuH8tr//T0PV60nkQ?= =?us-ascii?Q?DwmODyoKsU07spUL0H8FdIgHL3edmAtHyR1d/gITUjAmszvHJu8+fdl/QMqw?= =?us-ascii?Q?gZ4H34ej7IX44upT4KbpQoqDC1/BmvKiXHjxvP1AVKZa3iXLWZNRNuqEqzwg?= =?us-ascii?Q?EWyWcmLbcST5+2YiRqmCQ82RIp9qTUoUbftwQddzZ9HHsvvG6PDYb1NK989w?= =?us-ascii?Q?lWZWp62ydrqlgnkoKmZ3363hJDMK3/wnAGVxWdiogfI21LMm1g4N18uGK/lu?= =?us-ascii?Q?GMwsKSJoMPG38gmwLZjEP1aMtVkcZ8qIp0uqTQKfVrfaasfDoB9o/kAAX2rx?= =?us-ascii?Q?mmpsvOzhUpX6Rz6U5bu3tJvN8nT5fnMUOKTY5FYejhTa1NNnEBjlJmD64CMA?= =?us-ascii?Q?5ddUnbnqpu6X+NY3qHqilffVBtby+cduSZdGfZ7WrobjpBHsoAuPxHX/yQCV?= =?us-ascii?Q?2wDmbRJrWnI5C9/377r89E5kf21atX+BmoUmG5wkPpnWc1x5e4Jt+W/vVC7I?= =?us-ascii?Q?g5lXcgQdoqr1X8HdvSOmuGIbGwGlkz+tS+huyAvWWdvZWZwDPQ0EsASPSBV6?= =?us-ascii?Q?JZ11lk1yBUkhlpBFAhnF6wNKx4a8t4r8AmNTx+mygvFKxXEHtIK1slL4v8/g?= =?us-ascii?Q?8/9LB8cN4Y47uSIw5wC2+P7dECt+RQ4qWyhXYpnU4ayex3bQmdzn5w2NFyQ1?= =?us-ascii?Q?cWUSLY1KFa8FNEVmXyONnAnbHtWPSIvYSskpXQ5v8dEDGlVsMvbCrpIxhCjt?= =?us-ascii?Q?LpJ7H7Ofup5NtqdNQ4g7VMLcIdnXCzMPxCQfRL00SDmrD+Ds213GUecyx8Q9?= =?us-ascii?Q?v71tTeBywbIdsVcnveSjkNs/eg7preBOmuXydBPABYhZMD5GQ4let5KVaJP8?= =?us-ascii?Q?ltrXoJY0RiMfi1TM/8R5K5tEJdt2iCc3Gk6/psWbloYcxFARU4RfPbdBhD/n?= =?us-ascii?Q?yXL8CnXnBdaYp49Tuf3xbHCelNYRBhzi1d9bMbmWWDzl+7sMa6wKAUC6/mI2?= =?us-ascii?Q?ni/r14qij6i6aRP3hTHMFWuXixFiotYzatrGThbcVGKPieY89S88wps69UhA?= =?us-ascii?Q?47/Y0vtaLqHVlX2tHVB8ylHBj8eAD3ehLs6KFNhy5noGrZBb6FBwFz/JpqcW?= =?us-ascii?Q?okun3ah5IFq6JyS7Uvoyj+LiIlrXCbkqK2sy6mqRXAvZ3MQsgtFEw7tSwal5?= =?us-ascii?Q?EMij5yshw3/DqFonTMDH9zwZnhLco8MEDc/AmsRZAogjwx/C1mLaafQFN+L0?= =?us-ascii?Q?8oof8INOBlGbXtyzNekl+/UHc7C1PLh+HMTdakquXrcVuTNfe0roXe3K6pG9?= =?us-ascii?Q?nyjXPTZRjcw3Egl3CPXDVT45zTzWh+mfRmLWP6TTkL+/biMjlA6+ozzEJMHW?= =?us-ascii?Q?86WWN3PAZvxw0rT8AqsfkqwYsVARj70gqU5W2WfCDRuGtGpS5+WPYqNAz9jD?= =?us-ascii?Q?2g65F7gyFEasRF3bFcmsv++AoS/BDaaiaOBrXjF9V+r9627AC2WQPstcydG2?= =?us-ascii?Q?vDL+f0ApxBujgx1wOA9NoRRX0u7o2oqhUV743G6y3XAh2P9sZHy+ttwtpRq8?= =?us-ascii?Q?HKbVswlEi0U7xBNMcEpgXnWKsxy58pgtBe00fNWE+Z0kqZvXZXoS?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: be30efe3-d407-4c33-8281-08de5d5501f2 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:41.9995 (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: g/kLCkUWVugNN0/cjFMwFAkvjdrbsq1iIx5bJicvUa6RhaGUh7c2ftebs0UGEu1VmDTx/5YISePksxJtlnZ9GQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 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 each read or 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 Mon Feb 9 01:48:34 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (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 5447230C61C; Tue, 27 Jan 2026 03:34:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484891; cv=fail; b=FSevodg9zLiMaIYEvr2ZcpsMZozq+K+airLnwGULTlhI00kwMG3spuLcYdPFGTcqjPC9ZSyNkXIKMdBYee7QHyOLCmOoAntof23/BxGOD+Oa201CcC7t0q4LQkGMbxx46szVTMpe/nr70CFLUHs8zx1aU1UeFlQWku9tsSTh7FU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484891; c=relaxed/simple; bh=QXnirUU1oxjLYia5uFQ7wD77sBcEz1/IcB6v+yQXxSc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=m+clFafM9tpxvUr/QuyaydCgzuZE7lZHueOUkZn/txiOWIJnDMVBI6t7Z3sIx7VY4AUnQjLT9NgM9YPyIFpqoTzJtDWMLJwqzjlfQV57DOfyvycAELXN6PplcYGQWZWiORRjgtlTJtsNH2MfZeJuB+28rO03WI9lycmNf52fC0Q= 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=lIWPZwPa; arc=fail smtp.client-ip=52.101.228.110 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="lIWPZwPa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wNTkf9rKP+cHpZ4Q/jk42lIIEm9YX7IwnvVuAOOAhqioS09aIApiWVu2PJP7PuDcpOL6/3A8SEDLJWPJZDR013azFsnx8/fxNGMO9ip83moS4lg4UeGsUiRvrhtn9AyvanGF42zwVhxQCinYwsPxLwgVRppmSkaki0y/ZlcLrEp86ykQpgcVZADhLSuCzH9HHpGQHM3eoHGc89Z8WZbecl5NTF4YGb3fXec6ahQtSy9UjOXZn8rEN+qEpL5OCidSIlc+A/Ow0lhlC0hli0p3llwmKP2W6uneBydrty384xgpLXVUKVYTDTYfBVrwrGQNEWIwA0MotgbD5pV/VtBUhw== 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=Lp9dPzTCEHtcejofSAYCzLEXTJW1O/StwwLR36nHrlQ=; b=kSa+rssfRFJwjavjfD8vr8K0d4hPjA/ah+G/9quTpiMnwwH67JgjUdOjqE9K75LRMZVFSlCWbYWXsqhwSkuY6/xXbly520MtAGUz9OCCObnWn/eQP2s64aHYe3UblxoKxEeQsAfQV3py/ivEwHAIdk5COb+fCf6NZZlW1RgwsdSp7zAa4I6qctCcS98JGiLYdku7MieSX2sOGni1hgNVTJCeAEw4kvyBqY1O+XlDCv6jvklCqFrIdov27/mJ2whEpN/j2wlIV/FDuCuQeMQr/pNLVeg8YwJC+RP1YYwG71AiXFFUqjUSIEImPipT6d7v0AXVbKMhJeBnoivuZDk9rg== 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=Lp9dPzTCEHtcejofSAYCzLEXTJW1O/StwwLR36nHrlQ=; b=lIWPZwPaUJuIBU+ejV01HNPZGWO7Efyqc3hR3xtxhF39XE+szpDSjLamD/hFm4tt5PIFjyGwVpM3SIE5u55lXfDo5GepW4uZDr2Yvop/ZqbTUqJ7/Bt/sZGefKlVIo03nKK2phzpWzdsqpJ9WSmurGjog2st1YCFt7SHVfwWF0s= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:42 +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; Tue, 27 Jan 2026 03:34:42 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/7] dmaengine: dw-edma: Add per-channel interrupt routing control Date: Tue, 27 Jan 2026 12:34:16 +0900 Message-ID: <20260127033420.3460579-4-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYWPR01CA0025.jpnprd01.prod.outlook.com (2603:1096:400:aa::12) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e4e1e65-726f-4e64-fa6e-08de5d550277 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?uLPyIUA/BVLJRw0Bw+p0MkgZxiBRI4yNmaDVxyxYT7CGDF0remAfMZVC+QY+?= =?us-ascii?Q?A8VnHpSvHfzgU8s+2+B9rPEJtK3mY4SppenVskrQeTUsZlaCrIGv0EewWjqO?= =?us-ascii?Q?7DKflFGZDK1BajAyFlO7/jN7LQIg8H5omNu3FdfVuz5h464eL0eR74ESxikM?= =?us-ascii?Q?F164fh357Xmq1PxHJs9KKnUqiOHlvHz6JBuIvn1xjYDSxbsdYfREmpjBeT70?= =?us-ascii?Q?Od7X+66RkvnvI4qbE/DBtFLk1VSTXxcAkvWqK5ugMQlc4neVUoYczjYiGpKg?= =?us-ascii?Q?aunkr+EHHxacdhHSbaDeS7vf65sU1AtPhX44hI0fwtCSlDWXAInl3neAwV8k?= =?us-ascii?Q?IJUGGD6T/kirAMWGbX0FFR4aYPXnTcRd6qZ5YiLWEyd0/neKydSc+V8j97rx?= =?us-ascii?Q?uYBFC3ngiRG236chl/MJeSnhxsbTS+iSPs2WeBK3mCp/mQrwKpVnk2b2OofY?= =?us-ascii?Q?U6HlkQ0LYme2Rk0Pz5jMItacoZ9fuDg3xldp4nI9EmWi6mFQ6o39Ls8VeFpf?= =?us-ascii?Q?8IGvUdNwDKcwmR5JUDQ5ASMtaWnm14Waz1wdUFyMTr6A0LnyITXC3uaXYHUo?= =?us-ascii?Q?ugVlu4+w2tlKjnntYFbSBrb/p3g9RPBJLZTYdRKT2BoEu2SzkAt7jYps3JK+?= =?us-ascii?Q?UvdE7l87ehzVKuD1/UTaa5U050Ip/CAEnzgUZKapasa6ofJi7T+FdQb4/gLe?= =?us-ascii?Q?47x7BpDnwHPLxFzg0HcpaELBdaenyga/THoocykSO0gpjLEHAu2rcoMvYs0y?= =?us-ascii?Q?YpwpsS6cfWnISPMpxi/8xImDn2CowCsJNtQ0PozNPPCrQINgoNXdiAmpCilP?= =?us-ascii?Q?SdjSe9BmckQC4ZxYUqZ+KYe8ukLwYu/SgWP3MemfGlpucuW6UkvsdRoCktTP?= =?us-ascii?Q?znn4XvOj7fi6naidu9kWgFFCHZKKTyGyyvHSuMDxLZQmIE3uT8TIPIqdLoRP?= =?us-ascii?Q?/oToRSivZkBYM5hb+Uo4bF0YRRjCYmKfFM0H7Je5nFV5Xs5c+lSW91A6NN+R?= =?us-ascii?Q?0Swcp0jtmRnZTHZcIAWySluKV43xKIs+6tfOSCJg82O18LJ9PF4doTy2fjXL?= =?us-ascii?Q?5sSrvfrjtarF7hJIS3yhlD7YCicJ7T6pIZmE1S5l4HLWARQsiH6rIwvKgSxI?= =?us-ascii?Q?DIMLUM/FemmhAPdhU23j0WrotkgjB2R9cf6GbiMIf0eyiObNvVQ0cOJ0iZ/n?= =?us-ascii?Q?KH+0apwVI1V/PI2d7izJfdpoyXPjiEe+QXuAZzFZ64OgNCUDbOLCxIseMP97?= =?us-ascii?Q?mdOvlYobvoQUCktDSLdzb3GhY70u95Xveblk1O3Rfb4HRRR6xYXxoz4DCl2X?= =?us-ascii?Q?JRkd+FKkq1IsLkZuGLd0nJ0pncNXJuv9Kftequs8/3HGuWOcqe6Xqjq/u8Pl?= =?us-ascii?Q?3mA+IQZhMAkMC5jf7UPV8aHDd+vBqz87u/BSS3seDXYMTmi5+qmJdCoLS9GQ?= =?us-ascii?Q?9UW6qT8CNhQ2fKDJHDGsB5K5MHSbFP+efK6vrX/NgiJL7dUECeWDqVI1hsVR?= =?us-ascii?Q?W+9COAmFf2JClFAsql+BNGg4PiAWGPIiFgzjVM+SvScpUqIJYCR9GeJ7wBJf?= =?us-ascii?Q?HqZv7MYsfmzAKr+7P+o=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0X9pWzvyIEbUo3YfUZ1Ks2z4iSKoU+DLBduDwun6Qn54TNCODONivUeWKaWu?= =?us-ascii?Q?TO5u/a+6BE3VtWrp+/DGCqGYz9g21NdCxKCRyNLxI1HxpLt+unqW176LyHWa?= =?us-ascii?Q?ZD7iC/lHznawL+K7KnaXy0zVR4WA650ZNTR430BGNPxv/uNWm1t98WZD48f4?= =?us-ascii?Q?RwwLl0Pxv6YvhRBj2fut/89S44f6DU7KQyQO0d0hSZIktbpnh0tAwst3P1bG?= =?us-ascii?Q?gFKINdxXfLfNrYobA4Tf4NPFdL2CbkPpQ2BPwYQI/Yys7t7v5LfQLqn6u807?= =?us-ascii?Q?XEOswrHVMAMkDmAxkk1nXLc+impIcukk7DLTgSFblJrjqIpGCAi9xWrfYgYI?= =?us-ascii?Q?pVESMiVgiPi9w4MQXKPJ5e4tAVd+GNLZKXZkVAidQzDtW5K6ORW38ruDBjre?= =?us-ascii?Q?84yteXyz+YPkiuKw8etw8mOth19tgsLE9HMP6PksdZ8bCYBp3r/GCKgs6d+t?= =?us-ascii?Q?+I6NTv9TzsHZWJSGvFcYD1pQcEhIHe3ykgWW/Pr7iazpXPfY7Se/rCZE8GVD?= =?us-ascii?Q?3Oa+1LoiZW+slRQGpi90romOiuX2MF/wnccu9welFv2qUKhoU/2CJMDOTucJ?= =?us-ascii?Q?sS8QNLC4Si1NlShGw36e5YDbU57mXQK8BJS9VUvEmGr2yIFiLzQJ+G/oeh5K?= =?us-ascii?Q?FbgY3d+mH60asD8kBxOycn8Uhvcpsp3ZzuAvZqi5Otp+vOQcRj0fr2B9W43l?= =?us-ascii?Q?mKCqiJfSY808K/S99CNsIrzJrAFEZd/h/JuIm1Sq1xJ9MdAV52x+jpNehXi7?= =?us-ascii?Q?bCLzXK1BxJAW6GrA8Pcf/V1CpK7Zb87kAMCQy05z8xlKnI3eEYychbESOrIK?= =?us-ascii?Q?2XImyrQH3eHnN1sm1avdepM719qEmEfBOIjb7RJI0I8m+rz7fvURJ6AcRrd/?= =?us-ascii?Q?VyVYrWn4xRc7xrcos1O07I7zu1ySZ4ARB7C8O0vyIAOTdtnanZYKqcfVx4j7?= =?us-ascii?Q?X8uhJdPmemrOnxVucoOd5P+8u1HX8StpRfQ0Bk5CYKtCO+PYWK0T8rjUdd+x?= =?us-ascii?Q?W4Xk8lHW2OIRv9JLmqrz0BmuApWXn42mUyx2sdp+A8kV8JoDYMcbC+wu2D7W?= =?us-ascii?Q?XFSN/ppLTh4FSN+gLOhTt/Bvl2h/RfpaRI95tf7dKZfEAzKuARGGBFLfWUIQ?= =?us-ascii?Q?vVOqCN/lduObxtj5NVnfr86/SqeIxYy4LNjjXDUjbn17L07kxTPyxuamKrY1?= =?us-ascii?Q?DXSkPZ74uvI9nYNtyktyqZ49VQbypKstoMS58mVLPtZpPwkJ3q3P4dtD+vJi?= =?us-ascii?Q?tesW/UP7p4HP0IeXvHZJ5nha5kQtjqk3RjdQihbEmdeLYNYwl8vvS0fGE6Vf?= =?us-ascii?Q?8b5f1+Ftd9dVJODSiy6XNDTTx0HD3jqVBbGVirm3wtKwydPGZ5j9hXqqXvpw?= =?us-ascii?Q?TqM7Wp86VknucrM/2dx83Hj0t2WBbHOyZMMgTdTkk8HuO3djlr5pj/bkpJ2o?= =?us-ascii?Q?a+4HRB2ay8+Cykkvo5hIRHEEzrrQX/11iaf0WrYhCk8rZIJZ587VD2mR859P?= =?us-ascii?Q?WpxV7Rdta+ci0rFBOn9xVGkp1KAyClFDk+/79SOF7lj5xWLl42E6iCUxsDHB?= =?us-ascii?Q?lJfEIOOtbKHW58uzzbkTURKVZ+Z70ZphJOYd43nnn84KdplsvnJZ6un+0lQJ?= =?us-ascii?Q?8bdnyF6tzhmw6yOz8D2rhQpNqAe7lPY3fuYRjpmOvh3llPSXI5W1OfspZYgs?= =?us-ascii?Q?9bqaoQwxs5PfPWE3wClV6Fpj5mRXJsYwzsAmcFZg40zzeJSBFhNymUQ3fQFB?= =?us-ascii?Q?WpXVIw37PfxUHOIwV3y/mrrJTYRWJdavQ24O919KIKbxD1KyuLJc?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4e4e1e65-726f-4e64-fa6e-08de5d550277 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:42.8995 (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: B18gbq9EZyHwDHdR4lvMabZvK8UYhTY+P4kv9Pnb4MDyE+qCbMBg94MQNj+7DNhsnVChufQDuCYKCnebhNePqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 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 3080747689f6..16e9adc60eb8 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 Mon Feb 9 01:48:34 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021079.outbound.protection.outlook.com [52.101.125.79]) (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 CCB7B30C639; Tue, 27 Jan 2026 03:34:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484892; cv=fail; b=chbIN39TuLllCUcZN6UXQCs1pi8kzWcmwTNaz48ovSX0wvw8ZXPSTPI3ruI/4TWhJHhD6JQjvl/lhU2cTUdHhpeG6AWWsQoxqhlsHvs7A6W+Uqk/lRnIrFZk3X5P9qzGJfn/xsLLmBtZRsSRLWMiW7/rWynW4DVS0Jed8bz+vLo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484892; c=relaxed/simple; bh=3XFRvZJe7QeWL2MygptgCOjf7q0n4y/fo8zfHbyD6n0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=QwuwsFf+tX5iRwcJkg/Dna/mI/7e1BBO/9QRgidCQrygl6Iet7ZaOFCGhwsTI4fMapxt2ajJz2tZzhmAc9fg/wni7kuy2gb9U8knpY4koCpcFfN5z05NLxcbKR2bEQQJQk6IeaW4IcUYZ7Tu4zXh1p4Z29qHjJHyKoT9Hg+nmKg= 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=O1ijcerz; arc=fail smtp.client-ip=52.101.125.79 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="O1ijcerz" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=I0fONbzSl1CpZfuirrjQ3skhCzs3MQJME7k3+cZBZi1JyNx+n54RgD5ECSCd2zohSuYxJkCMkdwWENoYsZDp6cXmtR8wzO9/F7x8weVpR7D4kZOxaDYDmgFBw92xUrE0TIeZQoTs+bgoPlsofLMFG0tRd8Irrdm4yQS714dFB6UpEI42J4TOzEoRVJeGPEfWqgYyVG+5HDwivXJ52Jrn+OevGIUeWqaYnmg3ELUqrFpJX5v3i8eeTvWQPygUwripqnpvJEmEfRlVPz050YMt+0eKJDQUJT7Dzt8EYVyoVb5KH/sOJ9HKSey+1kbZwb2BrlNnsTQ+fswK+gFPWF6agA== 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=rJXYHUtxYv3WC+NfyEmIhCxgU0T4DnhMWrnH30SkZp8=; b=VvJwpeeNva+rJkveh4AUaucUAqSCCaOz5+hi2AulUpoir7Kx6bjGkUdoR52FZX/qBoOm8K2+cw1Mr2aKHMCjRh+TtT598fg7SMZQ8GkRHYn0uqUgKsEdDcMIcX1T98ydOHjqNVrG/fWuc5cauNnzBwJNB589bWecTwSvzpwchMiPG8YewuQDeKZmimZxQwCqRvlKU+8UWGkZ1MQPreJXMA7cgoyrfspZelTzqhjjpvKf11vFPslxctGtaHSrcbaZRGhOZ3DkRzNvChuHq9HPf4m/rRGMCbk4sa0OhFiTBVLp9SSt+xke3DyudGKxW3vUr83slYlbIz/OIGGW3MUsjA== 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=rJXYHUtxYv3WC+NfyEmIhCxgU0T4DnhMWrnH30SkZp8=; b=O1ijcerzzQq8ymvdk5vUph4AP1ahHVkqgYBQJfzPXDZ9OVakbSvovPlShNnHw6s9ZSbMO4XpQ/p3msoQsRhwrTSqyjomrwCAmycMpHZ1iz+TqNTmLjA2FoqH89oPTabQnTSKwmvW0E7rs2Jguxwjgc+9m/fm9D62ZZya6n0yRA4= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:43 +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; Tue, 27 Jan 2026 03:34:43 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/7] dmaengine: dw-edma: Poll completion when local IRQ handling is disabled Date: Tue, 27 Jan 2026 12:34:17 +0900 Message-ID: <20260127033420.3460579-5-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0036.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29d::20) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: a657b6b0-1dfa-47ab-42d5-08de5d550302 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ZBckcKnDAJt+Nb54T/0VseFrPjRr8L8Wjbs/ipmH2kI2w9QA6oVT8sl9Inn0?= =?us-ascii?Q?656SlGPHNLdNMkwT8riK/et1NM6mHq1ke8nFx03vvFjWh1af3mUHDrCZJ3Vo?= =?us-ascii?Q?cqqzw4Id6/DSY9BpYpMWdjiAEv9TEXH+uyWOv17a/r9hFXDXocsOoXCbL3Ra?= =?us-ascii?Q?G1Nh2OjxVZcEkmuaHjuIjkTkjBalzSBFYq4MUFLbnrY9i9GL+YfQ8O0V8DDT?= =?us-ascii?Q?NapFsalgJibX16ThrEmnEbbvTdHfUnBSagjvqQWvFqnf88UCCwIvk8cE7b6E?= =?us-ascii?Q?Pn7oOA3NnFMeUcMgCZNy7hyDdKXkNcS4BgGXsw6duKLgpjeue7yvVUecZ6ck?= =?us-ascii?Q?VNJvaBef8SvA42cRRhn4OnXTyISnrvN7qBS2QhUKnsA8eQLI2rIDELrK95At?= =?us-ascii?Q?ew5NseyE8xCCOzSgCLvXE53R5ku264Pj+xbw7cM/9IfMOD6Z9lQMpuYVgO91?= =?us-ascii?Q?4mkgvrCUhQ++qcZqfvSSdLm732CS1Fm9lIOtKBnKze8QNiSwrIw1su1hl7Qs?= =?us-ascii?Q?SPKXxSwnb7olIK2yS15wZx7/krdHZLWhEjMGEprV52Y9BduSWrbYxWUVfax7?= =?us-ascii?Q?QUoVQZmgdVQwyWhmmdv3S4dsd+UfTuBQLjH3QgWD+Qhu+1GFvIKtutcupUAM?= =?us-ascii?Q?XmmGw6iEH3tbJmTwzMQjiP1jWEs4AWOAAmkVvgImoE39eZ+JqSm90BNhVHFa?= =?us-ascii?Q?yxTMF2lWR8DcJAoBEkWfFMqqMIdDus8Hx1CaIMob83ObW2hqF8wC6vCYQsG5?= =?us-ascii?Q?FjpvsSAc7UChADS8DV0gG1XL2iGXZLrnltiF+EulXiBdf8UNIaAdzGRF81QS?= =?us-ascii?Q?WlCcNdvBtIm7xvxvCD6ux7Mllx6dWryraBJR+bB2YuHQVoW0ebYexNIB0CBk?= =?us-ascii?Q?XMDMMsNtqiQIAQ5h3Cvgo6oxsSoD5U08fR3Tz/viivD4593gu9ujWblzYm+i?= =?us-ascii?Q?bAfmBQmAHlMFs8XrFnJsbZUhfOLssa69vXOdtpg1unssuSsuTHBETu2VBTb1?= =?us-ascii?Q?6GyLZhvKtBTtrUFOOQmQ5wUVOHbzKI4WPOP3v+AdpC5tuETNc6ViHoY45iHr?= =?us-ascii?Q?42Sxl9PAc1pZpr0R0xS4BK2VrzcB+sKODV6FJe+dvpioGzNT37EJjtsUKgMz?= =?us-ascii?Q?bqAj2rNvbXN1HkbEbKEXJ8MyHUVQNPr0Fzx4edDTkMJsQURqBi6ZblZH1rwa?= =?us-ascii?Q?QKrHT/6Lvx7Xk4C2liKOkJ9BtKEExCHEvzNbpC5vPdE7ZRuztys1qbcewSxl?= =?us-ascii?Q?9a36e4bqIsy++ypXRVcd8lPTpve4QQcw2SAMy5WpIeGtBxn+ndzKwjsqVnol?= =?us-ascii?Q?wd298o3VVpHmcBxOiVuPHhLxAIdKLJnvj5T1aKiEa5vo0WpMluo8U/ZnVt2g?= =?us-ascii?Q?kezKjf6B3nbjL4yxKoNw5nrrKZfAtz8DsFILk0eZnk70rIMHbsMLk0izp7Ey?= =?us-ascii?Q?s1xkkhyp7yCBs3cM92M+DD7AZKJat1SRVHieAYkBMXq49hWRhKdingCsjZSL?= =?us-ascii?Q?kh4rD6U+hcE51bulCeyB5BWqSpCp/m/xFIHnuTcn/3VOntpflMiqu84oMzs2?= =?us-ascii?Q?yKBs2Cv18yIzliFzGNk=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?AXwXq93GL9eALciNW0NmMhHNeez3xpGGr1ewvgU/MFvUMi29XvIdTMHkEkzQ?= =?us-ascii?Q?OwNoA6g3tbG5EaxZAgp4UbeWT1F/wvMUNwfgeIvM/S5GR96ns5QUUj6G0jjI?= =?us-ascii?Q?meK63wtk0lrc5rxKwj2z4U4syhav5nAwZto2FHqbW4RyYZgwEE+xtLUnxqpJ?= =?us-ascii?Q?cxP2BE3pXvDmOBJpMQgFFNBPpZe1Cs3zdC7R6VoQhr37Or9WAQcTZJM5aIlf?= =?us-ascii?Q?R5ZG3hgXrvQb483jmHvRZQWt5IAKRzhm6CVIwRLDzGEFwJrYgbNdtiJQB0G9?= =?us-ascii?Q?vFn+eUQA1Kp7p79Fjdcpmj2iRCrUZ8Rpg8O3TYCfE5w2zIzzi+wjiTCLU2uA?= =?us-ascii?Q?f7rLtULOfzRpF4CvkUIMbh+XRk9rNqBcoIXw3JYsl6JaDN/lealL0ZZws9Dr?= =?us-ascii?Q?m4hbPwic+yhWdI2bdzZcgQaAf6m1+g/jnBGReXDnX+ZIcEHIuIxJBOYK2Ue6?= =?us-ascii?Q?qNEE9BRPSdOnZj0Z16LPd6g5gWsw7pIkJqgE0CabSUs/Jov3jSm1HNooG+TJ?= =?us-ascii?Q?b2gQxSYeLkL8OHRMeA5+IGPZhXMClvPFdH1aljSCFx6qNI9aU4RsHAW8/mNP?= =?us-ascii?Q?7Jo22XhNxzGYBky2hMtVXj0d+YfExG72XvMqNjB11PgybDrQ/my3OIi/nk0g?= =?us-ascii?Q?gC2N9e1gqYzvcSiryCvuZlKRS9Cvxho8LA0KVlrIJsBKoMpSuSUgKPQu+Aev?= =?us-ascii?Q?tB9dAQMid4An7qglX0YofdTmFtXabVc8jLrbGKO4dtWQN8Rb4zWotJSm3q9V?= =?us-ascii?Q?9rREmSraPrgUhi2oYVTgEL0RrOQlbgfsb8hr3g3jIB3pAU2YyGJ8D96EkOC9?= =?us-ascii?Q?LBRlQxvfYwapA5m9LeKEsfWREIldX1HU4d1gtK3tSGNDBNGchJhJ0xDL2p9U?= =?us-ascii?Q?U0DF4WYJqnNAggt3SKmAcrGfXHgkpuV1frkvuS+Xxw/TcT6Wxgyu0KYdnnxm?= =?us-ascii?Q?QZEhzc24aNO8BQZzkRQ65WMHElCK7KdHHmN1jc14OPhEIC+CAiaqF6MGPR/1?= =?us-ascii?Q?m56QCOnKXQdjsOLSJ7xJDa2yPMwGCVZIneUXwJVWuhq7CbAe77y/Y8YXzg5y?= =?us-ascii?Q?CmFgkyx08BJ/Tq1iSpTD2M+2ymgDLEzAO5yHPemEvL6oWq19ly3xxNk6YHda?= =?us-ascii?Q?qiZVmeDfUbDfhVfarnhA+kwtoeLAtD3zrWXTCZmoL7k8NfmSkdRBpJOtrUPe?= =?us-ascii?Q?Zhu7/BnugZ6I9pFN3jK8Y12i4PXLU9u1rc4N2wdVq8RdGQ6W0hwfxoxgvHfz?= =?us-ascii?Q?wFwALBdMRn1ciGlmReQaNCHHKBzflcrdVG+hWNKZ+oc3Mf0b2upwIgy/efH/?= =?us-ascii?Q?Wr3ROh5ySrHCfinNkpi6ZCSVOzLR+TdCr+OTlfnHLdVOy4p0VNrPzr8icpIJ?= =?us-ascii?Q?Ld/4QWlor/fPah4+3vOBzKR1vYFr6c0W5Y22TIVr276DIsQ0L3nuPTeo1OJ/?= =?us-ascii?Q?5Sb3/yXuE1Swxbo1yhNpZHZ2jjXV8Tn0vFvAfjtt+dsZaKrWKFncAm+ChKOR?= =?us-ascii?Q?vAuq9pHdoW6sHO4Uwc3Qb+8LruaETNZv8QRVSE0q+TYVI7Tjj4dAQrzH/Qsk?= =?us-ascii?Q?DORRDTFAsSoLLWGcK+OLGxVrAktgAO6rJjdRtav0ewKvt76e/b/OBz7Hac/b?= =?us-ascii?Q?Rt+ZBmdXA4/Kta8rpJ1bC7XIPq0QT2LYDz+R5BX0mlG71G7lyniNZQoHl28V?= =?us-ascii?Q?aut028ESvL9Q4paIprPcHBxn1RufgLDfouQGGFwWutOINTbLwKEjkBxsWWqT?= =?us-ascii?Q?I+uaicTDMz5PlOAjpT1HHbvTbb1OS40aOMvnppCtbFlSM7Wc2kZu?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a657b6b0-1dfa-47ab-42d5-08de5d550302 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:43.8015 (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: CgLPZNL/H16ZX9BxeDvY3xNSDuuxBKF9pNo+GXOJWa13YygUveELqFbQBHqs7lOSXbt0DUk6qSTgMxtaX+2RPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 Content-Type: text/plain; charset="utf-8" Poll completion for channels where local done/abort IRQ handling is disabled (e.g. remote ACK scenarios). This is useful when transaction descriptor is prepared and submitted locally, while irq_mode is configured so that the peer is supposed to ack the interrupts. Without polling mechanism, locally submitted transaction would never complete and would 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 Mon Feb 9 01:48:34 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (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 5BAC730DD29; Tue, 27 Jan 2026 03:34:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484893; cv=fail; b=uPGrkwJA56lPsxxJA8aez8oTZbJK9tyqVfVMX0J81ILtd0D5eGvCgP5UOuxDlKLg7rpnaNlYLNApZ0ctrxUrBfSVk7JzOl4YY9GCW7VXiwM7c3wrSDMp+rWjSRm1GgCf7V5imrIOBDI2HBDUDgNLdqkxv8DqBwdHqZBZerLvEG4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484893; c=relaxed/simple; bh=4MlGDzQ5ukL39L3sdVNFKpnu/K/OeBoQJPga0XsYri4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=YaA9EQf2tlq7SevSjWqJQuUTxNjtcIpyWCYk6WR6J1XHhuyTTlKnsDvSPMc89pV3gxexOdSVdeWsQgovXhlg5wJt0zyfKIz7CpW7glRv226HH7qfLW2PSISSO5sbMi9jcVikrS/hhrCBgbeqLMhsZu3fpqoE0prbeYxFxLakl7U= 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=jrEegMB1; arc=fail smtp.client-ip=52.101.228.110 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="jrEegMB1" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oVfzWrU7Wg28RoJlMVuFKT4RVRBubMXJx1okOl0mWAHvUR21bDxBeq93WzMgvdsgcBAMTcEB1CDol4k3EchLgcqLp2NBdWQ6AGcgsTbt9XR4E7QZNKWOrCDpUlp/HJHqDO2Zjdq5/m8QGr4bnLyqBM56EGA9SgmP+Cf1xqMIKe53fv1cSUNctkNCOhCfIT8tSKGauI9jLQh5SR3Cw0JM7v8FwGViHGKkk/FZs6L0Zy993bcUUNYnGAfRCx0oBlYKBmMf+uCLPbaKjarmHu1HRXpWX3J3obcMks4GdyRFC48QUn5m1FdgtN9YN2OtcqfRYijjgZ/Xluc+sP9x9s4mig== 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=h7r6f6anFEM8ibuM9Qd4/hNUAIVpt14ASjYOk37W8bU=; b=gMlfbE2XFbP94VLaAC9IXq24MhTRWmJrTkgRq0Byl+yad27uaomrY8FBz6mGleQAPWcY7FO4/K2wpkgPIYRrl8gDM9J4yuhl/gL6jA/N/P3Jijxz/S4G7l2I+ViN89KbMsZSSW7g16OUEAqhaKNepWsy+dG97XuLr+IP7qGHkZThcdsl15IrFt7Cf4zJAGXt3zwoxmaaDCwxkOZ5OP04cMKE8R8Rp+dbnpmRrnvCix/nUzciGh2gg6pzybfc59w6HHE20r8cMX7GYNyJw8Jqdz8rOJvD6n7h4vxlu+68Gd6kOR9UfK6CHflf8royXEAmR9OUqXqv6vtH6KZ/zBQMHw== 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=h7r6f6anFEM8ibuM9Qd4/hNUAIVpt14ASjYOk37W8bU=; b=jrEegMB11vfbccrz8DxAKapTrXrAJQtWOTsc+bvaRUnaipDwavtwaOaY0Rg3PoyOinqJkLugKHQKNv596mz3fjBV36AID4Y9phnGMWdeFDVgChymQF7xS4/qoPDxdXxnQu0B2Xt7go2yYnLAq+V3ZBQ2U0yYtdpwQL49dAEuYpw= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:45 +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; Tue, 27 Jan 2026 03:34:45 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 5/7] dmaengine: dw-edma: Add notify-only channels support Date: Tue, 27 Jan 2026 12:34:18 +0900 Message-ID: <20260127033420.3460579-6-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP301CA0061.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7d::6) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: a34a3361-0f5e-4a02-4368-08de5d5503bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?UsioeTT9xUkk8DJ5sKgXnIiHc7zxyxQLeVwxOAySAf7KKiUprgIAhBH2rw+H?= =?us-ascii?Q?pDOzLNAX3Nz/91Z/yHTyt5fxSITCo+m+nXlJb8eL6njZ034WGI2PBwFriM8G?= =?us-ascii?Q?45cmyy1RRKl7GmnFLjoJ5Gor77CPQuQ6w4xbdPggRXTc/wiUec3ZwKYluuij?= =?us-ascii?Q?2lr3tCLY36GFY8nNG4EZPSXpii54SkonmvCjSxy3rUrZzKxhSr7qdCzI9K5K?= =?us-ascii?Q?f7ZZRUPqjqFzSCC/KWuvj3R9iqOyZ8oC5AtdNH+CvT6p4js8dAmvhvHafsrl?= =?us-ascii?Q?8SqDPtqOQ2uffAmMYOUTfQIcglCCPC/CcVWo/y6wQqleJgBDFb9rK5GFZsAB?= =?us-ascii?Q?wMpr2lwqjp1fK0+pp/hvQuRu0UAVWHGnvwIUztn7VOsf1mh8ktanopaI6DPS?= =?us-ascii?Q?UhNdHfQkqmdMjiTLSV+rWw8ZaX6B4/JiBO9XDh1KzTCfDMiX1yCdgBlalse7?= =?us-ascii?Q?vHqPYJOwgIq8P57LIhSETfCfJoljiNShS4141Qci/fJBLoWVMAhWOaczOXIO?= =?us-ascii?Q?E3vyrsXwwKYgVEK30Df+ZMRYJZ+BWVNRYGMC17qrt12vQDA4xWU2nLqeGvWr?= =?us-ascii?Q?++lEA14ko90S9xOP0O/8E4+Z35X4npo+yAjlfIwIJHUGYtbk0KDj9ihbaD7M?= =?us-ascii?Q?L0omGUyv3mYoDzKZZ1LEKqh/9EE8nc8QLs2joDaJj64n8mz15beGLuW7Nxkx?= =?us-ascii?Q?njVr4uH1n8G0XHrYYBg57FMms2T6lGmy4vJxJWzEFTyBCttOR5sT5qM84OfB?= =?us-ascii?Q?MisHevNdKuaRiI0HSQtxzJHvZ6sBDEMEs7Aonz818OUsC/9g21UTBkfZrIkb?= =?us-ascii?Q?0e1RV/G9omxbg651RRlkrN07PwHlpqsGtc2FT4tjLkP8FuHJG2fgfReNTco8?= =?us-ascii?Q?3JFI0ZAstDTYxKy1P2R2M9fuHmJ83aoEouPd87zRPHEsDT3QnsVNuM0kc7Ig?= =?us-ascii?Q?TBHmmrcZZ+UOalv4faJenEUjKo9/2bSJ+znURQRmAcKPdZY1IX09IFSIFSEH?= =?us-ascii?Q?H2vvuqOCkstl5deo7AMk25FG4W1VnLEXtllshy5SUHTpCSq3lem9US/reQxz?= =?us-ascii?Q?fY+/w57zg77unm+gBJX/31LDHhPmGhzB5fLB+0DVAx8/KhS6YH0hlkHHtloV?= =?us-ascii?Q?FYqzZdzAdStyLFbj9YT7U71ugBanf5qW2Y33h9FUTdte1apgT9OqxDpfvBCg?= =?us-ascii?Q?GlXwjUWCs9wX65+e7X2U/GQ8rp29GRTJX72vxJXjp89K2jjbx9ylP/Z5K/nj?= =?us-ascii?Q?8yjDlv8mcTlx3g+vchzu3rq1d1g/Kka6fG6cJ/FhAmD4L+/xOMKJ0y/g/M/8?= =?us-ascii?Q?IbNAaHjMVIEFOCPPWZGgs4LJIkHOdEgGRQbafmyFGbtjcnh3xUx3qtHuyx1J?= =?us-ascii?Q?+5boVXT/avQOmnpeeFGdwZPvfka/DHc/U5wxoVf0kZLCCH/oLUJn1zehCupS?= =?us-ascii?Q?cbyyjLd1gk++onvlizGvE5SQyauPhSsq0jgiSN72lfUFJN6b8vHZVUd8VVcW?= =?us-ascii?Q?3zUCI5WwJGnJF2qg/aquVDTvvisZk7SpEJq+FS6FLbzlLJsKxJ93pCovYQV6?= =?us-ascii?Q?drYFeDuWo4oKY2FJlxw=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4zm8rqQGstRZNcvKyPDj2VEfVUHhTjTWQr4J6zFrG+rGQXUG3URsSvgUx84T?= =?us-ascii?Q?Hb8tcQ5MCtnguZu9SVnvGP6Zv97QezyrWFdGPb5bj9j8F9K+rJ13vmg036fF?= =?us-ascii?Q?Q3Oq2i97BzcBx1Y1apJHXjAhUGG8OCoimNVXB81KuVxfm1pnYawPhcJNMm9Q?= =?us-ascii?Q?07GuaxA8w/7Pux1EKjeIKwt0PIR3YVSZkSDkBmer2ee7X8mk5t2HURyEeQTg?= =?us-ascii?Q?SjtKROdZYdzmA/s5uqwnNlh3axoD7NYOSvh94nE8mb5S0vIyg/FBhkKFgDd+?= =?us-ascii?Q?abcTH+8Ux/n8EfIvc1V08u8gwFY89QyFOBrhCUSY3xLWjhmu1Zgcz9oilIQN?= =?us-ascii?Q?NUsWtmi+cEk2QhB+LQ/YQ3hH1wMJsfvf7Vg1sJ+dDZ77ZU5nZJTmT4Yf4sVB?= =?us-ascii?Q?9ubWdM4+3Q2e4w+Fb3sTjH8MG8N50CZ902kM72keindIbI8c//j+YPypXVD5?= =?us-ascii?Q?aG+6KwYCBj07Wc8WVwVQkNihP8QSZTGoVUUMPm6wKn3nraUMo9bYYG9kv+J6?= =?us-ascii?Q?88cXaGDpsclt30F6TngnH+IPk2lVjf7tdFJWKZ17a3FV5l35BrHRP789f/DR?= =?us-ascii?Q?2ccfvNyvRlOBhpkxifjAxhu+/rz+SFGI0y523BSGzPrgnuZIEGZgtbNc4Abl?= =?us-ascii?Q?fONCDyJLL6QyS20WChIya7hfSVAaSLfhn9xeMsahNIpBHB1uRCNJ5t7gphVR?= =?us-ascii?Q?j6GIANnZ29rLQs4tJ1A4yh1jUrjwnQSG0+iyeBlU0aycrxJraNbkXFmGel+t?= =?us-ascii?Q?KuRJM4LANRr6U5kOQ7IIHfbDm2Yj8M+KT76+yqpRzIeR5YnfaRklrsUB/rp0?= =?us-ascii?Q?nEDy2OfgnqO9Cq1IImkfWyQrbB17ZTfsJ7WcwKmFAtOtVq93OTipyGAAT0H1?= =?us-ascii?Q?ocz6R9JrN6KuAxUWP0Ok0HNGxJyi5CgadOXfS/HAAlzOkT68tcwjhANkYi9q?= =?us-ascii?Q?FET3Oy8zJXO3+8pVG1luj1HaWl8ITMrguSvOvYt4S+wQOtjWHT7/tMAJupYY?= =?us-ascii?Q?Xm+M2MRSO4XE2MtKo48Ou4NgjL+u2czsCQuhIyzzc8UnmJcq9hyMX8hScgES?= =?us-ascii?Q?mmkKq809hQQHT36qPEESFTnLJn3eHfrnMffkQI5hxxri1vymFA5gx+OytCU2?= =?us-ascii?Q?1mZLSERUbnMx3SGGvUZ1NDGpFousetP81s0T3Wv8bGl91WENJicMEtwpo5GE?= =?us-ascii?Q?xM+Z98VNJTKtfA3dM2DFWZQ7qrNgKT967PpXOBlQIay1DUkw3BvhHUoFmY7W?= =?us-ascii?Q?WDlyoapkf9b9cJ9MwRtY7FVP6SBloIDwReHHPF6bUpHeXNMJcqOZ6ZcNAUvM?= =?us-ascii?Q?P4cxHjop5Dn45Amwolz2Z2oIEwaz6v7x7scRvJt8r5VQz+hMvqy2BRHgQ0+c?= =?us-ascii?Q?VdV6IlPwd153Ty2WLtE5jHZDkqgQ3t18FnyEvwi/aH0r5+/6Vlh1eA0d/K6I?= =?us-ascii?Q?EyeFCLfBAvMMv2rAo/KpAPHmt3ye2rTzb36X5h8iVUB14o7jj77jpr9KmbKu?= =?us-ascii?Q?sv8EvyPI6Y8pv7H62BFYvTllllUX3LtPc0m2nE7drprWR+OoX4OjWtGcPpDL?= =?us-ascii?Q?wYdlG0QWoe1NVy+VzPOvbXCsIalJLiCakFe1LADiUmuQqv0SLfKzbXcajyXP?= =?us-ascii?Q?z0bi3ktSeda5Jk4qx6ZBLn3z3YToUJzKjn/OY12oUmJhrXGyZqABL73knAe9?= =?us-ascii?Q?91+TrqIVzbau7EFZEdEqhTIMZaNZf9Se/TsJfMibO6y3h9eQLTD3Bv/wRBwp?= =?us-ascii?Q?jEnYXzMZRSm6JRk+UoEXbvKUbvw/naUkjrqqNt8SwAw9Tqab3gcq?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a34a3361-0f5e-4a02-4368-08de5d5503bf X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:45.0219 (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: I3afTF6J4IiGbU1WHw6q4igzUyH9KlYcNvWIi+FJvb53LkmkZquPvazlFAg2mGyvLeEQBwAfCqZ54uvMYUXqvw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 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 16e9adc60eb8..35275576f273 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -133,6 +133,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) { @@ -143,6 +164,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 From nobody Mon Feb 9 01:48:34 2026 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11021079.outbound.protection.outlook.com [52.101.125.79]) (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 4C21F3090D5; Tue, 27 Jan 2026 03:34:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.79 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484898; cv=fail; b=h1QACB2O6+xtRYKjlKGGyIOQFdXKgKLS/lHB7iYafOrJCeDzVhJ7wJKpSF6boFatDqo0WkJsxXHUET8ZbRpyEfKARzcO1CaPp++Empj55hKcrC9t8ssq5cUT+bjxeL9k0FdxNPDDY2fjhpGEf4E9hFFwPVonMI4bNLax+NGDaVU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484898; c=relaxed/simple; bh=Bf2Ec5QBUM8LeNhHeGkTL8aWtbuHrkT4Rc1fBrLB4L0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=f9E0mOMlZ3ik8nGDqHizSt/ONBVM02PXt6VYI5ygixxTa7YjkivHHLovk6MgSpzqlsQYTChz4BrfaDk8GjDyn/OG/OUuyWskcqAPpdU+4R9TbmhEN3CUfz/64ovD8qYOW+K7PWNy5W+fJeUXVTTdHBNqRvUXQunouVf6VnQxcKI= 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=UwZWXIzq; arc=fail smtp.client-ip=52.101.125.79 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="UwZWXIzq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eNTOBBkuDFL+6103qtvNIBo542cmafrjRDviAo4BKra7IJC1sdkSBxQYz4KzriFxbwi+f5mtRh0UB+OrRfI01rx9kU3LJhwZG93PMA9RI3sw4sRidXLby7WW6vO5sY2M7jYhZ85Jp9pVNHoAVklvKGwtORDdaI0Qb1+EkQQZpyfmw0IP0EuU6ON9yrUTDurxCxNSc7mpxT0VEVGDN99+fBkf8Z3RPSClKjtRf+0tDl82rK0LlYHGbaZu/XFUTUXhFnknOByNGXlvok2nWKXdAv0UpgGhedn5fmE4FLw7Vh+NhWsgGMES0b089KueY1nIGcWuwdZtiCN/SuaJ326vnQ== 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=GF9A79SBr+lIwHNoh88aFS+QAwTiruwaGBVdzONKrCk=; b=Wk7bO+dYyZj5z1iOTd2sQ2oCRqz4VlxmnYijfMSIlvRHawDAPxHlhHiC6U4mbJthh0sjptq85/4ufz5siGj0ewdgq47ry8+sqEDisF6yqsrbscItqmN2aLUSVErbsKpNEEJiajcMr0qGhl8Fv+fLds8yhvt/0jXmfE5V2/K2GLUg1d+D2PKNQAa2D9/M3xahwN6aIQVqieIZRVFn3ku25+x0vagWbbueL8RChMN8cSITp4THr4JiuQV5Y8d+1xcC/J+9E6p0IvXKj3CGVU6aGjAniL1CBwQvhJ98+2lZ9OtS3KpzPxOkaZIbKZReF5IwuG8teOeupzkHLcH/OU27Qg== 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=GF9A79SBr+lIwHNoh88aFS+QAwTiruwaGBVdzONKrCk=; b=UwZWXIzqpiJhlvmA36exSNa0w0OW7mgT3rRdUrJIAgwsXB+FGac2SSM81NZiu/Lvi4rwxLOomGkAalgnnz6v9arkMZAOqcuNLAi92TiJA48fMFXv1s53S5XkSdz4o+dyXkEDwOq6F2LcDpDsQsQl3blVvSKmZq8FiVNMAE3EZR8= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:45 +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; Tue, 27 Jan 2026 03:34:45 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 6/7] PCI: dwc: Add helper to query integrated dw-edma register window Date: Tue, 27 Jan 2026 12:34:19 +0900 Message-ID: <20260127033420.3460579-7-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0074.jpnprd01.prod.outlook.com (2603:1096:405:3::14) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: bb78b95c-4cab-4169-9203-08de5d550444 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?P2+bVN3ui4zxIepFcXD1uXo8X2MArMNzVEFafyojwrhdk7k3nQQfcKxyPfQK?= =?us-ascii?Q?DWePUhWsZNZLoXcKEBWJVjp3sENpsnuw6rifvDUw1O0R9w+9ThC1HPhVcTeL?= =?us-ascii?Q?9lx2Os7WP834vdOdq1d3e4iTmrbgi7bdJQoBICz78T0Jb8lKj90z8+ukFhwQ?= =?us-ascii?Q?bSYzghkBP5494KNvqqSYh5cE5WH5YxF8x0G/p1ZB6UphZcN2xrO7CmZKCrRg?= =?us-ascii?Q?UJkvev4AIbPNhtQ2ZSKw3geG0KmLAk6P8mgMMelIWpee+++eeiZUwklTfRv5?= =?us-ascii?Q?kLs4n0qoRy4IbP5DgrEltBI428uASYxQ1x1KhucDk1Fy2dZqeGsV4fMo2Em0?= =?us-ascii?Q?RUKTqGv5MGIt2q3gWIOG9RgOiyUFb/9MQFtNfamJnm8qez3b4lWRRgx4mpVg?= =?us-ascii?Q?9ewl64F6p3wHGw/coAyqg4CW5dBHs5xJNmTcUCDIYpcqnWBnsJJF7bJChq3U?= =?us-ascii?Q?4t0C8McPhMp/Z4sTuniunoD2ZVzChd1vMirhefzUxQPOegQilQvVoNKRd8eD?= =?us-ascii?Q?F96NtRhKfUhLm6zULgN6kW6a8IgePi7AdrD17yjHcokkPDFo9Ksp9cpYzbTo?= =?us-ascii?Q?S6a/mVb51Oft39+uVfAnoj86DtvXiBbEkgN0D+N45ngcUr0Of3JJ8zxUCMCc?= =?us-ascii?Q?5U/GltWVcAWn6R8BFTjq4ULatdzptPb0+1V7tHvkvXU1swjk98rDVjJmC1Xs?= =?us-ascii?Q?plFmWeDOFi8hOP9WOa4ZlgFRxPe4iAZyh6CvtJyCv/nsyjkgGhEKXV0DohNQ?= =?us-ascii?Q?olhvBLUKEqo5TF9zSOo4wTKoIInUVkLldP+trAklw4cR6LJe5mCF5e270Isr?= =?us-ascii?Q?jpP9Icv71NsSdpgymZvXt0Y0lgkPxMJLwBNA1+vCxvYhzJo4cEaWfdIRfofl?= =?us-ascii?Q?iQryAFAZYLud4yIBBAQK2NE0CDg8CDuUzbQHeunrgpyGVgijAwskil5RU+1H?= =?us-ascii?Q?zKcKk78DXU1WRS5jd4FMvAzfJAnxNqphCwGWbRfS3fGCqY0jaoUbRYxi4SiZ?= =?us-ascii?Q?KsB9NkVSfVZI7+aPexeFWev5qhNpGvvOdGRfqBfHyv9AuvJbSuNpcrjhQTdS?= =?us-ascii?Q?5+8gRD6DzofwiAh06lDDfKHFSgVe17OPor+iWLFH+5hJzd9qpx5xqau5dKTv?= =?us-ascii?Q?YQtCtsx0Sxsih/8vWqoPkulq/JZ5dyF/sDsBnAWVRk+fSGM7mCYbgtS75A/w?= =?us-ascii?Q?qfSucpSrNmHkQhFjrB+KFcCMZTmYFFk7JgrPydCsedU9+SrOsHnjSt/2T3sD?= =?us-ascii?Q?9H7VSdyizbrXtlxIMciTRtHsSD108x/QZCFZkn4Sa9WA5NbTlhSTqZqRncNH?= =?us-ascii?Q?MpFtuPV8AWdlxtE2iidXqxmOVwY3Ksv36mdak9ylopk/PBLUHNjUR9nG2ZQH?= =?us-ascii?Q?sl+jgteKJH9uK/Z46ZqIcGIptXqDNVputqZsHpXkQz28Smg1ROimNM+tTJhH?= =?us-ascii?Q?21P0HFzvGj+fpgEETGfcpnyAYgceC5cY+NRKaCgvrnm7No9Tf59uawV0jdQy?= =?us-ascii?Q?bt+YD+3xdGEzdXJiJ05EjC5CYcVbOkMCDqAW0/pn5CSvRV2Uk7Jpr/K0Zb8V?= =?us-ascii?Q?zLkNeZ9pM4d7iE5cizA=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SYYXaq/qdDt3oQrIyeO+IE3DnV52GM9ZNX672kAICvln3VTxLlBnCZUpR4VF?= =?us-ascii?Q?W0z8gUt2ag+ehlPRFqjvchQRAr+zWde0eD86Sd84fseQlhDP0fMMe4f/Mga1?= =?us-ascii?Q?IsG8sUCgfPaSmoJL91eTv7WaolIAVPTmxKXPqEN6S4Zl6foI91vVKMR+BWNw?= =?us-ascii?Q?IMgu3eB86QuaOm8YgeVShdkYf9sTxTbs8Bn0YjAWwmkxaZyIjp42YllYO9Cl?= =?us-ascii?Q?9hp2MB9vDSBftI3vANilZiACbn1XlH3RmswdX2FgzuoE37O+BWFQ+SwSBl1I?= =?us-ascii?Q?BrcGoTHCUIlJaD6PAK21JpA8Ru8Aw9tfkDPT+R0EstQPgJioyiRgdVsmmzJY?= =?us-ascii?Q?GLDYA27OWyulWDSl/01stiTi9QnhswqShIUTed5kEqKRKeq30n9z8w+FiKEt?= =?us-ascii?Q?bLD3SA/Ff0KHsPTfIqEWSO6+2Bzlx7xJtVtveWs8HZdBuo36fc3QQXd0HtTV?= =?us-ascii?Q?6nCaI8eOxrLQZ6hop/tkb4nNAlpB/zDF6oLOQJvfNDhiPKYddn14AXOsTAOo?= =?us-ascii?Q?KTgr4CU8mVn2D2ANRg7T/ThDnO3AVaGezof76BC9OmLIWgvB/Ts3HYPCaKhD?= =?us-ascii?Q?r0F2FvAcxR+p6mRJbdlBqlfW1qOqBeGyWcSr7VyHEgSPMSWvkl2JZ0UAnP+f?= =?us-ascii?Q?4Cx3ul/D7n7QY7X/pVgU+UAAQI83qJknjY1gr70mmLfsWEn61SxThNmlNl4r?= =?us-ascii?Q?MmnUsVEZo5GxLI8zNPNITAM0nZRDiX0CUWR0LqTcgJEgI7sMF3uWUvoMJxio?= =?us-ascii?Q?JQqR2zOy/Tkf8X+zivk2Y/wFkoe5Rvdo5ueJost824BcGRMHVTP6rcjrq1G8?= =?us-ascii?Q?9pMnc3cFmMOqeEU+wx5AHzDn+0yHaIVDkVuBfAUTriJjUJMxvpVk0Je03uas?= =?us-ascii?Q?cr4KZCKKxwqbrn1jHfDPdF1GeuJcXLSuOnBiyarQcotQvdtDqzdRd9eXOGru?= =?us-ascii?Q?Zka8SByIPlgenOO7Cd/23JOCujWvAA8xJq3fOGZuwMvZmMhU3talo7ftX7NT?= =?us-ascii?Q?laouM83YsDdSGyoCV3Kthw7bLyhrxcTWcrkIenj+tMqSce8IAGUe8J6v1MdV?= =?us-ascii?Q?KBKcMxEWSOhQEQw7psZsVI6Yy/PbI01CxAyd7FcMq5N2pvNKHor6eDc7dNt8?= =?us-ascii?Q?gJSzvBI1FCAxhsUbsuWG4XhIYyX/IsOf7S0EXw2PPuBpqiQ7mSSIwiGJpE0o?= =?us-ascii?Q?EIHRZfcMfX1BFn2e+G8GEM6Fpcv0ihwbGm4R4goXFJbGzC9Ejk5qy1GeV8ax?= =?us-ascii?Q?KNTwOdhiKYgoWUpSUtbqQXeQDgQ/r8xJtDVSaCAAyoYp7c+6Pdtmu+qHevhT?= =?us-ascii?Q?8mdO1wdXc9iPn3Sj/aydTpNd7PKWdg2xJW39m0z0znIFq/X09tu+BsZG0rKB?= =?us-ascii?Q?bD2fQ8Zoo4iMD4AA2Z2Q7MSC3KjQtprhQtHyskUFqIEiz85Rn0Br1YeTDrTM?= =?us-ascii?Q?8BX02orqZNTZFOEJoUKFgLogr1OitOxY+63mv9Tp7MHg0KOCV/PPoZGKO95p?= =?us-ascii?Q?SwUdBGdiGnPOkp8py3j9RzztJ2L96wTAWH9G16AeLYhWk9vy/ooDZPHDlXqB?= =?us-ascii?Q?Hp1rBtECLPg76DPcxG2+L+ZEsxXIE0PtP6+DDPMne+7AU9bW76HBRjj2QAi7?= =?us-ascii?Q?uT1DLfmIGQ2VrnJavtPE9OjToL3m+YwHCGq4FiXaOPLRmGs9NfspcU+N43OR?= =?us-ascii?Q?lgiO2H8QinQ2aJ/NYCjDF97MAn4YSlWEiLOnvooCEHuDLUeTSb3lqrXw020A?= =?us-ascii?Q?2zsH7+L0UVrKj/EzmfY8hqd+S36YK8aCG+kIutAKRdQ+eNEP85xH?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: bb78b95c-4cab-4169-9203-08de5d550444 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:45.9033 (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: jKLKmoyEQXp025ZoMaOcrTJvW/0ZPjL/QtvYhKH8p3P7R3mtC1FgBUiI/aABiuOzh6n9WDBPaQvzrwLgAi3t5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 Content-Type: text/plain; charset="utf-8" Some DesignWare PCIe endpoint controllers integrate a DesignWare eDMA instance. Remote-eDMA providers (e.g. vNTB) need to expose the eDMA register block to the host through a memory window so the host can ioremap it and run dw_edma_probe() against the remote view. Record the physical base and size of the eDMA register aperture and export dwc_pcie_edma_get_reg_window() so higher-level code can query the register window associated with a given PCI EPC device. Keep the controller-side helper declarations in a dedicated header to avoid pulling eDMA/dmaengine-specific interfaces into the generic DesignWare PCIe header (include/linux/pcie-dwc.h). Signed-off-by: Koichiro Den --- MAINTAINERS | 2 +- drivers/pci/controller/dwc/pcie-designware.c | 29 +++++++++++++++ drivers/pci/controller/dwc/pcie-designware.h | 2 + include/linux/pcie-dwc-edma.h | 39 ++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 include/linux/pcie-dwc-edma.h diff --git a/MAINTAINERS b/MAINTAINERS index 5b11839cba9d..fa0cb454744c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20066,7 +20066,7 @@ S: Maintained F: Documentation/devicetree/bindings/pci/snps,dw-pcie-ep.yaml F: Documentation/devicetree/bindings/pci/snps,dw-pcie.yaml F: drivers/pci/controller/dwc/*designware* -F: include/linux/pcie-dwc.h +F: include/linux/pcie-dwc*.h =20 PCI DRIVER FOR TI DRA7XX/J721E M: Vignesh Raghavendra diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index 18331d9e85be..bbaeecce199a 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -162,8 +163,12 @@ int dw_pcie_get_resources(struct dw_pcie *pci) pci->edma.reg_base =3D devm_ioremap_resource(pci->dev, res); if (IS_ERR(pci->edma.reg_base)) return PTR_ERR(pci->edma.reg_base); + pci->edma_reg_phys =3D res->start; + pci->edma_reg_size =3D resource_size(res); } else if (pci->atu_size >=3D 2 * DEFAULT_DBI_DMA_OFFSET) { pci->edma.reg_base =3D pci->atu_base + DEFAULT_DBI_DMA_OFFSET; + pci->edma_reg_phys =3D pci->atu_phys_addr + DEFAULT_DBI_DMA_OFFSET; + pci->edma_reg_size =3D pci->atu_size - DEFAULT_DBI_DMA_OFFSET; } } =20 @@ -1340,3 +1345,27 @@ resource_size_t dw_pcie_parent_bus_offset(struct dw_= pcie *pci, =20 return cpu_phys_addr - reg_addr; } + +int dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_addr_t *phys, + resource_size_t *sz) +{ + struct dw_pcie_ep *ep; + struct dw_pcie *pci; + + if (!epc || !phys || !sz) + return -EINVAL; + + ep =3D epc_get_drvdata(epc); + if (!ep) + return -ENODEV; + + pci =3D to_dw_pcie_from_ep(ep); + if (!pci->edma_reg_size) + return -ENODEV; + + *phys =3D pci->edma_reg_phys; + *sz =3D pci->edma_reg_size; + + return 0; +} +EXPORT_SYMBOL_GPL(dwc_pcie_edma_get_reg_window); diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/con= troller/dwc/pcie-designware.h index c3301b3aedb7..cd38147443bf 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -534,6 +534,8 @@ struct dw_pcie { int max_link_speed; u8 n_fts[2]; struct dw_edma_chip edma; + phys_addr_t edma_reg_phys; + resource_size_t edma_reg_size; bool l1ss_support; /* L1 PM Substates support */ struct clk_bulk_data app_clks[DW_PCIE_NUM_APP_CLKS]; struct clk_bulk_data core_clks[DW_PCIE_NUM_CORE_CLKS]; diff --git a/include/linux/pcie-dwc-edma.h b/include/linux/pcie-dwc-edma.h new file mode 100644 index 000000000000..a5b0595603f4 --- /dev/null +++ b/include/linux/pcie-dwc-edma.h @@ -0,0 +1,39 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * DesignWare PCIe controller helpers for integrated DesignWare eDMA. + */ + +#ifndef LINUX_PCIE_DWC_EDMA_H +#define LINUX_PCIE_DWC_EDMA_H + +#include +#include +#include +#include + +#ifdef CONFIG_PCIE_DW +/** + * dwc_pcie_edma_get_reg_window() - get integrated DW eDMA register window + * @epc: EPC device associated with the integrated eDMA instance + * @phys: pointer to receive the CPU-physical base address + * @sz: pointer to receive the size in bytes + * + * Some DesignWare PCIe endpoint controllers integrate a DesignWare eDMA + * instance. Higher-level code (e.g. BAR/window setup for remote use) may + * need the CPU-physical base and size of the eDMA register aperture. + * + * Return: 0 on success, -ENODEV if the EPC has no integrated eDMA register + * window, or -EINVAL if @epc is %NULL. + */ +int dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_addr_t *phys, + resource_size_t *sz); +#else +static inline int +dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_addr_t *phys, + resource_size_t *sz) +{ + return -ENODEV; +} +#endif /* CONFIG_PCIE_DW */ + +#endif /* LINUX_PCIE_DWC_EDMA_H */ --=20 2.51.0 From nobody Mon Feb 9 01:48:34 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11020110.outbound.protection.outlook.com [52.101.228.110]) (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 8A34030DEBB; Tue, 27 Jan 2026 03:34:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.110 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484902; cv=fail; b=bw4cM/AFkzkWRXnv4/cmUlgqW5Ne2P5N2xGC6qYokG3UxZJHLgOGWcIS0iOdnUCa2TPYrMt6vc4b38iwuODupiO0X564e1T8Cb42maUcpe/u4s0pxGlgjyRdEh4TG1QO362a17o4AY5yX9VrfBF1TDqPJGwvWihnMTagI7KGnCI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769484902; c=relaxed/simple; bh=X5h5KITbnLDUM5vZ0sjOVUR+jOI60EWRavInB5R7VHQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=FrYPnWD9ddWquL4Qs1rNrBBddAWq5Oc+n8LXt3We9hzWirDaqW6gb+eRDZHSiWzi2MQQduTL+TIHVv/9rtiQhvJKnq4fXfdJ5H76JK/LOGnoTNjqqZZLC1SVwaZ0gpYX6bgYaIpWXakoP3a8p8QVHwZZ2zpMUwon6QcLazNHWG8= 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=MbfggSc+; arc=fail smtp.client-ip=52.101.228.110 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="MbfggSc+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=b1wlu9kmlV/Lz+sV1zcgC3ZAXx4iKWlMOKGLLIRe3zDZeudwyg/R4JJSgTKYmGNny2EVjVrGOy1mRMZmM9dlnBz1bDKbp4kBjAr/B+Tz/nQj6PGHI66nsILukZAU4yctLFJ13uxUb5bKnQPIr2/LV+RveiD4XqRSce/Dk80zz9x/hwy/wAZdJ/Y9FQG5xRARLaRbVbk4Bk2sZ0Hvg/WIFhOIZisJZaZS2QkuV4HIlPn2SInHXbSUiEqzGs/MKIlcPW+f+nG67WxglkealIm3ywQWC5u9akbMjQE2bp/1UDQrAtSOSy2GHeWl9PC9ITLW4R+swK1eBVPbfJOnb6eLiA== 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=Dn2+gl/ceTIgMuy3VSaoxy3zFwCS0PCmo1sp/rz5C5Y=; b=PzznaX7P5rQ3GHeaPmdoK1p+yilw/k3rfvUCuF42lRj5rAQaMLTNhrw+xFtffMuCYXkDaJAqZtXKkNdOYaV2hS+a7RCVeDt+z33iKE1syMUbsAbHakiCZhnGZ5rjWT+euZWUOhWEo7djjdRyDxDNonnoPPl5UOrr9twzhCgazNN6zZj5jxczTCqAl0qYDK3ZsfwM1Ngqck5+XIiaqjsD3uc/GW5MgNEbxPW0+lv4IVOsNogCzArLFf6x1wFMb7ES3hqNoj1OPKl9ty6PVQHtUYLyg3AQW6AVcIX4V6FtaMr73BZMIjj3TF/7X72ONyC5L2p0Wi00g6f49quYGoGLRw== 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=Dn2+gl/ceTIgMuy3VSaoxy3zFwCS0PCmo1sp/rz5C5Y=; b=MbfggSc+NiSH+ahWo/mZixtfWgY7hBWkN0te47K35M0APXDQ0qCztXmy/WMvx63fXBKs7ga69M5GnxHA70AhPJX9usIu9RMKqcpQ9sh6bKQRcAg8N9mFYLWr1gVCX3wIRjZ1dHcDZlYvX8CWzYQgi/pYbCBgwBuGSpmdLEZWXgo= 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 OSCP286MB5626.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:3c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9542.16; Tue, 27 Jan 2026 03:34:46 +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; Tue, 27 Jan 2026 03:34:46 +0000 From: Koichiro Den To: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com, jingoohan1@gmail.com, lpieralisi@kernel.org, kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com Cc: dmaengine@vger.kernel.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 7/7] PCI: dwc: Add helper to query integrated dw-edma linked-list region Date: Tue, 27 Jan 2026 12:34:20 +0900 Message-ID: <20260127033420.3460579-8-den@valinux.co.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260127033420.3460579-1-den@valinux.co.jp> References: <20260127033420.3460579-1-den@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0036.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29d::20) 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_|OSCP286MB5626:EE_ X-MS-Office365-Filtering-Correlation-Id: 33f60840-8b3f-4196-c671-08de5d5504c3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?5+72IdPKyI3pqYzxiwCYO/0cSg+Kb2j+aSDS0Z7xVYA0Zkmv0mBWgOLJ2Jr1?= =?us-ascii?Q?iOkb99KcVh3Fmo5C4XKVFu3W6FEZR6PV9tPuI0wasJ2mNpDpi5wVg4Og1EEO?= =?us-ascii?Q?P8YNN8WCwdTqaLCDQV3J+9K2C0uCs+xve04oPTfsWC7SRY1ABdLijorigy21?= =?us-ascii?Q?1aAValrnyH+jXUH0iU7ZtPpTx6JJA4DEyjep/oG2GyUN/lMvX9DY6YIalYbc?= =?us-ascii?Q?LJvvbh6rpjCipgZpeBjugSpzv0cP4vPFCZ1JauB6T0WtcPTNGGRhqmgxPC75?= =?us-ascii?Q?qlEcoLQiPZs0WBNN/TlLuFYpJUNpo/dflhmzxniKQFK8pTuvFWdm8wH4KymC?= =?us-ascii?Q?nkLkLu3P1CUpgeil9P68Vk8UrU3wNTCXGo4xdv9KG4kYX5CvG9j6gCFC3neQ?= =?us-ascii?Q?kvgL0cOzeZ3CNf30BBqrh2QLi2EI4MPS89WGriGlwgQrjXWh6VqKlHiXNz/P?= =?us-ascii?Q?DFkvJYtPpgMFdZrJh4sgygIe7qjDB0Lkd5xQuI5u4yuErXlRuEdH9RNWNUT9?= =?us-ascii?Q?bjAwxlhgQeNSizNz8ucUmvSh/C1B5NYvIVZdplHDvKSOxuF+NtFVc8bVLEZ5?= =?us-ascii?Q?xbgCznaSZeNoJexTvOWbiuLv6XSAuB0pOx3Iggy6ldsPoltGoaK3RA2SMVSw?= =?us-ascii?Q?QwRNQkMU4cwZErcDDyAsA0uk//R7ES5fFbwK3A7wRaJ7Q9ioiRUHqEaVrWGA?= =?us-ascii?Q?OH3/6FbjnwiLAwS3aVMkyWLwxDi8B7/WAoZ1Kv8E4fsx/3Zb6dgcDfYcq5BY?= =?us-ascii?Q?wakSYhPWpPBdguFq2KIRxpcf3OAgSOcD2YUGsaduC2JLe1EZNNAVvjBquSQX?= =?us-ascii?Q?gKgKkpHDVa/BZMm26CS9rRpWRCPgAYRR+fYL5ssKug+kYOV45mRCLCBWwzqu?= =?us-ascii?Q?ZjWkThqOQtH7MVXXXM1f4jmPkOvR9wRQIMH4FnZ58yLI9bwqhKBQgEQFwo5U?= =?us-ascii?Q?kQLpqilnO5tkYzYP1p+YlCDG0+P0+negyRZpJDujTBsE7DgvaB/x9k4FNxqi?= =?us-ascii?Q?CUMGQrLqDLYhM5s8LXnKEOHEi4XhvbUohxAiLajrtyexyvZacHdwOlUA09Bg?= =?us-ascii?Q?SwaxmK2L7kAODmxCf8FDHSHZPy/vweTizTwHbTXisekFQkqkiHviZ0ZO25Mf?= =?us-ascii?Q?DEvLfK/5vk6B9j6H+AS76Clz29/IfosO7773drjyfuIB40A4TBhmGu6C4gbh?= =?us-ascii?Q?486tzdCx+oAEQrXBA9Qbbi8Oo2oOde0PUyLGXg2lfGacmnnHI+HZXMHKmvif?= =?us-ascii?Q?ZSoF2Uub8vg13ndLch/WOR5+LyRdbbrcnQRXh6RDw7NFjz5JntAV3+xc+VtB?= =?us-ascii?Q?VbYm3DSTXciPOBYgXzD7Kywht1AqyCshPyCj2zpmq8I5UG6V0xO9NV9hnBFk?= =?us-ascii?Q?OBcpD+vCOsKgP+lG0VOujMRf5HaNODhH36dnEMG6gGGyRA5eutZs1oEQ4SGR?= =?us-ascii?Q?jP4DCVfcqgIHzoNQiTcZupJO9xR88Vz/xhjaMZFuQELAUKCV0UTxtgHyxxaA?= =?us-ascii?Q?oono9wjtxjd0dX732ec6LrHwB2XZN50yC5/cTfeE7vgHEnLhU+055JgQdDVA?= =?us-ascii?Q?oV8qALSp6gVbvDEqKaA=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)(366016)(376014)(7416014)(1800799024)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?wBVtJMUCO3YUlevdSF0vLyf0Pc15A5nyBKz9WfWCiKgOKc4wdjlughK41krc?= =?us-ascii?Q?RkOfnBRnimunFneoz5jizSKGXH5+y0v3tiXn4+ybUx6TT/7Tr782UepUOFK7?= =?us-ascii?Q?t1xoVdwIounzP3PejvrG53YIuA6MM4iPwf2U2mzRxMyaWpr4u/zddpuXyZd9?= =?us-ascii?Q?LLeMvk9ghRZ27JqvGRZBSdn9AB0LRaEZ7UohVqGoF6p8CWcl1ZhC9I3+iqEU?= =?us-ascii?Q?mp2/oE/glHsPemHOLxnkNJSzWPKMqPPCx28HDGu+kE3Lm48OzAQmgKekvO9Y?= =?us-ascii?Q?mMskhVzY7dMAvwBWcqgf69NvGEbXELi4SiyYu7nwqqC1aAqlx1+1lrBxI6o1?= =?us-ascii?Q?5ZJqlvi7m7izGbead0gFUvXAoe5AV6ZUW2zDKYxcS7wLmcjW44a6g50wnsPS?= =?us-ascii?Q?tsMD9rXzG3xiSu7DW+2xKSplEPxdaUzP1XlRt5huKqKa5MFRxhckKSwkeYUg?= =?us-ascii?Q?fdOMukPQe9b3+Chi47fe9tjMZ6ycd3S8nw8ZKUwFGlLrxu07wjdZHR7dKE6L?= =?us-ascii?Q?ZgHkihxXvSvPOLCQyp80WPu+CJgaKzy8GNfS59Y7DJn470QjcT6lyolDWDLc?= =?us-ascii?Q?EIG6d4jz4pNvIN1Ur9rh4k89xeafZXlZO9BO2kJNQ8K/7sqCcavwEtavv+yL?= =?us-ascii?Q?lLiHw+Sp/Rbhqoif16FyJFowPwKJvac7WKscs7Pn1r8qSUWOU3gATuZ1dwsw?= =?us-ascii?Q?Gzht3tbAOfLYqzWHd4k5BCsSctE/hJaMghDl3QODo8TQBuL0RMiLRgehwLsS?= =?us-ascii?Q?Skwfdh60BYWqBycvVK+9vB+wk6XtYTOyQ5UoTss0cmeN1FDXDOeBDFfhewjx?= =?us-ascii?Q?HcgCsmaCEpTFIErBb0Oukmn9/exG/jCSuxqNkFbZv/NizWBw7jPl3ENYWicA?= =?us-ascii?Q?AErO3HCGxGMFUE25pLgz9la7TGckAaPS2/054aIyk7kMlP57TGaY+q3dGWGY?= =?us-ascii?Q?FkbHY0zNOiRc5NdL+9eCLvH7KuuF1MKZQojuB3G8wDca1wIeETTttXcsGJCu?= =?us-ascii?Q?n6G2Y4R0+OjhUtYOQIlWoOIlt32qCzGr0+YeHZiWDqQBurWbWVrLDqd3x00B?= =?us-ascii?Q?QmhBrUE+sZI0kYvNt8FL1aZy6r0/xrfpoVtJTb8uIUuErwtZlWq7AGhVIuGr?= =?us-ascii?Q?wLe7HpkLjT6KES790eFmCA3XmyccSEf27zYzNBLMua1GsF4i/REmvR9e7wKh?= =?us-ascii?Q?AwFXUCdITNh5WFz2790Mr8zzMr91gXoYFbgRF3BQV/Id1JZqVT0ny4+YI1zy?= =?us-ascii?Q?mQJARQrNhn5f59cSUtjayWEgmvkQsbGtBlM8M/XPP4CQCcK48SLpOp6xpY99?= =?us-ascii?Q?D3s7iTzJN6tXCM8RynD61tnCQf79VS7VfI9HvX35nrwN9qBm7mgO4gn/RI8g?= =?us-ascii?Q?UEhp5NMlDz7E6WCKvsp1iaqUsFWPUwGtpxuQ3gvJNc74N1RplNt0HS/irTU4?= =?us-ascii?Q?cAyHKTAyYl8MeCNRP8IhHWnwJBoHV6mCZTwIuOVpXFazcXp1R93isurwWE5O?= =?us-ascii?Q?49NolZuvI2T1BnWC0O1x88Dmov8VrhubOhxjj07Z1OjSo5cb96fukC+5BbIL?= =?us-ascii?Q?GCUUj7XVEBwRG96P5pkDXcHpW93Js5cHAKNqB9UmEZ4zFAHizgYXZZtsr7an?= =?us-ascii?Q?02OoVwwPnV68yDxLUj8KGQMo5uNaQDmcGsD15ACXNC0pHcE42+hBT/fX5tXc?= =?us-ascii?Q?LGb2r6PZ8c6TWRhcVHeNGg6XCX+31txHeWPJg+rvTG38DqdTor7CayFlk6SU?= =?us-ascii?Q?xRT5xd7EF0lkMOerrYviXV3mBu34TJOcoDy8uDsVciUNtBFARQ+0?= X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 33f60840-8b3f-4196-c671-08de5d5504c3 X-MS-Exchange-CrossTenant-AuthSource: TY7P286MB7722.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jan 2026 03:34:46.7248 (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: 1iyF4tB7EKyXgDTDSfjDtWyUkQcQXhJQCw7GC7jiMQipfzzeRIPnBGKjicpoR3wZbZKbiwNHPN04BBH/AVCvzg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCP286MB5626 Content-Type: text/plain; charset="utf-8" Some DesignWare PCIe endpoint controllers integrate a DesignWare eDMA instance and allocate per-channel linked-list (LL) regions. Remote eDMA providers may need to expose those LL regions to the host so it can build descriptors against the remote view. Export dwc_pcie_edma_get_ll_region() to allow higher-level code to query the LL region (base/size) for a given EPC, transfer direction (DMA_DEV_TO_MEM / DMA_MEM_TO_DEV) and hardware channel identifier. The helper maps the request to the appropriate read/write LL region depending on whether the integrated eDMA is the local or the remote view. Signed-off-by: Koichiro Den --- drivers/pci/controller/dwc/pcie-designware.c | 45 ++++++++++++++++++++ include/linux/pcie-dwc-edma.h | 33 ++++++++++++++ 2 files changed, 78 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/con= troller/dwc/pcie-designware.c index bbaeecce199a..e8617873e832 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -1369,3 +1369,48 @@ int dwc_pcie_edma_get_reg_window(struct pci_epc *epc= , phys_addr_t *phys, return 0; } EXPORT_SYMBOL_GPL(dwc_pcie_edma_get_reg_window); + +int dwc_pcie_edma_get_ll_region(struct pci_epc *epc, + enum dma_transfer_direction dir, int hw_id, + struct dw_edma_region *region) +{ + struct dw_edma_chip *chip; + struct dw_pcie_ep *ep; + struct dw_pcie *pci; + bool dir_read; + + if (!epc || !region) + return -EINVAL; + if (dir !=3D DMA_DEV_TO_MEM && dir !=3D DMA_MEM_TO_DEV) + return -EINVAL; + if (hw_id < 0) + return -EINVAL; + + ep =3D epc_get_drvdata(epc); + if (!ep) + return -ENODEV; + + pci =3D to_dw_pcie_from_ep(ep); + chip =3D &pci->edma; + + if (!chip->dev) + return -ENODEV; + + if (chip->flags & DW_EDMA_CHIP_LOCAL) + dir_read =3D (dir =3D=3D DMA_DEV_TO_MEM); + else + dir_read =3D (dir =3D=3D DMA_MEM_TO_DEV); + + if (dir_read) { + if (hw_id >=3D chip->ll_rd_cnt) + return -EINVAL; + *region =3D chip->ll_region_rd[hw_id]; + } else { + if (hw_id >=3D chip->ll_wr_cnt) + return -EINVAL; + *region =3D chip->ll_region_wr[hw_id]; + } + + return 0; +} +EXPORT_SYMBOL_GPL(dwc_pcie_edma_get_ll_region); diff --git a/include/linux/pcie-dwc-edma.h b/include/linux/pcie-dwc-edma.h index a5b0595603f4..36afb4df1998 100644 --- a/include/linux/pcie-dwc-edma.h +++ b/include/linux/pcie-dwc-edma.h @@ -6,6 +6,8 @@ #ifndef LINUX_PCIE_DWC_EDMA_H #define LINUX_PCIE_DWC_EDMA_H =20 +#include +#include #include #include #include @@ -27,6 +29,29 @@ */ int dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_addr_t *phys, resource_size_t *sz); + +/** + * dwc_pcie_edma_get_ll_region() - get linked-list (LL) region for a HW ch= annel + * @epc: EPC device associated with the integrated eDMA instance + * @dir: DMA transfer direction (%DMA_DEV_TO_MEM or %DMA_MEM_TO_DEV) + * @hw_id: hardware channel identifier (equals to dw_edma_chan.id) + * @region: pointer to a region descriptor to fill in + * + * Some integrated DesignWare eDMA instances allocate per-channel linked-l= ist + * (LL) regions for descriptor storage. This helper returns the LL region + * corresponding to @dir and @hw_id. + * + * The mapping between @dir and the underlying eDMA read/write LL region + * depends on whether the integrated eDMA instance represents a local or a + * remote view. + * + * Return: 0 on success, -EINVAL on invalid arguments (including out-of-ra= nge + * @hw_id), or -ENODEV if the integrated eDMA instance is not pres= ent + * or not initialized. + */ +int dwc_pcie_edma_get_ll_region(struct pci_epc *epc, + enum dma_transfer_direction dir, int hw_id, + struct dw_edma_region *region); #else static inline int dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_addr_t *phys, @@ -34,6 +59,14 @@ dwc_pcie_edma_get_reg_window(struct pci_epc *epc, phys_a= ddr_t *phys, { return -ENODEV; } + +static inline int +dwc_pcie_edma_get_ll_region(struct pci_epc *epc, + enum dma_transfer_direction dir, int hw_id, + struct dw_edma_region *region) +{ + return -ENODEV; +} #endif /* CONFIG_PCIE_DW */ =20 #endif /* LINUX_PCIE_DWC_EDMA_H */ --=20 2.51.0