From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from BN1PR04CU002.outbound.protection.outlook.com (mail-eastus2azon11010055.outbound.protection.outlook.com [52.101.56.55]) (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 4169D3438BD; Fri, 29 May 2026 12:21:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.56.55 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780057277; cv=fail; b=BLc+i3QqKAyNYdXKKtxhOSpUporfTmr/iBWsJ/GkYrDvCfCaZgJh8CE3hTCDx1QXAgwjg2TSPQ1m/3xZsPhvc87URxFkAC/mkT3eT+wjSR049lS4sWCeQw9QrhHr3FKK09ShI3L+2ZwaQm5Vnx0AsvXVz1h7fxxmZN7NUtXkwAs= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780057277; c=relaxed/simple; bh=+4WjgafWe3C7+RfXrqRDKHzgSd0gunRlUNuaj3fy7GY=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=iRJ0UjKUzEC59jdPmK2bnEBXOJP+dbTP5RoJomthELGuRq40RIeEOCgYvYu3pCSpAT0KVQplgFUlL5Jfuvk+nZoJwGU8LZLSVv7g4wqSu6QbOxUAvcklkdpkWvXvEAyL28ghtm6kANnFtL/o+y9mOGUuGw0E5AQyDR0mWuIvHU8= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=2we6tBNG; arc=fail smtp.client-ip=52.101.56.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="2we6tBNG" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qAb0rfLT5VSs/EopKVC9zGmf1UwquE66PrGF1g+GbRQifoI81WFUsdb4W3e9fDZy+fiQVSaQp/wDDUfExWbM1cVJV7XHxDe1zAUvdXfa88YXIna9PWAdQyNsbw9dIvfZk5Go2uxChRnymF6Wax7VHpxuUTQxauqG/9GjdXmxRfj/9wFZl6rPqBqQcJ0hG+GkKNq6EY5gq3TVXboU/v6nRjpSN3NoUfX5HKhfRstQQs4KN0Ym52KIfzbrOoa9LGcHmt0eHa/xvxdkEubQvTUmH2KrHknkD6j1ucyIcFvkP9nn0thp2aDfhYzmZH4Ct2+CpesAU0GZt/Z8BiExNjURPA== 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=kcbz2vOwfpG2t+6M4fdHn3NIM8yFwKMcXBK+yvC32WA=; b=u8uYimEVoSLtNj93KDs0QfpAp1jFxLObLcYQCibGAIQ74b+l6SpKuVHYg2ZMu2nkZoXic31qe+r7NvvjHk2eQS2sgB9dX9GVC2Puhns+XciitkUQGNcuYHSmLl+00WAEQbbY/qHStzK0QZ/Zm91Th+7FepJxbFMVu3dBu5PzTQ6dS+0lqX6cX/YIsSTdZR7S9zF/uVrd89PqgAgL88WX/OrD4GwXNGlvX58OtN2Q94nC2ah508W9M+XWHT2EL6XxyOPlCKsTzQtc0kdlsb1mZ6o+gnF7Nzpv7Oi7LFPvhugBHSzEhSh+3Kb/RG4s8ZMReN0GU2n+aMzVxjKOvhGq+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=google.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kcbz2vOwfpG2t+6M4fdHn3NIM8yFwKMcXBK+yvC32WA=; b=2we6tBNGSbkbP6+MhGlRihCgCpYP4IABpImj9232MPk0XgHgimhkke9ZrUq+d2MqqxSu3KIg2HnOCyL0aFOT4UHkkpjUAKxQ5wlkgB6FQbNCBdOYnC0a49Hl3hT2WzoOWByLoJps/ZJ4PaFA0809SezRSYWzV+xz50Xg6b3ydWA= Received: from SA9P223CA0017.NAMP223.PROD.OUTLOOK.COM (2603:10b6:806:26::22) by DS0PR12MB8069.namprd12.prod.outlook.com (2603:10b6:8:f0::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.15; Fri, 29 May 2026 12:21:08 +0000 Received: from SN1PEPF000397B5.namprd05.prod.outlook.com (2603:10b6:806:26:cafe::38) by SA9P223CA0017.outlook.office365.com (2603:10b6:806:26::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.13 via Frontend Transport; Fri, 29 May 2026 12:21:08 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C Received: from satlexmb07.amd.com (165.204.84.17) by SN1PEPF000397B5.mail.protection.outlook.com (10.167.248.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Fri, 29 May 2026 12:21:08 +0000 Received: from Satlexmb09.amd.com (10.181.42.218) by satlexmb07.amd.com (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Fri, 29 May 2026 07:21:08 -0500 Received: from satlexmb08.amd.com (10.181.42.217) by satlexmb09.amd.com (10.181.42.218) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.41; Fri, 29 May 2026 05:21:07 -0700 Received: from xhddevverma40x.xilinx.com (10.180.168.240) by satlexmb08.amd.com (10.181.42.217) with Microsoft SMTP Server id 15.2.2562.41 via Frontend Transport; Fri, 29 May 2026 07:21:05 -0500 From: Devendra K Verma To: , , , CC: , , , Subject: [PATCH v1] dmaengine: dw-edma: Enable HDMA 64R/W Channels Date: Fri, 29 May 2026 17:51:04 +0530 Message-ID: <20260529122104.2533048-1-devendra.verma@amd.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: dmaengine@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B5:EE_|DS0PR12MB8069:EE_ X-MS-Office365-Filtering-Correlation-Id: 76579b6f-e687-4f2c-4d9c-08debd7cc355 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700016|11063799006|56012099006|18002099003; X-Microsoft-Antispam-Message-Info: Flz0AFHRJOY/IImIxAQxfdbC4UoUGkBvg1QqEsushJfD/gOwI/josxfxlzNPp9c49SrbXxtWQXe0dVssc0j9Td/kK4NWzrf6KcyCwdyi4H5L6jdqoVKOCAwaqxHm+xX0ScXT2IOsmcz1qjiYtHw/ZkLrRsrpYcV26JUOK7Hu11lICuectHXSUrazKNkz3YhU9FWxLCb648/2huhNNCBPYElBztqCFceFyk5AmbhSwAcEbe6IORMsUkTvi6e2lbm2/NOApEOwSfuHzidzY9txwsy5N61HYSYEcdIh6OTOsO807ns/C7Lv39AUTWcEadYGwLwurm0XovtkSkiiiQfNtiHCU8zaHD17FRA4RFVehvqm+0/Ctylzy/I57WLAyPniHI0pJAzYU7OY8K1IljmWXDs1vtR/qQ0PTa6U0q3eW+m1x0GzaK/fO4IU8IXhjlZ/7WUHH65VeY/NgAKIHGQNY+K1bX7nCDLiiRPYy5BMzSHKIhexPeNY869hUXkw6aYAvdU8TeXKegFGifblqrVuSB+BDU3kjSgtQw5/SVTnDDu+XnVhixdcXj/O4IY+bAUZ4EDJC8zIyvPmviCiKljC1GJdtoJzmhdmItLuBhAc+kGrEvFtcxBoGwf9S69bJT5acwn8QC15r2RfFL5v0eoVx4GameIDAy6rBeeTXmbMqodfBh931J6v8dQWeqXFE8mDJIrTPUo7t2lyFWVrO97MNAwyhSwozyjB9SgLJEwJsc8= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:satlexmb07.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(376014)(82310400026)(36860700016)(11063799006)(56012099006)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1OPIn4SwYRLJJwUBpk1YQtdPMGquxwl3Kr/tkw4DrzmsiaSls3LZ+yT7qBR8PVptW47XEt0t6ocZXoKupLP+IXxfg4WYaeHTCxaDtoZCBTATAYHHGUPOK6Wvuh0p617QvOexbmXfZNW8C1Tp8ClaOZBJ9Q0R1SEQa3332EsyJmgahmHNm6ukYnkWoo3gotgJAMBgiWZ2rcLgGXAB1B/VfquyfnO3hQn0sVFln7sHFqLqSRO7fkPw0dukXPbzuspCmGtv0XJRj2QDdxs+c2MuWAudyJp8Hg7xTjy1tnEayEtemfpR7enB8JboP3sFLg3fABnTm0UoiyvP60tWQT8zYgirYiVyQCLcubjnBIstrLfKbiPFjpwH9pRpfEuu0FvfqIIhoKqGfHKqw28RCgkYCWt67JURQM7ZTHyxRaPxAFs5tDS+UvesQrC/l3605pz+ X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2026 12:21:08.3552 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76579b6f-e687-4f2c-4d9c-08debd7cc355 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[satlexmb07.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF000397B5.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8069 As per 'Designware Cores PCI Express Controller Databook', Section 7.1 - Overview, HDMA supports 64 Read and 64 Write channels. Current controller driver supports up to 8 read and write channels only. In order to utilize all the channels the controller driver need to have the channel related structs and variables as per the number of channels supported by IP. Following changes are made to enable 64 Read / 64 Write channel support: o Defined HDMA specific macros to reflect the channel count. o The count of ll_regions and dt_regions in dw_edma_chip and dw_edma_pcie_data shall be in accordance to number of read and write channels. o In dw_edma_probe() configure the channels as per the channels of the IP used. Signed-off-by: Devendra K Verma --- drivers/dma/dw-edma/dw-edma-core.c | 15 +++++++++++---- drivers/dma/dw-edma/dw-edma-pcie.c | 8 ++++---- drivers/dma/dw-edma/dw-hdma-v0-regs.h | 2 +- include/linux/dma/edma.h | 10 ++++++---- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c index c2feb3adc79f..02ce005399dc 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -1079,6 +1079,8 @@ int dw_edma_probe(struct dw_edma_chip *chip) struct dw_edma *dw; u32 wr_alloc = 0; u32 rd_alloc = 0; + u16 max_wr_cnt; + u16 max_rd_cnt; int i, err; if (!chip) @@ -1094,20 +1096,25 @@ int dw_edma_probe(struct dw_edma_chip *chip) dw->chip = chip; - if (dw->chip->mf == EDMA_MF_HDMA_NATIVE) + if (dw->chip->mf == EDMA_MF_HDMA_NATIVE) { dw_hdma_v0_core_register(dw); - else + max_wr_cnt = HDMA_MAX_WR_CH; + max_rd_cnt = HDMA_MAX_RD_CH; + } else { dw_edma_v0_core_register(dw); + max_wr_cnt = EDMA_MAX_WR_CH; + max_rd_cnt = EDMA_MAX_RD_CH; + } raw_spin_lock_init(&dw->lock); dw->wr_ch_cnt = min_t(u16, chip->ll_wr_cnt, dw_edma_core_ch_count(dw, EDMA_DIR_WRITE)); - dw->wr_ch_cnt = min_t(u16, dw->wr_ch_cnt, EDMA_MAX_WR_CH); + dw->wr_ch_cnt = min_t(u16, dw->wr_ch_cnt, max_wr_cnt); dw->rd_ch_cnt = min_t(u16, chip->ll_rd_cnt, dw_edma_core_ch_count(dw, EDMA_DIR_READ)); - dw->rd_ch_cnt = min_t(u16, dw->rd_ch_cnt, EDMA_MAX_RD_CH); + dw->rd_ch_cnt = min_t(u16, dw->rd_ch_cnt, max_rd_cnt); if (!dw->wr_ch_cnt && !dw->rd_ch_cnt) return -EINVAL; diff --git a/drivers/dma/dw-edma/dw-edma-pcie.c b/drivers/dma/dw-edma/dw-edma-pcie.c index 0b30ce138503..79f653da8e0f 100644 --- a/drivers/dma/dw-edma/dw-edma-pcie.c +++ b/drivers/dma/dw-edma/dw-edma-pcie.c @@ -61,11 +61,11 @@ struct dw_edma_pcie_data { /* eDMA registers location */ struct dw_edma_block rg; /* eDMA memory linked list location */ - struct dw_edma_block ll_wr[EDMA_MAX_WR_CH]; - struct dw_edma_block ll_rd[EDMA_MAX_RD_CH]; + struct dw_edma_block ll_wr[HDMA_MAX_WR_CH]; + struct dw_edma_block ll_rd[HDMA_MAX_RD_CH]; /* eDMA memory data location */ - struct dw_edma_block dt_wr[EDMA_MAX_WR_CH]; - struct dw_edma_block dt_rd[EDMA_MAX_RD_CH]; + struct dw_edma_block dt_wr[HDMA_MAX_WR_CH]; + struct dw_edma_block dt_rd[HDMA_MAX_RD_CH]; /* Other */ enum dw_edma_map_format mf; u8 irqs; diff --git a/drivers/dma/dw-edma/dw-hdma-v0-regs.h b/drivers/dma/dw-edma/dw-hdma-v0-regs.h index 7759ba9b4850..48e40efceb2e 100644 --- a/drivers/dma/dw-edma/dw-hdma-v0-regs.h +++ b/drivers/dma/dw-edma/dw-hdma-v0-regs.h @@ -11,7 +11,7 @@ #include -#define HDMA_V0_MAX_NR_CH 8 +#define HDMA_V0_MAX_NR_CH 64 #define HDMA_V0_CH_EN BIT(0) #define HDMA_V0_LOCAL_ABORT_INT_EN BIT(6) #define HDMA_V0_REMOTE_ABORT_INT_EN BIT(5) diff --git a/include/linux/dma/edma.h b/include/linux/dma/edma.h index 1fafd5b0e315..da7a5cc93ad4 100644 --- a/include/linux/dma/edma.h +++ b/include/linux/dma/edma.h @@ -14,6 +14,8 @@ #define EDMA_MAX_WR_CH 8 #define EDMA_MAX_RD_CH 8 +#define HDMA_MAX_WR_CH 64 +#define HDMA_MAX_RD_CH 64 struct dw_edma; @@ -89,12 +91,12 @@ struct dw_edma_chip { u16 ll_wr_cnt; u16 ll_rd_cnt; /* link list address */ - struct dw_edma_region ll_region_wr[EDMA_MAX_WR_CH]; - struct dw_edma_region ll_region_rd[EDMA_MAX_RD_CH]; + struct dw_edma_region ll_region_wr[HDMA_MAX_WR_CH]; + struct dw_edma_region ll_region_rd[HDMA_MAX_RD_CH]; /* data region */ - struct dw_edma_region dt_region_wr[EDMA_MAX_WR_CH]; - struct dw_edma_region dt_region_rd[EDMA_MAX_RD_CH]; + struct dw_edma_region dt_region_wr[HDMA_MAX_WR_CH]; + struct dw_edma_region dt_region_rd[HDMA_MAX_RD_CH]; /* interrupt emulation */ int db_irq; -- 2.43.0