| Message ID | 20260221094252.3103034-2-dario.binacchi@amarulasolutions.com |
|---|---|
| State | New |
| Headers |
Return-Path:
<linux-amarula+bncBCQ4XFG47UFRBJH44XGAMGQEEBI4HOY@amarulasolutions.com>
X-Original-To: linux-amarula@patchwork.amarulasolutions.com
Delivered-To: linux-amarula@patchwork.amarulasolutions.com
Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com
[209.85.128.69])
by ganimede.amarulasolutions.com (Postfix) with ESMTPS id EC0303F184
for <linux-amarula@patchwork.amarulasolutions.com>;
Sat, 21 Feb 2026 10:43:01 +0100 (CET)
Received: by mail-wm1-f69.google.com with SMTP id
5b1f17b1804b1-483a24db6ecsf25575275e9.1
for <linux-amarula@patchwork.amarulasolutions.com>;
Sat, 21 Feb 2026 01:43:01 -0800 (PST)
ARC-Seal: i=2; a=rsa-sha256; t=1771666981; cv=pass;
d=google.com; s=arc-20240605;
b=gDHl+S9l2PcH/pFDQ4H8fxFioUJhDOEnKN8wOz77G7cBvqR+fSLNLztZL7mlBIWEI8
t88VZVLfQFtAIbkDdHmYtwDl+F8kvC80Lw9PnoYSsDfRjIiCU3LhB8OMDM0iAQpVwPOw
c8KqpJLbWE0Zqs1live5UFT793NMUoXdAevZhkXGEx3HHaIFm99y3Fx9JyraseE9sNuW
upw2pojx+HnMNJUb0AZP9f/B5PFwh40TQV6P/dgEBfVy4dFqg5fxnmhEDS0G20O2q+GB
I4mopwj2Hwq42gIegyaIUtgTDOf+TyaxlrUcRywLQDVZ3OvryYIkypQgdDXFwYtEoxby
7DEA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=list-unsubscribe:list-archive:list-help:list-post:list-id
:mailing-list:precedence:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:dkim-signature;
bh=pXnIc67cJ+5hHBYLAtcNI2CzvLYOz0UjRT/z3AzIEMg=;
fh=xxbaV3o3CD161aWWVegO/MOKsUGW8bdi2zvqKXub1Mo=;
b=fVFmCax9wPSqIDYgoYKgpSom7iFbibP18BVerRct7sH+aQ7h8c1f2lFiKw/QSdBavX
FMA6parl7Ia06pPt27Jq7sR1hvmL3uw+mUdwnPTpWy7VHC2pliW/0TmDpY+/BOrmW7Uv
56Dik2p/gYif93JtGcnF8agaPrI+CDiINAMjfZlCdg3g6MkOefEnBrcAgPrdCbXvXfva
VZ5Y7B8Z/zcxNwpLb/LIeu+ALx/aXL0tIxTa0S7VMYnHTzyzBCp32mtmYpldhHLa34m0
7Wx6R8tJ6fukUuY00hBlwuM7A0SaTyyzpIctFl1KuKBgnnnCGQCuZzK33s26egD2ArfF
haeA==;
darn=patchwork.amarulasolutions.com
ARC-Authentication-Results: i=2; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=eXvVmMCC;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=amarulasolutions.com; s=google; t=1771666981; x=1772271781;
darn=patchwork.amarulasolutions.com;
h=list-unsubscribe:list-archive:list-help:list-post:list-id
:mailing-list:precedence:x-original-authentication-results
:x-original-sender:mime-version:references:in-reply-to:message-id
:date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=pXnIc67cJ+5hHBYLAtcNI2CzvLYOz0UjRT/z3AzIEMg=;
b=UibMiC2BO+RShE1/T3MWmxpDCT/+MnxLInVzscXtCd3AEqUGt+Krmsucf54HYIaP2F
+HPBRMCHB2jNgmyKRfctqjJG+BA0qvZo97EYacRoyq44vQeVoWOFpSL9pd054p+LITRK
vXU/e59wtjs9JRYLAPacTI3YnE2Rk6JvzXhzU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1771666981; x=1772271781;
h=list-unsubscribe:list-archive:list-help:list-post
:x-spam-checked-in-group:list-id:mailing-list:precedence
:x-original-authentication-results:x-original-sender:mime-version
:references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg
:x-beenthere:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=pXnIc67cJ+5hHBYLAtcNI2CzvLYOz0UjRT/z3AzIEMg=;
b=Mp3taCodbANFP6cn/BJGJsa3+bNuJX6ycSm/okkIo5aXUdq6SMQFHeaRJo81mb/6oE
KZaWiBHKrB1j348rMfECsClWHh4H18iAfj7wwLeX9ZPvIUfsXASwRkk9OAG4k95UH6Xp
BO3ydX/4yJ20K4/2r/jgXTbWuR8mofZSS/lrG1w5b3WwXnCiErA2PuqHrRsbresr88M+
m3ZpcksvNs5J+fGXXuKb+odlNpQvKcWI/8r6U/f2mOzCqlPPv5htuDjgXDeZwMZtI+/V
P9ylf+QAWTzPlMO3gGEBaTev9Y+ADjp44c6ZB5BlIklwf0W+thaOQJgmAh+U8Q0JEvYj
U+TQ==
X-Forwarded-Encrypted: i=2;
AJvYcCU+kmVzbyJB087teMxyEsW45Zy/EvLsobhJz1DKwOSHrEhjuecI0BNcaQ4k18gfipBfWDIZCfZdPnl9Ha3+@patchwork.amarulasolutions.com
X-Gm-Message-State: AOJu0YwNLZtrLiV9TBguPcuRQZ/muHbhdNxSAApT4CQpfHXlFTOgFPIv
v3qZ5fd3TW7f2JGKmsYcAdkG5I4hAFaEBJApjuqD9btCp8XgyxO3/Whr/gX6iuzuEienZQ==
X-Received: by 2002:a05:600c:a00b:b0:477:af8d:203a with SMTP id
5b1f17b1804b1-483a963778emr34610265e9.27.1771666981253;
Sat, 21 Feb 2026 01:43:01 -0800 (PST)
X-BeenThere: linux-amarula@amarulasolutions.com;
h="AV1CL+HVUfCD6S/y56n+xYXdfaBV8b1sKDn/Sml0EHYSMWZcFA=="
Received: by 2002:a05:600c:3592:b0:480:711f:49dc with SMTP id
5b1f17b1804b1-4837908b062ls90267775e9.2.-pod-prod-07-eu; Sat, 21 Feb 2026
01:42:59 -0800 (PST)
X-Forwarded-Encrypted: i=2;
AJvYcCXlSp0iQ1aDUixl5i6qAG/2s5Oh82kj59YsHhKzD1cOGxZ7kRN700FmjXrE6Q/pJtxR/+07bnzjxnUwusdL@amarulasolutions.com
X-Received: by 2002:a05:600c:8708:b0:477:7c7d:d9b2 with SMTP id
5b1f17b1804b1-483a963d62amr31033665e9.32.1771666979265;
Sat, 21 Feb 2026 01:42:59 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1771666979; cv=none;
d=google.com; s=arc-20240605;
b=Z+vDG90D8v0VBimIsf+9CCZwKc/BWBiP6+m6Ql00/2pqmpMuKyVrPwtUfOm5Wh4BpM
2VPVyAzzhB4EfhN7oOMAwmX2mpAsvv29F8Y0rGh/T4gLKYXAej7ZB29+tqKiZ9A45vXm
KKQmGolsFtUDv1tahvozezgfETfH2CHlSBQBlLr6B4nrNa5b61SizuWrEcg0WjDWSCiJ
Ye7tmbNpy8rv7G6zQpqVjknyRwLTPRSVvxPQIf8KSfWi6r1b0DovS0iCYBb37+5l4ZtJ
vYHmN+RucVNVWjZrzjmpWCFZs6X6GDdpla2VqSjYidDmj6F/dG/ZJ09eQNnYhpcJFVcd
7xKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:dkim-signature;
bh=5SpwVBfDTYR9+u4Mo5qtV6hRcGkLnuLeVILyHGsncm8=;
fh=IIG/K475ERmD+Gd54olYVkqw5FBEi5HDM0wCDy9Pw8U=;
b=GpMyh68QKeYZkxrVpJD8O9RkH8RpahLEcFi9rv0u1ZKX3i7c6OpB2ZA53iObtD3VNX
8+LkdAOvB7pNUoWPwJ0XQA8OXFixIEI5EsI2gN8DOcc6AYdl6E6e9BORr+Z0RYyaBZzJ
5lXM3ZtXJ2euJaePNn8O0ZcM+q+yozThcQ69stHwDTXHX6v00pHXPEG1coNAD7G3wyRD
B/mxJCGaOzAwwrV7LCYXA4ISVsYxU2U8oWhJmpRwyAerpy5/pqdxvW4nh3p1iAWFr+Ro
9JtANqXX6nD2KFbe7fzeUHPUdaGTmLIYdx8TyEJ6lfj7UCLCErUFwBGwI4g5ISELRsfR
R3BA==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@amarulasolutions.com header.s=google
header.b=eXvVmMCC;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
Received: from mail-sor-f41.google.com (mail-sor-f41.google.com.
[209.85.220.41])
by mx.google.com with SMTPS id
5b1f17b1804b1-483a9cb0e70sor1379655e9.19.2026.02.21.01.42.59
for <linux-amarula@amarulasolutions.com>
(Google Transport Security);
Sat, 21 Feb 2026 01:42:59 -0800 (PST)
Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41;
X-Forwarded-Encrypted: i=1;
AJvYcCXHT7W23SoRz3Q4pdsAsrKoECtXJyo6fZBE3DYjJt/oukuKZ/08tohxlp5ALcAXwvSuneYJh35JzgFJ96Zd@amarulasolutions.com
X-Gm-Gg: AZuq6aK0vxQJutuoJxEXp/yONYziQfz2A4DbgmI5QoRkbuckxbjEtOGYvCf+fQk4xw4
FnN+B2srOimo1sOF4KcAuH1ApKwikAnTceZ7El3p9yFeF9a1Zqj/R72pAJPrmm1UvGDmfBNVzZf
q59r5Ab7DJaRvJyIk6l7kvqXoTwqA4tOucvPz8iCMuD47chcW9ZcyDneh4JQfd/rpujoDgAy04I
tVkH3NWIPISSet8Zg7lxFvr3NWgn8OStHpxBviW9znNJ7vEb1Q6wteI9FS1iD78QniaZdLyG6dQ
FxFfpv18qEG7lEhoVUTNqZUyn2lCfb5or0Og5WotVoTyGuBOHFAhNCHoowCu+Yy4sXvRjInmmC3
xJmzRyMhHp18RdXb33z3cD45kT5mrTXxpbAY+h+z4dpQSDiJpJ0K8UjU66NdgrEaDH+E62szoZS
0NHWfe927G7K5ld+q+qGQsmMHfxnx/Oi6K+qirVARmpbERlHyOU8lhAIZsWAszarfFEtd4rtSsw
0PK+Gqx7lksCkA0DQaDktZ7uonJfK3HJQmftEPxBouoOGnAIzVWa6Ugb1kr4xa/FcA664E7Fe0Y
EsFP7QeA+nEo8cHJBbji9GeY
X-Received: by 2002:a05:600c:64ce:b0:47f:b737:5ce0 with SMTP id
5b1f17b1804b1-483a96378f0mr35132405e9.23.1771666978815;
Sat, 21 Feb 2026 01:42:58 -0800 (PST)
Received: from dario-ThinkPad-P14s-Gen-5.homenet.telecomitalia.it
(host-95-248-31-95.retail.telecomitalia.it. [95.248.31.95])
by smtp.gmail.com with ESMTPSA id
5b1f17b1804b1-483a42f3968sm42694225e9.19.2026.02.21.01.42.57
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 21 Feb 2026 01:42:58 -0800 (PST)
From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
To: u-boot@lists.denx.de
Cc: Patrice Chotard <patrice.chotard@foss.st.com>,
Patrick Delaunay <patrick.delaunay@foss.st.com>,
linux-amarula@amarulasolutions.com,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
Andrew Goodbody <andrew.goodbody@linaro.org>,
Christian Marangi <ansuelsmth@gmail.com>,
Jagan Teki <jagan@amarulasolutions.com>,
Tom Rini <trini@konsulko.com>
Subject: [PATCH v2 1/8] spi: add support for bits-per-word setting
Date: Sat, 21 Feb 2026 10:42:15 +0100
Message-ID: <20260221094252.3103034-2-dario.binacchi@amarulasolutions.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20260221094252.3103034-1-dario.binacchi@amarulasolutions.com>
References: <20260221094252.3103034-1-dario.binacchi@amarulasolutions.com>
MIME-Version: 1.0
X-Original-Sender: dario.binacchi@amarulasolutions.com
X-Original-Authentication-Results: mx.google.com; dkim=pass
header.i=@amarulasolutions.com header.s=google header.b=eXvVmMCC;
spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com
designates 209.85.220.41 as permitted sender)
smtp.mailfrom=dario.binacchi@amarulasolutions.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com;
dara=neutral header.i=@amarulasolutions.com
Content-Type: text/plain; charset="UTF-8"
Precedence: list
Mailing-list: list linux-amarula@amarulasolutions.com;
contact linux-amarula+owners@amarulasolutions.com
List-ID: <linux-amarula.amarulasolutions.com>
X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com
X-Google-Group-Id: 476853432473
List-Post:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/post>,
<mailto:linux-amarula@amarulasolutions.com>
List-Help:
<https://support.google.com/a/amarulasolutions.com/bin/topic.py?topic=25838>,
<mailto:linux-amarula+help@amarulasolutions.com>
List-Archive:
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/>
List-Unsubscribe:
<mailto:googlegroups-manage+476853432473+unsubscribe@googlegroups.com>,
<https://groups.google.com/a/amarulasolutions.com/group/linux-amarula/subscribe>
|
| Series |
video: support Rocktech RK050HR345-CT106A panel
|
|
Commit Message
Dario Binacchi
Feb. 21, 2026, 9:42 a.m. UTC
Allow dynamic configuration of the SPI word length. This is required
for controllers and slaves that need to operate with non-standard
word lengths, such as 9-bit wide transfers.
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
(no changes since v1)
drivers/spi/spi-uclass.c | 19 +++++++++++++++++++
include/spi.h | 12 ++++++++++++
2 files changed, 31 insertions(+)
Comments
Hi Dario, On Sat, 21 Feb 2026 at 02:43, Dario Binacchi <dario.binacchi@amarulasolutions.com> wrote: > > Allow dynamic configuration of the SPI word length. This is required > for controllers and slaves that need to operate with non-standard > word lengths, such as 9-bit wide transfers. > > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > --- > > (no changes since v1) > > drivers/spi/spi-uclass.c | 19 +++++++++++++++++++ > include/spi.h | 12 ++++++++++++ > 2 files changed, 31 insertions(+) > Reviewed-by: Simon Glass <simon.glass@canonical.com> Thoughts below > diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c > index 49b584c648d6..a4a3b6c25b7d 100644 > --- a/drivers/spi/spi-uclass.c > +++ b/drivers/spi/spi-uclass.c > @@ -91,6 +91,20 @@ void dm_spi_release_bus(struct udevice *dev) > ops->release_bus(dev); > } > > +int dm_spi_set_wordlen(struct udevice *dev, unsigned int wordlen) > +{ > + struct udevice *bus = dev->parent; > + struct dm_spi_ops *ops = spi_get_ops(bus); > + > + if (bus->uclass->uc_drv->id != UCLASS_SPI) > + return -EOPNOTSUPP; This should not happen, right? We don't normally include these kinds of checks in U-Boot, to avoid code-size costs. I have long thought about adding 'CONFIG_SAFE' option behind which we could hide checks, which people could then enable if they with: if (CONFIG_IS_ENABLED(SAFE) && bus && bus->uclass && bus->uclass->uc_drv && bus->uclass->uc_drv->id != UCLASS_SPI) return -[error number to use for all of these checks]; (would need to check dev->parent and ops too) > + > + if (!ops->set_wordlen) > + return -ENOSYS; > + > + return ops->set_wordlen(dev, wordlen); > +} > + > int dm_spi_xfer(struct udevice *dev, unsigned int bitlen, > const void *dout, void *din, unsigned long flags) > { > @@ -144,6 +158,11 @@ int spi_set_speed(struct spi_slave *slave, uint hz) > return ret; > } > > +int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen) > +{ > + return dm_spi_set_wordlen(slave->dev, wordlen); > +} > + > int spi_xfer(struct spi_slave *slave, unsigned int bitlen, > const void *dout, void *din, unsigned long flags) > { > diff --git a/include/spi.h b/include/spi.h > index 2783200d663e..a92f54a7404b 100644 > --- a/include/spi.h > +++ b/include/spi.h > @@ -729,6 +729,18 @@ int dm_spi_claim_bus(struct udevice *dev); > */ > void dm_spi_release_bus(struct udevice *dev); > > +/** > + * Set the word length for SPI transactions > + * > + * Set the word length (number of bits per word) for SPI transactions. > + * > + * @slave: The SPI slave > + * @wordlen: The number of bits in a word > + * > + * Returns: 0 on success, -1 on failure. > + */ > +int dm_spi_set_wordlen(struct udevice *dev, unsigned int wordlen); > + > /** > * SPI transfer > * > -- > 2.43.0 > We should probably store the the wordlen in struct dm_spi_slave_plat We could even avoid a new operation, but then your driver would need to set the word on an xfer() call. Plis your new operation lines up with the existing ones. So this seems OK to me. Regards, Simon To unsubscribe from this group and stop receiving emails from it, send an email to linux-amarula+unsubscribe@amarulasolutions.com.
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c index 49b584c648d6..a4a3b6c25b7d 100644 --- a/drivers/spi/spi-uclass.c +++ b/drivers/spi/spi-uclass.c @@ -91,6 +91,20 @@ void dm_spi_release_bus(struct udevice *dev) ops->release_bus(dev); } +int dm_spi_set_wordlen(struct udevice *dev, unsigned int wordlen) +{ + struct udevice *bus = dev->parent; + struct dm_spi_ops *ops = spi_get_ops(bus); + + if (bus->uclass->uc_drv->id != UCLASS_SPI) + return -EOPNOTSUPP; + + if (!ops->set_wordlen) + return -ENOSYS; + + return ops->set_wordlen(dev, wordlen); +} + int dm_spi_xfer(struct udevice *dev, unsigned int bitlen, const void *dout, void *din, unsigned long flags) { @@ -144,6 +158,11 @@ int spi_set_speed(struct spi_slave *slave, uint hz) return ret; } +int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen) +{ + return dm_spi_set_wordlen(slave->dev, wordlen); +} + int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, void *din, unsigned long flags) { diff --git a/include/spi.h b/include/spi.h index 2783200d663e..a92f54a7404b 100644 --- a/include/spi.h +++ b/include/spi.h @@ -729,6 +729,18 @@ int dm_spi_claim_bus(struct udevice *dev); */ void dm_spi_release_bus(struct udevice *dev); +/** + * Set the word length for SPI transactions + * + * Set the word length (number of bits per word) for SPI transactions. + * + * @slave: The SPI slave + * @wordlen: The number of bits in a word + * + * Returns: 0 on success, -1 on failure. + */ +int dm_spi_set_wordlen(struct udevice *dev, unsigned int wordlen); + /** * SPI transfer *