lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250730-topic-dma_genise_cookie-v1-3-b505c1238f9f@oss.qualcomm.com>
Date: Wed, 30 Jul 2025 11:33:30 +0200
From: Konrad Dybcio <konradybcio@...nel.org>
To: Vinod Koul <vkoul@...nel.org>, Sven Peter <sven@...nel.org>, 
 Janne Grunau <j@...nau.net>, Alyssa Rosenzweig <alyssa@...enzweig.io>, 
 Neal Gompa <neal@...pa.dev>, 
 Ludovic Desroches <ludovic.desroches@...rochip.com>, 
 Florian Fainelli <florian.fainelli@...adcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@...adcom.com>, 
 Ray Jui <rjui@...adcom.com>, Scott Branden <sbranden@...adcom.com>, 
 Paul Cercueil <paul@...pouillou.net>, 
 Eugeniy Paltsev <Eugeniy.Paltsev@...opsys.com>, 
 Viresh Kumar <vireshk@...nel.org>, 
 Andy Shevchenko <andriy.shevchenko@...ux.intel.com>, 
 Frank Li <Frank.Li@....com>, Shawn Guo <shawnguo@...nel.org>, 
 Sascha Hauer <s.hauer@...gutronix.de>, 
 Pengutronix Kernel Team <kernel@...gutronix.de>, 
 Fabio Estevam <festevam@...il.com>, 
 Taichi Sugaya <sugaya.taichi@...ionext.com>, 
 Takao Orito <orito.takao@...ionext.com>, 
 Andreas Färber <afaerber@...e.de>, 
 Manivannan Sadhasivam <mani@...nel.org>, Daniel Mack <daniel@...que.org>, 
 Haojian Zhuang <haojian.zhuang@...il.com>, 
 Robert Jarzmik <robert.jarzmik@...e.fr>, 
 Geert Uytterhoeven <geert+renesas@...der.be>, 
 Magnus Damm <magnus.damm@...il.com>, 
 Patrice Chotard <patrice.chotard@...s.st.com>, 
 Linus Walleij <linus.walleij@...aro.org>, 
 Amélie Delaunay <amelie.delaunay@...s.st.com>, 
 Maxime Coquelin <mcoquelin.stm32@...il.com>, 
 Alexandre Torgue <alexandre.torgue@...s.st.com>, 
 Chen-Yu Tsai <wens@...e.org>, Jernej Skrabec <jernej.skrabec@...il.com>, 
 Samuel Holland <samuel@...lland.org>, 
 Laxman Dewangan <ldewangan@...dia.com>, Jon Hunter <jonathanh@...dia.com>, 
 Thierry Reding <thierry.reding@...il.com>, 
 Peter Ujfalusi <peter.ujfalusi@...il.com>, 
 Kunihiko Hayashi <hayashi.kunihiko@...ionext.com>, 
 Masami Hiramatsu <mhiramat@...nel.org>, Michal Simek <michal.simek@....com>, 
 Laurent Pinchart <laurent.pinchart@...asonboard.com>, 
 Rob Herring <robh@...nel.org>, Saravana Kannan <saravanak@...gle.com>, 
 Martin Povišer <povik+lin@...ebit.org>, 
 Liam Girdwood <lgirdwood@...il.com>, Mark Brown <broonie@...nel.org>, 
 Jaroslav Kysela <perex@...ex.cz>, Takashi Iwai <tiwai@...e.com>, 
 Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>, 
 Mukesh Kumar Savaliya <quic_msavaliy@...cinc.com>, 
 Viken Dadhaniya <quic_vdadhani@...cinc.com>, 
 Andi Shyti <andi.shyti@...nel.org>, 
 Krzysztof Kozlowski <krzk+dt@...nel.org>, 
 Conor Dooley <conor+dt@...nel.org>, Bjorn Andersson <andersson@...nel.org>, 
 Konrad Dybcio <konradybcio@...nel.org>
