From patchwork Mon Dec 16 07:58:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Larisa Grigore X-Patchwork-Id: 13909338 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2070.outbound.protection.outlook.com [40.107.20.70]) (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 A522C1FF7C5; Mon, 16 Dec 2024 07:58:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.20.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734335929; cv=fail; b=Qz3v++E8oFkmlJ07UMbLj/ECxGYV0WxXGwWAQalbOhou/wL1hCSilcqmODFcgeH1GUMDW/RjNXC3UsYWdg4VIJmwf8cbDRXM8GidA8Mpxv73RJnoMSmYzakZvEpMNRan93Q1K75Nuiq3eRk10w9bCnhhTrPuEYhWv00vDTYEqNE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734335929; c=relaxed/simple; bh=3u1I9mecfrM1ZthBTezjocM9AwW1fNpwLEyC92SYc6M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=Loi0e1iTTVh376G5RZanOzxYTca1BTvHo35KSqW8VJ8khNiryZVVNSLBVDSGVZuYUYzhjYFbTrw+wk+ILbsnE1KH2f4AjVFxk7W+vtMb2mi6lnv1BGUoVHkvnlVScBx3gpWl/Mf/B78zB+OYgApy0VAUVKY6hcGPogHkaWTqDuY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com; spf=pass smtp.mailfrom=oss.nxp.com; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b=Cl91czg+; arc=fail smtp.client-ip=40.107.20.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.nxp.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="Cl91czg+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=soqoVDl/pqO7o8uJR/cgaieGJ99gg3bL5o3St9mqunB6pi4TCSwdVcE5gNVafE3OgKFIRJPE38L/afjheLZuS30H/hB+1uUqvbp+i7HeN+jf/TIgAA5V+I7Zcv2/MqcgzQyC4+yqRG8Rxc1Sd9PBqENrWVOpgcFrZhB+baCQDzt3/JrKXzXDpbNncLS2OV3PieSXb4hgdK94+S08SaxYqPhS+JFUFYphxBNdyL6wbIvTiUJf5w4YkepNIYgm6yT7uOhwdtzLBUPqKJD/FfAOACEaNstNuvRUSUt36PKu/dbaYsfitdW/wJ4MVU8q2tNDFmrsuxuc6WJfG4y7JYAggg== 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=CG4S+uU44FO8P3eYVZXQjKfoUG/2vfbNF4ZdtMEfnok=; b=WP51Cy84GV+I7EPCPTGT6F0VrExebk4qd7M0mlWM3Z4Y6HkRJqqr7vlxawCrWMLBBkQeN9abOwPdsiAGX7V8s+NQNjkm+jpuUVPciK/TgCOHvKFL4MjFa+8qohI5t2d+D9n2VsDwvgI8sfQ91tDXsA6Bw71dtxGm9ZvON367ln0IIVd94a7wWw3TvZs3H3PZn0s/FAJ1va83pV72/3SOJfv1G8W27yghoTdLQIjsa/pMUT+ZYIo8HvnES01CSAQOtn69Qh0PZMzgLqYonyXmuzg2gHylU9XB3dPyvQ7Jrfnk0PonV8bBJimGYAmc45eJYY+7JWK6JcuAxduz+F8gzQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CG4S+uU44FO8P3eYVZXQjKfoUG/2vfbNF4ZdtMEfnok=; b=Cl91czg+0ok2boNLYpcuwM6gCJXJBPw1HM2WTrKqXRCEFeD5ZvD/ihy3QYH8602Lv6oEpVxqQnlvapuviJ1mvwBKPfu+vrmbjgeByV1mBYoLfB1uLxnzSpsDsmzWSWdWK7LI2EtVcyF4syo0LdDmnd+5SH9BYFghpw2S0NMG/7uH66fzK/c1rZfzmpzYzs0QLkQnxOUpJa5vmll1Zgv3oicus325X3DzRb+M1NjuHSF8xhLK3QvAtcbyUIMvNZiqaHqEJ7poARR/u4yRsMyaR+0Jolv9RVCN0eekU8OlCwGWEQ6mYAOTRyESX7MvA1+roqhOXlzCRZ0t9jKiHUO3Kw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AS4PR04MB9550.eurprd04.prod.outlook.com (2603:10a6:20b:4f9::17) by DU4PR04MB10361.eurprd04.prod.outlook.com (2603:10a6:10:55d::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8251.21; Mon, 16 Dec 2024 07:58:39 +0000 Received: from AS4PR04MB9550.eurprd04.prod.outlook.com ([fe80::e28d:10f8:289:baf7]) by AS4PR04MB9550.eurprd04.prod.outlook.com ([fe80::e28d:10f8:289:baf7%6]) with mapi id 15.20.8251.015; Mon, 16 Dec 2024 07:58:39 +0000 From: Larisa Grigore To: Frank.Li@nxp.com Cc: dmaengine@vger.kernel.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org, s32@nxp.com, Christophe Lizzi , Alberto Ruiz , Enric Balletbo , Larisa Grigore , Alexandru-Catalin Ionita Subject: [PATCH 8/8] dmaengine: fsl-edma: read/write multiple registers in cyclic transactions Date: Mon, 16 Dec 2024 09:58:18 +0200 Message-ID: <20241216075819.2066772-9-larisa.grigore@oss.nxp.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241216075819.2066772-1-larisa.grigore@oss.nxp.com> References: <20241216075819.2066772-1-larisa.grigore@oss.nxp.com> X-ClientProxiedBy: AM0PR02CA0160.eurprd02.prod.outlook.com (2603:10a6:20b:28d::27) To AS4PR04MB9550.eurprd04.prod.outlook.com (2603:10a6:20b:4f9::17) Precedence: bulk X-Mailing-List: dmaengine@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS4PR04MB9550:EE_|DU4PR04MB10361:EE_ X-MS-Office365-Filtering-Correlation-Id: 8416422e-ce29-47cc-8396-08dd1da773ab X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?2Yg6lfdaJAq8ZIOMuFbEbyBA2aJ5wie?= =?utf-8?q?fGamCL5nVs+c2D6pHGO5HtzGgF/9owKmC2H3sXW+dxIXl8ohPDnHwLX6LRhSur7Xs?= =?utf-8?q?bWHLRd6nzOYo9C4tsCiKoNxpCE9R1ziRFFGeJTD0en70zTvVoYV0ga9qEYj2cwXwF?= =?utf-8?q?R30Pm6cTVmLFzeoeyztUTo6gVd3wbY9S9BV/cv/PaHkiRfzVZnR65v8h1wteWizpg?= =?utf-8?q?zeBcuheNDB+Al5LCUqiBzylIETb1WY1Fk/8tDIfHSORNOzjIrp4K1fH8qfVYdvjCB?= =?utf-8?q?47QFKgipM7/rkQdDOTLAlpJebLULliXcbhPUS2Zxo+2LgP2q2+MAivDXh8C8cCRR8?= =?utf-8?q?ZdkMojzE30bT52P7+maDaYuaQRhOTo0I6ie+B/iwGTbHNQtOwgY24tKV0UqxICfBj?= =?utf-8?q?2i67zpD3tVOl0A0iPgY6cYDIrAZ9Juh+Nq4ovab+z1cwP/hDr31RcPrw+TStHgcry?= =?utf-8?q?7jercVuvfGIsWyoLYmIpSn7hLuH1xtpu4R4pjDDNmbCWedQRhYR9MvVot0Gp92v5t?= =?utf-8?q?zcy4C/IeCiLo085xsiJ2p/1bQtoGU7r4IyvmcWfZPBA1paSxy3z6xxSsl9Cm/mILb?= =?utf-8?q?piy4Zy/mK8HN2QG5/LiM8Y+fjCiN3b8WsMmXW/Lbo5RrlfaXtITkUszkfyqBV4O7p?= =?utf-8?q?hrbvI+zB/iodVRkwNDEBZ5Wc7+4EnSMMD1XSaJy4Kzkxv93ktnGNBKQWJCEsxFvkb?= =?utf-8?q?STCHyPTPOvhSzwchfh4DoTtoaxlX8U7KWLbgY+NqlrctWW1C32e3Rdq1y/d8+nM3A?= =?utf-8?q?864krwI2oR6r/HrRUw488Bn7Q5+stbKitn2PW4KyDDGdv4JLv0VgOdi/NOzYTxKUK?= =?utf-8?q?CJV5fqRhnE5RRrkX+f6gXuwBKxQjJWuCHLAsoloX7yx33afeYL7zn6nA7deOydWGW?= =?utf-8?q?AusNtibxKSuGKKJgQ5bKNGwaJVhnHL/gApIsOfPwrUuvn0+zFKT5eX2vW15HxqW5l?= =?utf-8?q?wYr5/Pc1YDtKTj1yOEOnUJhDr1fgvuQf6aY1EqfWhoA4msLgJZRKhjWx2ZFF+02PN?= =?utf-8?q?raQVbrrUwVeYJZZl+WhaNhkzii+wPeEMY1tjFBcWX9pmlVf4MJCJroVVVtX8LlIf4?= =?utf-8?q?St8eC1NBkljXzoXCwxVQ2AAjzZ4fPGT491vey4Kg+wXp2WTWKeZBa/ste094DVfkP?= =?utf-8?q?Y7RhUkxU53oysf7apPfO+EQCSmZfkF9FDmdiNjHNNUFwQtA1kUCTomSkpHNpvAXqC?= =?utf-8?q?dQecSdCIds9ZGl5zaNVAZIFmZIDN0ih3NVcqh5SeTRwHfwwRqG3auHaqM/6gLMDt1?= =?utf-8?q?LcSXowL4XcnshAL8FVsF+uIkWa9r/SaZnjd/WmFdsdmQDiUhGBvBJU3Is3XG8rowI?= =?utf-8?q?LeZku4BT8s8L?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR04MB9550.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?XM9ihSIuvNpgkI64oxJEYAbPli3R?= =?utf-8?q?0hpCPCLZwlqoZbPMjhwisN/J2d17z8hw0klRCAGIv9ze73lhQ25fjURyySannIyAI?= =?utf-8?q?WYcKZUOWfjQheA4lqP7ix0sg6gAPqmwMQoE0yrcf3ajGBRM+DBJ4ox9bp5A0RwmAA?= =?utf-8?q?eOtXmK/ydnLByTkOlSaDLzs7+6DIOAxf6zMQGud/Mye2OQ6Uq5ifOhsEE1eBceqRu?= =?utf-8?q?z3Tlb/LD9uAeEyvspcN7UyfRqjEluKyIDdV2vRS6GULajihuNa19w1drUu/pZXXNW?= =?utf-8?q?eNAFfU2oG1Pn+PJzr3a6FNHRpf3YmaN4+txcJ+0fxhM+w8OXfZ0XrPhOfOgt6ozhT?= =?utf-8?q?z/n0G4BytUkZp7RovKbdUvJ6e3Y0sPUDx2VNvnI9JIzUBmjum6oVRmWwPwIQRbSq4?= =?utf-8?q?ZCZ9sTwgJvWj5iExWsadN5ohTkrsIudx1aUcTedYODsBIiXMoKaYwvaTkw5DjeULC?= =?utf-8?q?IuEfhWMSRnDphn7usF5XB0JWNcTV+OHhHfTFGhMAHxBB5uI781rNC0MgdOpMqr7ip?= =?utf-8?q?dA2680LjepgdnnZfKbvVK8hTLM5XUcFyQpP35IEPGcCSOBnSLeVlfCI6z0LvitT6i?= =?utf-8?q?KkvB5iLAUh9C7fHvduj4/cNXcX6KF6CZLtYu3Ww1dwuAOkCBhF/KClmP648PsMwmx?= =?utf-8?q?tHGn5EMWyF2QKBKkGpEzbnZ1zgjKapYGFFno13FWOvvDZwvHB1MCChbs78dlejV4K?= =?utf-8?q?QXdUFhVrdLWkVstjmjXEGDXlcqMShYvGBZ8VNnc52fvy2Krm/cYqUwG1xSetLTT8c?= =?utf-8?q?JmXLrEyQqAQnaRWDygiH7txoynIWwprA1yoJIEhLGbrgO3y/zrfROyHXv68FYhrJD?= =?utf-8?q?8C4xR7iOS9BH3abZ0HlG8EO7e3Rt7G6oYvfh8kTk/9nVYdhVJpTK9eg94gfwCjFzN?= =?utf-8?q?QtTrz2ArRBuMB63qT3fMDhlKKV4bZzf29mV6kZsaG3q3g3RKxR/T08bgGZ9blS000?= =?utf-8?q?JLi/23qi9tq4JjiVcfkfwQCh9gIkzrijz2+KYGg0rMHJmTUgluU1HiaavQfJmr9th?= =?utf-8?q?frj82Yk6xulV3CiIio8FS2t2zliqJ0DIVlIKzGoqVJd4cvC9eXqfZPLVPq1beSE5b?= =?utf-8?q?5S+u0Hf7m+XP02kbaKPwD3qWA9zOJuXgp5O6Dyz32eDiDvuT74lEvSL7ckbZLrTaZ?= =?utf-8?q?joCDXBM5buybBtQ0BP7hEAXW6oMKzQAJRJkid9shWn8vfdaNRSEAMm5LFZT0osVc5?= =?utf-8?q?PFpX0TNh3hxpWOeqvJ6SXMCH9JyHRon85M3MLIrMuUNt/OtRb4JCdko9mvBvz33vA?= =?utf-8?q?wbd5gX1uDMcRMy5FBgQO7SNk1H5aVJyxv3drO+MDB/Z4TaR0AsbGvf5qS32OXa78r?= =?utf-8?q?P1fHHT+gWIggCAkZ2xAfTNXh1BlAg3H3o8SYqJL43BcryjMkLxbwQL4OC/m9pXX7Q?= =?utf-8?q?SuUatOXUyCo/5ofqaboQAy0aJm0HSM7btBPV/Y829gl3BUIpqqkd/Q2fpdebnulpG?= =?utf-8?q?cEwpYCnS1TB5t8aSCeXvSLm51oyT+OdzGzDDHbgEe565ZnntALo2YDEdHvU723PZp?= =?utf-8?q?K9sCjA+GqA17?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8416422e-ce29-47cc-8396-08dd1da773ab X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9550.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Dec 2024 07:58:39.5223 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: oiQLQA3HRIbLPUomOSE9cz2+PBtzqUJ10Y0dgjgYb+gqxe9K0kNbi7akpZLAxJfnYjS5aPgLgnve/OLgv3mMOw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR04MB10361 Add support for reading multiple registers in DEV_TO_MEM transactions and for writing multiple registers in MEM_TO_DEV transactions. Signed-off-by: Frank Li Co-developed-by: Alexandru-Catalin Ionita Signed-off-by: Alexandru-Catalin Ionita Signed-off-by: Larisa Grigore --- drivers/dma/fsl-edma-common.c | 36 ++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/drivers/dma/fsl-edma-common.c b/drivers/dma/fsl-edma-common.c index d364514f21be..e70f7aa9bc68 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -496,8 +496,8 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, bool disable_req, bool enable_sg) { struct dma_slave_config *cfg = &fsl_chan->cfg; + u32 burst = 0; u16 csr = 0; - u32 burst; /* * eDMA hardware SGs require the TCDs to be stored in little @@ -512,16 +512,30 @@ void fsl_edma_fill_tcd(struct fsl_edma_chan *fsl_chan, fsl_edma_set_tcd_to_le(fsl_chan, tcd, soff, soff); - if (fsl_chan->is_multi_fifo) { - /* set mloff to support multiple fifo */ - burst = cfg->direction == DMA_DEV_TO_MEM ? - cfg->src_maxburst : cfg->dst_maxburst; - nbytes |= EDMA_V3_TCD_NBYTES_MLOFF(-(burst * 4)); - /* enable DMLOE/SMLOE */ - if (cfg->direction == DMA_MEM_TO_DEV) { + /* If we expect to have either multi_fifo or a port window size, + * we will use minor loop offset, meaning bits 29-10 will be used for + * address offset, while bits 9-0 will be used to tell DMA how much + * data to read from addr. + * If we don't have either of those, will use a major loop reading from addr + * nbytes (29bits). + */ + if (cfg->direction == DMA_MEM_TO_DEV) { + if (fsl_chan->is_multi_fifo) + burst = cfg->dst_maxburst * 4; + if (cfg->dst_port_window_size) + burst = cfg->dst_port_window_size * cfg->dst_addr_width; + if (burst) { + nbytes |= EDMA_V3_TCD_NBYTES_MLOFF(-burst); nbytes |= EDMA_V3_TCD_NBYTES_DMLOE; nbytes &= ~EDMA_V3_TCD_NBYTES_SMLOE; - } else { + } + } else { + if (fsl_chan->is_multi_fifo) + burst = cfg->src_maxburst * 4; + if (cfg->src_port_window_size) + burst = cfg->src_port_window_size * cfg->src_addr_width; + if (burst) { + nbytes |= EDMA_V3_TCD_NBYTES_MLOFF(-burst); nbytes |= EDMA_V3_TCD_NBYTES_SMLOE; nbytes &= ~EDMA_V3_TCD_NBYTES_DMLOE; } @@ -639,11 +653,15 @@ struct dma_async_tx_descriptor *fsl_edma_prep_dma_cyclic( dst_addr = fsl_chan->dma_dev_addr; soff = fsl_chan->cfg.dst_addr_width; doff = fsl_chan->is_multi_fifo ? 4 : 0; + if (fsl_chan->cfg.dst_port_window_size) + doff = fsl_chan->cfg.dst_addr_width; } else if (direction == DMA_DEV_TO_MEM) { src_addr = fsl_chan->dma_dev_addr; dst_addr = dma_buf_next; soff = fsl_chan->is_multi_fifo ? 4 : 0; doff = fsl_chan->cfg.src_addr_width; + if (fsl_chan->cfg.src_port_window_size) + soff = fsl_chan->cfg.src_addr_width; } else { /* DMA_DEV_TO_DEV */ src_addr = fsl_chan->cfg.src_addr;