From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 755E21EC004; Tue, 15 Oct 2024 12:16:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994590; cv=none; b=ppV99MGt7AT8SVp9R6Gl8eg1lWbiBTTN5i5nJaLlo8tNWY8gFSX0ItLw9mgt6XHDdLmzCaKZu49FzlOITVY6DAJ8N2MvcbpJusgHD2hJd2ITUIH7rK4v0gTmxlXNMK3vNpaWVF1l/B3/NEuZCZ/Xitl7psTnAboAnceFmI+E1Ko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994590; c=relaxed/simple; bh=dJQWkcrhwk0Vkj1AihIMxNRLDfQsHXxazUmkVVKOLlY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=OMBK7KOoOZHZX//V6K6mVEf+ftuPfQ8638KmY0rJx/Lt/2+VnIigeIED5+R5dcf6ZYqw3E8g7eoowgCbQ2pCKbXUZzXcM/lfvWkI8b8xxk8p+UWIbPD41MHUZOjajGJpjWnpVxJhY7BDYkJ1NButKGKOjzz3ksRIxqvkKcMegC4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=i+EpCeJP; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="i+EpCeJP" Received: from pps.filterd (m0241204.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49F8bYfA027894; Tue, 15 Oct 2024 14:16:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= 1FmGrSANQn07iSNnWCRz9WCfIaMI09hSsfRbqu2gnOU=; b=i+EpCeJP2v5lQoKP 7wHXFfPiAb0MUdQuYdomotUyZGBeM3pWQhTsJz7KvjBqh8qg+8N7owPlycG9D/Uh l5akDnfr+1U+B81/BrulzujahyC1ij3h5eEUPTtyJXuXHuiJdzKxHGTEY+o2DA02 ek3J2DIa+YrcnoETc85jrpccnTkJHlsDi6S22hsFiZ8KMQG86vTdoJD3t7OGF0p6 hd0fY84V4HJpfbiIngHCdXo/1tQUnG/5hamgUBJJquiBrNYQT3a8IvcS92V6c5sY cy8mobAO4dO7ccFKQuvAjGk6P3McC9T+zTaHVInYrwTG+OR/IFd9gFMIPb6ebkf1 jQV8zQ== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 427gewwakg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:16 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 084CB4004F; Tue, 15 Oct 2024 14:15:28 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 4CA2322233B; Tue, 15 Oct 2024 14:14:47 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:47 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:37 +0200 Subject: [PATCH v2 1/9] dt-bindings: dma: stm32-dma3: prevent packing/unpacking mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-1-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 When source data width/burst and destination data width/burst are different, data are packed or unpacked in DMA3 channel FIFO. Data are pushed out from DMA3 channel FIFO when the destination burst length (=3D data width * burst) is reached. If the channel is stopped before the transfer end, and if some bytes are packed/unpacked in the DMA3 channel FIFO, these bytes are lost. Indeed, DMA3 channel FIFO has no flush capability, only reset. To avoid potential bytes lost, pack/unpack must be prevented by setting memory data width/burst equal to peripheral data width/burst. Memory accesses will be penalized. But it is the only way to avoid bytes lost. Some devices (e.g. cyclic RX like UART) need this, so add the possibility to prevent pack/unpack feature, by setting bit 16 of the 'DMA transfer requirements' bit mask. Acked-by: Rob Herring (Arm) Signed-off-by: Amelie Delaunay --- Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml= b/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml index 7fdc44b2e6467928622a5bb25d9e0c74bb1790ae..5484848735f8ac3d2050104bbab= 1d986e82ba6a7 100644 --- a/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml +++ b/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml @@ -96,6 +96,9 @@ properties: including the update of the LLI if any 0x3: at channel level, the transfer complete event is generated = at the end of the last LLI + -bit 16: Prevent packing/unpacking mode + 0x0: pack/unpack enabled when source data width/burst !=3D desti= nation data width/burst + 0x1: memory data width/burst forced to peripheral data width/bur= st to prevent pack/unpack =20 required: - compatible --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 7558E1EC000; Tue, 15 Oct 2024 12:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994591; cv=none; b=oIz+S5kIBcLdDMMAjWv/+D2xtXEYGsq9TeHn1ukbkopgn4Z39mVaR/QknO+rIWtZ3ZY/NzVO0+WZBZkKK0Q8hS7z1QgJDv38smNj6DsQwPiEKX7FWFH1JSVKS+PRqVb+5+b6b3Y06QesxGDXoutgckaXYfUCn1AkYZVsDZpqTJo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994591; c=relaxed/simple; bh=wdD98dh8hUdD7Br13Zty15YgoaLIF2Za0M8sk3rkhD8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=dwzynVSNBFi7M43WxRkKP7vTEl65s7kdZsownu8gf+sdQgPk3Dq1OAHP8D7prmVI9WW1zMOBgzJfCMuqllNrG9vpT+loJMxP3jSwhlTY/tPhT5XQOQvyZN3O7cmtFZqlljt7hesBL9GnZUqH02SHxZpQmZs5pbRxG4kkm0OMF+M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=a/1U2B53; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="a/1U2B53" Received: from pps.filterd (m0369458.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FCDgww007077; Tue, 15 Oct 2024 14:16:17 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= 20xEPx4JtIHJKB3XkmoT5ueiiLey/iQq4U2NsvYq/Ns=; b=a/1U2B53urKib74m Ja3HrZUBazeMf49Au1g9cUARiJ0XAHYE0wbVqm35HR8ptcc0VlfGODPK0u1NUsAg HrNFd1XDnsXQgjiQZF6JC8aT71Ug05c+FyiCKpaDiTambe1tVNr5RLR58s2OTFoM XJcLqpcAszgwU7kZN2PE21ue/NAIQNd+HX9W4DOsf9dd0WcMsp+Sp3kII2w4Vn0O XkpERlJ7fmR8TyG5vi9yHWMDAsPaO8Z4nSy9b2guFAhZxQzR/eyk+3JbjIuHU+Bc m6BFCacNpgpP5GB92q9dfQ2eoPKzfHNxi57kLXbY+UArnIWNqtO/zlsvyFnHzXjb Tz2i0Q== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 4282p12r85-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:17 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id AA2C140069; Tue, 15 Oct 2024 14:15:20 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 07D1E22233D; Tue, 15 Oct 2024 14:14:48 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:47 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:38 +0200 Subject: [PATCH v2 2/9] dmaengine: stm32-dma3: prevent pack/unpack thanks to DT configuration Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-2-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 When source data width/burst and destination data width/burst are different, data are packed or unpacked in DMA3 channel FIFO, using CxTR1.PAM. Data are pushed out from DMA3 channel FIFO when the destination burst length (=3D data width * burst) is reached. If the transfer is stopped before CxBR1.BNDT =3D 0, and if some bytes are packed/unpacked in the DMA3 channel FIFO, these bytes are lost. Indeed, DMA3 channel FIFO has no flush capability, only reset. To avoid potential bytes lost, pack/unpack must be prevented by setting memory data width/burst equal to peripheral data width/burst. Memory accesses will be penalized. But it is the only way to avoid bytes lost. Prevent pack/unpack feature can be activated by setting bit 16 of DMA3 Transfer requirements bitfield (tr_conf) in device tree. Signed-off-by: Amelie Delaunay --- drivers/dma/stm32/stm32-dma3.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c index b9470f783f98940a99addaeef6d0a8bc07b5c54b..f793eecd2c27ca17cedd5cabbaa= 1b1beca202039 100644 --- a/drivers/dma/stm32/stm32-dma3.c +++ b/drivers/dma/stm32/stm32-dma3.c @@ -221,6 +221,7 @@ enum stm32_dma3_port_data_width { #define STM32_DMA3_DT_BREQ BIT(8) /* CTR2_BREQ */ #define STM32_DMA3_DT_PFREQ BIT(9) /* CTR2_PFREQ */ #define STM32_DMA3_DT_TCEM GENMASK(13, 12) /* CTR2_TCEM */ +#define STM32_DMA3_DT_NOPACK BIT(16) /* CTR1_PAM */ =20 /* struct stm32_dma3_chan .config_set bitfield */ #define STM32_DMA3_CFG_SET_DT BIT(0) @@ -622,6 +623,10 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_c= han *chan, enum dma_transf /* Set source (memory) data width and burst */ sdw =3D stm32_dma3_get_max_dw(chan->max_burst, sap_max_dw, len, src_addr= ); sbl_max =3D stm32_dma3_get_max_burst(len, sdw, chan->max_burst); + if (!!FIELD_GET(STM32_DMA3_DT_NOPACK, tr_conf)) { + sdw =3D ddw; + sbl_max =3D dbl_max; + } =20 _ctr1 |=3D FIELD_PREP(CTR1_SDW_LOG2, ilog2(sdw)); _ctr1 |=3D FIELD_PREP(CTR1_SBL_1, sbl_max - 1); @@ -652,6 +657,11 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_c= han *chan, enum dma_transf /* Set destination (memory) data width and burst */ ddw =3D stm32_dma3_get_max_dw(chan->max_burst, dap_max_dw, len, dst_addr= ); dbl_max =3D stm32_dma3_get_max_burst(len, ddw, chan->max_burst); + if (!!FIELD_GET(STM32_DMA3_DT_NOPACK, tr_conf) || + ((_ctr2 & CTR2_PFREQ) && ddw > sdw)) { /* Packing to wider ddw not s= upported */ + ddw =3D sdw; + dbl_max =3D sbl_max; + } =20 _ctr1 |=3D FIELD_PREP(CTR1_SDW_LOG2, ilog2(sdw)); _ctr1 |=3D FIELD_PREP(CTR1_SBL_1, sbl_max - 1); --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx08-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) (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 F35471F707A; Tue, 15 Oct 2024 12:16:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.207.212.93 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994604; cv=none; b=pbdrc0Dhw220nvVnTj/Vg4SGp549Lhg56Tb65pqQ3ZInH7TttlAG2iOvearInrNF7eL3SyeVkPLvOleZFIk9DRlXOiSPPYEMcmQKfsaNO9sX+AcCUNhaBwLbhdX2+E0OHiIKlM0D+Gp4OuKz/l9qsne64xEXw18w2MFNTBSkfXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994604; c=relaxed/simple; bh=HgMME6IRDHpuIAaHCfRr6oI+t6HtahI4szIwGwlqa4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=u2Hc60eqpH8LZxz3xZ3uL0ufrXttG5Y3nMFOhrFpmLatzzFGMgQxVug7tGDNk6y82JGe83jHSs7Jv+HInUDuLQVAfRF0T82rylkUvdjlxbHM4RW6XheSCYrcRd9plQXvwpRaB52G6X3uC9EP0gtpzKWf70qJODW0tN/X6RjkuF4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=3bS1b1Eg; arc=none smtp.client-ip=91.207.212.93 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="3bS1b1Eg" Received: from pps.filterd (m0369457.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FBeP8P018110; Tue, 15 Oct 2024 14:16:21 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= SpHHpfjWYDyEBkQxP7SYNJ+CCTu5C3HJbtAasNlzTiE=; b=3bS1b1EgFj/3hNrb 5rDefCCkSbAF+rOkWaG/5wszwmbWMoQnx8GSxTuARwLkojNisbucUAymmIqrOALa XGYUHND52SUIvH0KZn/9BSdZOxALN9EXNcH6eO8UGMRB50MBFIYpz91h85LA9CHU nCEhMzp4boCVZOCXrMWBy/eI+XMZuUVf2qmTwwS8RFGsUOtT1PDyKFrYIVOvzXCv 49KYORGCRPlqTguZSyXZzOEfI1YRskfi+5rEiSobvsViQf4xbgBl5/W3Z42kgs+o 0ncLyfCLGqpM/FLgAU4wc7dUHyKzTBKMn6G9MgVVK10UEOTApntIjqxwblHEUaIz RU/hKw== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 42842jacmc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:21 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 07FCA40048; Tue, 15 Oct 2024 14:15:28 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id B2EC3222350; Tue, 15 Oct 2024 14:14:48 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:48 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:39 +0200 Subject: [PATCH v2 3/9] dmaengine: stm32-dma3: refactor HW linked-list to optimize memory accesses Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-3-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 Current behavior splits the buffer/sg in n * STM32_DMA3_MAX_BLOCK_SIZE + 1 for the remainder without optimization. New behavior splits the buffer/sg in n * STM32_DMA3_MAX_BLOCK_SIZE + 1 for (x * chan->max_burst) + 1 for the remainder. Depending on channel FIFO size, optimal double-word (word if only 8-byte FIFO size) bursts can be programmed before managing the very last remainder with lower data width. In case of _prep_slave_sg, and depending on the channel Transfer Complete event configuration, the user is warned about the refactored linked-list, not having the same items count than the initial sg_list. This warning is shown only if the configuration is successful. Signed-off-by: Amelie Delaunay --- drivers/dma/stm32/stm32-dma3.c | 40 +++++++++++++++++++++++++++++++++-----= -- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c index f793eecd2c27ca17cedd5cabbaa1b1beca202039..1d961f5935f935e3855467318cd= cde6e6173e43c 100644 --- a/drivers/dma/stm32/stm32-dma3.c +++ b/drivers/dma/stm32/stm32-dma3.c @@ -1126,6 +1126,25 @@ static void stm32_dma3_free_chan_resources(struct dm= a_chan *c) chan->config_set =3D 0; } =20 +static u32 stm32_dma3_get_ll_count(struct stm32_dma3_chan *chan, size_t le= n) +{ + u32 count; + + count =3D len / STM32_DMA3_MAX_BLOCK_SIZE; + len -=3D (len / STM32_DMA3_MAX_BLOCK_SIZE) * STM32_DMA3_MAX_BLOCK_SIZE; + + if (len >=3D chan->max_burst) { + count +=3D 1; /* len < STM32_DMA3_MAX_BLOCK_SIZE here, so it fits in one= item */ + len -=3D (len / chan->max_burst) * chan->max_burst; + } + + /* Unaligned remainder fits in one extra item */ + if (len > 0) + count +=3D 1; + + return count; +} + static void stm32_dma3_init_chan_config_for_memcpy(struct stm32_dma3_chan = *chan, dma_addr_t dst, dma_addr_t src) { @@ -1161,7 +1180,7 @@ static struct dma_async_tx_descriptor *stm32_dma3_pre= p_dma_memcpy(struct dma_cha size_t next_size, offset; u32 count, i, ctr1, ctr2; =20 - count =3D DIV_ROUND_UP(len, STM32_DMA3_MAX_BLOCK_SIZE); + count =3D stm32_dma3_get_ll_count(chan, len); =20 swdesc =3D stm32_dma3_chan_desc_alloc(chan, count); if (!swdesc) @@ -1177,6 +1196,9 @@ static struct dma_async_tx_descriptor *stm32_dma3_pre= p_dma_memcpy(struct dma_cha remaining =3D len - offset; next_size =3D min_t(size_t, remaining, STM32_DMA3_MAX_BLOCK_SIZE); =20 + if (next_size < STM32_DMA3_MAX_BLOCK_SIZE && next_size >=3D chan->max_bu= rst) + next_size =3D chan->max_burst * (remaining / chan->max_burst); + ret =3D stm32_dma3_chan_prep_hw(chan, DMA_MEM_TO_MEM, &swdesc->ccr, &ctr= 1, &ctr2, src + offset, dst + offset, next_size); if (ret) @@ -1215,12 +1237,9 @@ static struct dma_async_tx_descriptor *stm32_dma3_pr= ep_slave_sg(struct dma_chan u32 i, j, count, ctr1, ctr2; int ret; =20 - count =3D sg_len; - for_each_sg(sgl, sg, sg_len, i) { - len =3D sg_dma_len(sg); - if (len > STM32_DMA3_MAX_BLOCK_SIZE) - count +=3D DIV_ROUND_UP(len, STM32_DMA3_MAX_BLOCK_SIZE) - 1; - } + count =3D 0; + for_each_sg(sgl, sg, sg_len, i) + count +=3D stm32_dma3_get_ll_count(chan, sg_dma_len(sg)); =20 swdesc =3D stm32_dma3_chan_desc_alloc(chan, count); if (!swdesc) @@ -1237,6 +1256,9 @@ static struct dma_async_tx_descriptor *stm32_dma3_pre= p_slave_sg(struct dma_chan do { size_t chunk =3D min_t(size_t, len, STM32_DMA3_MAX_BLOCK_SIZE); =20 + if (chunk < STM32_DMA3_MAX_BLOCK_SIZE && chunk >=3D chan->max_burst) + chunk =3D chan->max_burst * (len / chan->max_burst); + if (dir =3D=3D DMA_MEM_TO_DEV) { src =3D sg_addr; dst =3D dev_addr; @@ -1269,6 +1291,10 @@ static struct dma_async_tx_descriptor *stm32_dma3_pr= ep_slave_sg(struct dma_chan } while (len); } =20 + if (count !=3D sg_len && chan->tcem !=3D CTR2_TCEM_CHANNEL) + dev_warn(chan2dev(chan), "Linked-list refactored, %d items instead of %d= \n", + count, sg_len); + /* Enable Error interrupts */ swdesc->ccr |=3D CCR_USEIE | CCR_ULEIE | CCR_DTEIE; /* Enable Transfer state interrupts */ --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx08-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) (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 B230A1EC00D; Tue, 15 Oct 2024 12:16:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.207.212.93 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994602; cv=none; b=ioko76i/y8tqYjFyaDSrkizQFY8OUf/aL4U7frrH70WaeJOTCenT8IalMverIjD3m1zrnvRubb9dZD2b47Her1holJ4d8Zh+oIKgu51Dd3wb8DQmRSJAeEpKGmBTWEEpnUJiTng1j9X0AC7L6ObvGUlQV0H0kWITlEY7IscF03w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994602; c=relaxed/simple; bh=KJJX6Mk2BIPcDHxmAdAAVN4AJzb4fo5uCPsJqP5Eu/0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=i6Z+kXiYp3UAWP7dBwxYxVVSUck2HBsYA4XG6+e6u/MkrgXtq2+Nl9sOaIDfnXciBaPnyVmFNOaElQB+cwB9wxWSit+8Mds2hc4o2OR2o39s9OeSpTgm4gQs+O6BwGpI/JLJU/N8NF2szKIMfpSlVNCKWVJiZ+Vr8k+6qlq1r90= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=nOcGlcw1; arc=none smtp.client-ip=91.207.212.93 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="nOcGlcw1" Received: from pps.filterd (m0369457.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FBmlSi018353; Tue, 15 Oct 2024 14:16:16 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= rbIrnqQYiSJv3pnlZhdNGe2+XdPzVYU0/oTVXJYKvZg=; b=nOcGlcw1VsnJFLIW Oqk8zgm2Q/Vog9QyUEeK6Bz+rsZbMLXgVGrKWvcp6aP6BduUqdl0w10eYOhwDbLW V0A09IGFxmn+ocHUz5+eXCoIcHLiUrT7MDXiZzNLlaqu7K1cDlLk+R3caa1cFuQi +KljtQ6GdUMsAMXcPT2PJdfcveeVjZcMnBap060lUDe+qyA3hMMyydQUv13FW09R Rcn9sEoMdcZionsMxW0oiECJPvXHZ7OixyTHTFdRkIt02eU8E09HGmMb15t+Nw/8 wYjToD3DwjDocGwTk63lElbzzWKjRbRQWYonLzdRIsB/lpGoGVwuTnCs31LYbnoq qpQNhQ== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 42842jacm9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:16 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 07F4940047; Tue, 15 Oct 2024 14:15:29 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 69C96222351; Tue, 15 Oct 2024 14:14:49 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:49 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:40 +0200 Subject: [PATCH v2 4/9] dt-bindings: dma: stm32-dma3: prevent additional transfers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-4-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 stm32-dma3 driver refactors the linked-list in order to address the memory with the highest possible data width. It means that it can introduce up to 2 linked-list items. One with a transfer length multiple of channel maximum burst length and so with the highest possible data width. And an extra one with the latest bytes, with lower data width. Some devices (e.g. FMC ECC) don't support having several transfers instead of only one. So add the possibility to prevent these additional transfers, by setting bit 17 of the 'DMA transfer requirements' bit mask. Signed-off-by: Amelie Delaunay --- Changes in v2: - Reword commit title/message/content as per Rob's suggestion. --- Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml= b/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml index 5484848735f8ac3d2050104bbab1d986e82ba6a7..36f9fe860eb990e6caccedd3146= 0ee6993772a35 100644 --- a/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml +++ b/Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml @@ -99,6 +99,9 @@ properties: -bit 16: Prevent packing/unpacking mode 0x0: pack/unpack enabled when source data width/burst !=3D desti= nation data width/burst 0x1: memory data width/burst forced to peripheral data width/bur= st to prevent pack/unpack + -bit 17: Prevent additional transfers due to linked-list refactori= ng + 0x0: don't prevent additional transfers for optimal performance + 0x1: prevent additional transfer to accommodate user constraints= such as single transfer =20 required: - compatible --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 546191EC009; Tue, 15 Oct 2024 12:16:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994603; cv=none; b=h8QH3vdGh96+0VmKa7tfUKa1XoQ9p/+7VO1gbH/+SphyMFdYvR9c6MPj23NRHfxMUdyXDU+sA6xuPBl7aHKeRQtj05NHR0KCPxYb2+4m3PoWwzNZxG6Yuzdelu61SrwBBc59R1Gd2idKVnakctJToPG6soFeMWQouFW9gYkGKdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994603; c=relaxed/simple; bh=0wMZjBiKbeWlkn1SVGWn4ELdfYW09IWr4QPh1pal+X8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=ZM1BCSR+JMJUt+/Rc8p6dqGhBBTeHICql/gatC1yo+uhai1gISCSTbDqBs3GAY5PvY+133KljxBqgpzM6I2HrNrjytqHc8qyjXJueJDZBkwCgImlrF582MoqEb7fV7+yDxn1vMetTglWLpp7HipV0yi7N/1lfP8K+S+ZUcDXZJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=vTMuzf//; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="vTMuzf//" Received: from pps.filterd (m0369458.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FCDNIr007311; Tue, 15 Oct 2024 14:16:32 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= UZRhPTOG/vhlw4ceqD6czRH3HdQz/01xNzvZSqz2geU=; b=vTMuzf//+0bk1NhS N37pewjvwaYsJleKvwDYhYu/5QR8RwFxfzquExbgt2w9WXteGCE1o3OCrCias4VB Dbq4guOsaA+U7eLjszqoKsVgLbiGYEHNSP5+Gndabq6xkeqMEqJGDhlX1MhBMtKj nCahYVVMIggsxcl05DIcG8EzZ1R7nvKQA6mBQHq3u6nn2cBrHQCYVipvnWwLEcWL 14OZzjDGycRW5qX1aHclklWnHMxV9Pw7voCNZiIoIjflou9HfdeuO8/utlsz1ZDH sm1sjXZ8ec9LrRRshhqS8MM8LBahf2og7Jz8WfVIStp+BIQH/4I9U7xZsRQcpHwi lNdjHQ== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 4282p12r96-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:31 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 08E4040052; Tue, 15 Oct 2024 14:15:28 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 25FBF222C93; Tue, 15 Oct 2024 14:14:50 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:49 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:41 +0200 Subject: [PATCH v2 5/9] dmaengine: stm32-dma3: prevent LL refactoring thanks to DT configuration Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-5-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 stm32-dma3 driver refactors the linked-list in order to address the memory with the highest possible data width. It means that it can introduce up to 2 linked-list items. One with a transfer length multiple of channel maximum burst length and so with the highest possible data width. And an extra one with the latest bytes, with lower data width. Some devices (e.g. FMC ECC) don't support having several transfers instead of only one. So add the possibility to prevent linked-list refactoring, when bit 17 of the 'DMA transfer requirements' bit mask is set in device tree. When NOPACK feature is used (bit 16 pf the 'DMA transfer requirements' bit mask in device tree), linked-list refactoring can be avoided, since the memory data width and burst will be aligned with the device ones. Signed-off-by: Amelie Delaunay --- drivers/dma/stm32/stm32-dma3.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c index 1d961f5935f935e3855467318cdcde6e6173e43c..fc874fec729df733fd8a6b4362f= e1a937e9443c7 100644 --- a/drivers/dma/stm32/stm32-dma3.c +++ b/drivers/dma/stm32/stm32-dma3.c @@ -222,6 +222,7 @@ enum stm32_dma3_port_data_width { #define STM32_DMA3_DT_PFREQ BIT(9) /* CTR2_PFREQ */ #define STM32_DMA3_DT_TCEM GENMASK(13, 12) /* CTR2_TCEM */ #define STM32_DMA3_DT_NOPACK BIT(16) /* CTR1_PAM */ +#define STM32_DMA3_DT_NOREFACT BIT(17) =20 /* struct stm32_dma3_chan .config_set bitfield */ #define STM32_DMA3_CFG_SET_DT BIT(0) @@ -1126,10 +1127,13 @@ static void stm32_dma3_free_chan_resources(struct d= ma_chan *c) chan->config_set =3D 0; } =20 -static u32 stm32_dma3_get_ll_count(struct stm32_dma3_chan *chan, size_t le= n) +static u32 stm32_dma3_get_ll_count(struct stm32_dma3_chan *chan, size_t le= n, bool prevent_refactor) { u32 count; =20 + if (prevent_refactor) + return DIV_ROUND_UP(len, STM32_DMA3_MAX_BLOCK_SIZE); + count =3D len / STM32_DMA3_MAX_BLOCK_SIZE; len -=3D (len / STM32_DMA3_MAX_BLOCK_SIZE) * STM32_DMA3_MAX_BLOCK_SIZE; =20 @@ -1179,8 +1183,10 @@ static struct dma_async_tx_descriptor *stm32_dma3_pr= ep_dma_memcpy(struct dma_cha struct stm32_dma3_swdesc *swdesc; size_t next_size, offset; u32 count, i, ctr1, ctr2; + bool prevent_refactor =3D !!FIELD_GET(STM32_DMA3_DT_NOPACK, chan->dt_conf= ig.tr_conf) || + !!FIELD_GET(STM32_DMA3_DT_NOREFACT, chan->dt_config.tr_conf); =20 - count =3D stm32_dma3_get_ll_count(chan, len); + count =3D stm32_dma3_get_ll_count(chan, len, prevent_refactor); =20 swdesc =3D stm32_dma3_chan_desc_alloc(chan, count); if (!swdesc) @@ -1196,7 +1202,8 @@ static struct dma_async_tx_descriptor *stm32_dma3_pre= p_dma_memcpy(struct dma_cha remaining =3D len - offset; next_size =3D min_t(size_t, remaining, STM32_DMA3_MAX_BLOCK_SIZE); =20 - if (next_size < STM32_DMA3_MAX_BLOCK_SIZE && next_size >=3D chan->max_bu= rst) + if (!prevent_refactor && + (next_size < STM32_DMA3_MAX_BLOCK_SIZE && next_size >=3D chan->max_b= urst)) next_size =3D chan->max_burst * (remaining / chan->max_burst); =20 ret =3D stm32_dma3_chan_prep_hw(chan, DMA_MEM_TO_MEM, &swdesc->ccr, &ctr= 1, &ctr2, @@ -1235,11 +1242,13 @@ static struct dma_async_tx_descriptor *stm32_dma3_p= rep_slave_sg(struct dma_chan size_t len; dma_addr_t sg_addr, dev_addr, src, dst; u32 i, j, count, ctr1, ctr2; + bool prevent_refactor =3D !!FIELD_GET(STM32_DMA3_DT_NOPACK, chan->dt_conf= ig.tr_conf) || + !!FIELD_GET(STM32_DMA3_DT_NOREFACT, chan->dt_config.tr_conf); int ret; =20 count =3D 0; for_each_sg(sgl, sg, sg_len, i) - count +=3D stm32_dma3_get_ll_count(chan, sg_dma_len(sg)); + count +=3D stm32_dma3_get_ll_count(chan, sg_dma_len(sg), prevent_refacto= r); =20 swdesc =3D stm32_dma3_chan_desc_alloc(chan, count); if (!swdesc) @@ -1256,7 +1265,8 @@ static struct dma_async_tx_descriptor *stm32_dma3_pre= p_slave_sg(struct dma_chan do { size_t chunk =3D min_t(size_t, len, STM32_DMA3_MAX_BLOCK_SIZE); =20 - if (chunk < STM32_DMA3_MAX_BLOCK_SIZE && chunk >=3D chan->max_burst) + if (!prevent_refactor && + (chunk < STM32_DMA3_MAX_BLOCK_SIZE && chunk >=3D chan->max_burst)) chunk =3D chan->max_burst * (len / chan->max_burst); =20 if (dir =3D=3D DMA_MEM_TO_DEV) { --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 A79F51EF0A0; Tue, 15 Oct 2024 12:16:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994592; cv=none; b=S+CwDWbcNETEDPV6F5lCYb91mvMI6TOn7Tos8q/Iq+9nd7hoByChVfPpmVjzmhIlmpwDeYjCAFluES1UEUmEEjkLulIhZa1SMjegx9IXx2ci5W7gsTHfIiVLAU5QBvQAgMf/4TyPO0Y/Vj9+F3pFASeRdwAyT693okJX6ucHEAE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994592; c=relaxed/simple; bh=LBdAfU8Kqu/fwBNvbyHjVHYadinYm9GDo39TryH+pVo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=unNNwh4zNC7vB/R3XfcKtJryXMHdCiMSQBOEsVoiXXYipF/M52bkvWxvdx9HeIYKUQzaRyV3zKONp5O9JD/q6KYIoOy393d/IymALjM86nFCC7PSQy8wAB+OjUglqG3PN24PEoZUCgPXfCWDWapNNM/gKh/RBwV/+AXEtw6U8c0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=1Jk2rpjH; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="1Jk2rpjH" Received: from pps.filterd (m0288072.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FBQP8Q005433; Tue, 15 Oct 2024 14:16:20 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= +kNC9WvxILqPos1K+zUy/g4I3JBkEYea0nY08omeYVo=; b=1Jk2rpjHqCLvUNCc 8RAHFA6XwWgdVDHkFt0SBWlewbtLobrW8rjC90qqm9tBVK06tDMsVvudlaEoHDrz 6o2iBddnp8yH8touNsOVcACaWdsdvjLzwxm2BlPegt2tcROmrrVTJdmDgsoEUijJ i0x1seVJ5plQ9KUI14ao039CrRXfZn3xnpnSY2CwcHOXx1BWvfNoMw3Hb0sylfXu tcYfC+W5l1lOR2l+8LkSl7F7Cd0Irzpa8kKWDOjmolvKPk0PphDY+2NQRGgjuqVx fAa/eC45zjkt85WVh/FJEPVb+73CFbR0IT68aGtPdYWPMPuWU2tTAtsmrUORgwU1 b2/MHg== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 427ehg5n91-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:19 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 0813A4004A; Tue, 15 Oct 2024 14:15:28 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id D55B7222CB4; Tue, 15 Oct 2024 14:14:50 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:50 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:42 +0200 Subject: [PATCH v2 6/9] dmaengine: stm32-dma3: clamp AXI burst using match data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-6-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 STM32 DMA3 can be interconnected with AXI3 or AXI4 busses. In case it is interconnected with AXI3, the maximum burst length supported by AXI3 protocol is 16 beats, which is lower than the maximum burst length supported by STM32 DMA3. So the programmed burst has to be shortened when AXI port is used. Introduce struct stm32_dma3_pdata to specify the specific configurations (e.g. AXI maximum burst length) required by the SoC, so implied by the SoC specific compatible. Signed-off-by: Amelie Delaunay --- Changes in v2: - Rework AXI maximum burst length management using SoC specific compatible instead of st,axi-max-burst-len DT property, as pointed out by Rob. --- drivers/dma/stm32/stm32-dma3.c | 59 ++++++++++++++++++++++++++++++++------= ---- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c index fc874fec729df733fd8a6b4362fe1a937e9443c7..0c6c4258b19561c94f1c68f26ad= e16b82660ebe6 100644 --- a/drivers/dma/stm32/stm32-dma3.c +++ b/drivers/dma/stm32/stm32-dma3.c @@ -230,6 +230,8 @@ enum stm32_dma3_port_data_width { #define STM32_DMA3_CFG_SET_BOTH (STM32_DMA3_CFG_SET_DT | STM32_DMA3_CFG_S= ET_DMA) =20 #define STM32_DMA3_MAX_BLOCK_SIZE ALIGN_DOWN(CBR1_BNDT, 64) +#define STM32_DMA3_MAX_BURST_LEN (1 + min_t(u32, FIELD_MAX(CTR1_SBL_1), \ + FIELD_MAX(CTR1_DBL_1))) #define port_is_ahb(maxdw) ({ typeof(maxdw) (_maxdw) =3D (maxdw); \ ((_maxdw) !=3D DW_INVALID) && ((_maxdw) =3D=3D DW_32); }) #define port_is_axi(maxdw) ({ typeof(maxdw) (_maxdw) =3D (maxdw); \ @@ -295,6 +297,10 @@ struct stm32_dma3_chan { u32 dma_status; }; =20 +struct stm32_dma3_pdata { + u32 axi_max_burst_len; +}; + struct stm32_dma3_ddata { struct dma_device dma_dev; void __iomem *base; @@ -303,6 +309,7 @@ struct stm32_dma3_ddata { u32 dma_channels; u32 dma_requests; enum stm32_dma3_port_data_width ports_max_dw[2]; + u32 axi_max_burst_len; }; =20 static inline struct stm32_dma3_ddata *to_stm32_dma3_ddata(struct stm32_dm= a3_chan *chan) @@ -535,7 +542,8 @@ static enum dma_slave_buswidth stm32_dma3_get_max_dw(u3= 2 chan_max_burst, return 1 << __ffs(len | addr | max_dw); } =20 -static u32 stm32_dma3_get_max_burst(u32 len, enum dma_slave_buswidth dw, u= 32 chan_max_burst) +static u32 stm32_dma3_get_max_burst(u32 len, enum dma_slave_buswidth dw, + u32 chan_max_burst, u32 bus_max_burst) { u32 max_burst =3D chan_max_burst ? chan_max_burst / dw : 1; =20 @@ -546,8 +554,9 @@ static u32 stm32_dma3_get_max_burst(u32 len, enum dma_s= lave_buswidth dw, u32 cha /* * HW doesn't modify the burst if burst size <=3D half of the fifo size. * If len is not a multiple of burst size, last burst is shortened by HW. + * Take care of maximum burst supported on interconnect bus. */ - return max_burst; + return min_t(u32, max_burst, bus_max_burst); } =20 static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_= transfer_direction dir, @@ -556,6 +565,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_ch= an *chan, enum dma_transf { struct stm32_dma3_ddata *ddata =3D to_stm32_dma3_ddata(chan); struct dma_device dma_device =3D ddata->dma_dev; + u32 src_max_burst =3D STM32_DMA3_MAX_BURST_LEN, dst_max_burst =3D STM32_D= MA3_MAX_BURST_LEN; u32 sdw, ddw, sbl_max, dbl_max, tcem, init_dw, init_bl_max; u32 _ctr1 =3D 0, _ctr2 =3D 0; u32 ch_conf =3D chan->dt_config.ch_conf; @@ -596,10 +606,14 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_= chan *chan, enum dma_transf _ctr1 |=3D CTR1_SINC; if (sap) _ctr1 |=3D CTR1_SAP; + if (port_is_axi(sap_max_dw)) /* AXI - apply axi maximum burst limitation = */ + src_max_burst =3D ddata->axi_max_burst_len; if (FIELD_GET(STM32_DMA3_DT_DINC, tr_conf)) _ctr1 |=3D CTR1_DINC; if (dap) _ctr1 |=3D CTR1_DAP; + if (port_is_axi(dap_max_dw)) /* AXI - apply axi maximum burst limitation = */ + dst_max_burst =3D ddata->axi_max_burst_len; =20 _ctr2 |=3D FIELD_PREP(CTR2_REQSEL, chan->dt_config.req_line) & ~CTR2_SWRE= Q; if (FIELD_GET(STM32_DMA3_DT_BREQ, tr_conf)) @@ -619,11 +633,12 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_= chan *chan, enum dma_transf /* Set destination (device) data width and burst */ ddw =3D min_t(u32, ddw, stm32_dma3_get_max_dw(chan->max_burst, dap_max_d= w, len, dst_addr)); - dbl_max =3D min_t(u32, dbl_max, stm32_dma3_get_max_burst(len, ddw, chan-= >max_burst)); + dbl_max =3D min_t(u32, dbl_max, stm32_dma3_get_max_burst(len, ddw, chan-= >max_burst, + dst_max_burst)); =20 /* Set source (memory) data width and burst */ sdw =3D stm32_dma3_get_max_dw(chan->max_burst, sap_max_dw, len, src_addr= ); - sbl_max =3D stm32_dma3_get_max_burst(len, sdw, chan->max_burst); + sbl_max =3D stm32_dma3_get_max_burst(len, sdw, chan->max_burst, src_max_= burst); if (!!FIELD_GET(STM32_DMA3_DT_NOPACK, tr_conf)) { sdw =3D ddw; sbl_max =3D dbl_max; @@ -653,11 +668,12 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_= chan *chan, enum dma_transf /* Set source (device) data width and burst */ sdw =3D min_t(u32, sdw, stm32_dma3_get_max_dw(chan->max_burst, sap_max_d= w, len, src_addr)); - sbl_max =3D min_t(u32, sbl_max, stm32_dma3_get_max_burst(len, sdw, chan-= >max_burst)); + sbl_max =3D min_t(u32, sbl_max, stm32_dma3_get_max_burst(len, sdw, chan-= >max_burst, + src_max_burst)); =20 /* Set destination (memory) data width and burst */ ddw =3D stm32_dma3_get_max_dw(chan->max_burst, dap_max_dw, len, dst_addr= ); - dbl_max =3D stm32_dma3_get_max_burst(len, ddw, chan->max_burst); + dbl_max =3D stm32_dma3_get_max_burst(len, ddw, chan->max_burst, dst_max_= burst); if (!!FIELD_GET(STM32_DMA3_DT_NOPACK, tr_conf) || ((_ctr2 & CTR2_PFREQ) && ddw > sdw)) { /* Packing to wider ddw not s= upported */ ddw =3D sdw; @@ -689,22 +705,24 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_= chan *chan, enum dma_transf init_dw =3D sdw; init_bl_max =3D sbl_max; sdw =3D stm32_dma3_get_max_dw(chan->max_burst, sap_max_dw, len, src_addr= ); - sbl_max =3D stm32_dma3_get_max_burst(len, sdw, chan->max_burst); + sbl_max =3D stm32_dma3_get_max_burst(len, sdw, chan->max_burst, src_max_= burst); if (chan->config_set & STM32_DMA3_CFG_SET_DMA) { sdw =3D min_t(u32, init_dw, sdw); - sbl_max =3D min_t(u32, init_bl_max, - stm32_dma3_get_max_burst(len, sdw, chan->max_burst)); + sbl_max =3D min_t(u32, init_bl_max, stm32_dma3_get_max_burst(len, sdw, + chan->max_burst, + src_max_burst)); } =20 /* Set destination (memory) data width and burst */ init_dw =3D ddw; init_bl_max =3D dbl_max; ddw =3D stm32_dma3_get_max_dw(chan->max_burst, dap_max_dw, len, dst_addr= ); - dbl_max =3D stm32_dma3_get_max_burst(len, ddw, chan->max_burst); + dbl_max =3D stm32_dma3_get_max_burst(len, ddw, chan->max_burst, dst_max_= burst); if (chan->config_set & STM32_DMA3_CFG_SET_DMA) { ddw =3D min_t(u32, init_dw, ddw); - dbl_max =3D min_t(u32, init_bl_max, - stm32_dma3_get_max_burst(len, ddw, chan->max_burst)); + dbl_max =3D min_t(u32, init_bl_max, stm32_dma3_get_max_burst(len, ddw, + chan->max_burst, + dst_max_burst)); } =20 _ctr1 |=3D FIELD_PREP(CTR1_SDW_LOG2, ilog2(sdw)); @@ -1647,8 +1665,12 @@ static u32 stm32_dma3_check_rif(struct stm32_dma3_dd= ata *ddata) return chan_reserved; } =20 +static struct stm32_dma3_pdata stm32mp25_pdata =3D { + .axi_max_burst_len =3D 16, +}; + static const struct of_device_id stm32_dma3_of_match[] =3D { - { .compatible =3D "st,stm32mp25-dma3", }, + { .compatible =3D "st,stm32mp25-dma3", .data =3D &stm32mp25_pdata, }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, stm32_dma3_of_match); @@ -1656,6 +1678,7 @@ MODULE_DEVICE_TABLE(of, stm32_dma3_of_match); static int stm32_dma3_probe(struct platform_device *pdev) { struct device_node *np =3D pdev->dev.of_node; + const struct stm32_dma3_pdata *pdata; struct stm32_dma3_ddata *ddata; struct reset_control *reset; struct stm32_dma3_chan *chan; @@ -1750,6 +1773,16 @@ static int stm32_dma3_probe(struct platform_device *= pdev) else /* Dual master ports */ ddata->ports_max_dw[1] =3D FIELD_GET(G_M1_DATA_WIDTH_ENC, hwcfgr); =20 + /* axi_max_burst_len is optional, if not defined, use STM32_DMA3_MAX_BURS= T_LEN */ + ddata->axi_max_burst_len =3D STM32_DMA3_MAX_BURST_LEN; + pdata =3D device_get_match_data(&pdev->dev); + if (pdata && pdata->axi_max_burst_len) { + ddata->axi_max_burst_len =3D min_t(u32, pdata->axi_max_burst_len, + STM32_DMA3_MAX_BURST_LEN); + dev_dbg(&pdev->dev, "Burst is limited to %u beats through AXI port\n", + ddata->axi_max_burst_len); + } + ddata->chans =3D devm_kcalloc(&pdev->dev, ddata->dma_channels, sizeof(*dd= ata->chans), GFP_KERNEL); if (!ddata->chans) { --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 6CE701E1A35; Tue, 15 Oct 2024 12:16:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994587; cv=none; b=HhGmzuwLI+5UXxMazJxHesAbd2yu6Tby82MYtsuC9mzm8TQtqah82lAaNpL2sQPuAaYX17MWXI6dmP/EludPQORMaiAuHZ0RKq998BIc9TK2mfzezH+jtNlSK9ufng5USFl78FLbAj98R5Zdor4rpJh83wPVwo0UPNWDtUTSJ2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994587; c=relaxed/simple; bh=r3jPO17KChr01yagm5lhIXwjnINK7ogTlXKwCpA6Wz0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=DUSQCAeLqxavQSMCoJYbQi1ETMeZiG4lfBlXNVUFPxyde5IgE4TjqsugAYPIpcJ6kYJ2aS2ZBEtqnnP9A66wHJDIx3yWf80y6GfxuykaYYyun+IWYjo1ZPuhQcG2sonVmAQpn9+Zv5WwrigVth48+zpxGNElHB8mZrDitMn/6SA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=nqu3hTXr; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="nqu3hTXr" Received: from pps.filterd (m0288072.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FBaDcE005320; Tue, 15 Oct 2024 14:16:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= KFc5UtMsTxPLpZ5ZNu4v4Ik5v+Rez2xhUaWk/edfOo0=; b=nqu3hTXr6r7bjSrJ ztprP45TL35S7hlVb0vFHayMy4g7UO9fEqX+I0/ZBK/Z6UaqLsL5JGJltaSQTkDe 2DIFD5leA6WIoySXIt6lrkSgvRgX8AVTNO+LDjYaNmWG7aeNi5DNJ4pBENxtIW71 wQgpbTL+VhQgcZBeV2Qo0cPvM4YqY3PoDVGsVkpfp55p+tbLLGXcbcrIDlgBL4QK bfqBPsFk8m81Er21y12TsG0EYarliLxtamoN7sR8B98f27T0i9+fwURJyCe3djzq PLyUth+yTO+/NqY9A460wg12RomJelUhUTpHeLEOgF/Ne9XyaBqlDlQu2xP46xFs 1t544w== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 427ehg5n7t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:04 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id D1BEC40050; Tue, 15 Oct 2024 14:15:07 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 8A13A222CB7; Tue, 15 Oct 2024 14:14:51 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:51 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:43 +0200 Subject: [PATCH v2 7/9] arm64: dts: st: add DMA support on U(S)ART instances of stm32mp25 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-7-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 Add dmas and dma-names properties in u(s)art nodes of stm32mp251.dtsi to enable DMA support. RX channel requires to prevent pack/unpack feature of DMA to avoid losing bytes when interrupting RX transfer, as it uses a cyclic buffer. Signed-off-by: Amelie Delaunay --- arch/arm64/boot/dts/st/stm32mp251.dtsi | 27 +++++++++++++++++++++++++++ arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 2 ++ 2 files changed, 29 insertions(+) diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/s= t/stm32mp251.dtsi index 1167cf63d7e87aaa15c5c1ed70a9f6511fd818d4..9035fc7ba4857ca98a1a86246d7= d0250196b2a13 100644 --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi @@ -266,6 +266,9 @@ usart2: serial@400e0000 { reg =3D <0x400e0000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_USART2>; + dmas =3D <&hpdma 11 0x20 0x10012>, + <&hpdma 12 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 32>; status =3D "disabled"; }; @@ -275,6 +278,9 @@ usart3: serial@400f0000 { reg =3D <0x400f0000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_USART3>; + dmas =3D <&hpdma 13 0x20 0x10012>, + <&hpdma 14 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 33>; status =3D "disabled"; }; @@ -284,6 +290,9 @@ uart4: serial@40100000 { reg =3D <0x40100000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_UART4>; + dmas =3D <&hpdma 15 0x20 0x10012>, + <&hpdma 16 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 34>; status =3D "disabled"; }; @@ -293,6 +302,9 @@ uart5: serial@40110000 { reg =3D <0x40110000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_UART5>; + dmas =3D <&hpdma 17 0x20 0x10012>, + <&hpdma 18 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 35>; status =3D "disabled"; }; @@ -393,6 +405,9 @@ usart6: serial@40220000 { reg =3D <0x40220000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_USART6>; + dmas =3D <&hpdma 19 0x20 0x10012>, + <&hpdma 20 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 36>; status =3D "disabled"; }; @@ -438,6 +453,9 @@ uart9: serial@402c0000 { reg =3D <0x402c0000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_UART9>; + dmas =3D <&hpdma 25 0x20 0x10012>, + <&hpdma 26 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 39>; status =3D "disabled"; }; @@ -447,6 +465,9 @@ usart1: serial@40330000 { reg =3D <0x40330000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_USART1>; + dmas =3D <&hpdma 9 0x20 0x10012>, + <&hpdma 10 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 31>; status =3D "disabled"; }; @@ -480,6 +501,9 @@ uart7: serial@40370000 { reg =3D <0x40370000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_UART7>; + dmas =3D <&hpdma 21 0x20 0x10012>, + <&hpdma 22 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 37>; status =3D "disabled"; }; @@ -489,6 +513,9 @@ uart8: serial@40380000 { reg =3D <0x40380000 0x400>; interrupts =3D ; clocks =3D <&rcc CK_KER_UART8>; + dmas =3D <&hpdma 23 0x20 0x10012>, + <&hpdma 24 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 38>; status =3D "disabled"; }; diff --git a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts b/arch/arm64/boot/d= ts/st/stm32mp257f-ev1.dts index 214191a8322b81e7ae453503863b4465d9b625e0..d468dcbe849680de812a0ddd593= f30cbf507f645 100644 --- a/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts +++ b/arch/arm64/boot/dts/st/stm32mp257f-ev1.dts @@ -157,6 +157,8 @@ &usart2 { pinctrl-0 =3D <&usart2_pins_a>; pinctrl-1 =3D <&usart2_idle_pins_a>; pinctrl-2 =3D <&usart2_sleep_pins_a>; + /delete-property/dmas; + /delete-property/dma-names; status =3D "okay"; }; =20 --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx08-00178001.pphosted.com [91.207.212.93]) (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 C6F931EC018; Tue, 15 Oct 2024 12:16:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.207.212.93 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994602; cv=none; b=spm7YAm7BGXqGpoJoQl3bjte6u3azvsnsHiUmepS1xONLM22msg1pgl5/mtt/SCX9rou/kxtiHZ4H2CRouliG9GSxKBmQ8CFXcVbdTGIcwCyhrezgBzD0L+erxNCIL0j5Pcn2vG+VKq11CDCfhHDE9olb+RFeugihhY57m3SLzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994602; c=relaxed/simple; bh=pMLifARUAOLNBr01/ck65XhIQfScdJTCO8DMrbIsXwE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=OLcxtiOV3aG4Rgn9cVy6jgbWDZee5B9cLg3xkt3fjGpcY9fBdczUeZfeM/x2JP+JmwqN3UznsOba6u1RTOz660Lwf2+aEjabM6IQ3cRfILPES3HZmUQ1mh9LZTjArZdWabLu+m4r9KAoPQmYkyKvVtHCgvSvodiGmgg3EVbgF6k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=6W+V/D1K; arc=none smtp.client-ip=91.207.212.93 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="6W+V/D1K" Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49F8TXQx021314; Tue, 15 Oct 2024 14:16:29 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= K4/ZRiFK4NnnLcdcmxWLGfjaF+7bw9tWCL81XtmyrjQ=; b=6W+V/D1KM6uoodKF FFXZvvtdxP9J/7SKWyEHury6hGcPx1/EvSrM13j21sKNxfU0evpYvnw5v+sx5ZEw rQcFy4G8XjFRXoxeK8OFs8an3AXwK2Y/wcCX26urnOJWu9v+RJW1ENlwvQon/ntg dQLUpO+O+1GwNYRvQySyZbGb7846PthXn9riyK4/sfClh4KpGJmTkWXoGXx9li89 NG7RFH5Go0PromGIy4vg4Z4zZvTckAms957b3xLX+RedUH3kCXsOro4xPR/dDsG/ 1g4VetRqs/P6WP4Vw7GO/I7bVf2TJhdMabC/4/4xqZZ2zYhqKGz8lQpzHHmeR4fi Szis9A== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 427g0bn2k3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:29 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 9BBAA40070; Tue, 15 Oct 2024 14:15:32 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 4179F223669; Tue, 15 Oct 2024 14:14:52 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:51 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:44 +0200 Subject: [PATCH v2 8/9] arm64: dts: st: add DMA support on I2C instances of stm32mp25 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-8-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 Add dmas and dma-names properties in i2c nodes of stm32mp251.dtsi to enable DMA support. Signed-off-by: Amelie Delaunay --- arch/arm64/boot/dts/st/stm32mp251.dtsi | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/s= t/stm32mp251.dtsi index 9035fc7ba4857ca98a1a86246d7d0250196b2a13..e166e2f1f1400faf7fb56ed07c5= 779c26cf80cdd 100644 --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi @@ -318,6 +318,9 @@ i2c1: i2c@40120000 { resets =3D <&rcc I2C1_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 27 0x20 0x3012>, + <&hpdma 28 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 41>; status =3D "disabled"; }; @@ -331,6 +334,9 @@ i2c2: i2c@40130000 { resets =3D <&rcc I2C2_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 30 0x20 0x3012>, + <&hpdma 31 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 42>; status =3D "disabled"; }; @@ -344,6 +350,9 @@ i2c3: i2c@40140000 { resets =3D <&rcc I2C3_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 33 0x20 0x3012>, + <&hpdma 34 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 43>; status =3D "disabled"; }; @@ -357,6 +366,9 @@ i2c4: i2c@40150000 { resets =3D <&rcc I2C4_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 36 0x20 0x3012>, + <&hpdma 37 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 44>; status =3D "disabled"; }; @@ -370,6 +382,9 @@ i2c5: i2c@40160000 { resets =3D <&rcc I2C5_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 39 0x20 0x3012>, + <&hpdma 40 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 45>; status =3D "disabled"; }; @@ -383,6 +398,9 @@ i2c6: i2c@40170000 { resets =3D <&rcc I2C6_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 42 0x20 0x3012>, + <&hpdma 43 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 46>; status =3D "disabled"; }; @@ -396,6 +414,9 @@ i2c7: i2c@40180000 { resets =3D <&rcc I2C7_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 45 0x20 0x3012>, + <&hpdma 46 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 47>; status =3D "disabled"; }; @@ -541,6 +562,9 @@ i2c8: i2c@46040000 { resets =3D <&rcc I2C8_R>; #address-cells =3D <1>; #size-cells =3D <0>; + dmas =3D <&hpdma 168 0x20 0x3012>, + <&hpdma 169 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 48>; status =3D "disabled"; }; --=20 2.25.1 From nobody Wed Nov 27 00:34:44 2024 Received: from mx07-00178001.pphosted.com (mx07-00178001.pphosted.com [185.132.182.106]) (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 ACB561EBFED; Tue, 15 Oct 2024 12:16:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.132.182.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994601; cv=none; b=m1xjv028dldGQYNlMiEUmG44Vm+13B3uEgL0cCilno6hwRr4B1+Md9mW1qVor1d2F1K4p2QO7B8hqLkxR46qaYH/h5jfk7HtZYwsLSwlpRb2bJHBrZ3e/Dr5DTYkrlrPXmIQiGaajSKOyAj2YvwekP6uNuHUKhOJtnHFLpWP7DM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728994601; c=relaxed/simple; bh=UbN/dByhvTSbSeoPfBiRX/vO2M0WLylvxyBrvYKBvzs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-ID:References: In-Reply-To:To:CC; b=p7lmezbzMb9bY/AkaE+epwOC9csPTD6EDghRfYjnIv+YDITvch1UX5HCAbOUHMzVFSYF1qwrsoJ8V8yCKo3eHzJSGMqnHcoDW7qWzwlbjcFHbHsrxy9Tx6fdEbX2Klhcuq5jzqTja/+rD6EctJ5KWMJzcXjJ35XQNeXozOV0LAU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com; spf=pass smtp.mailfrom=foss.st.com; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b=52s9tmuG; arc=none smtp.client-ip=185.132.182.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foss.st.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foss.st.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=foss.st.com header.i=@foss.st.com header.b="52s9tmuG" Received: from pps.filterd (m0288072.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49FBiwtO005347; Tue, 15 Oct 2024 14:16:29 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foss.st.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=selector1; bh= QY3+4yFvEuS+q43fMZ7qPJn6kolc7ne5LyE/5i7vFNg=; b=52s9tmuGj8abU43/ oTP7FRFUUra1thMLNHHD2Y2eRIdSVECVlpixIehNVWqDwUA0uW0EziZ5/Lwpt+zc Pf8WLiIgkasl+H3lu7BNnJjGCi6UnJ/UIYmCglBRAp18KapAYS4FMRa1QHBeBtY0 22DpWcISt966FCV5ifjIRKHLlLw1nTpQ/cLvVWfXl/ziylT+dZUniMVAyxWjj+Ng l5dCNTOv0yTypeI13YDQkT5qTRsGlknz0y5IN8KgiKgM/utcQo4Mv/+kKAwIQXHS mlt8wldgUHe3KSMMZy4IguVNcOAMXgUgO9zainHPY/wZoqYemqMiyYgmm7KWnN2d HoG3+g== Received: from beta.dmz-ap.st.com (beta.dmz-ap.st.com [138.198.100.35]) by mx07-00178001.pphosted.com (PPS) with ESMTPS id 427ehg5n9e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 15 Oct 2024 14:16:29 +0200 (MEST) Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-ap.st.com (STMicroelectronics) with ESMTP id 4FBBF4006F; Tue, 15 Oct 2024 14:15:32 +0200 (CEST) Received: from Webmail-eu.st.com (shfdag1node3.st.com [10.75.129.71]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id F074B223F34; Tue, 15 Oct 2024 14:14:52 +0200 (CEST) Received: from localhost (10.48.87.35) by SHFDAG1NODE3.st.com (10.75.129.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37; Tue, 15 Oct 2024 14:14:52 +0200 From: Amelie Delaunay Date: Tue, 15 Oct 2024 14:14:45 +0200 Subject: [PATCH v2 9/9] arm64: dts: st: add DMA support on SPI instances of stm32mp25 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-ID: <20241015-dma3-mp25-updates-v2-9-b63e21556ec8@foss.st.com> References: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> In-Reply-To: <20241015-dma3-mp25-updates-v2-0-b63e21556ec8@foss.st.com> To: Vinod Koul , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue CC: , , , , , Amelie Delaunay X-Mailer: b4 0.14.2 X-ClientProxiedBy: EQNCAS1NODE4.st.com (10.75.129.82) To SHFDAG1NODE3.st.com (10.75.129.71) X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 Add dmas and dma-names properties in spi nodes of stm32mp251.dtsi to enable DMA support. Signed-off-by: Amelie Delaunay --- arch/arm64/boot/dts/st/stm32mp251.dtsi | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/s= t/stm32mp251.dtsi index e166e2f1f1400faf7fb56ed07c5779c26cf80cdd..ed1d778ab441be3ebf2e53dea9f= ef484d41ab31a 100644 --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi @@ -245,6 +245,9 @@ spi2: spi@400b0000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI2>; resets =3D <&rcc SPI2_R>; + dmas =3D <&hpdma 51 0x20 0x3012>, + <&hpdma 52 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 23>; status =3D "disabled"; }; @@ -257,6 +260,9 @@ spi3: spi@400c0000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI3>; resets =3D <&rcc SPI3_R>; + dmas =3D <&hpdma 53 0x20 0x3012>, + <&hpdma 54 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 24>; status =3D "disabled"; }; @@ -441,6 +447,9 @@ spi1: spi@40230000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI1>; resets =3D <&rcc SPI1_R>; + dmas =3D <&hpdma 49 0x20 0x3012>, + <&hpdma 50 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 22>; status =3D "disabled"; }; @@ -453,6 +462,9 @@ spi4: spi@40240000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI4>; resets =3D <&rcc SPI4_R>; + dmas =3D <&hpdma 55 0x20 0x3012>, + <&hpdma 56 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 25>; status =3D "disabled"; }; @@ -465,6 +477,9 @@ spi5: spi@40280000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI5>; resets =3D <&rcc SPI5_R>; + dmas =3D <&hpdma 57 0x20 0x3012>, + <&hpdma 58 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 26>; status =3D "disabled"; }; @@ -501,6 +516,9 @@ spi6: spi@40350000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI6>; resets =3D <&rcc SPI6_R>; + dmas =3D <&hpdma 59 0x20 0x3012>, + <&hpdma 60 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 27>; status =3D "disabled"; }; @@ -513,6 +531,9 @@ spi7: spi@40360000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI7>; resets =3D <&rcc SPI7_R>; + dmas =3D <&hpdma 61 0x20 0x3012>, + <&hpdma 62 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 28>; status =3D "disabled"; }; @@ -549,6 +570,9 @@ spi8: spi@46020000 { interrupts =3D ; clocks =3D <&rcc CK_KER_SPI8>; resets =3D <&rcc SPI8_R>; + dmas =3D <&hpdma 171 0x20 0x3012>, + <&hpdma 172 0x20 0x3021>; + dma-names =3D "rx", "tx"; access-controllers =3D <&rifsc 29>; status =3D "disabled"; }; --=20 2.25.1