U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: William Zhang <william.zhang@broadcom.com>
To: anand.gore@broadcom.com, kursad.oney@broadcom.com,
	U-Boot Mailing List <u-boot@lists.denx.de>,
	noltari@gmail.com, philippe.reynes@softathome.com,
	tomer.yacoby@broadcom.com, dregan@mail.com
Cc: William Zhang <william.zhang@broadcom.com>,
	joel.peshkin@broadcom.com, dan.beygelman@broadcom.com,
	Simon Glass <sjg@chromium.org>,
	Jagan Teki <jagan@amarulasolutions.com>,
	Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Subject: [PATCH v2 6/9] spi: bcm63xx-hsspi: Fix multi-bit mode setting
Date: Tue,  2 May 2023 11:58:13 -0700	[thread overview]
Message-ID: <20230502185817.374951-7-william.zhang@broadcom.com> (raw)
In-Reply-To: <20230502185817.374951-1-william.zhang@broadcom.com>

Currently the driver always sets the controller to dual data bit mode
for both tx and rx data in the profile mode control register even for
single data bit transfer. Luckily the opcode is set correctly according
to SPI transfer data bit width so it does not actually cause issues.

This change fixes the problem by setting tx and rx data bit mode field
correctly according to the actual SPI transfer tx and rx data bit width.

Fixes: 29cc4368ad4b ("dm: spi: add BCM63xx HSSPI driver")

Port from linux patch:
Link: https://lore.kernel.org/r/20230209200246.141520-11-william.zhang@broadcom.com

Signed-off-by: William Zhang <william.zhang@broadcom.com>
---

Changes in v2: None

 drivers/spi/bcm63xx_hsspi.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/spi/bcm63xx_hsspi.c b/drivers/spi/bcm63xx_hsspi.c
index 495feba02262..0d12c345b1dd 100644
--- a/drivers/spi/bcm63xx_hsspi.c
+++ b/drivers/spi/bcm63xx_hsspi.c
@@ -221,7 +221,7 @@ static int bcm63xx_hsspi_xfer(struct udevice *dev, unsigned int bitlen,
 	size_t data_bytes = bitlen / 8;
 	size_t step_size = HSSPI_FIFO_SIZE;
 	uint16_t opcode = 0;
-	uint32_t val;
+	uint32_t val = SPI_PFL_MODE_FILL_MASK;
 	const uint8_t *tx = dout;
 	uint8_t *rx = din;
 
@@ -240,14 +240,17 @@ static int bcm63xx_hsspi_xfer(struct udevice *dev, unsigned int bitlen,
 		step_size -= HSSPI_FIFO_OP_SIZE;
 
 	/* dual mode */
-	if ((opcode == HSSPI_FIFO_OP_CODE_R && plat->mode == SPI_RX_DUAL) ||
-	    (opcode == HSSPI_FIFO_OP_CODE_W && plat->mode == SPI_TX_DUAL))
+	if ((opcode == HSSPI_FIFO_OP_CODE_R && (plat->mode & SPI_RX_DUAL)) ||
+	    (opcode == HSSPI_FIFO_OP_CODE_W && (plat->mode & SPI_TX_DUAL))) {
 		opcode |= HSSPI_FIFO_OP_MBIT_MASK;
 
-	/* profile mode */
-	val = SPI_PFL_MODE_FILL_MASK |
-	      SPI_PFL_MODE_MDRDSZ_MASK |
-	      SPI_PFL_MODE_MDWRSZ_MASK;
+		/* profile mode */
+		if (plat->mode & SPI_RX_DUAL)
+			val |= SPI_PFL_MODE_MDRDSZ_MASK;
+		if (plat->mode & SPI_TX_DUAL)
+			val |= SPI_PFL_MODE_MDWRSZ_MASK;
+	}
+
 	if (plat->mode & SPI_3WIRE)
 		val |= SPI_PFL_MODE_3WIRE_MASK;
 	writel(val, priv->regs + SPI_PFL_MODE_REG(plat->cs));
-- 
2.37.3


  parent reply	other threads:[~2023-05-02 19:01 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-02 18:58 [PATCH v2 0/9] spi: bcm63xx-hsspi: driver and doc updates William Zhang
2023-05-02 18:58 ` [PATCH v2 1/9] dt-bindings: spi: Add bcm63xx-hsspi controller support William Zhang
2023-05-02 18:58 ` [PATCH v2 2/9] ARM: dts: broadcom: bcmbca: Add spi controller node William Zhang
2023-05-02 18:58 ` [PATCH v2 3/9] arm64: " William Zhang
2023-05-02 18:58 ` [PATCH v2 4/9] spi: bcm63xx-hsspi: Enable SPI drivers by default William Zhang
2023-05-02 18:58 ` [PATCH v2 5/9] spi: bcm63xx-hsspi: Add new compatible string support William Zhang
2023-06-02  5:46   ` Jagan Teki
2023-05-02 18:58 ` William Zhang [this message]
2023-06-02  5:47   ` [PATCH v2 6/9] spi: bcm63xx-hsspi: Fix multi-bit mode setting Jagan Teki
2023-05-02 18:58 ` [PATCH v2 7/9] spi: bcm63xx-hsspi: Add prepend mode support William Zhang
2023-05-02 18:58 ` [PATCH v2 8/9] spi: bcmbca-hsspi: Add driver for newer HSSPI controller William Zhang
2023-06-02  5:54   ` Jagan Teki
2023-06-02 18:53     ` William Zhang
2023-05-02 18:58 ` [PATCH v2 9/9] MAINTAINERS: Add Broadcom Broadband SoC HS SPI drivers William Zhang
2023-06-01 23:52 ` [PATCH v2 0/9] spi: bcm63xx-hsspi: driver and doc updates William Zhang
2023-06-02  6:01 ` Jagan Teki
2023-06-02 18:56   ` William Zhang
2023-06-06 20:19     ` William Zhang
2023-06-07 20:05       ` Tom Rini
2023-06-07 20:31         ` William Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230502185817.374951-7-william.zhang@broadcom.com \
    --to=william.zhang@broadcom.com \
    --cc=anand.gore@broadcom.com \
    --cc=dan.beygelman@broadcom.com \
    --cc=daniel.schwierzeck@gmail.com \
    --cc=dregan@mail.com \
    --cc=jagan@amarulasolutions.com \
    --cc=joel.peshkin@broadcom.com \
    --cc=kursad.oney@broadcom.com \
    --cc=noltari@gmail.com \
    --cc=philippe.reynes@softathome.com \
    --cc=sjg@chromium.org \
    --cc=tomer.yacoby@broadcom.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox