linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: William Zhang <william.zhang@broadcom.com>
To: Linux SPI List <linux-spi@vger.kernel.org>,
	Broadcom Kernel List <bcm-kernel-feedback-list@broadcom.com>
Cc: anand.gore@broadcom.com, tomer.yacoby@broadcom.com,
	dan.beygelman@broadcom.com, joel.peshkin@broadcom.com,
	f.fainelli@gmail.com, jonas.gorski@gmail.com,
	kursad.oney@broadcom.com, dregan@mail.com,
	William Zhang <william.zhang@broadcom.com>,
	Mark Brown <broonie@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 14/16] spi: bcm63xx-hsspi: prepend: Disable spi mem dual io read op support
Date: Fri,  6 Jan 2023 12:08:06 -0800	[thread overview]
Message-ID: <20230106200809.330769-15-william.zhang@broadcom.com> (raw)
In-Reply-To: <20230106200809.330769-1-william.zhang@broadcom.com>

In general the controller supports SPI dual mode operation but the
particular SPI flash dual io read op switches from single mode in cmd
phase to dual mode in address and data phase. This is not compatible
with prepend operation where cmd and address are sent out through the
prepend buffer and they must use same the number of io pins.

This patch disables these SPI flash dual io read ops through the mem_ops
supports_op interface when prepend mode is used. This makes sure the SPI
flash driver selects the compatible read ops at run time.

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

 drivers/spi/spi-bcm63xx-hsspi.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/spi/spi-bcm63xx-hsspi.c b/drivers/spi/spi-bcm63xx-hsspi.c
index be4ca01f332a..7ede7f02ba2c 100644
--- a/drivers/spi/spi-bcm63xx-hsspi.c
+++ b/drivers/spi/spi-bcm63xx-hsspi.c
@@ -20,6 +20,7 @@
 #include <linux/spi/spi.h>
 #include <linux/mutex.h>
 #include <linux/of.h>
+#include <linux/spi/spi-mem.h>
 #include <linux/reset.h>
 #include <linux/pm_runtime.h>
 
@@ -596,6 +597,26 @@ static int bcm63xx_hsspi_transfer_one(struct spi_master *master,
 	return 0;
 }
 