Cc: Marijn Suijten <marijn.suijten@...ainline.org>, 
 dmaengine@...r.kernel.org, linux-kernel@...r.kernel.org, 
 asahi@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org, 
 linux-rpi-kernel@...ts.infradead.org, linux-mips@...r.kernel.org, 
 imx@...ts.linux.dev, linux-actions@...ts.infradead.org, 
 linux-arm-msm@...r.kernel.org, linux-renesas-soc@...r.kernel.org, 
 linux-stm32@...md-mailman.stormreply.com, linux-sunxi@...ts.linux.dev, 
 linux-tegra@...r.kernel.org, devicetree@...r.kernel.org, 
 linux-sound@...r.kernel.org, linux-i2c@...r.kernel.org, 
 linux-spi@...r.kernel.org, Konrad Dybcio <konrad.dybcio@....qualcomm.com>
Subject: [PATCH RFC 3/6] dmaengine: qcom: gpi: Accept protocol ID hints

From: Konrad Dybcio <konrad.dybcio@....qualcomm.com>

Client drivers may now pass hints to dmaengine drivers. GPI DMA's only
consumers (GENI SEs) need to pass a protocol (I2C, I3C, SPI, etc.) ID
to the DMA engine driver, for it to take different actions.

Currently, that's done through passing that ID through device tree,
with each Serial Engine expressed NUM_PROTOCOL times, resulting in
terrible dt-bindings that are full of useless copypasta.

To help get rid of that, accept the driver cookie instead, while
keeping backwards compatibility.

Signed-off-by: Konrad Dybcio <konrad.dybcio@....qualcomm.com>
---
 drivers/dma/qcom/gpi.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/dma/qcom/gpi.c b/drivers/dma/qcom/gpi.c
index 51d19494099dae09f4579ba8c3eddfa0487bf487..de9e564dc21b2230c9446dfb881135003721a750 100644
--- a/drivers/dma/qcom/gpi.c
+++ b/drivers/dma/qcom/gpi.c
@@ -17,6 +17,8 @@
 #include "../dmaengine.h"
 #include "../virt-dma.h"
 
+#include <linux/soc/qcom/geni-se.h>
+
 #define TRE_TYPE_DMA		0x10
 #define TRE_TYPE_IMMEDIATE_DMA	0x11
 #define TRE_TYPE_GO		0x20
@@ -2109,15 +2111,19 @@ static int gpi_find_avail_gpii(struct gpi_dev *gpi_dev, u32 seid)
 /* gpi_of_dma_xlate: open client requested channel */
 static struct dma_chan *gpi_of_dma_xlate(struct of_phandle_args *args,
 					 struct of_dma *of_dma,
-					 void *data)
+					 void *proto)
 {
 	struct gpi_dev *gpi_dev = (struct gpi_dev *)of_dma->of_dma_data;
 	u32 seid, chid;
 	int gpii;
 	struct gchan *gchan;
 
-	if (args->args_count < 3) {
-		dev_err(gpi_dev->dev, "gpii require minimum 2 args, client passed:%d args\n",
+	/* The protocol ID has been historically stored in the third cell */
+	if (!proto && args->args_count < 3)
+		return NULL;
+
+	if (args->args_count < 2) {
+		dev_err(gpi_dev->dev, "gpii requires minimum 2 args, client passed:%d args\n",
 			args->args_count);
 		return NULL;
 	}
@@ -2145,7 +2151,8 @@ static struct dma_chan *gpi_of_dma_xlate(struct of_phandle_args *args,
 	}
 
 	gchan->seid = seid;
-	gchan->protocol = args->args[2];
+	/* The protocol ID is in the teens range, simply ignore the higher bits */
+	gchan->protocol = (u32)((u64)proto);
 
 	return dma_get_slave_channel(&gchan->vc.chan);
 }

-- 
2.50.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