From patchwork Thu Feb 19 17:51:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4464 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id D6FCB3F150 for ; Thu, 19 Feb 2026 18:51:52 +0100 (CET) Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4837f288194sf10485515e9.2 for ; Thu, 19 Feb 2026 09:51:52 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1771523512; cv=pass; d=google.com; s=arc-20240605; b=JvtbzD/axB0mT1R7ayxehdISqeemneaQpgmza2kk0FpgMZBmCCVj6YZKTu7e1xMqRy TysRWrnHSNvA2idGJAqGPPmEDDmDx9Bja9CjdnIVv9DOJvNB/HWVsl/scl4MeE4bVEkH UPXviDj9sluweyEvPEHCgiNAo9fz+pkG3STD0+w55aBXxFWEG5P1BL7r6f38eQ76lq3Y KqsDv0irdGM5MxEKS59jirQ88DWJiKYJxK9w4gkKkoDohgMids7lpIjjp7kI+vGnojbS YBksAsE9v3QPKIzSFeDU86zFhpMcTRxrRFlWVzC8HRslH5pybstrmTvziY/okCQGYZZa pYJw== 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=srBGcpB8BH698l0OGCLSamRhrwlHUrU3Vzy3e2nlbiY=; fh=Z4iCxzTScKNeZmhuBRaQuD2ljTYXmRmQ4bo5O9tcR98=; b=dkrTwI68EAPe6f1HG4WgNziZ9FoUUwTR2OgOXweMFG6NT3tv5VuiTTbcAlSmJnF0/R ELeYfQrL2DWop+9Qg2uCtMJ4Ta53fCrbAurmBP77rZcwJobDVWHSQK4sEQUtcpxGBAhl BKRTCPd8wlY0RkvuqCfoUxQsmsCQH4lDG/K4EX16SfHEfVfWmSkflEE3VBYaO3+8vjsz WycKi9Q/A6rUZZ803fDj8latyRqP/LMMouVaF1p1Yfmc1SynCHnyVhvGU884niMj4J56 dHUHrJprzR5wg/kutWWKMNi4x6iBQ3VFtmCVZcEaiu/ofWJfCbgnoPRLdoYEJ97k4kwR KPsQ==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=dlLNfthy; 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=1771523512; x=1772128312; 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=srBGcpB8BH698l0OGCLSamRhrwlHUrU3Vzy3e2nlbiY=; b=hNPU+dwScLx5wEaAzBLJmtI+o4fsBxrVN4wUArBBTQmr2I6QxUiImYt+tz/JbDjLUy kZvBTxCGjyOYE6C69J69ejh09Tnsnvnzc0kZlfuE7xO2BckaBIlTn29G+CGeAscxyxX9 oCISc4RyREfpdNYF1lTL6j7gFAixUxE6p/4xM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771523512; x=1772128312; 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=srBGcpB8BH698l0OGCLSamRhrwlHUrU3Vzy3e2nlbiY=; b=qoqucBtPa29MgY5qbOLI+tpwAv7Sh5sEmDs5AbPm93K7s2HvJUjku2Z1qegk0YOOGX RAWhcGQwyxmCvDcH6BRZVTnPz14BRnRgHgmIq/v5uT++wBKN22CJ2HFSB8iAMSLs0/N/ aV6/vbQ43tnwWmYLis1gRH/0T5Hpt6PFiR6D7HEcPAw4SJgu3yg5T24Qevv9hJbHSNkT 0Yh2vJtXVpEDCkDty/frTNlfs3bLrOetFDJv6SUycj9srEm47N51AXap6Yhsr4D5Z6o2 HP3BUnD/MTDPmkJx9Kv3D+Njj2CI25Xqf3I2e1Pm2jqg4YFJEG6pDI5TbsiOA9ccXoki 7O8g== X-Forwarded-Encrypted: i=2; AJvYcCX7g/Pdf2o+f6Y45IzTaUBsbuhSTfhpLsS5fLYre+Heid7YvqmlLApfow/Qlhva7JPq1xbGDwcv+b3zA+FE@patchwork.amarulasolutions.com X-Gm-Message-State: AOJu0YzuyDlJuErAJ86bonZoCVM5y3HEEnCn69/0MIvethJFCSzzuuNv gx28YZx3TvOhpvCf0VoNa6b9Z9b7iwXMZNAT7Hu47+ME9LtzwpNYldNq1ly8pqO4VG4tSw== X-Received: by 2002:a05:600c:6912:b0:483:709e:f22d with SMTP id 5b1f17b1804b1-4837108fc46mr374240095e9.27.1771523512472; Thu, 19 Feb 2026 09:51:52 -0800 (PST) X-BeenThere: linux-amarula@amarulasolutions.com; h="AV1CL+Hs71ALzU4vvQ+xBo9sQRcq1Z8R2cFhLLo2/GY5FjvCyA==" Received: by 2002:a05:600c:a09:b0:480:4b5d:a2a with SMTP id 5b1f17b1804b1-483670b87a1ls59727875e9.1.-pod-prod-03-eu; Thu, 19 Feb 2026 09:51:50 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWbFAl6U2kDZsWkC/QU1TPNoGy4d8n0uGGEW9y9pZLVBhndNUvPyKmI+gyCc686LtFQO9OEm+UoAnd1wN29@amarulasolutions.com X-Received: by 2002:a05:600c:3b10:b0:480:4b59:9327 with SMTP id 5b1f17b1804b1-4838c063f8emr189790285e9.1.1771523510360; Thu, 19 Feb 2026 09:51:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771523510; cv=none; d=google.com; s=arc-20240605; b=YjcFYgJULB0SsY4+udl5a5xPW94MgMXUxZyKWSFxkKnSYUSbqsSIP5LxJcSig0eRxh 9XI5TLQiVZDBfngjw4qcEkD/hc86jyieraco96atP2DGIPuJcggotGh1itAkMUTcLaAJ pekMZUcpZSOXR1QYjmZwut25zCfGFU8ANnpZJWYbH4rTb8Rv1Gt9a6MVSbyYp8wKcodq 9bjsjT+sC8zNB3khguyZp3ZPC4VwiyE8egm8JoR3wyRxiq2TnwgaWn4FU/yDpQDpnRfC E1gyXZT/+in3+XVf1OVyH8/NCR7teLONYe1kHugNWrPYLey9nI6bweEgGEx4eNn1aCRe rsdg== 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=h8DpYVjladhvWDx1P1+TyQplxDeEaGAqMxXk9vBFzcI=; fh=MDOJCgNGRXg5jQiErUTcyABkCrexdHSgCq2mh8DTnNM=; b=MaMXj2uE6WPjiS/c99P34tdd8IkOFwuDfMHBrjbM9/PP/BGzfR+13RmMXM9Pl6w5pW 1+wZ37n2vqSo67aOjVK9/JbIj+Am6gg2BI1rPh3x+6U4vyCQuFQ4r5iPKq19lNHyF/uE GT5nn9GzD+vRhBZQQmAS8YCE9GX5VakLngMc5j/bKWLKlDOo0KgpmC2qd0/HqrUS71ij AiJKzqgwGlHuva4I19+wiIPt8pE4LasQ3v/Pgc0jhsBqTvIeGBVb780sr9IGuh0FQzwY hs+t2FRsP4SLZtBfZrDYz/PQSWl+8jFjMOPf2MHliwuas3cv7Rib6ixJ/G9wsi0LvZhV VbVQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=dlLNfthy; 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-483703baed1sor27305555e9.14.2026.02.19.09.51.50 for (Google Transport Security); Thu, 19 Feb 2026 09:51:50 -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; AJvYcCWXeY1qL0EKohsdBmH9Oapbv60cAMFZx6QsLP9s1kinTHmPHZ2KaXN/Xt1MBONp/dMsDiaqG4lHdMAAhSiR@amarulasolutions.com X-Gm-Gg: AZuq6aIyZ7erDCDMpw+RH05B9DyyCogHhQt76v68K/uxBNKhuN49w3I+6z2+IxqvDya CQkbC/z0u3nk79RGhCLT/y7reVHjA00BMXD+/r6dDlH28e7a61PVwYzYIV8IqkwJqPUkX6BFIb3 2rv7BGS1Fb5hg/WwtWvNfgVa9y+LiccKLTqJAsRFW7/B6PlW+d117slmlRiae9r5NOQ4AxOYrU1 gVnhGdtv9Ep/VRHIkfr50354Xe2PvPD+waDgRExGHE8ZhKIXhnFbnGEKFwFIG9DnpAJ9jff2QeM mXxhTM9iYhe88aFFB7yZfIn5OQUlqwDyog5O7zV7xeMCfXhUSjJA1qTdCzUhQsyLNsCnEKBgma4 9npsVHxJD1+HWJo5JU93AViV2VOBliud3W2HGpL7n2KfSyq20ycNeCXXMKsWz2DC3rI2Buq1oyq my/zXUK8Wm0c/iO16bTUuv2y8WKWdK/FKFcKkq2mBa+o67GRNl02ueOEreTLlY1695i61difCoB GB99D1LAKR07dQFtE2JHW3uPBpdZZ96+FpyH9ttKPck6kf9pSgGXUjMz9nl7JkYqB1a9pRgbhDb VAYOx0RXdrCdwdRPTrp8qvYF X-Received: by 2002:a05:600c:4687:b0:47a:935f:618e with SMTP id 5b1f17b1804b1-48371061414mr370502845e9.15.1771523509863; Thu, 19 Feb 2026 09:51:49 -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-483a31b0e63sm35485005e9.2.2026.02.19.09.51.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Feb 2026 09:51:49 -0800 (PST) From: Dario Binacchi To: u-boot@lists.denx.de Cc: Patrice Chotard , linux-amarula@amarulasolutions.com, Patrick Delaunay , Dario Binacchi , Andrew Goodbody , Christian Marangi , Jagan Teki , Tom Rini Subject: [PATCH 1/8] spi: add support for bits-per-word setting Date: Thu, 19 Feb 2026 18:51:12 +0100 Message-ID: <20260219175130.2839234-2-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260219175130.2839234-1-dario.binacchi@amarulasolutions.com> References: <20260219175130.2839234-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=dlLNfthy; 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: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , 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 --- drivers/spi/spi-uclass.c | 19 +++++++++++++++++++ include/spi.h | 12 ++++++++++++ 2 files changed, 31 insertions(+) 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 *