From patchwork Thu Dec 19 10:24:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Larisa Grigore X-Patchwork-Id: 13914926 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11012012.outbound.protection.outlook.com [52.101.66.12]) (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 CDD2222371D; Thu, 19 Dec 2024 10:24:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.66.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734603893; cv=fail; b=g2A/SfYL2yPFVHdelZpUcSRdg76DNhESGf27u3WqSNALcE6lHUzCshAIexS27oFHKN1VzKeAQLe/flpKpLbaiMg6aPy1d4m+QMUjzENyZrCdXxjX4ucsFpf/rc49wwwqr2ypBEk4fYYMyBWUNVhnYKlOaZTaRt7Ec/KswLEUBgw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734603893; c=relaxed/simple; bh=+EQjfRbS6pUksXCoo1RLf9J4Wu9HOahBDCktosA7hy0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=RdnmI/6l1dq65PbKUxhyRF1Vg0IGnF7ng9JZUIe4awOB2Obn4uVAdBmf2aZL/dH5HW8tVtRclHSRYyTSdbCfWrusHUpmKc2PywrGhnpzwX8bJksziTQoNd5NZIckTFh6e6L4uiHMSjzJr+wgwkR0hE6xRUwpur2TF2xlEZL5ZWI= 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=awxLHmNb; arc=fail smtp.client-ip=52.101.66.12 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="awxLHmNb" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=JYNhHNBEHULSZ8okSKEjebAClsgRuNfm/cskwgji6u6j0s7kWu0yvxOXRJX49/FoeowskZ4BQb9NtwqbUnhzmZ0P/OTKtGXGu3YfDBURosOvzPyVKt4Ph/ayZzvTWelnjBcQNjcN8VRwNmmI2kmoHySI/MMtDGQq1dDyqXfuJzFyy6Xzl2GbQJ4P8xiIp3qXZIMdWoTQofLMRIB+RnK3rrWHMLMi/uou4VKWFz0Hsex25TEt1/D+/xVoh37RsLoXCoK1wec1yiHrXnRFnIUOywrzRcA2G8r8q0VAmV467K9GAIIMCY/2I45FPafVSSZ2SkyTmvtaA0PDsr4nZowHUg== 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=Pfq1ciCyrr52NINz2DKlSeJUJzmw6YcZSgtL8D3O6LI=; b=IBWFVVgfx0z1OAE4Y/O7gAiRvShb+ZjssBfjiweuGH+cK13Zddu5PGfytb9FRTJVtxbJN0JCshpibbNXKftNbp3181VNlG9G1C3rcYhs5pFlsAkKo0IFH1Uw/px/LXNWALTmWmNYCETUSOlWh7vgCaAoUpx+EfcHb4BTsC26ZyDKqpebNzrWfYOB29nWQM85LPmrAjnfeREyHS3Wo1TrrzB6RHiGMhiuY9xjrYzfFeAkVqJ503VMEb/8NKKtFn4HSOjF+g/Vs7zAMvgyXKeRPgxk/A/MuO5EyirB+Cqvs7ESdUPMcKvIBdAdD/z9LrYb9Z+ncgfQXs5ZNAVn7AAgqw== 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=Pfq1ciCyrr52NINz2DKlSeJUJzmw6YcZSgtL8D3O6LI=; b=awxLHmNb1CO3zIJVch//lBv02mxoQ/oJcgrE6Aq2a43/6i/H5nelR01rSvk0yrf1wZJO7s903ZT+aWuoz+QQuRDQXPYE0qOiFAl7g+2Rp8Sc4/3R5wwUjr0V+LhQnlaiKZGpx1L9Y20PzPEYnD8yDvUtZQetJ3PYl1YQD00lprPjqcdU6sYEr/A3NS2A7WvxMDyXUt3VNAvRjrgzle/iwZd3WViyUYvU13/IOLVmKQ7zsmWbzoRO57ooIRQTQZUoi8V5ZtW+6dLegnJLEbfgidn508yRQ5NQL6/0Pu/+INSsDqCxfbBU/JDeOGSenZI8z2dZ8wcWvShZvJqBiGH8AA== 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 GV1PR04MB9101.eurprd04.prod.outlook.com (2603:10a6:150:20::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8272.13; Thu, 19 Dec 2024 10:24:47 +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; Thu, 19 Dec 2024 10:24:47 +0000 From: Larisa Grigore To: Frank Li , Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Peng Fan Cc: imx@lists.linux.dev, dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, s32@nxp.com, Christophe Lizzi , Alberto Ruiz , Enric Balletbo , Larisa Grigore , Alexandru-Catalin Ionita Subject: [PATCH v3 5/5] dmaengine: fsl-edma: read/write multiple registers in cyclic transactions Date: Thu, 19 Dec 2024 12:24:14 +0200 Message-ID: <20241219102415.1208328-6-larisa.grigore@oss.nxp.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241219102415.1208328-1-larisa.grigore@oss.nxp.com> References: <20241219102415.1208328-1-larisa.grigore@oss.nxp.com> X-ClientProxiedBy: AM0PR04CA0127.eurprd04.prod.outlook.com (2603:10a6:208:55::32) 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_|GV1PR04MB9101:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c63b1b0-21a7-42a2-cdb5-08dd20175ccc 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|7416014|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?2E1RoAgCT0G7+FP4OdCP/y2LjnLCVzp?= =?utf-8?q?JF3lvLhBQVJz8Z3p9dSBbWESnlHmgXXF6sWOMPHULWGpphOfNwEKWYFkBoaMDwXwX?= =?utf-8?q?PNOLphDUoXq8SrZW3PxDGqBwkWV10e62/mX+Vhav2idH+cHc3ts9r1sIqOh6iZLXA?= =?utf-8?q?+sCoqHrSbPGQiGgeE9WL10ThPWB5ciw/cUJJu4e7osff5sByVuoWSlaT6E3E2daUe?= =?utf-8?q?XnIS3enRWI0k38p5+1wYolUAx6I+hexEJSohg/AUiDr7h0OBsT9UDqddna9b6/tb2?= =?utf-8?q?td6zAK5Gz+ivc4SXFevdiM+lIiAJYNqRWVAQADliye8E31J1AxCZvlN6sXZLTYEBx?= =?utf-8?q?F9mW0QzOm5fFMHqiKHd1rztekLw5zh2CQzOv0OfJyGRJoJP37/kIOUdYR7GclE2qH?= =?utf-8?q?YN+4CJeqwuRCBLkp6aqLUrz+OaIXmW7l0ltAm0Y3lo7Zi+ikiN6/TRMfeVPDh5ibn?= =?utf-8?q?AUm7K9TRv3p/F4CneIcBOjjNZ7Og6aIkG5a/N6IvDfLPQr68ijk91ootjaRE1loOD?= =?utf-8?q?Yu9+SUo4H2rJKea7aQGZn6rndzBPAH4xCwdiPlUfQxaxUu1JRomsh/6RVWv29m5Hm?= =?utf-8?q?/tadKWAd6vBGNKU55AMRAnn2tB0wXOr0Bh3MHJD6acxaHqpn2Q/V1fmzDRKFr890A?= =?utf-8?q?4A3HXVj0CmrQJNgNMGXkzEOLxsUb9xZKAmeObwy/lFDEr42gcGix4jx8xHpthTNz5?= =?utf-8?q?CN1D7SFNKFdOSJbyFQoSVklmPaD9gK3UvPhUtxy+vVGOI3S46Q6wpI4gmdI7oTUlm?= =?utf-8?q?70bdpDznO081GKFGGRfZ4VzWHDdhBmqErLDwXLlajSND7z+6SEdpNYeYcHY103Ter?= =?utf-8?q?iCKqD9bz3TIJG3W9zzbuhviHo2RBK+tHoZS6r1xIsTpZkrnGJeDpA6q+LG4lqR5r/?= =?utf-8?q?aeEphN8tgJ1rihblmXd5oierdCDu4BUmE79WKP2doGtUq/6QxkZtT6C2wopsc65wM?= =?utf-8?q?y5H05nYFA8ooJtcX/JlEEyP49Li/m9nNzBgtPbpIMvOVJKj3x25l+TQ+BJi6XyrDg?= =?utf-8?q?pKhE+Sb2ihCwWayiu59Payv7GZjHHpJ65nVE9+KcNjirI0xdpwbQUx1wpY6tuxNJO?= =?utf-8?q?nR7AmdJKGURhpl9H4VXHUC6iZC4pDzR96piomNhQVBCRC98DnB7rdUzwtOePqUZp9?= =?utf-8?q?BUFhj7XINspi1cxzIKD4xEqI4aoqRBjG9Yz9jRnDf7dkZJWPRwTA4JYYw7mFTCOjQ?= =?utf-8?q?Isnkjvs8KwZ1scVM1Fopc8QMfEJEc8KQeiL3KGEtaJC1KfWQ6BHwNc7KzUWW7MXmp?= =?utf-8?q?Z2IVbjAKcP7oxwMGhd6nQe1TUP8ObGAdcViv1PDkyyDa5ta39GiuK/q8VBV+oHts7?= =?utf-8?q?5MihLd74woK9?= 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)(7416014)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?KTfuvgJ7ECLJEVA4Bau76IcZ4Umo?= =?utf-8?q?M8uKil396dsiRUjf4sEaZHqV3VkFAjdWXS8bGquqXgAd/DvFi8tP6/JBcOBrCskme?= =?utf-8?q?XVjP1mrg12jr+PTag4EXY9gqVs04bE8Nh0lwIvEpfXk6s51/jC8kI7LFL/z+VQJnv?= =?utf-8?q?cwKUJHhcUBWwHrjPrSiC1fJjEcmRs+nBOmyL6sFbMvZMMlKE11pncPAXRCCzqSAC6?= =?utf-8?q?FbmhnZ2NPjxF2vpfHblXyWFb2+O+g1sCmKh7X6Bl/OTKpGdolemCIKBmScC0s2doG?= =?utf-8?q?Rf2UVzDSMZpSdwSY9Ao01+f7KQKKDmW6OrK/x5/eksBcvgI/+Ayvhu5f0pEZZZEu0?= =?utf-8?q?se2jzWrTnzCdOEm3WH9D1n5XkoWtutfBEIOBqqtAhEM6bmvh6aZBcsINwCKJWVZAj?= =?utf-8?q?cURKbpAaE8+BA8i0ycQ7T7MhQxJNMJjOpKr5U5SliCAwHcXr0d4jByYyvhWJ6TPso?= =?utf-8?q?gywAL2avjkTtVyXlQhf7y8yyJ8YbtLAztP9AbKE6pzyQcPgHd6EXFNXuUv+m7R29p?= =?utf-8?q?z4rpotVnG8qV6sDRFSfHpwgntarexg0lhIeNofaWN8jmUUH/X4eRwuuhSqW5cTmLh?= =?utf-8?q?vQXcYADr9nmlzAA+ucOCFVQDJxMi729aSEkWdVlFNVFecSGQlMdatSeL08o+qSrQy?= =?utf-8?q?nrDgVnIGk9xUezmmH8u5HLQZ8pyXFTU6BCqYO7zpaT/JF6w+w/pNEJ5uqNlWOjsZj?= =?utf-8?q?eJdKWoj8YHH9QUIxEU1VMT8gH91z+WlOirPlCQq5d66CFPC7WeeVADhBBHrZ3Yqhy?= =?utf-8?q?wGl/Ob4bu4k+eqIuT8Qt7+AO+sk1G7e1xA7ptsc1z9QJciX15KHs2E1NemEfKS/kg?= =?utf-8?q?nvuE0sR1y/l6+A+lJE3ne9I2ND7PDBLGQcqQ6r7BXfJliUTbUzaLSIqaXXwdNFTxQ?= =?utf-8?q?kwa79f7OIMKnVbAEyn3sme/10XbHQ2oMb4/6NjoRPU+UQRvVMW60Q+LxXEf6wTxJW?= =?utf-8?q?V0W+8fxwOaW+EjF9Epvm8OakECKb3492cY+huWGkh1EbOXFZ2CUF4nt2XLib1zsks?= =?utf-8?q?YkB6CsM6Ua5J/Waigxd+m6NSBeXCZdARCxzPIEXdMK4gq4x31zc4ua5NuXCMR3ey/?= =?utf-8?q?f26uiHaBzZo4DkDuSk9aKj6MkFk4S7R5C337vMh1okc3ZtWVjX/O5KTJPfW7cfSST?= =?utf-8?q?XQ/2H/zatgehWoHiyB8gcuz/pBEZESy6vJ36PCqb1BKQduMFSpfsfsbDG3Dfq5WpH?= =?utf-8?q?/G7NYDKiKcco/bLJS7T88P67mkjjzLwhcW7b0lmFWYVL+fFwu/e+anB9Ra5hTKAYW?= =?utf-8?q?OaQxB58ITC7fx4y8nyQcj9dYqnRN4pb+DlrEj9pbrJ2ZoIMaYIER2qwRi7N83rKH2?= =?utf-8?q?Vj4ZoVsknX0Zcj2lD+QHQjUMr1Jz7p9vfHG1yqDiBjBJWEJGSE9VLEI9RcJorKs6W?= =?utf-8?q?ROhXDgtJftQnwkZcMt3LJEvhZYPAE3tDNvXkRilLNgpUSM7KICXrXcL3VX+66GA9H?= =?utf-8?q?7jfGV4tt9LuI6mu3QZYx5Hwrod3DUxNFRgkOeKMod/6c6mwykY7tu3gMELUiimFGN?= =?utf-8?q?wek2DmCdImRS?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c63b1b0-21a7-42a2-cdb5-08dd20175ccc X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9550.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2024 10:24:47.1565 (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: KTRmVZaGULAXQzKgQoLRur+6ta1Z3mTTrUAu9qyi//EmGtMgGCUDrhz7RomAcoXjfs3G8Clq8CrdFX0uVLjLeg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9101 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 b7f15ab96855..443b2430466c 100644 --- a/drivers/dma/fsl-edma-common.c +++ b/drivers/dma/fsl-edma-common.c @@ -480,8 +480,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 @@ -496,16 +496,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; } @@ -623,11 +637,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;