+static bool bcm63xx_hsspi_mem_supports_op(struct spi_mem *mem,
+			    const struct spi_mem_op *op)
+{
+	struct bcm63xx_hsspi *bs = spi_master_get_devdata(mem->spi->master);
+
+	if (!spi_mem_default_supports_op(mem, op))
+		return false;
+
+	/* Controller doesn't support spi mem dual/quad read cmd in prepend mode */
+	if (!bs->use_cs_workaround &&
+		  ((op->cmd.opcode == 0xbb) || (op->cmd.opcode == 0xeb)))
+		return false;
+
+	return true;
+}
+
+static const struct spi_controller_mem_ops bcm63xx_hsspi_mem_ops = {
+	.supports_op = bcm63xx_hsspi_mem_supports_op,
+};
+
 static irqreturn_t bcm63xx_hsspi_interrupt(int irq, void *dev_id)
 {
 	struct bcm63xx_hsspi *bs = (struct bcm63xx_hsspi *)dev_id;
@@ -692,6 +713,7 @@ static int bcm63xx_hsspi_probe(struct platform_device *pdev)
 	mutex_init(&bs->bus_mutex);
 	init_completion(&bs->done);
 
+	master->mem_ops = &bcm63xx_hsspi_mem_ops;
 	master->dev.of_node = dev->of_node;
 	if (!dev->of_node) {
 		master->bus_num = HSSPI_BUS_NUM;
-- 
2.37.3


  parent reply	other threads:[~2023-01-06 20:10 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-06 20:07 [PATCH 00/16] spi: bcm63xx-hsspi: driver and doc updates William Zhang
2023-01-06 20:07 ` [PATCH 01/16] dt-bindings: spi: Convert bcm63xx-hsspi bindings to json-schema William Zhang
2023-01-07 15:18   ` Rob Herring
2023-01-07 15:32   ` Krzysztof Kozlowski
2023-01-09  7:52     ` William Zhang
2023-01-09  8:48       ` Krzysztof Kozlowski
2023-01-06 20:07 ` [PATCH 02/16] dt-bindings: spi: Add bcmbca-hsspi controller support William Zhang
2023-01-08 14:51   ` Krzysztof Kozlowski
2023-01-09  8:27     ` William Zhang
2023-01-09  8:56       ` Krzysztof Kozlowski
2023-01-09 19:13         ` William Zhang
2023-01-10  8:40           ` Krzysztof Kozlowski
2023-01-10 22:18             ` Florian Fainelli
2023-01-11  1:08               ` William Zhang
2023-01-11  9:02               ` Krzysztof Kozlowski
2023-01-11 18:04                 ` William Zhang
2023-01-11 18:12                   ` Krzysztof Kozlowski
2023-01-11 18:44                     ` William Zhang
2023-01-12  8:21                       ` Krzysztof Kozlowski
2023-01-12 19:50                         ` William Zhang
2023-01-13  7:41                           ` Krzysztof Kozlowski
2023-01-14  3:17                             ` William Zhang
2023-01-15 14:31                               ` Krzysztof Kozlowski
2023-01-11  0:59             ` William Zhang
2023-01-11  9:01               ` Krzysztof Kozlowski
2023-01-06 20:07 ` [PATCH 03/16] dt-bindings: spi: Add spi peripheral specific property William Zhang
2023-01-06 21:14   ` Mark Brown
2023-01-07  3:27     ` William Zhang
2023-01-07 15:38       ` Rob Herring
2023-01-09  8:06         ` William Zhang
2023-01-09 19:19           ` Mark Brown
2023-01-09 20:18             ` William Zhang
2023-01-10 22:01               ` Mark Brown
2023-01-11 19:48                 ` William Zhang
2023-01-08 14:52   ` Krzysztof Kozlowski
2023-01-09  8:27     ` William Zhang
2023-01-06 20:07 ` [PATCH 04/16] ARM: dts: broadcom: bcmbca: Add spi controller node William Zhang
2023-01-06 20:07 ` [PATCH 05/16] arm64: " William Zhang
2023-01-06 20:07 ` [PATCH 06/16] spi: bcm63xx-hsspi: Endianness fix for ARM based SoC William Zhang
2023-01-07  7:44   ` kernel test robot
2023-01-07 21:21   ` kernel test robot
2023-01-07 21:52   ` kernel test robot
2023-01-07 23:23   ` kernel test robot
2023-01-11  6:33   ` kernel test robot
2023-01-06 20:07 ` [PATCH 07/16] spi: bcm63xx-hsspi: Add polling mode support William Zhang
2023-01-06 21:47   ` Mark Brown
2023-01-07  3:35     ` William Zhang
2023-01-09 19:06       ` Mark Brown
2023-01-09 20:10         ` William Zhang
2023-01-10 22:49           ` Mark Brown
2023-01-11 20:13             ` William Zhang
2023-01-11 22:41               ` Mark Brown
2023-01-11 22:57                 ` William Zhang
2023-01-06 20:08 ` [PATCH 08/16] spi: bcm63xx-hsspi: Handle cs_change correctly William Zhang
2023-01-06 20:08 ` [PATCH 09/16] spi: bcm63xx-hsspi: Fix multi-bit mode setting William Zhang
2023-01-06 20:08 ` [PATCH 10/16] spi: bcm63xx-hsspi: Make dummy cs workaround as an option William Zhang
2023-01-12 18:08   ` Mark Brown
2023-01-18 23:09     ` William Zhang
2023-01-19 13:09       ` Mark Brown
2023-01-06 20:08 ` [PATCH 11/16] spi: bcm63xx-hsspi: Add prepend feature support William Zhang
2023-01-06 22:00   ` Mark Brown
2023-01-07  3:52     ` William Zhang
2023-01-09 19:31       ` Mark Brown
2023-01-09 20:43         ` William Zhang
2023-01-10 21:18           ` Mark Brown
2023-01-11 19:42             ` William Zhang
2023-01-12 16:57               ` Mark Brown
2023-01-06 20:08 ` [PATCH 12/16] spi: bcm63xx-hsspi: Add clock gate disable option support William Zhang
2023-01-06 20:08 ` [PATCH 13/16] spi: spi-mem: Allow controller supporting mem_ops without exec_op William Zhang
2023-01-06 20:08 ` William Zhang [this message]
2023-01-06 22:07   ` [PATCH 14/16] spi: bcm63xx-hsspi: prepend: Disable spi mem dual io read op support Mark Brown
2023-01-07  3:57     ` William Zhang
2023-01-06 20:08 ` [PATCH 15/16] spi: bcmbca-hsspi: Add driver for newer HSSPI controller William Zhang
2023-01-07 22:02   ` kernel test robot
2023-01-08  2:25   ` kernel test robot
2023-01-06 20:08 ` [PATCH 16/16] MAINTAINERS: Add entry for Broadcom Broadband SoC HS SPI drivers 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=20230106200809.330769-15-william.zhang@broadcom.com \
    --to=william.zhang@broadcom.com \
    --cc=anand.gore@broadcom.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=broonie@kernel.org \
    --cc=dan.beygelman@broadcom.com \
    --cc=dregan@mail.com \
    --cc=f.fainelli@gmail.com \
    --cc=joel.peshkin@broadcom.com \
    --cc=jonas.gorski@gmail.com \
    --cc=kursad.oney@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=tomer.yacoby@broadcom.com \
    /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;
as well as URLs for NNTP newsgroup(s).